Merge tag 'for-linus-20190524' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / drivers / gpu / drm / i915 / gvt / mmio_context.c
index 7902fb1..90bb3df 100644 (file)
 
 /* Raw offset is appened to each line for convenience. */
 static struct engine_mmio gen8_engine_mmio_list[] __cacheline_aligned = {
-       {RCS, GFX_MODE_GEN7, 0xffff, false}, /* 0x229c */
-       {RCS, GEN9_CTX_PREEMPT_REG, 0x0, false}, /* 0x2248 */
-       {RCS, HWSTAM, 0x0, false}, /* 0x2098 */
-       {RCS, INSTPM, 0xffff, true}, /* 0x20c0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 0), 0, false}, /* 0x24d0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 1), 0, false}, /* 0x24d4 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 2), 0, false}, /* 0x24d8 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 3), 0, false}, /* 0x24dc */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 4), 0, false}, /* 0x24e0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 5), 0, false}, /* 0x24e4 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 6), 0, false}, /* 0x24e8 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 7), 0, false}, /* 0x24ec */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 8), 0, false}, /* 0x24f0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 9), 0, false}, /* 0x24f4 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 10), 0, false}, /* 0x24f8 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 11), 0, false}, /* 0x24fc */
-       {RCS, CACHE_MODE_1, 0xffff, true}, /* 0x7004 */
-       {RCS, GEN7_GT_MODE, 0xffff, true}, /* 0x7008 */
-       {RCS, CACHE_MODE_0_GEN7, 0xffff, true}, /* 0x7000 */
-       {RCS, GEN7_COMMON_SLICE_CHICKEN1, 0xffff, true}, /* 0x7010 */
-       {RCS, HDC_CHICKEN0, 0xffff, true}, /* 0x7300 */
-       {RCS, VF_GUARDBAND, 0xffff, true}, /* 0x83a4 */
-
-       {BCS, RING_GFX_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2229c */
-       {BCS, RING_MI_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2209c */
-       {BCS, RING_INSTPM(BLT_RING_BASE), 0xffff, false}, /* 0x220c0 */
-       {BCS, RING_HWSTAM(BLT_RING_BASE), 0x0, false}, /* 0x22098 */
-       {BCS, RING_EXCC(BLT_RING_BASE), 0x0, false}, /* 0x22028 */
-       {RCS, INVALID_MMIO_REG, 0, false } /* Terminated */
+       {RCS0, GFX_MODE_GEN7, 0xffff, false}, /* 0x229c */
+       {RCS0, GEN9_CTX_PREEMPT_REG, 0x0, false}, /* 0x2248 */
+       {RCS0, HWSTAM, 0x0, false}, /* 0x2098 */
+       {RCS0, INSTPM, 0xffff, true}, /* 0x20c0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 0), 0, false}, /* 0x24d0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 1), 0, false}, /* 0x24d4 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 2), 0, false}, /* 0x24d8 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 3), 0, false}, /* 0x24dc */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 4), 0, false}, /* 0x24e0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 5), 0, false}, /* 0x24e4 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 6), 0, false}, /* 0x24e8 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 7), 0, false}, /* 0x24ec */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 8), 0, false}, /* 0x24f0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 9), 0, false}, /* 0x24f4 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 10), 0, false}, /* 0x24f8 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 11), 0, false}, /* 0x24fc */
+       {RCS0, CACHE_MODE_1, 0xffff, true}, /* 0x7004 */
+       {RCS0, GEN7_GT_MODE, 0xffff, true}, /* 0x7008 */
+       {RCS0, CACHE_MODE_0_GEN7, 0xffff, true}, /* 0x7000 */
+       {RCS0, GEN7_COMMON_SLICE_CHICKEN1, 0xffff, true}, /* 0x7010 */
+       {RCS0, HDC_CHICKEN0, 0xffff, true}, /* 0x7300 */
+       {RCS0, VF_GUARDBAND, 0xffff, true}, /* 0x83a4 */
+
+       {BCS0, RING_GFX_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2229c */
+       {BCS0, RING_MI_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2209c */
+       {BCS0, RING_INSTPM(BLT_RING_BASE), 0xffff, false}, /* 0x220c0 */
+       {BCS0, RING_HWSTAM(BLT_RING_BASE), 0x0, false}, /* 0x22098 */
+       {BCS0, RING_EXCC(BLT_RING_BASE), 0xffff, false}, /* 0x22028 */
+       {RCS0, INVALID_MMIO_REG, 0, false } /* Terminated */
 };
 
 static struct engine_mmio gen9_engine_mmio_list[] __cacheline_aligned = {
-       {RCS, GFX_MODE_GEN7, 0xffff, false}, /* 0x229c */
-       {RCS, GEN9_CTX_PREEMPT_REG, 0x0, false}, /* 0x2248 */
-       {RCS, HWSTAM, 0x0, false}, /* 0x2098 */
-       {RCS, INSTPM, 0xffff, true}, /* 0x20c0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 0), 0, false}, /* 0x24d0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 1), 0, false}, /* 0x24d4 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 2), 0, false}, /* 0x24d8 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 3), 0, false}, /* 0x24dc */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 4), 0, false}, /* 0x24e0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 5), 0, false}, /* 0x24e4 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 6), 0, false}, /* 0x24e8 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 7), 0, false}, /* 0x24ec */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 8), 0, false}, /* 0x24f0 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 9), 0, false}, /* 0x24f4 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 10), 0, false}, /* 0x24f8 */
-       {RCS, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 11), 0, false}, /* 0x24fc */
-       {RCS, CACHE_MODE_1, 0xffff, true}, /* 0x7004 */
-       {RCS, GEN7_GT_MODE, 0xffff, true}, /* 0x7008 */
-       {RCS, CACHE_MODE_0_GEN7, 0xffff, true}, /* 0x7000 */
-       {RCS, GEN7_COMMON_SLICE_CHICKEN1, 0xffff, true}, /* 0x7010 */
-       {RCS, HDC_CHICKEN0, 0xffff, true}, /* 0x7300 */
-       {RCS, VF_GUARDBAND, 0xffff, true}, /* 0x83a4 */
-
-       {RCS, GEN8_PRIVATE_PAT_LO, 0, false}, /* 0x40e0 */
-       {RCS, GEN8_PRIVATE_PAT_HI, 0, false}, /* 0x40e4 */
-       {RCS, GEN8_CS_CHICKEN1, 0xffff, true}, /* 0x2580 */
-       {RCS, COMMON_SLICE_CHICKEN2, 0xffff, true}, /* 0x7014 */
-       {RCS, GEN9_CS_DEBUG_MODE1, 0xffff, false}, /* 0x20ec */
-       {RCS, GEN8_L3SQCREG4, 0, false}, /* 0xb118 */
-       {RCS, GEN7_HALF_SLICE_CHICKEN1, 0xffff, true}, /* 0xe100 */
-       {RCS, HALF_SLICE_CHICKEN2, 0xffff, true}, /* 0xe180 */
-       {RCS, HALF_SLICE_CHICKEN3, 0xffff, true}, /* 0xe184 */
-       {RCS, GEN9_HALF_SLICE_CHICKEN5, 0xffff, true}, /* 0xe188 */
-       {RCS, GEN9_HALF_SLICE_CHICKEN7, 0xffff, true}, /* 0xe194 */
-       {RCS, GEN8_ROW_CHICKEN, 0xffff, true}, /* 0xe4f0 */
-       {RCS, TRVATTL3PTRDW(0), 0, false}, /* 0x4de0 */
-       {RCS, TRVATTL3PTRDW(1), 0, false}, /* 0x4de4 */
-       {RCS, TRNULLDETCT, 0, false}, /* 0x4de8 */
-       {RCS, TRINVTILEDETCT, 0, false}, /* 0x4dec */
-       {RCS, TRVADR, 0, false}, /* 0x4df0 */
-       {RCS, TRTTE, 0, false}, /* 0x4df4 */
-
-       {BCS, RING_GFX_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2229c */
-       {BCS, RING_MI_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2209c */
-       {BCS, RING_INSTPM(BLT_RING_BASE), 0xffff, false}, /* 0x220c0 */
-       {BCS, RING_HWSTAM(BLT_RING_BASE), 0x0, false}, /* 0x22098 */
-       {BCS, RING_EXCC(BLT_RING_BASE), 0x0, false}, /* 0x22028 */
-
-       {VCS2, RING_EXCC(GEN8_BSD2_RING_BASE), 0xffff, false}, /* 0x1c028 */
-
-       {VECS, RING_EXCC(VEBOX_RING_BASE), 0xffff, false}, /* 0x1a028 */
-
-       {RCS, GEN8_HDC_CHICKEN1, 0xffff, true}, /* 0x7304 */
-       {RCS, GEN9_CTX_PREEMPT_REG, 0x0, false}, /* 0x2248 */
-       {RCS, GEN7_UCGCTL4, 0x0, false}, /* 0x940c */
-       {RCS, GAMT_CHKN_BIT_REG, 0x0, false}, /* 0x4ab8 */
-
-       {RCS, GEN9_GAMT_ECO_REG_RW_IA, 0x0, false}, /* 0x4ab0 */
-       {RCS, GEN9_CSFE_CHICKEN1_RCS, 0xffff, false}, /* 0x20d4 */
-       {RCS, _MMIO(0x20D8), 0xffff, true}, /* 0x20d8 */
-
-       {RCS, GEN8_GARBCNTL, 0x0, false}, /* 0xb004 */
-       {RCS, GEN7_FF_THREAD_MODE, 0x0, false}, /* 0x20a0 */
-       {RCS, FF_SLICE_CS_CHICKEN2, 0xffff, false}, /* 0x20e4 */
-       {RCS, INVALID_MMIO_REG, 0, false } /* Terminated */
+       {RCS0, GFX_MODE_GEN7, 0xffff, false}, /* 0x229c */
+       {RCS0, GEN9_CTX_PREEMPT_REG, 0x0, false}, /* 0x2248 */
+       {RCS0, HWSTAM, 0x0, false}, /* 0x2098 */
+       {RCS0, INSTPM, 0xffff, true}, /* 0x20c0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 0), 0, false}, /* 0x24d0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 1), 0, false}, /* 0x24d4 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 2), 0, false}, /* 0x24d8 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 3), 0, false}, /* 0x24dc */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 4), 0, false}, /* 0x24e0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 5), 0, false}, /* 0x24e4 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 6), 0, false}, /* 0x24e8 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 7), 0, false}, /* 0x24ec */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 8), 0, false}, /* 0x24f0 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 9), 0, false}, /* 0x24f4 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 10), 0, false}, /* 0x24f8 */
+       {RCS0, RING_FORCE_TO_NONPRIV(RENDER_RING_BASE, 11), 0, false}, /* 0x24fc */
+       {RCS0, CACHE_MODE_1, 0xffff, true}, /* 0x7004 */
+       {RCS0, GEN7_GT_MODE, 0xffff, true}, /* 0x7008 */
+       {RCS0, CACHE_MODE_0_GEN7, 0xffff, true}, /* 0x7000 */
+       {RCS0, GEN7_COMMON_SLICE_CHICKEN1, 0xffff, true}, /* 0x7010 */
+       {RCS0, HDC_CHICKEN0, 0xffff, true}, /* 0x7300 */
+       {RCS0, VF_GUARDBAND, 0xffff, true}, /* 0x83a4 */
+
+       {RCS0, GEN8_PRIVATE_PAT_LO, 0, false}, /* 0x40e0 */
+       {RCS0, GEN8_PRIVATE_PAT_HI, 0, false}, /* 0x40e4 */
+       {RCS0, GEN8_CS_CHICKEN1, 0xffff, true}, /* 0x2580 */
+       {RCS0, COMMON_SLICE_CHICKEN2, 0xffff, true}, /* 0x7014 */
+       {RCS0, GEN9_CS_DEBUG_MODE1, 0xffff, false}, /* 0x20ec */
+       {RCS0, GEN8_L3SQCREG4, 0, false}, /* 0xb118 */
+       {RCS0, GEN7_HALF_SLICE_CHICKEN1, 0xffff, true}, /* 0xe100 */
+       {RCS0, HALF_SLICE_CHICKEN2, 0xffff, true}, /* 0xe180 */
+       {RCS0, HALF_SLICE_CHICKEN3, 0xffff, true}, /* 0xe184 */
+       {RCS0, GEN9_HALF_SLICE_CHICKEN5, 0xffff, true}, /* 0xe188 */
+       {RCS0, GEN9_HALF_SLICE_CHICKEN7, 0xffff, true}, /* 0xe194 */
+       {RCS0, GEN8_ROW_CHICKEN, 0xffff, true}, /* 0xe4f0 */
+       {RCS0, TRVATTL3PTRDW(0), 0, true}, /* 0x4de0 */
+       {RCS0, TRVATTL3PTRDW(1), 0, true}, /* 0x4de4 */
+       {RCS0, TRNULLDETCT, 0, true}, /* 0x4de8 */
+       {RCS0, TRINVTILEDETCT, 0, true}, /* 0x4dec */
+       {RCS0, TRVADR, 0, true}, /* 0x4df0 */
+       {RCS0, TRTTE, 0, true}, /* 0x4df4 */
+       {RCS0, _MMIO(0x4dfc), 0, true},
+
+       {BCS0, RING_GFX_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2229c */
+       {BCS0, RING_MI_MODE(BLT_RING_BASE), 0xffff, false}, /* 0x2209c */
+       {BCS0, RING_INSTPM(BLT_RING_BASE), 0xffff, false}, /* 0x220c0 */
+       {BCS0, RING_HWSTAM(BLT_RING_BASE), 0x0, false}, /* 0x22098 */
+       {BCS0, RING_EXCC(BLT_RING_BASE), 0xffff, false}, /* 0x22028 */
+
+       {VCS1, RING_EXCC(GEN8_BSD2_RING_BASE), 0xffff, false}, /* 0x1c028 */
+
+       {VECS0, RING_EXCC(VEBOX_RING_BASE), 0xffff, false}, /* 0x1a028 */
+
+       {RCS0, GEN8_HDC_CHICKEN1, 0xffff, true}, /* 0x7304 */
+       {RCS0, GEN9_CTX_PREEMPT_REG, 0x0, false}, /* 0x2248 */
+       {RCS0, GEN7_UCGCTL4, 0x0, false}, /* 0x940c */
+       {RCS0, GAMT_CHKN_BIT_REG, 0x0, false}, /* 0x4ab8 */
+
+       {RCS0, GEN9_GAMT_ECO_REG_RW_IA, 0x0, false}, /* 0x4ab0 */
+       {RCS0, GEN9_CSFE_CHICKEN1_RCS, 0xffff, false}, /* 0x20d4 */
+       {RCS0, _MMIO(0x20D8), 0xffff, true}, /* 0x20d8 */
+
+       {RCS0, GEN8_GARBCNTL, 0x0, false}, /* 0xb004 */
+       {RCS0, GEN7_FF_THREAD_MODE, 0x0, false}, /* 0x20a0 */
+       {RCS0, FF_SLICE_CS_CHICKEN2, 0xffff, false}, /* 0x20e4 */
+       {RCS0, INVALID_MMIO_REG, 0, false } /* Terminated */
 };
 
 static struct {
@@ -150,11 +151,11 @@ static void load_render_mocs(struct drm_i915_private *dev_priv)
 {
        i915_reg_t offset;
        u32 regs[] = {
-               [RCS] = 0xc800,
-               [VCS] = 0xc900,
-               [VCS2] = 0xca00,
-               [BCS] = 0xcc00,
-               [VECS] = 0xcb00,
+               [RCS0]  = 0xc800,
+               [VCS0]  = 0xc900,
+               [VCS1]  = 0xca00,
+               [BCS0]  = 0xcc00,
+               [VECS0] = 0xcb00,
        };
        int ring_id, i;
 
@@ -302,7 +303,7 @@ int intel_vgpu_restore_inhibit_context(struct intel_vgpu *vgpu,
                goto out;
 
        /* no MOCS register in context except render engine */
-       if (req->engine->id != RCS)
+       if (req->engine->id != RCS0)
                goto out;
 
        ret = restore_render_mocs_control_for_inhibit(vgpu, req);
@@ -328,15 +329,16 @@ out:
 static void handle_tlb_pending_event(struct intel_vgpu *vgpu, int ring_id)
 {
        struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
+       struct intel_uncore *uncore = &dev_priv->uncore;
        struct intel_vgpu_submission *s = &vgpu->submission;
        enum forcewake_domains fw;
        i915_reg_t reg;
        u32 regs[] = {
-               [RCS] = 0x4260,
-               [VCS] = 0x4264,
-               [VCS2] = 0x4268,
-               [BCS] = 0x426c,
-               [VECS] = 0x4270,
+               [RCS0]  = 0x4260,
+               [VCS0]  = 0x4264,
+               [VCS1]  = 0x4268,
+               [BCS0]  = 0x426c,
+               [VECS0] = 0x4270,
        };
 
        if (WARN_ON(ring_id >= ARRAY_SIZE(regs)))
@@ -352,21 +354,21 @@ static void handle_tlb_pending_event(struct intel_vgpu *vgpu, int ring_id)
         * otherwise device can go to RC6 state and interrupt invalidation
         * process
         */
-       fw = intel_uncore_forcewake_for_reg(dev_priv, reg,
+       fw = intel_uncore_forcewake_for_reg(uncore, reg,
                                            FW_REG_READ | FW_REG_WRITE);
-       if (ring_id == RCS && (INTEL_GEN(dev_priv) >= 9))
+       if (ring_id == RCS0 && INTEL_GEN(dev_priv) >= 9)
                fw |= FORCEWAKE_RENDER;
 
-       intel_uncore_forcewake_get(dev_priv, fw);
+       intel_uncore_forcewake_get(uncore, fw);
 
-       I915_WRITE_FW(reg, 0x1);
+       intel_uncore_write_fw(uncore, reg, 0x1);
 
-       if (wait_for_atomic((I915_READ_FW(reg) == 0), 50))
+       if (wait_for_atomic((intel_uncore_read_fw(uncore, reg) == 0), 50))
                gvt_vgpu_err("timeout in invalidate ring (%d) tlb\n", ring_id);
        else
                vgpu_vreg_t(vgpu, reg) = 0;
 
-       intel_uncore_forcewake_put(dev_priv, fw);
+       intel_uncore_forcewake_put(uncore, fw);
 
        gvt_dbg_core("invalidate TLB for ring %d\n", ring_id);
 }
@@ -379,11 +381,11 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next,
        u32 old_v, new_v;
 
        u32 regs[] = {
-               [RCS] = 0xc800,
-               [VCS] = 0xc900,
-               [VCS2] = 0xca00,
-               [BCS] = 0xcc00,
-               [VECS] = 0xcb00,
+               [RCS0]  = 0xc800,
+               [VCS0]  = 0xc900,
+               [VCS1]  = 0xca00,
+               [BCS0]  = 0xcc00,
+               [VECS0] = 0xcb00,
        };
        int i;
 
@@ -391,8 +393,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next,
        if (WARN_ON(ring_id >= ARRAY_SIZE(regs)))
                return;
 
-       if ((IS_KABYLAKE(dev_priv)  || IS_BROXTON(dev_priv)
-               || IS_COFFEELAKE(dev_priv)) && ring_id == RCS)
+       if (ring_id == RCS0 && IS_GEN(dev_priv, 9))
                return;
 
        if (!pre && !gen9_render_mocs.initialized)
@@ -415,7 +416,7 @@ static void switch_mocs(struct intel_vgpu *pre, struct intel_vgpu *next,
                offset.reg += 4;
        }
 
-       if (ring_id == RCS) {
+       if (ring_id == RCS0) {
                l3_offset.reg = 0xb020;
                for (i = 0; i < GEN9_MOCS_SIZE / 2; i++) {
                        if (pre)
@@ -467,11 +468,10 @@ static void switch_mmio(struct intel_vgpu *pre,
                        continue;
                /*
                 * No need to do save or restore of the mmio which is in context
-                * state image on kabylake, it's initialized by lri command and
+                * state image on gen9, it's initialized by lri command and
                 * save or restore with context together.
                 */
-               if ((IS_KABYLAKE(dev_priv) || IS_BROXTON(dev_priv)
-                       || IS_COFFEELAKE(dev_priv)) && mmio->in_context)
+               if (IS_GEN(dev_priv, 9) && mmio->in_context)
                        continue;
 
                // save
@@ -493,7 +493,8 @@ static void switch_mmio(struct intel_vgpu *pre,
                         * itself.
                         */
                        if (mmio->in_context &&
-                           !is_inhibit_context(&s->shadow_ctx->__engine[ring_id]))
+                           !is_inhibit_context(intel_context_lookup(s->shadow_ctx,
+                                                                    dev_priv->engine[ring_id])))
                                continue;
 
                        if (mmio->mask)
@@ -550,9 +551,9 @@ void intel_gvt_switch_mmio(struct intel_vgpu *pre,
         * performace for batch mmio read/write, so we need
         * handle forcewake mannually.
         */
-       intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
+       intel_uncore_forcewake_get(&dev_priv->uncore, FORCEWAKE_ALL);
        switch_mmio(pre, next, ring_id);
-       intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
+       intel_uncore_forcewake_put(&dev_priv->uncore, FORCEWAKE_ALL);
 }
 
 /**