The convenience of saving a few characters by using a consistent interface to obtain our drm_i915_private struct from intel_guc. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_drv.h | 4 +++- drivers/gpu/drm/i915/i915_guc_submission.c | 23 ++++++++++------------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 92365f047e53..d5fa42c96110 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -1982,7 +1982,7 @@ static inline struct drm_i915_private *dev_to_i915(struct device *dev) return __to_i915(dev_get_drvdata(dev)); } -static inline struct drm_i915_private *guc_to_i915(struct intel_guc *guc) +static inline struct drm_i915_private *__guc_to_i915(struct intel_guc *guc) { return container_of(guc, struct drm_i915_private, guc); } @@ -2463,6 +2463,8 @@ struct drm_i915_cmd_table { __p = __to_i915((struct drm_device *)p); \ else if (__builtin_types_compatible_p(typeof(*p), struct drm_i915_gem_object)) \ __p = __obj_to_i915((struct drm_i915_gem_object *)p); \ + else if (__builtin_types_compatible_p(typeof(*p), struct intel_guc)) \ + __p = __guc_to_i915((struct intel_guc *)p); \ else \ BUILD_BUG(); \ __p; \ diff --git a/drivers/gpu/drm/i915/i915_guc_submission.c b/drivers/gpu/drm/i915/i915_guc_submission.c index ae1f58d073f2..850aee78c40f 100644 --- a/drivers/gpu/drm/i915/i915_guc_submission.c +++ b/drivers/gpu/drm/i915/i915_guc_submission.c @@ -77,7 +77,7 @@ static inline bool host2guc_action_response(struct drm_i915_private *dev_priv, static int host2guc_action(struct intel_guc *guc, u32 *data, u32 len) { - struct drm_i915_private *dev_priv = guc_to_i915(guc); + struct drm_i915_private *dev_priv = to_i915(guc); u32 status; int i; int ret; @@ -152,7 +152,7 @@ static int host2guc_release_doorbell(struct intel_guc *guc, static int host2guc_sample_forcewake(struct intel_guc *guc, struct i915_guc_client *client) { - struct drm_i915_private *dev_priv = guc_to_i915(guc); + struct drm_i915_private *dev_priv = to_i915(guc); struct drm_device *dev = dev_priv->dev; u32 data[2]; @@ -254,7 +254,7 @@ static int guc_ring_doorbell(struct i915_guc_client *gc) static void guc_disable_doorbell(struct intel_guc *guc, struct i915_guc_client *client) { - struct drm_i915_private *dev_priv = guc_to_i915(guc); + struct drm_i915_private *dev_priv = to_i915(guc); struct guc_doorbell_info *doorbell; void *base; i915_reg_t drbreg = GEN8_DRBREGL(client->doorbell_id); @@ -376,7 +376,6 @@ static void guc_init_proc_desc(struct intel_guc *guc, static void guc_init_ctx_desc(struct intel_guc *guc, struct i915_guc_client *client) { - struct drm_i915_private *dev_priv = guc_to_i915(guc); struct intel_engine_cs *engine; struct intel_context *ctx = client->owner; struct guc_context_desc desc; @@ -390,7 +389,7 @@ static void guc_init_ctx_desc(struct intel_guc *guc, desc.priority = client->priority; desc.db_id = client->doorbell_id; - for_each_engine(engine, dev_priv, i) { + for_each_engine(engine, guc, i) { struct guc_execlist_context *lrc = &desc.lrc[engine->guc_id]; struct drm_i915_gem_object *obj; uint64_t ctx_desc; @@ -772,7 +771,6 @@ err: static void guc_create_log(struct intel_guc *guc) { - struct drm_i915_private *dev_priv = guc_to_i915(guc); struct drm_i915_gem_object *obj; unsigned long offset; uint32_t size, flags; @@ -791,7 +789,7 @@ static void guc_create_log(struct intel_guc *guc) obj = guc->log_obj; if (!obj) { - obj = gem_allocate_guc_obj(dev_priv->dev, size); + obj = gem_allocate_guc_obj(to_i915(guc)->dev, size); if (!obj) { /* logging will be off */ i915.guc_log_level = -1; @@ -835,7 +833,6 @@ static void init_guc_policies(struct guc_policies *policies) static void guc_create_ads(struct intel_guc *guc) { - struct drm_i915_private *dev_priv = guc_to_i915(guc); struct drm_i915_gem_object *obj; struct guc_ads *ads; struct guc_policies *policies; @@ -851,7 +848,7 @@ static void guc_create_ads(struct intel_guc *guc) obj = guc->ads_obj; if (!obj) { - obj = gem_allocate_guc_obj(dev_priv->dev, PAGE_ALIGN(size)); + obj = gem_allocate_guc_obj(to_i915(guc)->dev, PAGE_ALIGN(size)); if (!obj) return; @@ -868,10 +865,10 @@ static void guc_create_ads(struct intel_guc *guc) * so its address won't change after we've told the GuC where * to find it. */ - engine = &dev_priv->engine[RCS]; - ads->golden_context_lrca = engine->status_page.gfx_addr; + ads->golden_context_lrca = + to_i915(guc)->engine[RCS].status_page.gfx_addr; - for_each_engine(engine, dev_priv, i) + for_each_engine(engine, guc, i) ads->eng_state_size[engine->guc_id] = intel_lr_context_size(engine); /* GuC scheduling policies */ @@ -884,7 +881,7 @@ static void guc_create_ads(struct intel_guc *guc) /* MMIO reg state */ reg_state = (void *)policies + sizeof(struct guc_policies); - for_each_engine(engine, dev_priv, i) { + for_each_engine(engine, guc, i) { reg_state->mmio_white_list[engine->guc_id].mmio_start = engine->mmio_base + GUC_MMIO_WHITE_LIST_START; -- 2.8.0.rc3 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx