Back to home page

OSCL-LXR

 
 

    


0001 // SPDX-License-Identifier: MIT
0002 /*
0003  * Copyright © 2020 Intel Corporation
0004  */
0005 
0006 #include "display/intel_audio_regs.h"
0007 #include "display/intel_dmc_regs.h"
0008 #include "display/vlv_dsi_pll_regs.h"
0009 #include "gt/intel_gt_regs.h"
0010 #include "gvt/gvt.h"
0011 
0012 #include "i915_drv.h"
0013 #include "i915_pvinfo.h"
0014 #include "i915_reg.h"
0015 #include "intel_gvt.h"
0016 #include "intel_mchbar_regs.h"
0017 
0018 #define MMIO_F(reg, s) do { \
0019     int ret; \
0020     ret = iter->handle_mmio_cb(iter, i915_mmio_reg_offset(reg), s); \
0021     if (ret) \
0022         return ret; \
0023 } while (0)
0024 
0025 #define MMIO_D(reg) MMIO_F(reg, 4)
0026 
0027 #define MMIO_RING_F(prefix, s) do { \
0028     MMIO_F(prefix(RENDER_RING_BASE), s); \
0029     MMIO_F(prefix(BLT_RING_BASE), s); \
0030     MMIO_F(prefix(GEN6_BSD_RING_BASE), s); \
0031     MMIO_F(prefix(VEBOX_RING_BASE), s); \
0032     if (HAS_ENGINE(to_gt(iter->i915), VCS1)) \
0033         MMIO_F(prefix(GEN8_BSD2_RING_BASE), s); \
0034 } while (0)
0035 
0036 #define MMIO_RING_D(prefix) \
0037     MMIO_RING_F(prefix, 4)
0038 
0039 static int iterate_generic_mmio(struct intel_gvt_mmio_table_iter *iter)
0040 {
0041     struct drm_i915_private *dev_priv = iter->i915;
0042 
0043     MMIO_RING_D(RING_IMR);
0044     MMIO_D(SDEIMR);
0045     MMIO_D(SDEIER);
0046     MMIO_D(SDEIIR);
0047     MMIO_D(SDEISR);
0048     MMIO_RING_D(RING_HWSTAM);
0049     MMIO_D(BSD_HWS_PGA_GEN7);
0050     MMIO_D(BLT_HWS_PGA_GEN7);
0051     MMIO_D(VEBOX_HWS_PGA_GEN7);
0052 
0053 #define RING_REG(base) _MMIO((base) + 0x28)
0054     MMIO_RING_D(RING_REG);
0055 #undef RING_REG
0056 
0057 #define RING_REG(base) _MMIO((base) + 0x134)
0058     MMIO_RING_D(RING_REG);
0059 #undef RING_REG
0060 
0061 #define RING_REG(base) _MMIO((base) + 0x6c)
0062     MMIO_RING_D(RING_REG);
0063 #undef RING_REG
0064     MMIO_D(_MMIO(0x2148));
0065     MMIO_D(CCID(RENDER_RING_BASE));
0066     MMIO_D(_MMIO(0x12198));
0067     MMIO_D(GEN7_CXT_SIZE);
0068     MMIO_RING_D(RING_TAIL);
0069     MMIO_RING_D(RING_HEAD);
0070     MMIO_RING_D(RING_CTL);
0071     MMIO_RING_D(RING_ACTHD);
0072     MMIO_RING_D(RING_START);
0073 
0074     /* RING MODE */
0075 #define RING_REG(base) _MMIO((base) + 0x29c)
0076     MMIO_RING_D(RING_REG);
0077 #undef RING_REG
0078 
0079     MMIO_RING_D(RING_MI_MODE);
0080     MMIO_RING_D(RING_INSTPM);
0081     MMIO_RING_D(RING_TIMESTAMP);
0082     MMIO_RING_D(RING_TIMESTAMP_UDW);
0083     MMIO_D(GEN7_GT_MODE);
0084     MMIO_D(CACHE_MODE_0_GEN7);
0085     MMIO_D(CACHE_MODE_1);
0086     MMIO_D(CACHE_MODE_0);
0087     MMIO_D(_MMIO(0x2124));
0088     MMIO_D(_MMIO(0x20dc));
0089     MMIO_D(_3D_CHICKEN3);
0090     MMIO_D(_MMIO(0x2088));
0091     MMIO_D(FF_SLICE_CS_CHICKEN2);
0092     MMIO_D(_MMIO(0x2470));
0093     MMIO_D(GAM_ECOCHK);
0094     MMIO_D(GEN7_COMMON_SLICE_CHICKEN1);
0095     MMIO_D(COMMON_SLICE_CHICKEN2);
0096     MMIO_D(_MMIO(0x9030));
0097     MMIO_D(_MMIO(0x20a0));
0098     MMIO_D(_MMIO(0x2420));
0099     MMIO_D(_MMIO(0x2430));
0100     MMIO_D(_MMIO(0x2434));
0101     MMIO_D(_MMIO(0x2438));
0102     MMIO_D(_MMIO(0x243c));
0103     MMIO_D(_MMIO(0x7018));
0104     MMIO_D(HALF_SLICE_CHICKEN3);
0105     MMIO_D(GEN7_HALF_SLICE_CHICKEN1);
0106     /* display */
0107     MMIO_F(_MMIO(0x60220), 0x20);
0108     MMIO_D(_MMIO(0x602a0));
0109     MMIO_D(_MMIO(0x65050));
0110     MMIO_D(_MMIO(0x650b4));
0111     MMIO_D(_MMIO(0xc4040));
0112     MMIO_D(DERRMR);
0113     MMIO_D(PIPEDSL(PIPE_A));
0114     MMIO_D(PIPEDSL(PIPE_B));
0115     MMIO_D(PIPEDSL(PIPE_C));
0116     MMIO_D(PIPEDSL(_PIPE_EDP));
0117     MMIO_D(PIPECONF(PIPE_A));
0118     MMIO_D(PIPECONF(PIPE_B));
0119     MMIO_D(PIPECONF(PIPE_C));
0120     MMIO_D(PIPECONF(_PIPE_EDP));
0121     MMIO_D(PIPESTAT(PIPE_A));
0122     MMIO_D(PIPESTAT(PIPE_B));
0123     MMIO_D(PIPESTAT(PIPE_C));
0124     MMIO_D(PIPESTAT(_PIPE_EDP));
0125     MMIO_D(PIPE_FLIPCOUNT_G4X(PIPE_A));
0126     MMIO_D(PIPE_FLIPCOUNT_G4X(PIPE_B));
0127     MMIO_D(PIPE_FLIPCOUNT_G4X(PIPE_C));
0128     MMIO_D(PIPE_FLIPCOUNT_G4X(_PIPE_EDP));
0129     MMIO_D(PIPE_FRMCOUNT_G4X(PIPE_A));
0130     MMIO_D(PIPE_FRMCOUNT_G4X(PIPE_B));
0131     MMIO_D(PIPE_FRMCOUNT_G4X(PIPE_C));
0132     MMIO_D(PIPE_FRMCOUNT_G4X(_PIPE_EDP));
0133     MMIO_D(CURCNTR(PIPE_A));
0134     MMIO_D(CURCNTR(PIPE_B));
0135     MMIO_D(CURCNTR(PIPE_C));
0136     MMIO_D(CURPOS(PIPE_A));
0137     MMIO_D(CURPOS(PIPE_B));
0138     MMIO_D(CURPOS(PIPE_C));
0139     MMIO_D(CURBASE(PIPE_A));
0140     MMIO_D(CURBASE(PIPE_B));
0141     MMIO_D(CURBASE(PIPE_C));
0142     MMIO_D(CUR_FBC_CTL(PIPE_A));
0143     MMIO_D(CUR_FBC_CTL(PIPE_B));
0144     MMIO_D(CUR_FBC_CTL(PIPE_C));
0145     MMIO_D(_MMIO(0x700ac));
0146     MMIO_D(_MMIO(0x710ac));
0147     MMIO_D(_MMIO(0x720ac));
0148     MMIO_D(_MMIO(0x70090));
0149     MMIO_D(_MMIO(0x70094));
0150     MMIO_D(_MMIO(0x70098));
0151     MMIO_D(_MMIO(0x7009c));
0152     MMIO_D(DSPCNTR(PIPE_A));
0153     MMIO_D(DSPADDR(PIPE_A));
0154     MMIO_D(DSPSTRIDE(PIPE_A));
0155     MMIO_D(DSPPOS(PIPE_A));
0156     MMIO_D(DSPSIZE(PIPE_A));
0157     MMIO_D(DSPSURF(PIPE_A));
0158     MMIO_D(DSPOFFSET(PIPE_A));
0159     MMIO_D(DSPSURFLIVE(PIPE_A));
0160     MMIO_D(REG_50080(PIPE_A, PLANE_PRIMARY));
0161     MMIO_D(DSPCNTR(PIPE_B));
0162     MMIO_D(DSPADDR(PIPE_B));
0163     MMIO_D(DSPSTRIDE(PIPE_B));
0164     MMIO_D(DSPPOS(PIPE_B));
0165     MMIO_D(DSPSIZE(PIPE_B));
0166     MMIO_D(DSPSURF(PIPE_B));
0167     MMIO_D(DSPOFFSET(PIPE_B));
0168     MMIO_D(DSPSURFLIVE(PIPE_B));
0169     MMIO_D(REG_50080(PIPE_B, PLANE_PRIMARY));
0170     MMIO_D(DSPCNTR(PIPE_C));
0171     MMIO_D(DSPADDR(PIPE_C));
0172     MMIO_D(DSPSTRIDE(PIPE_C));
0173     MMIO_D(DSPPOS(PIPE_C));
0174     MMIO_D(DSPSIZE(PIPE_C));
0175     MMIO_D(DSPSURF(PIPE_C));
0176     MMIO_D(DSPOFFSET(PIPE_C));
0177     MMIO_D(DSPSURFLIVE(PIPE_C));
0178     MMIO_D(REG_50080(PIPE_C, PLANE_PRIMARY));
0179     MMIO_D(SPRCTL(PIPE_A));
0180     MMIO_D(SPRLINOFF(PIPE_A));
0181     MMIO_D(SPRSTRIDE(PIPE_A));
0182     MMIO_D(SPRPOS(PIPE_A));
0183     MMIO_D(SPRSIZE(PIPE_A));
0184     MMIO_D(SPRKEYVAL(PIPE_A));
0185     MMIO_D(SPRKEYMSK(PIPE_A));
0186     MMIO_D(SPRSURF(PIPE_A));
0187     MMIO_D(SPRKEYMAX(PIPE_A));
0188     MMIO_D(SPROFFSET(PIPE_A));
0189     MMIO_D(SPRSCALE(PIPE_A));
0190     MMIO_D(SPRSURFLIVE(PIPE_A));
0191     MMIO_D(REG_50080(PIPE_A, PLANE_SPRITE0));
0192     MMIO_D(SPRCTL(PIPE_B));
0193     MMIO_D(SPRLINOFF(PIPE_B));
0194     MMIO_D(SPRSTRIDE(PIPE_B));
0195     MMIO_D(SPRPOS(PIPE_B));
0196     MMIO_D(SPRSIZE(PIPE_B));
0197     MMIO_D(SPRKEYVAL(PIPE_B));
0198     MMIO_D(SPRKEYMSK(PIPE_B));
0199     MMIO_D(SPRSURF(PIPE_B));
0200     MMIO_D(SPRKEYMAX(PIPE_B));
0201     MMIO_D(SPROFFSET(PIPE_B));
0202     MMIO_D(SPRSCALE(PIPE_B));
0203     MMIO_D(SPRSURFLIVE(PIPE_B));
0204     MMIO_D(REG_50080(PIPE_B, PLANE_SPRITE0));
0205     MMIO_D(SPRCTL(PIPE_C));
0206     MMIO_D(SPRLINOFF(PIPE_C));
0207     MMIO_D(SPRSTRIDE(PIPE_C));
0208     MMIO_D(SPRPOS(PIPE_C));
0209     MMIO_D(SPRSIZE(PIPE_C));
0210     MMIO_D(SPRKEYVAL(PIPE_C));
0211     MMIO_D(SPRKEYMSK(PIPE_C));
0212     MMIO_D(SPRSURF(PIPE_C));
0213     MMIO_D(SPRKEYMAX(PIPE_C));
0214     MMIO_D(SPROFFSET(PIPE_C));
0215     MMIO_D(SPRSCALE(PIPE_C));
0216     MMIO_D(SPRSURFLIVE(PIPE_C));
0217     MMIO_D(REG_50080(PIPE_C, PLANE_SPRITE0));
0218     MMIO_D(HTOTAL(TRANSCODER_A));
0219     MMIO_D(HBLANK(TRANSCODER_A));
0220     MMIO_D(HSYNC(TRANSCODER_A));
0221     MMIO_D(VTOTAL(TRANSCODER_A));
0222     MMIO_D(VBLANK(TRANSCODER_A));
0223     MMIO_D(VSYNC(TRANSCODER_A));
0224     MMIO_D(BCLRPAT(TRANSCODER_A));
0225     MMIO_D(VSYNCSHIFT(TRANSCODER_A));
0226     MMIO_D(PIPESRC(TRANSCODER_A));
0227     MMIO_D(HTOTAL(TRANSCODER_B));
0228     MMIO_D(HBLANK(TRANSCODER_B));
0229     MMIO_D(HSYNC(TRANSCODER_B));
0230     MMIO_D(VTOTAL(TRANSCODER_B));
0231     MMIO_D(VBLANK(TRANSCODER_B));
0232     MMIO_D(VSYNC(TRANSCODER_B));
0233     MMIO_D(BCLRPAT(TRANSCODER_B));
0234     MMIO_D(VSYNCSHIFT(TRANSCODER_B));
0235     MMIO_D(PIPESRC(TRANSCODER_B));
0236     MMIO_D(HTOTAL(TRANSCODER_C));
0237     MMIO_D(HBLANK(TRANSCODER_C));
0238     MMIO_D(HSYNC(TRANSCODER_C));
0239     MMIO_D(VTOTAL(TRANSCODER_C));
0240     MMIO_D(VBLANK(TRANSCODER_C));
0241     MMIO_D(VSYNC(TRANSCODER_C));
0242     MMIO_D(BCLRPAT(TRANSCODER_C));
0243     MMIO_D(VSYNCSHIFT(TRANSCODER_C));
0244     MMIO_D(PIPESRC(TRANSCODER_C));
0245     MMIO_D(HTOTAL(TRANSCODER_EDP));
0246     MMIO_D(HBLANK(TRANSCODER_EDP));
0247     MMIO_D(HSYNC(TRANSCODER_EDP));
0248     MMIO_D(VTOTAL(TRANSCODER_EDP));
0249     MMIO_D(VBLANK(TRANSCODER_EDP));
0250     MMIO_D(VSYNC(TRANSCODER_EDP));
0251     MMIO_D(BCLRPAT(TRANSCODER_EDP));
0252     MMIO_D(VSYNCSHIFT(TRANSCODER_EDP));
0253     MMIO_D(PIPE_DATA_M1(TRANSCODER_A));
0254     MMIO_D(PIPE_DATA_N1(TRANSCODER_A));
0255     MMIO_D(PIPE_DATA_M2(TRANSCODER_A));
0256     MMIO_D(PIPE_DATA_N2(TRANSCODER_A));
0257     MMIO_D(PIPE_LINK_M1(TRANSCODER_A));
0258     MMIO_D(PIPE_LINK_N1(TRANSCODER_A));
0259     MMIO_D(PIPE_LINK_M2(TRANSCODER_A));
0260     MMIO_D(PIPE_LINK_N2(TRANSCODER_A));
0261     MMIO_D(PIPE_DATA_M1(TRANSCODER_B));
0262     MMIO_D(PIPE_DATA_N1(TRANSCODER_B));
0263     MMIO_D(PIPE_DATA_M2(TRANSCODER_B));
0264     MMIO_D(PIPE_DATA_N2(TRANSCODER_B));
0265     MMIO_D(PIPE_LINK_M1(TRANSCODER_B));
0266     MMIO_D(PIPE_LINK_N1(TRANSCODER_B));
0267     MMIO_D(PIPE_LINK_M2(TRANSCODER_B));
0268     MMIO_D(PIPE_LINK_N2(TRANSCODER_B));
0269     MMIO_D(PIPE_DATA_M1(TRANSCODER_C));
0270     MMIO_D(PIPE_DATA_N1(TRANSCODER_C));
0271     MMIO_D(PIPE_DATA_M2(TRANSCODER_C));
0272     MMIO_D(PIPE_DATA_N2(TRANSCODER_C));
0273     MMIO_D(PIPE_LINK_M1(TRANSCODER_C));
0274     MMIO_D(PIPE_LINK_N1(TRANSCODER_C));
0275     MMIO_D(PIPE_LINK_M2(TRANSCODER_C));
0276     MMIO_D(PIPE_LINK_N2(TRANSCODER_C));
0277     MMIO_D(PIPE_DATA_M1(TRANSCODER_EDP));
0278     MMIO_D(PIPE_DATA_N1(TRANSCODER_EDP));
0279     MMIO_D(PIPE_DATA_M2(TRANSCODER_EDP));
0280     MMIO_D(PIPE_DATA_N2(TRANSCODER_EDP));
0281     MMIO_D(PIPE_LINK_M1(TRANSCODER_EDP));
0282     MMIO_D(PIPE_LINK_N1(TRANSCODER_EDP));
0283     MMIO_D(PIPE_LINK_M2(TRANSCODER_EDP));
0284     MMIO_D(PIPE_LINK_N2(TRANSCODER_EDP));
0285     MMIO_D(PF_CTL(PIPE_A));
0286     MMIO_D(PF_WIN_SZ(PIPE_A));
0287     MMIO_D(PF_WIN_POS(PIPE_A));
0288     MMIO_D(PF_VSCALE(PIPE_A));
0289     MMIO_D(PF_HSCALE(PIPE_A));
0290     MMIO_D(PF_CTL(PIPE_B));
0291     MMIO_D(PF_WIN_SZ(PIPE_B));
0292     MMIO_D(PF_WIN_POS(PIPE_B));
0293     MMIO_D(PF_VSCALE(PIPE_B));
0294     MMIO_D(PF_HSCALE(PIPE_B));
0295     MMIO_D(PF_CTL(PIPE_C));
0296     MMIO_D(PF_WIN_SZ(PIPE_C));
0297     MMIO_D(PF_WIN_POS(PIPE_C));
0298     MMIO_D(PF_VSCALE(PIPE_C));
0299     MMIO_D(PF_HSCALE(PIPE_C));
0300     MMIO_D(WM0_PIPE_ILK(PIPE_A));
0301     MMIO_D(WM0_PIPE_ILK(PIPE_B));
0302     MMIO_D(WM0_PIPE_ILK(PIPE_C));
0303     MMIO_D(WM1_LP_ILK);
0304     MMIO_D(WM2_LP_ILK);
0305     MMIO_D(WM3_LP_ILK);
0306     MMIO_D(WM1S_LP_ILK);
0307     MMIO_D(WM2S_LP_IVB);
0308     MMIO_D(WM3S_LP_IVB);
0309     MMIO_D(BLC_PWM_CPU_CTL2);
0310     MMIO_D(BLC_PWM_CPU_CTL);
0311     MMIO_D(BLC_PWM_PCH_CTL1);
0312     MMIO_D(BLC_PWM_PCH_CTL2);
0313     MMIO_D(_MMIO(0x48268));
0314     MMIO_F(PCH_GMBUS0, 4 * 4);
0315     MMIO_F(PCH_GPIO_BASE, 6 * 4);
0316     MMIO_F(_MMIO(0xe4f00), 0x28);
0317     MMIO_D(_MMIO(_PCH_TRANSACONF));
0318     MMIO_D(_MMIO(_PCH_TRANSBCONF));
0319     MMIO_D(FDI_RX_IIR(PIPE_A));
0320     MMIO_D(FDI_RX_IIR(PIPE_B));
0321     MMIO_D(FDI_RX_IIR(PIPE_C));
0322     MMIO_D(FDI_RX_IMR(PIPE_A));
0323     MMIO_D(FDI_RX_IMR(PIPE_B));
0324     MMIO_D(FDI_RX_IMR(PIPE_C));
0325     MMIO_D(FDI_RX_CTL(PIPE_A));
0326     MMIO_D(FDI_RX_CTL(PIPE_B));
0327     MMIO_D(FDI_RX_CTL(PIPE_C));
0328     MMIO_D(_MMIO(_PCH_TRANS_HTOTAL_A));
0329     MMIO_D(_MMIO(_PCH_TRANS_HBLANK_A));
0330     MMIO_D(_MMIO(_PCH_TRANS_HSYNC_A));
0331     MMIO_D(_MMIO(_PCH_TRANS_VTOTAL_A));
0332     MMIO_D(_MMIO(_PCH_TRANS_VBLANK_A));
0333     MMIO_D(_MMIO(_PCH_TRANS_VSYNC_A));
0334     MMIO_D(_MMIO(_PCH_TRANS_VSYNCSHIFT_A));
0335     MMIO_D(_MMIO(_PCH_TRANS_HTOTAL_B));
0336     MMIO_D(_MMIO(_PCH_TRANS_HBLANK_B));
0337     MMIO_D(_MMIO(_PCH_TRANS_HSYNC_B));
0338     MMIO_D(_MMIO(_PCH_TRANS_VTOTAL_B));
0339     MMIO_D(_MMIO(_PCH_TRANS_VBLANK_B));
0340     MMIO_D(_MMIO(_PCH_TRANS_VSYNC_B));
0341     MMIO_D(_MMIO(_PCH_TRANS_VSYNCSHIFT_B));
0342     MMIO_D(_MMIO(_PCH_TRANSA_DATA_M1));
0343     MMIO_D(_MMIO(_PCH_TRANSA_DATA_N1));
0344     MMIO_D(_MMIO(_PCH_TRANSA_DATA_M2));
0345     MMIO_D(_MMIO(_PCH_TRANSA_DATA_N2));
0346     MMIO_D(_MMIO(_PCH_TRANSA_LINK_M1));
0347     MMIO_D(_MMIO(_PCH_TRANSA_LINK_N1));
0348     MMIO_D(_MMIO(_PCH_TRANSA_LINK_M2));
0349     MMIO_D(_MMIO(_PCH_TRANSA_LINK_N2));
0350     MMIO_D(TRANS_DP_CTL(PIPE_A));
0351     MMIO_D(TRANS_DP_CTL(PIPE_B));
0352     MMIO_D(TRANS_DP_CTL(PIPE_C));
0353     MMIO_D(TVIDEO_DIP_CTL(PIPE_A));
0354     MMIO_D(TVIDEO_DIP_DATA(PIPE_A));
0355     MMIO_D(TVIDEO_DIP_GCP(PIPE_A));
0356     MMIO_D(TVIDEO_DIP_CTL(PIPE_B));
0357     MMIO_D(TVIDEO_DIP_DATA(PIPE_B));
0358     MMIO_D(TVIDEO_DIP_GCP(PIPE_B));
0359     MMIO_D(TVIDEO_DIP_CTL(PIPE_C));
0360     MMIO_D(TVIDEO_DIP_DATA(PIPE_C));
0361     MMIO_D(TVIDEO_DIP_GCP(PIPE_C));
0362     MMIO_D(_MMIO(_FDI_RXA_MISC));
0363     MMIO_D(_MMIO(_FDI_RXB_MISC));
0364     MMIO_D(_MMIO(_FDI_RXA_TUSIZE1));
0365     MMIO_D(_MMIO(_FDI_RXA_TUSIZE2));
0366     MMIO_D(_MMIO(_FDI_RXB_TUSIZE1));
0367     MMIO_D(_MMIO(_FDI_RXB_TUSIZE2));
0368     MMIO_D(PCH_PP_CONTROL);
0369     MMIO_D(PCH_PP_DIVISOR);
0370     MMIO_D(PCH_PP_STATUS);
0371     MMIO_D(PCH_LVDS);
0372     MMIO_D(_MMIO(_PCH_DPLL_A));
0373     MMIO_D(_MMIO(_PCH_DPLL_B));
0374     MMIO_D(_MMIO(_PCH_FPA0));
0375     MMIO_D(_MMIO(_PCH_FPA1));
0376     MMIO_D(_MMIO(_PCH_FPB0));
0377     MMIO_D(_MMIO(_PCH_FPB1));
0378     MMIO_D(PCH_DREF_CONTROL);
0379     MMIO_D(PCH_RAWCLK_FREQ);
0380     MMIO_D(PCH_DPLL_SEL);
0381     MMIO_D(_MMIO(0x61208));
0382     MMIO_D(_MMIO(0x6120c));
0383     MMIO_D(PCH_PP_ON_DELAYS);
0384     MMIO_D(PCH_PP_OFF_DELAYS);
0385     MMIO_D(_MMIO(0xe651c));
0386     MMIO_D(_MMIO(0xe661c));
0387     MMIO_D(_MMIO(0xe671c));
0388     MMIO_D(_MMIO(0xe681c));
0389     MMIO_D(_MMIO(0xe6c04));
0390     MMIO_D(_MMIO(0xe6e1c));
0391     MMIO_D(PCH_PORT_HOTPLUG);
0392     MMIO_D(LCPLL_CTL);
0393     MMIO_D(FUSE_STRAP);
0394     MMIO_D(DIGITAL_PORT_HOTPLUG_CNTRL);
0395     MMIO_D(DISP_ARB_CTL);
0396     MMIO_D(DISP_ARB_CTL2);
0397     MMIO_D(ILK_DISPLAY_CHICKEN1);
0398     MMIO_D(ILK_DISPLAY_CHICKEN2);
0399     MMIO_D(ILK_DSPCLK_GATE_D);
0400     MMIO_D(SOUTH_CHICKEN1);
0401     MMIO_D(SOUTH_CHICKEN2);
0402     MMIO_D(_MMIO(_TRANSA_CHICKEN1));
0403     MMIO_D(_MMIO(_TRANSB_CHICKEN1));
0404     MMIO_D(SOUTH_DSPCLK_GATE_D);
0405     MMIO_D(_MMIO(_TRANSA_CHICKEN2));
0406     MMIO_D(_MMIO(_TRANSB_CHICKEN2));
0407     MMIO_D(ILK_DPFC_CB_BASE(INTEL_FBC_A));
0408     MMIO_D(ILK_DPFC_CONTROL(INTEL_FBC_A));
0409     MMIO_D(ILK_DPFC_RECOMP_CTL(INTEL_FBC_A));
0410     MMIO_D(ILK_DPFC_STATUS(INTEL_FBC_A));
0411     MMIO_D(ILK_DPFC_FENCE_YOFF(INTEL_FBC_A));
0412     MMIO_D(ILK_DPFC_CHICKEN(INTEL_FBC_A));
0413     MMIO_D(ILK_FBC_RT_BASE);
0414     MMIO_D(IPS_CTL);
0415     MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_A));
0416     MMIO_D(PIPE_CSC_COEFF_BY(PIPE_A));
0417     MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_A));
0418     MMIO_D(PIPE_CSC_COEFF_BU(PIPE_A));
0419     MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_A));
0420     MMIO_D(PIPE_CSC_COEFF_BV(PIPE_A));
0421     MMIO_D(PIPE_CSC_MODE(PIPE_A));
0422     MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_A));
0423     MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_A));
0424     MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_A));
0425     MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_A));
0426     MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_A));
0427     MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_A));
0428     MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_B));
0429     MMIO_D(PIPE_CSC_COEFF_BY(PIPE_B));
0430     MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_B));
0431     MMIO_D(PIPE_CSC_COEFF_BU(PIPE_B));
0432     MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_B));
0433     MMIO_D(PIPE_CSC_COEFF_BV(PIPE_B));
0434     MMIO_D(PIPE_CSC_MODE(PIPE_B));
0435     MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_B));
0436     MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_B));
0437     MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_B));
0438     MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_B));
0439     MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_B));
0440     MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_B));
0441     MMIO_D(PIPE_CSC_COEFF_RY_GY(PIPE_C));
0442     MMIO_D(PIPE_CSC_COEFF_BY(PIPE_C));
0443     MMIO_D(PIPE_CSC_COEFF_RU_GU(PIPE_C));
0444     MMIO_D(PIPE_CSC_COEFF_BU(PIPE_C));
0445     MMIO_D(PIPE_CSC_COEFF_RV_GV(PIPE_C));
0446     MMIO_D(PIPE_CSC_COEFF_BV(PIPE_C));
0447     MMIO_D(PIPE_CSC_MODE(PIPE_C));
0448     MMIO_D(PIPE_CSC_PREOFF_HI(PIPE_C));
0449     MMIO_D(PIPE_CSC_PREOFF_ME(PIPE_C));
0450     MMIO_D(PIPE_CSC_PREOFF_LO(PIPE_C));
0451     MMIO_D(PIPE_CSC_POSTOFF_HI(PIPE_C));
0452     MMIO_D(PIPE_CSC_POSTOFF_ME(PIPE_C));
0453     MMIO_D(PIPE_CSC_POSTOFF_LO(PIPE_C));
0454     MMIO_D(PREC_PAL_INDEX(PIPE_A));
0455     MMIO_D(PREC_PAL_DATA(PIPE_A));
0456     MMIO_F(PREC_PAL_GC_MAX(PIPE_A, 0), 4 * 3);
0457     MMIO_D(PREC_PAL_INDEX(PIPE_B));
0458     MMIO_D(PREC_PAL_DATA(PIPE_B));
0459     MMIO_F(PREC_PAL_GC_MAX(PIPE_B, 0), 4 * 3);
0460     MMIO_D(PREC_PAL_INDEX(PIPE_C));
0461     MMIO_D(PREC_PAL_DATA(PIPE_C));
0462     MMIO_F(PREC_PAL_GC_MAX(PIPE_C, 0), 4 * 3);
0463     MMIO_D(_MMIO(0x60110));
0464     MMIO_D(_MMIO(0x61110));
0465     MMIO_F(_MMIO(0x70400), 0x40);
0466     MMIO_F(_MMIO(0x71400), 0x40);
0467     MMIO_F(_MMIO(0x72400), 0x40);
0468     MMIO_D(WM_LINETIME(PIPE_A));
0469     MMIO_D(WM_LINETIME(PIPE_B));
0470     MMIO_D(WM_LINETIME(PIPE_C));
0471     MMIO_D(SPLL_CTL);
0472     MMIO_D(_MMIO(_WRPLL_CTL1));
0473     MMIO_D(_MMIO(_WRPLL_CTL2));
0474     MMIO_D(PORT_CLK_SEL(PORT_A));
0475     MMIO_D(PORT_CLK_SEL(PORT_B));
0476     MMIO_D(PORT_CLK_SEL(PORT_C));
0477     MMIO_D(PORT_CLK_SEL(PORT_D));
0478     MMIO_D(PORT_CLK_SEL(PORT_E));
0479     MMIO_D(TRANS_CLK_SEL(TRANSCODER_A));
0480     MMIO_D(TRANS_CLK_SEL(TRANSCODER_B));
0481     MMIO_D(TRANS_CLK_SEL(TRANSCODER_C));
0482     MMIO_D(HSW_NDE_RSTWRN_OPT);
0483     MMIO_D(_MMIO(0x46508));
0484     MMIO_D(_MMIO(0x49080));
0485     MMIO_D(_MMIO(0x49180));
0486     MMIO_D(_MMIO(0x49280));
0487     MMIO_F(_MMIO(0x49090), 0x14);
0488     MMIO_F(_MMIO(0x49190), 0x14);
0489     MMIO_F(_MMIO(0x49290), 0x14);
0490     MMIO_D(GAMMA_MODE(PIPE_A));
0491     MMIO_D(GAMMA_MODE(PIPE_B));
0492     MMIO_D(GAMMA_MODE(PIPE_C));
0493     MMIO_D(PIPE_MULT(PIPE_A));
0494     MMIO_D(PIPE_MULT(PIPE_B));
0495     MMIO_D(PIPE_MULT(PIPE_C));
0496     MMIO_D(HSW_TVIDEO_DIP_CTL(TRANSCODER_A));
0497     MMIO_D(HSW_TVIDEO_DIP_CTL(TRANSCODER_B));
0498     MMIO_D(HSW_TVIDEO_DIP_CTL(TRANSCODER_C));
0499     MMIO_D(SFUSE_STRAP);
0500     MMIO_D(SBI_ADDR);
0501     MMIO_D(SBI_DATA);
0502     MMIO_D(SBI_CTL_STAT);
0503     MMIO_D(PIXCLK_GATE);
0504     MMIO_F(_MMIO(_DPA_AUX_CH_CTL), 6 * 4);
0505     MMIO_D(DDI_BUF_CTL(PORT_A));
0506     MMIO_D(DDI_BUF_CTL(PORT_B));
0507     MMIO_D(DDI_BUF_CTL(PORT_C));
0508     MMIO_D(DDI_BUF_CTL(PORT_D));
0509     MMIO_D(DDI_BUF_CTL(PORT_E));
0510     MMIO_D(DP_TP_CTL(PORT_A));
0511     MMIO_D(DP_TP_CTL(PORT_B));
0512     MMIO_D(DP_TP_CTL(PORT_C));
0513     MMIO_D(DP_TP_CTL(PORT_D));
0514     MMIO_D(DP_TP_CTL(PORT_E));
0515     MMIO_D(DP_TP_STATUS(PORT_A));
0516     MMIO_D(DP_TP_STATUS(PORT_B));
0517     MMIO_D(DP_TP_STATUS(PORT_C));
0518     MMIO_D(DP_TP_STATUS(PORT_D));
0519     MMIO_D(DP_TP_STATUS(PORT_E));
0520     MMIO_F(_MMIO(_DDI_BUF_TRANS_A), 0x50);
0521     MMIO_F(_MMIO(0x64e60), 0x50);
0522     MMIO_F(_MMIO(0x64eC0), 0x50);
0523     MMIO_F(_MMIO(0x64f20), 0x50);
0524     MMIO_F(_MMIO(0x64f80), 0x50);
0525     MMIO_D(HSW_AUD_CFG(PIPE_A));
0526     MMIO_D(HSW_AUD_PIN_ELD_CP_VLD);
0527     MMIO_D(HSW_AUD_MISC_CTRL(PIPE_A));
0528     MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_A));
0529     MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_B));
0530     MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_C));
0531     MMIO_D(_MMIO(_TRANS_DDI_FUNC_CTL_EDP));
0532     MMIO_D(_MMIO(_TRANSA_MSA_MISC));
0533     MMIO_D(_MMIO(_TRANSB_MSA_MISC));
0534     MMIO_D(_MMIO(_TRANSC_MSA_MISC));
0535     MMIO_D(_MMIO(_TRANS_EDP_MSA_MISC));
0536     MMIO_D(FORCEWAKE);
0537     MMIO_D(FORCEWAKE_ACK);
0538     MMIO_D(GEN6_GT_CORE_STATUS);
0539     MMIO_D(GEN6_GT_THREAD_STATUS_REG);
0540     MMIO_D(GTFIFODBG);
0541     MMIO_D(GTFIFOCTL);
0542     MMIO_D(ECOBUS);
0543     MMIO_D(GEN6_RC_CONTROL);
0544     MMIO_D(GEN6_RC_STATE);
0545     MMIO_D(GEN6_RPNSWREQ);
0546     MMIO_D(GEN6_RC_VIDEO_FREQ);
0547     MMIO_D(GEN6_RP_DOWN_TIMEOUT);
0548     MMIO_D(GEN6_RP_INTERRUPT_LIMITS);
0549     MMIO_D(GEN6_RPSTAT1);
0550     MMIO_D(GEN6_RP_CONTROL);
0551     MMIO_D(GEN6_RP_UP_THRESHOLD);
0552     MMIO_D(GEN6_RP_DOWN_THRESHOLD);
0553     MMIO_D(GEN6_RP_CUR_UP_EI);
0554     MMIO_D(GEN6_RP_CUR_UP);
0555     MMIO_D(GEN6_RP_PREV_UP);
0556     MMIO_D(GEN6_RP_CUR_DOWN_EI);
0557     MMIO_D(GEN6_RP_CUR_DOWN);
0558     MMIO_D(GEN6_RP_PREV_DOWN);
0559     MMIO_D(GEN6_RP_UP_EI);
0560     MMIO_D(GEN6_RP_DOWN_EI);
0561     MMIO_D(GEN6_RP_IDLE_HYSTERSIS);
0562     MMIO_D(GEN6_RC1_WAKE_RATE_LIMIT);
0563     MMIO_D(GEN6_RC6_WAKE_RATE_LIMIT);
0564     MMIO_D(GEN6_RC6pp_WAKE_RATE_LIMIT);
0565     MMIO_D(GEN6_RC_EVALUATION_INTERVAL);
0566     MMIO_D(GEN6_RC_IDLE_HYSTERSIS);
0567     MMIO_D(GEN6_RC_SLEEP);
0568     MMIO_D(GEN6_RC1e_THRESHOLD);
0569     MMIO_D(GEN6_RC6_THRESHOLD);
0570     MMIO_D(GEN6_RC6p_THRESHOLD);
0571     MMIO_D(GEN6_RC6pp_THRESHOLD);
0572     MMIO_D(GEN6_PMINTRMSK);
0573 
0574     MMIO_D(RSTDBYCTL);
0575     MMIO_D(GEN6_GDRST);
0576     MMIO_F(FENCE_REG_GEN6_LO(0), 0x80);
0577     MMIO_D(CPU_VGACNTRL);
0578     MMIO_D(TILECTL);
0579     MMIO_D(GEN6_UCGCTL1);
0580     MMIO_D(GEN6_UCGCTL2);
0581     MMIO_F(_MMIO(0x4f000), 0x90);
0582     MMIO_D(GEN6_PCODE_DATA);
0583     MMIO_D(_MMIO(0x13812c));
0584     MMIO_D(GEN7_ERR_INT);
0585     MMIO_D(HSW_EDRAM_CAP);
0586     MMIO_D(HSW_IDICR);
0587     MMIO_D(GFX_FLSH_CNTL_GEN6);
0588     MMIO_D(_MMIO(0x3c));
0589     MMIO_D(_MMIO(0x860));
0590     MMIO_D(ECOSKPD(RENDER_RING_BASE));
0591     MMIO_D(_MMIO(0x121d0));
0592     MMIO_D(ECOSKPD(BLT_RING_BASE));
0593     MMIO_D(_MMIO(0x41d0));
0594     MMIO_D(GAC_ECO_BITS);
0595     MMIO_D(_MMIO(0x6200));
0596     MMIO_D(_MMIO(0x6204));
0597     MMIO_D(_MMIO(0x6208));
0598     MMIO_D(_MMIO(0x7118));
0599     MMIO_D(_MMIO(0x7180));
0600     MMIO_D(_MMIO(0x7408));
0601     MMIO_D(_MMIO(0x7c00));
0602     MMIO_D(GEN6_MBCTL);
0603     MMIO_D(_MMIO(0x911c));
0604     MMIO_D(_MMIO(0x9120));
0605     MMIO_D(GEN7_UCGCTL4);
0606     MMIO_D(GAB_CTL);
0607     MMIO_D(_MMIO(0x48800));
0608     MMIO_D(_MMIO(0xce044));
0609     MMIO_D(_MMIO(0xe6500));
0610     MMIO_D(_MMIO(0xe6504));
0611     MMIO_D(_MMIO(0xe6600));
0612     MMIO_D(_MMIO(0xe6604));
0613     MMIO_D(_MMIO(0xe6700));
0614     MMIO_D(_MMIO(0xe6704));
0615     MMIO_D(_MMIO(0xe6800));
0616     MMIO_D(_MMIO(0xe6804));
0617     MMIO_D(PCH_GMBUS4);
0618     MMIO_D(PCH_GMBUS5);
0619     MMIO_D(_MMIO(0x902c));
0620     MMIO_D(_MMIO(0xec008));
0621     MMIO_D(_MMIO(0xec00c));
0622     MMIO_D(_MMIO(0xec008 + 0x18));
0623     MMIO_D(_MMIO(0xec00c + 0x18));
0624     MMIO_D(_MMIO(0xec008 + 0x18 * 2));
0625     MMIO_D(_MMIO(0xec00c + 0x18 * 2));
0626     MMIO_D(_MMIO(0xec008 + 0x18 * 3));
0627     MMIO_D(_MMIO(0xec00c + 0x18 * 3));
0628     MMIO_D(_MMIO(0xec408));
0629     MMIO_D(_MMIO(0xec40c));
0630     MMIO_D(_MMIO(0xec408 + 0x18));
0631     MMIO_D(_MMIO(0xec40c + 0x18));
0632     MMIO_D(_MMIO(0xec408 + 0x18 * 2));
0633     MMIO_D(_MMIO(0xec40c + 0x18 * 2));
0634     MMIO_D(_MMIO(0xec408 + 0x18 * 3));
0635     MMIO_D(_MMIO(0xec40c + 0x18 * 3));
0636     MMIO_D(_MMIO(0xfc810));
0637     MMIO_D(_MMIO(0xfc81c));
0638     MMIO_D(_MMIO(0xfc828));
0639     MMIO_D(_MMIO(0xfc834));
0640     MMIO_D(_MMIO(0xfcc00));
0641     MMIO_D(_MMIO(0xfcc0c));
0642     MMIO_D(_MMIO(0xfcc18));
0643     MMIO_D(_MMIO(0xfcc24));
0644     MMIO_D(_MMIO(0xfd000));
0645     MMIO_D(_MMIO(0xfd00c));
0646     MMIO_D(_MMIO(0xfd018));
0647     MMIO_D(_MMIO(0xfd024));
0648     MMIO_D(_MMIO(0xfd034));
0649     MMIO_D(FPGA_DBG);
0650     MMIO_D(_MMIO(0x2054));
0651     MMIO_D(_MMIO(0x12054));
0652     MMIO_D(_MMIO(0x22054));
0653     MMIO_D(_MMIO(0x1a054));
0654     MMIO_D(_MMIO(0x44070));
0655     MMIO_D(_MMIO(0x2178));
0656     MMIO_D(_MMIO(0x217c));
0657     MMIO_D(_MMIO(0x12178));
0658     MMIO_D(_MMIO(0x1217c));
0659     MMIO_F(_MMIO(0x5200), 32);
0660     MMIO_F(_MMIO(0x5240), 32);
0661     MMIO_F(_MMIO(0x5280), 16);
0662     MMIO_D(BCS_SWCTRL);
0663     MMIO_F(HS_INVOCATION_COUNT, 8);
0664     MMIO_F(DS_INVOCATION_COUNT, 8);
0665     MMIO_F(IA_VERTICES_COUNT, 8);
0666     MMIO_F(IA_PRIMITIVES_COUNT, 8);
0667     MMIO_F(VS_INVOCATION_COUNT, 8);
0668     MMIO_F(GS_INVOCATION_COUNT, 8);
0669     MMIO_F(GS_PRIMITIVES_COUNT, 8);
0670     MMIO_F(CL_INVOCATION_COUNT, 8);
0671     MMIO_F(CL_PRIMITIVES_COUNT, 8);
0672     MMIO_F(PS_INVOCATION_COUNT, 8);
0673     MMIO_F(PS_DEPTH_COUNT, 8);
0674     MMIO_D(ARB_MODE);
0675     MMIO_RING_D(RING_BBADDR);
0676     MMIO_D(_MMIO(0x2220));
0677     MMIO_D(_MMIO(0x12220));
0678     MMIO_D(_MMIO(0x22220));
0679     MMIO_RING_D(RING_SYNC_1);
0680     MMIO_RING_D(RING_SYNC_0);
0681     MMIO_D(GUC_STATUS);
0682 
0683     MMIO_F(_MMIO(MCHBAR_MIRROR_BASE_SNB), 0x40000);
0684     MMIO_F(_MMIO(VGT_PVINFO_PAGE), VGT_PVINFO_SIZE);
0685     MMIO_F(LGC_PALETTE(PIPE_A, 0), 1024);
0686     MMIO_F(LGC_PALETTE(PIPE_B, 0), 1024);
0687     MMIO_F(LGC_PALETTE(PIPE_C, 0), 1024);
0688 
0689     return 0;
0690 }
0691 
0692 static int iterate_bdw_only_mmio(struct intel_gvt_mmio_table_iter *iter)
0693 {
0694     MMIO_D(HSW_PWR_WELL_CTL1);
0695     MMIO_D(HSW_PWR_WELL_CTL2);
0696     MMIO_D(HSW_PWR_WELL_CTL3);
0697     MMIO_D(HSW_PWR_WELL_CTL4);
0698     MMIO_D(HSW_PWR_WELL_CTL5);
0699     MMIO_D(HSW_PWR_WELL_CTL6);
0700 
0701     MMIO_D(WM_MISC);
0702     MMIO_D(_MMIO(_SRD_CTL_EDP));
0703 
0704     MMIO_D(_MMIO(0xb1f0));
0705     MMIO_D(_MMIO(0xb1c0));
0706     MMIO_D(_MMIO(0xb100));
0707     MMIO_D(_MMIO(0xb10c));
0708     MMIO_D(_MMIO(0xb110));
0709     MMIO_D(_MMIO(0x83a4));
0710     MMIO_D(_MMIO(0x8430));
0711     MMIO_D(_MMIO(0x2248));
0712     MMIO_D(FORCEWAKE_ACK_HSW);
0713 
0714     return 0;
0715 }
0716 
0717 static int iterate_bdw_plus_mmio(struct intel_gvt_mmio_table_iter *iter)
0718 {
0719     struct drm_i915_private *dev_priv = iter->i915;
0720 
0721     MMIO_D(GEN8_GT_IMR(0));
0722     MMIO_D(GEN8_GT_IER(0));
0723     MMIO_D(GEN8_GT_IIR(0));
0724     MMIO_D(GEN8_GT_ISR(0));
0725     MMIO_D(GEN8_GT_IMR(1));
0726     MMIO_D(GEN8_GT_IER(1));
0727     MMIO_D(GEN8_GT_IIR(1));
0728     MMIO_D(GEN8_GT_ISR(1));
0729     MMIO_D(GEN8_GT_IMR(2));
0730     MMIO_D(GEN8_GT_IER(2));
0731     MMIO_D(GEN8_GT_IIR(2));
0732     MMIO_D(GEN8_GT_ISR(2));
0733     MMIO_D(GEN8_GT_IMR(3));
0734     MMIO_D(GEN8_GT_IER(3));
0735     MMIO_D(GEN8_GT_IIR(3));
0736     MMIO_D(GEN8_GT_ISR(3));
0737     MMIO_D(GEN8_DE_PIPE_IMR(PIPE_A));
0738     MMIO_D(GEN8_DE_PIPE_IER(PIPE_A));
0739     MMIO_D(GEN8_DE_PIPE_IIR(PIPE_A));
0740     MMIO_D(GEN8_DE_PIPE_ISR(PIPE_A));
0741     MMIO_D(GEN8_DE_PIPE_IMR(PIPE_B));
0742     MMIO_D(GEN8_DE_PIPE_IER(PIPE_B));
0743     MMIO_D(GEN8_DE_PIPE_IIR(PIPE_B));
0744     MMIO_D(GEN8_DE_PIPE_ISR(PIPE_B));
0745     MMIO_D(GEN8_DE_PIPE_IMR(PIPE_C));
0746     MMIO_D(GEN8_DE_PIPE_IER(PIPE_C));
0747     MMIO_D(GEN8_DE_PIPE_IIR(PIPE_C));
0748     MMIO_D(GEN8_DE_PIPE_ISR(PIPE_C));
0749     MMIO_D(GEN8_DE_PORT_IMR);
0750     MMIO_D(GEN8_DE_PORT_IER);
0751     MMIO_D(GEN8_DE_PORT_IIR);
0752     MMIO_D(GEN8_DE_PORT_ISR);
0753     MMIO_D(GEN8_DE_MISC_IMR);
0754     MMIO_D(GEN8_DE_MISC_IER);
0755     MMIO_D(GEN8_DE_MISC_IIR);
0756     MMIO_D(GEN8_DE_MISC_ISR);
0757     MMIO_D(GEN8_PCU_IMR);
0758     MMIO_D(GEN8_PCU_IER);
0759     MMIO_D(GEN8_PCU_IIR);
0760     MMIO_D(GEN8_PCU_ISR);
0761     MMIO_D(GEN8_MASTER_IRQ);
0762     MMIO_RING_D(RING_ACTHD_UDW);
0763 
0764 #define RING_REG(base) _MMIO((base) + 0xd0)
0765     MMIO_RING_D(RING_REG);
0766 #undef RING_REG
0767 
0768 #define RING_REG(base) _MMIO((base) + 0x230)
0769     MMIO_RING_D(RING_REG);
0770 #undef RING_REG
0771 
0772 #define RING_REG(base) _MMIO((base) + 0x234)
0773     MMIO_RING_F(RING_REG, 8);
0774 #undef RING_REG
0775 
0776 #define RING_REG(base) _MMIO((base) + 0x244)
0777     MMIO_RING_D(RING_REG);
0778 #undef RING_REG
0779 
0780 #define RING_REG(base) _MMIO((base) + 0x370)
0781     MMIO_RING_F(RING_REG, 48);
0782 #undef RING_REG
0783 
0784 #define RING_REG(base) _MMIO((base) + 0x3a0)
0785     MMIO_RING_D(RING_REG);
0786 #undef RING_REG
0787 
0788     MMIO_D(PIPEMISC(PIPE_A));
0789     MMIO_D(PIPEMISC(PIPE_B));
0790     MMIO_D(PIPEMISC(PIPE_C));
0791     MMIO_D(_MMIO(0x1c1d0));
0792     MMIO_D(GEN6_MBCUNIT_SNPCR);
0793     MMIO_D(GEN7_MISCCPCTL);
0794     MMIO_D(_MMIO(0x1c054));
0795     MMIO_D(GEN6_PCODE_MAILBOX);
0796     if (!IS_BROXTON(dev_priv))
0797         MMIO_D(GEN8_PRIVATE_PAT_LO);
0798     MMIO_D(GEN8_PRIVATE_PAT_HI);
0799     MMIO_D(GAMTARBMODE);
0800 
0801 #define RING_REG(base) _MMIO((base) + 0x270)
0802     MMIO_RING_F(RING_REG, 32);
0803 #undef RING_REG
0804 
0805     MMIO_RING_D(RING_HWS_PGA);
0806     MMIO_D(HDC_CHICKEN0);
0807     MMIO_D(CHICKEN_PIPESL_1(PIPE_A));
0808     MMIO_D(CHICKEN_PIPESL_1(PIPE_B));
0809     MMIO_D(CHICKEN_PIPESL_1(PIPE_C));
0810     MMIO_D(_MMIO(0x6671c));
0811     MMIO_D(_MMIO(0x66c00));
0812     MMIO_D(_MMIO(0x66c04));
0813     MMIO_D(HSW_GTT_CACHE_EN);
0814     MMIO_D(GEN8_EU_DISABLE0);
0815     MMIO_D(GEN8_EU_DISABLE1);
0816     MMIO_D(GEN8_EU_DISABLE2);
0817     MMIO_D(_MMIO(0xfdc));
0818     MMIO_D(GEN8_ROW_CHICKEN);
0819     MMIO_D(GEN7_ROW_CHICKEN2);
0820     MMIO_D(GEN8_UCGCTL6);
0821     MMIO_D(GEN8_L3SQCREG4);
0822     MMIO_D(GEN9_SCRATCH_LNCF1);
0823     MMIO_F(_MMIO(0x24d0), 48);
0824     MMIO_D(_MMIO(0x44484));
0825     MMIO_D(_MMIO(0x4448c));
0826     MMIO_D(GEN8_L3_LRA_1_GPGPU);
0827     MMIO_D(_MMIO(0x110000));
0828     MMIO_D(_MMIO(0x48400));
0829     MMIO_D(_MMIO(0x6e570));
0830     MMIO_D(_MMIO(0x65f10));
0831     MMIO_D(_MMIO(0xe194));
0832     MMIO_D(_MMIO(0xe188));
0833     MMIO_D(HALF_SLICE_CHICKEN2);
0834     MMIO_D(_MMIO(0x2580));
0835     MMIO_D(_MMIO(0xe220));
0836     MMIO_D(_MMIO(0xe230));
0837     MMIO_D(_MMIO(0xe240));
0838     MMIO_D(_MMIO(0xe260));
0839     MMIO_D(_MMIO(0xe270));
0840     MMIO_D(_MMIO(0xe280));
0841     MMIO_D(_MMIO(0xe2a0));
0842     MMIO_D(_MMIO(0xe2b0));
0843     MMIO_D(_MMIO(0xe2c0));
0844     MMIO_D(_MMIO(0x21f0));
0845     MMIO_D(GEN8_GAMW_ECO_DEV_RW_IA);
0846     MMIO_D(_MMIO(0x215c));
0847     MMIO_F(_MMIO(0x2290), 8);
0848     MMIO_D(_MMIO(0x2b00));
0849     MMIO_D(_MMIO(0x2360));
0850     MMIO_D(_MMIO(0x1c17c));
0851     MMIO_D(_MMIO(0x1c178));
0852     MMIO_D(_MMIO(0x4260));
0853     MMIO_D(_MMIO(0x4264));
0854     MMIO_D(_MMIO(0x4268));
0855     MMIO_D(_MMIO(0x426c));
0856     MMIO_D(_MMIO(0x4270));
0857     MMIO_D(_MMIO(0x4094));
0858     MMIO_D(_MMIO(0x22178));
0859     MMIO_D(_MMIO(0x1a178));
0860     MMIO_D(_MMIO(0x1a17c));
0861     MMIO_D(_MMIO(0x2217c));
0862     MMIO_D(EDP_PSR_IMR);
0863     MMIO_D(EDP_PSR_IIR);
0864     MMIO_D(_MMIO(0xe4cc));
0865     MMIO_D(GEN7_SC_INSTDONE);
0866 
0867     return 0;
0868 }
0869 
0870 static int iterate_pre_skl_mmio(struct intel_gvt_mmio_table_iter *iter)
0871 {
0872     MMIO_D(FORCEWAKE_MT);
0873 
0874     MMIO_D(PCH_ADPA);
0875     MMIO_F(_MMIO(_PCH_DPB_AUX_CH_CTL), 6 * 4);
0876     MMIO_F(_MMIO(_PCH_DPC_AUX_CH_CTL), 6 * 4);
0877     MMIO_F(_MMIO(_PCH_DPD_AUX_CH_CTL), 6 * 4);
0878 
0879     MMIO_F(_MMIO(0x70440), 0xc);
0880     MMIO_F(_MMIO(0x71440), 0xc);
0881     MMIO_F(_MMIO(0x72440), 0xc);
0882     MMIO_F(_MMIO(0x7044c), 0xc);
0883     MMIO_F(_MMIO(0x7144c), 0xc);
0884     MMIO_F(_MMIO(0x7244c), 0xc);
0885 
0886     return 0;
0887 }
0888 
0889 static int iterate_skl_plus_mmio(struct intel_gvt_mmio_table_iter *iter)
0890 {
0891     struct drm_i915_private *dev_priv = iter->i915;
0892 
0893     MMIO_D(FORCEWAKE_RENDER_GEN9);
0894     MMIO_D(FORCEWAKE_ACK_RENDER_GEN9);
0895     MMIO_D(FORCEWAKE_GT_GEN9);
0896     MMIO_D(FORCEWAKE_ACK_GT_GEN9);
0897     MMIO_D(FORCEWAKE_MEDIA_GEN9);
0898     MMIO_D(FORCEWAKE_ACK_MEDIA_GEN9);
0899     MMIO_F(DP_AUX_CH_CTL(AUX_CH_B), 6 * 4);
0900     MMIO_F(DP_AUX_CH_CTL(AUX_CH_C), 6 * 4);
0901     MMIO_F(DP_AUX_CH_CTL(AUX_CH_D), 6 * 4);
0902     MMIO_D(HSW_PWR_WELL_CTL1);
0903     MMIO_D(HSW_PWR_WELL_CTL2);
0904     MMIO_D(DBUF_CTL_S(0));
0905     MMIO_D(GEN9_PG_ENABLE);
0906     MMIO_D(GEN9_MEDIA_PG_IDLE_HYSTERESIS);
0907     MMIO_D(GEN9_RENDER_PG_IDLE_HYSTERESIS);
0908     MMIO_D(GEN9_GAMT_ECO_REG_RW_IA);
0909     MMIO_D(MMCD_MISC_CTRL);
0910     MMIO_D(CHICKEN_PAR1_1);
0911     MMIO_D(DC_STATE_EN);
0912     MMIO_D(DC_STATE_DEBUG);
0913     MMIO_D(CDCLK_CTL);
0914     MMIO_D(LCPLL1_CTL);
0915     MMIO_D(LCPLL2_CTL);
0916     MMIO_D(_MMIO(_DPLL1_CFGCR1));
0917     MMIO_D(_MMIO(_DPLL2_CFGCR1));
0918     MMIO_D(_MMIO(_DPLL3_CFGCR1));
0919     MMIO_D(_MMIO(_DPLL1_CFGCR2));
0920     MMIO_D(_MMIO(_DPLL2_CFGCR2));
0921     MMIO_D(_MMIO(_DPLL3_CFGCR2));
0922     MMIO_D(DPLL_CTRL1);
0923     MMIO_D(DPLL_CTRL2);
0924     MMIO_D(DPLL_STATUS);
0925     MMIO_D(SKL_PS_WIN_POS(PIPE_A, 0));
0926     MMIO_D(SKL_PS_WIN_POS(PIPE_A, 1));
0927     MMIO_D(SKL_PS_WIN_POS(PIPE_B, 0));
0928     MMIO_D(SKL_PS_WIN_POS(PIPE_B, 1));
0929     MMIO_D(SKL_PS_WIN_POS(PIPE_C, 0));
0930     MMIO_D(SKL_PS_WIN_POS(PIPE_C, 1));
0931     MMIO_D(SKL_PS_WIN_SZ(PIPE_A, 0));
0932     MMIO_D(SKL_PS_WIN_SZ(PIPE_A, 1));
0933     MMIO_D(SKL_PS_WIN_SZ(PIPE_B, 0));
0934     MMIO_D(SKL_PS_WIN_SZ(PIPE_B, 1));
0935     MMIO_D(SKL_PS_WIN_SZ(PIPE_C, 0));
0936     MMIO_D(SKL_PS_WIN_SZ(PIPE_C, 1));
0937     MMIO_D(SKL_PS_CTRL(PIPE_A, 0));
0938     MMIO_D(SKL_PS_CTRL(PIPE_A, 1));
0939     MMIO_D(SKL_PS_CTRL(PIPE_B, 0));
0940     MMIO_D(SKL_PS_CTRL(PIPE_B, 1));
0941     MMIO_D(SKL_PS_CTRL(PIPE_C, 0));
0942     MMIO_D(SKL_PS_CTRL(PIPE_C, 1));
0943     MMIO_D(PLANE_BUF_CFG(PIPE_A, 0));
0944     MMIO_D(PLANE_BUF_CFG(PIPE_A, 1));
0945     MMIO_D(PLANE_BUF_CFG(PIPE_A, 2));
0946     MMIO_D(PLANE_BUF_CFG(PIPE_A, 3));
0947     MMIO_D(PLANE_BUF_CFG(PIPE_B, 0));
0948     MMIO_D(PLANE_BUF_CFG(PIPE_B, 1));
0949     MMIO_D(PLANE_BUF_CFG(PIPE_B, 2));
0950     MMIO_D(PLANE_BUF_CFG(PIPE_B, 3));
0951     MMIO_D(PLANE_BUF_CFG(PIPE_C, 0));
0952     MMIO_D(PLANE_BUF_CFG(PIPE_C, 1));
0953     MMIO_D(PLANE_BUF_CFG(PIPE_C, 2));
0954     MMIO_D(PLANE_BUF_CFG(PIPE_C, 3));
0955     MMIO_D(CUR_BUF_CFG(PIPE_A));
0956     MMIO_D(CUR_BUF_CFG(PIPE_B));
0957     MMIO_D(CUR_BUF_CFG(PIPE_C));
0958     MMIO_F(PLANE_WM(PIPE_A, 0, 0), 4 * 8);
0959     MMIO_F(PLANE_WM(PIPE_A, 1, 0), 4 * 8);
0960     MMIO_F(PLANE_WM(PIPE_A, 2, 0), 4 * 8);
0961     MMIO_F(PLANE_WM(PIPE_B, 0, 0), 4 * 8);
0962     MMIO_F(PLANE_WM(PIPE_B, 1, 0), 4 * 8);
0963     MMIO_F(PLANE_WM(PIPE_B, 2, 0), 4 * 8);
0964     MMIO_F(PLANE_WM(PIPE_C, 0, 0), 4 * 8);
0965     MMIO_F(PLANE_WM(PIPE_C, 1, 0), 4 * 8);
0966     MMIO_F(PLANE_WM(PIPE_C, 2, 0), 4 * 8);
0967     MMIO_F(CUR_WM(PIPE_A, 0), 4 * 8);
0968     MMIO_F(CUR_WM(PIPE_B, 0), 4 * 8);
0969     MMIO_F(CUR_WM(PIPE_C, 0), 4 * 8);
0970     MMIO_D(PLANE_WM_TRANS(PIPE_A, 0));
0971     MMIO_D(PLANE_WM_TRANS(PIPE_A, 1));
0972     MMIO_D(PLANE_WM_TRANS(PIPE_A, 2));
0973     MMIO_D(PLANE_WM_TRANS(PIPE_B, 0));
0974     MMIO_D(PLANE_WM_TRANS(PIPE_B, 1));
0975     MMIO_D(PLANE_WM_TRANS(PIPE_B, 2));
0976     MMIO_D(PLANE_WM_TRANS(PIPE_C, 0));
0977     MMIO_D(PLANE_WM_TRANS(PIPE_C, 1));
0978     MMIO_D(PLANE_WM_TRANS(PIPE_C, 2));
0979     MMIO_D(CUR_WM_TRANS(PIPE_A));
0980     MMIO_D(CUR_WM_TRANS(PIPE_B));
0981     MMIO_D(CUR_WM_TRANS(PIPE_C));
0982     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 0));
0983     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 1));
0984     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 2));
0985     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_A, 3));
0986     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 0));
0987     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 1));
0988     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 2));
0989     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_B, 3));
0990     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 0));
0991     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 1));
0992     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 2));
0993     MMIO_D(PLANE_NV12_BUF_CFG(PIPE_C, 3));
0994     MMIO_D(_MMIO(_REG_701C0(PIPE_A, 1)));
0995     MMIO_D(_MMIO(_REG_701C0(PIPE_A, 2)));
0996     MMIO_D(_MMIO(_REG_701C0(PIPE_A, 3)));
0997     MMIO_D(_MMIO(_REG_701C0(PIPE_A, 4)));
0998     MMIO_D(_MMIO(_REG_701C0(PIPE_B, 1)));
0999     MMIO_D(_MMIO(_REG_701C0(PIPE_B, 2)));
1000     MMIO_D(_MMIO(_REG_701C0(PIPE_B, 3)));
1001     MMIO_D(_MMIO(_REG_701C0(PIPE_B, 4)));
1002     MMIO_D(_MMIO(_REG_701C0(PIPE_C, 1)));
1003     MMIO_D(_MMIO(_REG_701C0(PIPE_C, 2)));
1004     MMIO_D(_MMIO(_REG_701C0(PIPE_C, 3)));
1005     MMIO_D(_MMIO(_REG_701C0(PIPE_C, 4)));
1006     MMIO_D(_MMIO(_REG_701C4(PIPE_A, 1)));
1007     MMIO_D(_MMIO(_REG_701C4(PIPE_A, 2)));
1008     MMIO_D(_MMIO(_REG_701C4(PIPE_A, 3)));
1009     MMIO_D(_MMIO(_REG_701C4(PIPE_A, 4)));
1010     MMIO_D(_MMIO(_REG_701C4(PIPE_B, 1)));
1011     MMIO_D(_MMIO(_REG_701C4(PIPE_B, 2)));
1012     MMIO_D(_MMIO(_REG_701C4(PIPE_B, 3)));
1013     MMIO_D(_MMIO(_REG_701C4(PIPE_B, 4)));
1014     MMIO_D(_MMIO(_REG_701C4(PIPE_C, 1)));
1015     MMIO_D(_MMIO(_REG_701C4(PIPE_C, 2)));
1016     MMIO_D(_MMIO(_REG_701C4(PIPE_C, 3)));
1017     MMIO_D(_MMIO(_REG_701C4(PIPE_C, 4)));
1018     MMIO_D(_MMIO(_PLANE_CTL_3_A));
1019     MMIO_D(_MMIO(_PLANE_CTL_3_B));
1020     MMIO_D(_MMIO(0x72380));
1021     MMIO_D(_MMIO(0x7239c));
1022     MMIO_D(_MMIO(_PLANE_SURF_3_A));
1023     MMIO_D(_MMIO(_PLANE_SURF_3_B));
1024     MMIO_D(DMC_SSP_BASE);
1025     MMIO_D(DMC_HTP_SKL);
1026     MMIO_D(DMC_LAST_WRITE);
1027     MMIO_D(BDW_SCRATCH1);
1028     MMIO_D(SKL_DFSM);
1029     MMIO_D(DISPIO_CR_TX_BMU_CR0);
1030     MMIO_F(GEN9_GFX_MOCS(0), 0x7f8);
1031     MMIO_F(GEN7_L3CNTLREG2, 0x80);
1032     MMIO_D(RPM_CONFIG0);
1033     MMIO_D(_MMIO(0xd08));
1034     MMIO_D(RC6_LOCATION);
1035     MMIO_D(GEN7_FF_SLICE_CS_CHICKEN1);
1036     MMIO_D(GEN9_CS_DEBUG_MODE1);
1037     /* TRTT */
1038     MMIO_D(TRVATTL3PTRDW(0));
1039     MMIO_D(TRVATTL3PTRDW(1));
1040     MMIO_D(TRVATTL3PTRDW(2));
1041     MMIO_D(TRVATTL3PTRDW(3));
1042     MMIO_D(TRVADR);
1043     MMIO_D(TRTTE);
1044     MMIO_D(_MMIO(0x4dfc));
1045     MMIO_D(_MMIO(0x46430));
1046     MMIO_D(_MMIO(0x46520));
1047     MMIO_D(_MMIO(0xc403c));
1048     MMIO_D(GEN8_GARBCNTL);
1049     MMIO_D(DMA_CTRL);
1050     MMIO_D(_MMIO(0x65900));
1051     MMIO_D(GEN6_STOLEN_RESERVED);
1052     MMIO_D(_MMIO(0x4068));
1053     MMIO_D(_MMIO(0x67054));
1054     MMIO_D(_MMIO(0x6e560));
1055     MMIO_D(_MMIO(0x6e554));
1056     MMIO_D(_MMIO(0x2b20));
1057     MMIO_D(_MMIO(0x65f00));
1058     MMIO_D(_MMIO(0x65f08));
1059     MMIO_D(_MMIO(0x320f0));
1060     MMIO_D(_MMIO(0x70034));
1061     MMIO_D(_MMIO(0x71034));
1062     MMIO_D(_MMIO(0x72034));
1063     MMIO_D(_MMIO(_PLANE_KEYVAL_1(PIPE_A)));
1064     MMIO_D(_MMIO(_PLANE_KEYVAL_1(PIPE_B)));
1065     MMIO_D(_MMIO(_PLANE_KEYVAL_1(PIPE_C)));
1066     MMIO_D(_MMIO(_PLANE_KEYMAX_1(PIPE_A)));
1067     MMIO_D(_MMIO(_PLANE_KEYMAX_1(PIPE_B)));
1068     MMIO_D(_MMIO(_PLANE_KEYMAX_1(PIPE_C)));
1069     MMIO_D(_MMIO(_PLANE_KEYMSK_1(PIPE_A)));
1070     MMIO_D(_MMIO(_PLANE_KEYMSK_1(PIPE_B)));
1071     MMIO_D(_MMIO(_PLANE_KEYMSK_1(PIPE_C)));
1072     MMIO_D(_MMIO(0x44500));
1073 #define CSFE_CHICKEN1_REG(base) _MMIO((base) + 0xD4)
1074     MMIO_RING_D(CSFE_CHICKEN1_REG);
1075 #undef CSFE_CHICKEN1_REG
1076     MMIO_D(GEN8_HDC_CHICKEN1);
1077     MMIO_D(GEN9_WM_CHICKEN3);
1078 
1079     if (IS_KABYLAKE(dev_priv) ||
1080         IS_COFFEELAKE(dev_priv) || IS_COMETLAKE(dev_priv))
1081         MMIO_D(GAMT_CHKN_BIT_REG);
1082     if (!IS_BROXTON(dev_priv))
1083         MMIO_D(GEN9_CTX_PREEMPT_REG);
1084     MMIO_F(_MMIO(DMC_MMIO_START_RANGE), 0x3000);
1085     return 0;
1086 }
1087 
1088 static int iterate_bxt_mmio(struct intel_gvt_mmio_table_iter *iter)
1089 {
1090     struct drm_i915_private *dev_priv = iter->i915;
1091 
1092     MMIO_F(_MMIO(0x80000), 0x3000);
1093     MMIO_D(GEN7_SAMPLER_INSTDONE);
1094     MMIO_D(GEN7_ROW_INSTDONE);
1095     MMIO_D(GEN8_FAULT_TLB_DATA0);
1096     MMIO_D(GEN8_FAULT_TLB_DATA1);
1097     MMIO_D(ERROR_GEN6);
1098     MMIO_D(DONE_REG);
1099     MMIO_D(EIR);
1100     MMIO_D(PGTBL_ER);
1101     MMIO_D(_MMIO(0x4194));
1102     MMIO_D(_MMIO(0x4294));
1103     MMIO_D(_MMIO(0x4494));
1104     MMIO_RING_D(RING_PSMI_CTL);
1105     MMIO_RING_D(RING_DMA_FADD);
1106     MMIO_RING_D(RING_DMA_FADD_UDW);
1107     MMIO_RING_D(RING_IPEHR);
1108     MMIO_RING_D(RING_INSTPS);
1109     MMIO_RING_D(RING_BBADDR_UDW);
1110     MMIO_RING_D(RING_BBSTATE);
1111     MMIO_RING_D(RING_IPEIR);
1112     MMIO_F(SOFT_SCRATCH(0), 16 * 4);
1113     MMIO_D(BXT_P_CR_GT_DISP_PWRON);
1114     MMIO_D(BXT_RP_STATE_CAP);
1115     MMIO_D(BXT_PHY_CTL_FAMILY(DPIO_PHY0));
1116     MMIO_D(BXT_PHY_CTL_FAMILY(DPIO_PHY1));
1117     MMIO_D(BXT_PHY_CTL(PORT_A));
1118     MMIO_D(BXT_PHY_CTL(PORT_B));
1119     MMIO_D(BXT_PHY_CTL(PORT_C));
1120     MMIO_D(BXT_PORT_PLL_ENABLE(PORT_A));
1121     MMIO_D(BXT_PORT_PLL_ENABLE(PORT_B));
1122     MMIO_D(BXT_PORT_PLL_ENABLE(PORT_C));
1123     MMIO_D(BXT_PORT_CL1CM_DW0(DPIO_PHY0));
1124     MMIO_D(BXT_PORT_CL1CM_DW9(DPIO_PHY0));
1125     MMIO_D(BXT_PORT_CL1CM_DW10(DPIO_PHY0));
1126     MMIO_D(BXT_PORT_CL1CM_DW28(DPIO_PHY0));
1127     MMIO_D(BXT_PORT_CL1CM_DW30(DPIO_PHY0));
1128     MMIO_D(BXT_PORT_CL2CM_DW6(DPIO_PHY0));
1129     MMIO_D(BXT_PORT_REF_DW3(DPIO_PHY0));
1130     MMIO_D(BXT_PORT_REF_DW6(DPIO_PHY0));
1131     MMIO_D(BXT_PORT_REF_DW8(DPIO_PHY0));
1132     MMIO_D(BXT_PORT_CL1CM_DW0(DPIO_PHY1));
1133     MMIO_D(BXT_PORT_CL1CM_DW9(DPIO_PHY1));
1134     MMIO_D(BXT_PORT_CL1CM_DW10(DPIO_PHY1));
1135     MMIO_D(BXT_PORT_CL1CM_DW28(DPIO_PHY1));
1136     MMIO_D(BXT_PORT_CL1CM_DW30(DPIO_PHY1));
1137     MMIO_D(BXT_PORT_CL2CM_DW6(DPIO_PHY1));
1138     MMIO_D(BXT_PORT_REF_DW3(DPIO_PHY1));
1139     MMIO_D(BXT_PORT_REF_DW6(DPIO_PHY1));
1140     MMIO_D(BXT_PORT_REF_DW8(DPIO_PHY1));
1141     MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY0, DPIO_CH0));
1142     MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY0, DPIO_CH0));
1143     MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY0, DPIO_CH0));
1144     MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY0, DPIO_CH0));
1145     MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY0, DPIO_CH0));
1146     MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY0, DPIO_CH0));
1147     MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY0, DPIO_CH0));
1148     MMIO_D(BXT_PORT_TX_DW2_LN0(DPIO_PHY0, DPIO_CH0));
1149     MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY0, DPIO_CH0));
1150     MMIO_D(BXT_PORT_TX_DW3_LN0(DPIO_PHY0, DPIO_CH0));
1151     MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY0, DPIO_CH0));
1152     MMIO_D(BXT_PORT_TX_DW4_LN0(DPIO_PHY0, DPIO_CH0));
1153     MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY0, DPIO_CH0));
1154     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 0));
1155     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 1));
1156     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 2));
1157     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH0, 3));
1158     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 0));
1159     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 1));
1160     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 2));
1161     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 3));
1162     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 6));
1163     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 8));
1164     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 9));
1165     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH0, 10));
1166     MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY0, DPIO_CH1));
1167     MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY0, DPIO_CH1));
1168     MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY0, DPIO_CH1));
1169     MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY0, DPIO_CH1));
1170     MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY0, DPIO_CH1));
1171     MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY0, DPIO_CH1));
1172     MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY0, DPIO_CH1));
1173     MMIO_D(BXT_PORT_TX_DW2_LN0(DPIO_PHY0, DPIO_CH1));
1174     MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY0, DPIO_CH1));
1175     MMIO_D(BXT_PORT_TX_DW3_LN0(DPIO_PHY0, DPIO_CH1));
1176     MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY0, DPIO_CH1));
1177     MMIO_D(BXT_PORT_TX_DW4_LN0(DPIO_PHY0, DPIO_CH1));
1178     MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY0, DPIO_CH1));
1179     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 0));
1180     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 1));
1181     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 2));
1182     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY0, DPIO_CH1, 3));
1183     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 0));
1184     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 1));
1185     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 2));
1186     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 3));
1187     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 6));
1188     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 8));
1189     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 9));
1190     MMIO_D(BXT_PORT_PLL(DPIO_PHY0, DPIO_CH1, 10));
1191     MMIO_D(BXT_PORT_PLL_EBB_0(DPIO_PHY1, DPIO_CH0));
1192     MMIO_D(BXT_PORT_PLL_EBB_4(DPIO_PHY1, DPIO_CH0));
1193     MMIO_D(BXT_PORT_PCS_DW10_LN01(DPIO_PHY1, DPIO_CH0));
1194     MMIO_D(BXT_PORT_PCS_DW10_GRP(DPIO_PHY1, DPIO_CH0));
1195     MMIO_D(BXT_PORT_PCS_DW12_LN01(DPIO_PHY1, DPIO_CH0));
1196     MMIO_D(BXT_PORT_PCS_DW12_LN23(DPIO_PHY1, DPIO_CH0));
1197     MMIO_D(BXT_PORT_PCS_DW12_GRP(DPIO_PHY1, DPIO_CH0));
1198     MMIO_D(BXT_PORT_TX_DW2_LN0(DPIO_PHY1, DPIO_CH0));
1199     MMIO_D(BXT_PORT_TX_DW2_GRP(DPIO_PHY1, DPIO_CH0));
1200     MMIO_D(BXT_PORT_TX_DW3_LN0(DPIO_PHY1, DPIO_CH0));
1201     MMIO_D(BXT_PORT_TX_DW3_GRP(DPIO_PHY1, DPIO_CH0));
1202     MMIO_D(BXT_PORT_TX_DW4_LN0(DPIO_PHY1, DPIO_CH0));
1203     MMIO_D(BXT_PORT_TX_DW4_GRP(DPIO_PHY1, DPIO_CH0));
1204     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 0));
1205     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 1));
1206     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 2));
1207     MMIO_D(BXT_PORT_TX_DW14_LN(DPIO_PHY1, DPIO_CH0, 3));
1208     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 0));
1209     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 1));
1210     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 2));
1211     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 3));
1212     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 6));
1213     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 8));
1214     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 9));
1215     MMIO_D(BXT_PORT_PLL(DPIO_PHY1, DPIO_CH0, 10));
1216     MMIO_D(BXT_DE_PLL_CTL);
1217     MMIO_D(BXT_DE_PLL_ENABLE);
1218     MMIO_D(BXT_DSI_PLL_CTL);
1219     MMIO_D(BXT_DSI_PLL_ENABLE);
1220     MMIO_D(GEN9_CLKGATE_DIS_0);
1221     MMIO_D(GEN9_CLKGATE_DIS_4);
1222     MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_A));
1223     MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_B));
1224     MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_C));
1225     MMIO_D(RC6_CTX_BASE);
1226     MMIO_D(GEN8_PUSHBUS_CONTROL);
1227     MMIO_D(GEN8_PUSHBUS_ENABLE);
1228     MMIO_D(GEN8_PUSHBUS_SHIFT);
1229     MMIO_D(GEN6_GFXPAUSE);
1230     MMIO_D(GEN8_L3SQCREG1);
1231     MMIO_D(GEN8_L3CNTLREG);
1232     MMIO_D(_MMIO(0x20D8));
1233     MMIO_F(GEN8_RING_CS_GPR(RENDER_RING_BASE, 0), 0x40);
1234     MMIO_F(GEN8_RING_CS_GPR(GEN6_BSD_RING_BASE, 0), 0x40);
1235     MMIO_F(GEN8_RING_CS_GPR(BLT_RING_BASE, 0), 0x40);
1236     MMIO_F(GEN8_RING_CS_GPR(VEBOX_RING_BASE, 0), 0x40);
1237     MMIO_D(GEN9_CTX_PREEMPT_REG);
1238     MMIO_D(GEN8_PRIVATE_PAT_LO);
1239 
1240     return 0;
1241 }
1242 
1243 /**
1244  * intel_gvt_iterate_mmio_table - Iterate the GVT MMIO table
1245  * @iter: the interator
1246  *
1247  * This function is called for iterating the GVT MMIO table when i915 is
1248  * taking the snapshot of the HW and GVT is building MMIO tracking table.
1249  */
1250 int intel_gvt_iterate_mmio_table(struct intel_gvt_mmio_table_iter *iter)
1251 {
1252     struct drm_i915_private *i915 = iter->i915;
1253     int ret;
1254 
1255     ret = iterate_generic_mmio(iter);
1256     if (ret)
1257         goto err;
1258 
1259     if (IS_BROADWELL(i915)) {
1260         ret = iterate_bdw_only_mmio(iter);
1261         if (ret)
1262             goto err;
1263         ret = iterate_bdw_plus_mmio(iter);
1264         if (ret)
1265             goto err;
1266         ret = iterate_pre_skl_mmio(iter);
1267         if (ret)
1268             goto err;
1269     } else if (IS_SKYLAKE(i915) ||
1270            IS_KABYLAKE(i915) ||
1271            IS_COFFEELAKE(i915) ||
1272            IS_COMETLAKE(i915)) {
1273         ret = iterate_bdw_plus_mmio(iter);
1274         if (ret)
1275             goto err;
1276         ret = iterate_skl_plus_mmio(iter);
1277         if (ret)
1278             goto err;
1279     } else if (IS_BROXTON(i915)) {
1280         ret = iterate_bdw_plus_mmio(iter);
1281         if (ret)
1282             goto err;
1283         ret = iterate_skl_plus_mmio(iter);
1284         if (ret)
1285             goto err;
1286         ret = iterate_bxt_mmio(iter);
1287         if (ret)
1288             goto err;
1289     }
1290 
1291     return 0;
1292 err:
1293     return ret;
1294 }
1295 EXPORT_SYMBOL_NS_GPL(intel_gvt_iterate_mmio_table, I915_GVT);