diff options
-rw-r--r-- | drivers/gpu/drm/i915/gvt/mmio_context.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/gpu/drm/i915/gvt/mmio_context.c b/drivers/gpu/drm/i915/gvt/mmio_context.c index 73ad6e90e49d..ca4ba56fd60c 100644 --- a/drivers/gpu/drm/i915/gvt/mmio_context.c +++ b/drivers/gpu/drm/i915/gvt/mmio_context.c | |||
@@ -50,6 +50,8 @@ | |||
50 | #define RING_GFX_MODE(base) _MMIO((base) + 0x29c) | 50 | #define RING_GFX_MODE(base) _MMIO((base) + 0x29c) |
51 | #define VF_GUARDBAND _MMIO(0x83a4) | 51 | #define VF_GUARDBAND _MMIO(0x83a4) |
52 | 52 | ||
53 | #define GEN9_MOCS_SIZE 64 | ||
54 | |||
53 | /* Raw offset is appened to each line for convenience. */ | 55 | /* Raw offset is appened to each line for convenience. */ |
54 | static struct engine_mmio gen8_engine_mmio_list[] __cacheline_aligned = { | 56 | static struct engine_mmio gen8_engine_mmio_list[] __cacheline_aligned = { |
55 | {RCS, GFX_MODE_GEN7, 0xffff, false}, /* 0x229c */ | 57 | {RCS, GFX_MODE_GEN7, 0xffff, false}, /* 0x229c */ |
@@ -151,8 +153,8 @@ static struct engine_mmio gen9_engine_mmio_list[] __cacheline_aligned = { | |||
151 | 153 | ||
152 | static struct { | 154 | static struct { |
153 | bool initialized; | 155 | bool initialized; |
154 | u32 control_table[I915_NUM_ENGINES][64]; | 156 | u32 control_table[I915_NUM_ENGINES][GEN9_MOCS_SIZE]; |
155 | u32 l3cc_table[32]; | 157 | u32 l3cc_table[GEN9_MOCS_SIZE / 2]; |
156 | } gen9_render_mocs; | 158 | } gen9_render_mocs; |
157 | 159 | ||
158 | static void load_render_mocs(struct drm_i915_private *dev_priv) | 160 | static void load_render_mocs(struct drm_i915_private *dev_priv) |
@@ -169,7 +171,7 @@ static void load_render_mocs(struct drm_i915_private *dev_priv) | |||
169 | 171 | ||
170 | for (ring_id = 0; ring_id < ARRAY_SIZE(regs); ring_id++) { | 172 | for (ring_id = 0; ring_id < ARRAY_SIZE(regs); ring_id++) { |
171 | offset.reg = regs[ring_id]; | 173 | offset.reg = regs[ring_id]; |
172 | for (i = 0; i < 64; i++) { | 174 | for (i = 0; i < GEN9_MOCS_SIZE; i++) { |
173 | gen9_render_mocs.control_table[ring_id][i] = | 175 | gen9_render_mocs.control_table[ring_id][i] = |
174 | I915_READ_FW(offset); | 176 | I915_READ_FW(offset); |
175 | offset.reg += 4; | 177 | offset.reg += 4; |
@@ -177,7 +179,7 @@ static void load_render_mocs(struct drm_i915_private *dev_priv) | |||
177 | } | 179 | } |
178 | 180 | ||
179 | offset.reg = 0xb020; | 181 | offset.reg = 0xb020; |
180 | for (i = 0; i < 32; i++) { | 182 | for (i = 0; i < GEN9_MOCS_SIZE / 2; i++) { |
181 | gen9_render_mocs.l3cc_table[i] = | 183 | gen9_render_mocs.l3cc_table[i] = |
182 | I915_READ_FW(offset); | 184 | I915_READ_FW(offset); |
183 | offset.reg += 4; | 185 | offset.reg += 4; |
@@ -255,7 +257,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next, | |||
255 | load_render_mocs(dev_priv); | 257 | load_render_mocs(dev_priv); |
256 | 258 | ||
257 | offset.reg = regs[ring_id]; | 259 | offset.reg = regs[ring_id]; |
258 | for (i = 0; i < 64; i++) { | 260 | for (i = 0; i < GEN9_MOCS_SIZE; i++) { |
259 | if (pre) | 261 | if (pre) |
260 | old_v = vgpu_vreg_t(pre, offset); | 262 | old_v = vgpu_vreg_t(pre, offset); |
261 | else | 263 | else |
@@ -273,7 +275,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next, | |||
273 | 275 | ||
274 | if (ring_id == RCS) { | 276 | if (ring_id == RCS) { |
275 | l3_offset.reg = 0xb020; | 277 | l3_offset.reg = 0xb020; |
276 | for (i = 0; i < 32; i++) { | 278 | for (i = 0; i < GEN9_MOCS_SIZE / 2; i++) { |
277 | if (pre) | 279 | if (pre) |
278 | old_v = vgpu_vreg_t(pre, l3_offset); | 280 | old_v = vgpu_vreg_t(pre, l3_offset); |
279 | else | 281 | else |