aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/gvt/mmio_context.c14
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. */
54static struct engine_mmio gen8_engine_mmio_list[] __cacheline_aligned = { 56static 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
152static struct { 154static 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
158static void load_render_mocs(struct drm_i915_private *dev_priv) 160static 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