Commit 92c964ca authored by Andi Shyti's avatar Andi Shyti Committed by Chris Wilson

drm/i915/gt: Replace I915_READ with intel_uncore_read

Get rid of the last remaining I915_READ in gt/ and make gt-land
the first I915_READ-free happy island.
Suggested-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarAndi Shyti <andi.shyti@intel.com>
Reviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Link: https://patchwork.freedesktop.org/patch/msgid/20191205164422.727968-1-chris@chris-wilson.co.uk
parent 6f7ac828
...@@ -296,7 +296,7 @@ ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine); ...@@ -296,7 +296,7 @@ ktime_t intel_engine_get_busy_time(struct intel_engine_cs *engine);
struct i915_request * struct i915_request *
intel_engine_find_active_request(struct intel_engine_cs *engine); intel_engine_find_active_request(struct intel_engine_cs *engine);
u32 intel_engine_context_size(struct drm_i915_private *i915, u8 class); u32 intel_engine_context_size(struct intel_gt *gt, u8 class);
#if IS_ENABLED(CONFIG_DRM_I915_SELFTEST) #if IS_ENABLED(CONFIG_DRM_I915_SELFTEST)
......
...@@ -141,7 +141,7 @@ static const struct engine_info intel_engines[] = { ...@@ -141,7 +141,7 @@ static const struct engine_info intel_engines[] = {
/** /**
* intel_engine_context_size() - return the size of the context for an engine * intel_engine_context_size() - return the size of the context for an engine
* @dev_priv: i915 device private * @gt: the gt
* @class: engine class * @class: engine class
* *
* Each engine class may require a different amount of space for a context * Each engine class may require a different amount of space for a context
...@@ -153,17 +153,18 @@ static const struct engine_info intel_engines[] = { ...@@ -153,17 +153,18 @@ static const struct engine_info intel_engines[] = {
* in LRC mode, but does not include the "shared data page" used with * in LRC mode, but does not include the "shared data page" used with
* GuC submission. The caller should account for this if using the GuC. * GuC submission. The caller should account for this if using the GuC.
*/ */
u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class) u32 intel_engine_context_size(struct intel_gt *gt, u8 class)
{ {
struct intel_uncore *uncore = gt->uncore;
u32 cxt_size; u32 cxt_size;
BUILD_BUG_ON(I915_GTT_PAGE_SIZE != PAGE_SIZE); BUILD_BUG_ON(I915_GTT_PAGE_SIZE != PAGE_SIZE);
switch (class) { switch (class) {
case RENDER_CLASS: case RENDER_CLASS:
switch (INTEL_GEN(dev_priv)) { switch (INTEL_GEN(gt->i915)) {
default: default:
MISSING_CASE(INTEL_GEN(dev_priv)); MISSING_CASE(INTEL_GEN(gt->i915));
return DEFAULT_LR_CONTEXT_RENDER_SIZE; return DEFAULT_LR_CONTEXT_RENDER_SIZE;
case 12: case 12:
case 11: case 11:
...@@ -175,14 +176,14 @@ u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class) ...@@ -175,14 +176,14 @@ u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class)
case 8: case 8:
return GEN8_LR_CONTEXT_RENDER_SIZE; return GEN8_LR_CONTEXT_RENDER_SIZE;
case 7: case 7:
if (IS_HASWELL(dev_priv)) if (IS_HASWELL(gt->i915))
return HSW_CXT_TOTAL_SIZE; return HSW_CXT_TOTAL_SIZE;
cxt_size = I915_READ(GEN7_CXT_SIZE); cxt_size = intel_uncore_read(uncore, GEN7_CXT_SIZE);
return round_up(GEN7_CXT_TOTAL_SIZE(cxt_size) * 64, return round_up(GEN7_CXT_TOTAL_SIZE(cxt_size) * 64,
PAGE_SIZE); PAGE_SIZE);
case 6: case 6:
cxt_size = I915_READ(CXT_SIZE); cxt_size = intel_uncore_read(uncore, CXT_SIZE);
return round_up(GEN6_CXT_TOTAL_SIZE(cxt_size) * 64, return round_up(GEN6_CXT_TOTAL_SIZE(cxt_size) * 64,
PAGE_SIZE); PAGE_SIZE);
case 5: case 5:
...@@ -197,9 +198,9 @@ u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class) ...@@ -197,9 +198,9 @@ u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class)
* minimum allocation anyway so it should all come * minimum allocation anyway so it should all come
* out in the wash. * out in the wash.
*/ */
cxt_size = I915_READ(CXT_SIZE) + 1; cxt_size = intel_uncore_read(uncore, CXT_SIZE) + 1;
DRM_DEBUG_DRIVER("gen%d CXT_SIZE = %d bytes [0x%08x]\n", DRM_DEBUG_DRIVER("gen%d CXT_SIZE = %d bytes [0x%08x]\n",
INTEL_GEN(dev_priv), INTEL_GEN(gt->i915),
cxt_size * 64, cxt_size * 64,
cxt_size - 1); cxt_size - 1);
return round_up(cxt_size * 64, PAGE_SIZE); return round_up(cxt_size * 64, PAGE_SIZE);
...@@ -216,7 +217,7 @@ u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class) ...@@ -216,7 +217,7 @@ u32 intel_engine_context_size(struct drm_i915_private *dev_priv, u8 class)
case VIDEO_DECODE_CLASS: case VIDEO_DECODE_CLASS:
case VIDEO_ENHANCEMENT_CLASS: case VIDEO_ENHANCEMENT_CLASS:
case COPY_ENGINE_CLASS: case COPY_ENGINE_CLASS:
if (INTEL_GEN(dev_priv) < 8) if (INTEL_GEN(gt->i915) < 8)
return 0; return 0;
return GEN8_LR_CONTEXT_OTHER_SIZE; return GEN8_LR_CONTEXT_OTHER_SIZE;
} }
...@@ -324,8 +325,7 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id) ...@@ -324,8 +325,7 @@ static int intel_engine_setup(struct intel_gt *gt, enum intel_engine_id id)
*/ */
engine->destroy = (typeof(engine->destroy))kfree; engine->destroy = (typeof(engine->destroy))kfree;
engine->context_size = intel_engine_context_size(gt->i915, engine->context_size = intel_engine_context_size(gt, engine->class);
engine->class);
if (WARN_ON(engine->context_size > BIT(20))) if (WARN_ON(engine->context_size > BIT(20)))
engine->context_size = 0; engine->context_size = 0;
if (engine->context_size) if (engine->context_size)
......
...@@ -93,7 +93,8 @@ static void __guc_ads_init(struct intel_guc *guc) ...@@ -93,7 +93,8 @@ static void __guc_ads_init(struct intel_guc *guc)
*/ */
blob->ads.golden_context_lrca[engine_class] = 0; blob->ads.golden_context_lrca[engine_class] = 0;
blob->ads.eng_state_size[engine_class] = blob->ads.eng_state_size[engine_class] =
intel_engine_context_size(dev_priv, engine_class) - intel_engine_context_size(guc_to_gt(guc),
engine_class) -
skipped_size; skipped_size;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment