updating ipts to be more compatible with newer i915 modules

This commit is contained in:
Jake Day 2017-11-03 19:47:27 -04:00
parent e43b8817a1
commit bc2d4e51f7
7 changed files with 26 additions and 22 deletions

View file

@ -680,9 +680,8 @@ static int i915_load_modeset_init(struct drm_device *dev)
drm_kms_helper_poll_init(dev);
pr_info(">> let init ipts\n");
if (INTEL_GEN(dev_priv) >= 9 && i915.enable_guc_submission)
intel_ipts_init(dev);
intel_ipts_init(dev);
return 0;

View file

@ -179,7 +179,7 @@ i915_gem_object_get_pages_phys(struct drm_i915_gem_object *obj)
* the alignment of the buddy allocation will naturally match.
*/
phys = drm_pci_alloc(obj->base.dev,
obj->base.size,
roundup_pow_of_two(obj->base.size),
roundup_pow_of_two(obj->base.size));
if (!phys)
return ERR_PTR(-ENOMEM);

View file

@ -1358,7 +1358,7 @@ int i915_guc_ipts_submission_enable(struct drm_i915_private *dev_priv,
/* client for execbuf submission */
client = guc_client_alloc(dev_priv,
INTEL_INFO(dev_priv)->ring_mask,
GUC_CLIENT_PRIORITY_KMD_NORMAL,
GUC_CLIENT_PRIORITY_NORMAL,
ctx);
if (!client) {
DRM_ERROR("Failed to create normal GuC client!\n");
@ -1387,7 +1387,7 @@ void i915_guc_ipts_reacquire_doorbell(struct drm_i915_private *dev_priv)
{
struct intel_guc *guc = &dev_priv->guc;
int err = __guc_allocate_doorbell(guc, guc->ipts_client);
int err = __guc_allocate_doorbell(guc, guc->ipts_client->stage_id);
if (err)
DRM_ERROR("Not able to reacquire IPTS doorbell\n");

View file

@ -56,8 +56,8 @@ struct i915_params i915 __read_mostly = {
.verbose_state_checks = 1,
.nuclear_pageflip = 0,
.edp_vswing = 0,
.enable_guc_loading = 0,
.enable_guc_submission = 0,
.enable_guc_loading = 1,
.enable_guc_submission = 1,
.guc_log_level = -1,
.guc_firmware_path = NULL,
.huc_firmware_path = NULL,
@ -225,12 +225,12 @@ MODULE_PARM_DESC(edp_vswing,
module_param_named_unsafe(enable_guc_loading, i915.enable_guc_loading, int, 0400);
MODULE_PARM_DESC(enable_guc_loading,
"Enable GuC firmware loading "
"(-1=auto, 0=never [default], 1=if available, 2=required)");
"(-1=auto, 0=never, 1=if available [default], 2=required)");
module_param_named_unsafe(enable_guc_submission, i915.enable_guc_submission, int, 0400);
MODULE_PARM_DESC(enable_guc_submission,
"Enable GuC submission "
"(-1=auto, 0=never [default], 1=if available, 2=required)");
"(-1=auto, 0=never, 1=if available [default], 2=required)");
module_param_named(guc_log_level, i915.guc_log_level, int, 0400);
MODULE_PARM_DESC(guc_log_level,

View file

@ -69,7 +69,7 @@ typedef struct intel_ipts_object {
static intel_ipts_object_t *ipts_object_create(size_t size, u32 flags)
{
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
intel_ipts_object_t *obj = NULL;
struct drm_i915_gem_object *gem_obj = NULL;
int ret = 0;
@ -132,7 +132,7 @@ static int ipts_object_pin(intel_ipts_object_t* obj,
{
struct i915_address_space *vm = NULL;
struct i915_vma *vma = NULL;
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
int ret = 0;
if (ipts_ctx->ppgtt) {
@ -172,7 +172,8 @@ static void ipts_object_unmap(intel_ipts_object_t* obj)
static int create_ipts_context(void)
{
struct i915_gem_context *ipts_ctx = NULL;
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
struct intel_ring *pin_ret;
int ret = 0;
/* Initialize the context right away.*/
@ -196,9 +197,9 @@ static int create_ipts_context(void)
goto err_ctx;
}
ret = execlists_context_pin(dev_priv->engine[RCS], ipts_ctx);
if (ret) {
DRM_DEBUG("lr context pinning failed : %d\n", ret);
pin_ret = execlists_context_pin(dev_priv->engine[RCS], ipts_ctx);
if (IS_ERR(pin_ret)) {
DRM_DEBUG("lr context pinning failed : %ld\n", PTR_ERR(pin_ret));
goto err_ctx;
}
@ -225,7 +226,7 @@ err_unlock:
static void destroy_ipts_context(void)
{
struct i915_gem_context *ipts_ctx = NULL;
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
int ret = 0;
ipts_ctx = intel_ipts.ipts_context;
@ -308,7 +309,7 @@ static int intel_ipts_get_wq_info(uint64_t gfx_handle,
static int set_wq_info(void)
{
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
struct intel_guc *guc = &dev_priv->guc;
struct i915_guc_client *client;
struct guc_process_desc *desc;
@ -402,7 +403,7 @@ static int intel_ipts_map_buffer(u64 gfx_handle, intel_ipts_mapbuffer_t *mapbuf)
{
intel_ipts_object_t* obj;
struct i915_gem_context *ipts_ctx = NULL;
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
struct i915_address_space *vm = NULL;
struct i915_vma *vma = NULL;
int ret = 0;
@ -482,7 +483,7 @@ static int intel_ipts_unmap_buffer(uint64_t gfx_handle, uint64_t buf_handle)
int intel_ipts_connect(intel_ipts_connect_t *ipts_connect)
{
struct drm_i915_private *dev_priv = intel_ipts.dev->dev_private;
struct drm_i915_private *dev_priv = to_i915(intel_ipts.dev);
int ret = 0;
if (!intel_ipts.initialized)
@ -584,6 +585,8 @@ int intel_ipts_init(struct drm_device *dev)
{
int ret = 0;
pr_info("ipts: initializing ipts\n");
intel_ipts.dev = dev;
INIT_DELAYED_WORK(&intel_ipts.reacquire_db_work, reacquire_db_work_func);

View file

@ -67,6 +67,8 @@ static void disconnect_gfx(ipts_info_t *ipts)
intel_ipts_disconnect(ipts->gfx_info.gfx_handle);
}
#define RUN_DBG_THREAD
#ifdef RUN_DBG_THREAD
#include "../mei/mei_dev.h"

View file

@ -55,7 +55,7 @@ static int allocate_common_resource(ipts_info_t *ipts)
addr = dmam_alloc_coherent(&ipts->cldev->dev,
buffer_size,
&dma_addr,
GFP_ATOMIC|GFP_DMA32);
GFP_ATOMIC|__GFP_ZERO);
if (addr == NULL)
return -ENOMEM;
@ -76,7 +76,7 @@ static int allocate_common_resource(ipts_info_t *ipts)
feedback_buffer[i].addr = dmam_alloc_coherent(&ipts->cldev->dev,
ipts->device_info.feedback_size,
&feedback_buffer[i].dma_addr,
GFP_ATOMIC|GFP_DMA32);
GFP_ATOMIC|__GFP_ZERO);
if (feedback_buffer[i].addr == NULL) {
ret = -ENOMEM;
@ -110,7 +110,7 @@ static int allocate_hid_resource(ipts_info_t *ipts)
buffer_hid->addr = dmam_alloc_coherent(&ipts->cldev->dev,
ipts->device_info.frame_size,
&buffer_hid->dma_addr,
GFP_ATOMIC|GFP_DMA32);
GFP_ATOMIC|__GFP_ZERO);
if (buffer_hid->addr == NULL) {
return -ENOMEM;
}