diff options
author | Longhe Zheng <longhe.zheng@intel.com> | 2018-10-30 04:12:10 -0400 |
---|---|---|
committer | Zhenyu Wang <zhenyuw@linux.intel.com> | 2018-10-31 05:09:46 -0400 |
commit | 5e7154ff5e8e21dc9acac4f8dba7533552365374 (patch) | |
tree | 96d36b8ca422e3aa766fb14e9556b4c845c41590 | |
parent | 606a745944bc0ebd14f77dfc61ac7d6cb685cefe (diff) |
drm/i915/gvt: Handle values of EDP_PSR_IMR and EDP_PSR_IIR
GVT-g only simulates DP port for guest and leaves EDP_PSR_IMR
and EDP_PSR_IIR registers as default MMIO read/write.
So guest won't get expected initial values of these registers when
initializing the gpu driver, which results in following warning and logs.
--------
Interrupt register 0x64838 is not zero: 0xffffffff
WARNING: CPU: 1 PID: 157 at drivers/gpu/drm/i915/i915_irq.c:177
gen3_assert_iir_is_zero+0x38/0xa0
Call Trace:
gen8_de_irq_postinstall+0xa7/0x400
gen8_irq_postinstall+0x27/0x80
drm_irq_install+0xbc/0x140
i915_driver_load+0xa9d/0xd50
--------
Because GVT-g does not handle EDP(embedded DP) simulation for guests,
always set EDP_PSR_IMR and EDP_PSR_IIR to value 0.
Signed-off-by: Longhe Zheng <longhe.zheng@intel.com>
Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r-- | drivers/gpu/drm/i915/gvt/handlers.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c index 94c1089ecf59..f9002cb1f2a3 100644 --- a/drivers/gpu/drm/i915/gvt/handlers.c +++ b/drivers/gpu/drm/i915/gvt/handlers.c | |||
@@ -1608,7 +1608,7 @@ static int bxt_gt_disp_pwron_write(struct intel_vgpu *vgpu, | |||
1608 | return 0; | 1608 | return 0; |
1609 | } | 1609 | } |
1610 | 1610 | ||
1611 | static int bxt_edp_psr_imr_iir_write(struct intel_vgpu *vgpu, | 1611 | static int edp_psr_imr_iir_write(struct intel_vgpu *vgpu, |
1612 | unsigned int offset, void *p_data, unsigned int bytes) | 1612 | unsigned int offset, void *p_data, unsigned int bytes) |
1613 | { | 1613 | { |
1614 | vgpu_vreg(vgpu, offset) = 0; | 1614 | vgpu_vreg(vgpu, offset) = 0; |
@@ -2613,6 +2613,9 @@ static int init_generic_mmio_info(struct intel_gvt *gvt) | |||
2613 | MMIO_DFH(_MMIO(0x1a178), D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL); | 2613 | MMIO_DFH(_MMIO(0x1a178), D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL); |
2614 | MMIO_DFH(_MMIO(0x1a17c), D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL); | 2614 | MMIO_DFH(_MMIO(0x1a17c), D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL); |
2615 | MMIO_DFH(_MMIO(0x2217c), D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL); | 2615 | MMIO_DFH(_MMIO(0x2217c), D_BDW_PLUS, F_CMD_ACCESS, NULL, NULL); |
2616 | |||
2617 | MMIO_DH(EDP_PSR_IMR, D_BDW_PLUS, NULL, edp_psr_imr_iir_write); | ||
2618 | MMIO_DH(EDP_PSR_IIR, D_BDW_PLUS, NULL, edp_psr_imr_iir_write); | ||
2616 | return 0; | 2619 | return 0; |
2617 | } | 2620 | } |
2618 | 2621 | ||
@@ -3216,9 +3219,6 @@ static int init_bxt_mmio_info(struct intel_gvt *gvt) | |||
3216 | MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_B), D_BXT); | 3219 | MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_B), D_BXT); |
3217 | MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_C), D_BXT); | 3220 | MMIO_D(HSW_TVIDEO_DIP_GCP(TRANSCODER_C), D_BXT); |
3218 | 3221 | ||
3219 | MMIO_DH(EDP_PSR_IMR, D_BXT, NULL, bxt_edp_psr_imr_iir_write); | ||
3220 | MMIO_DH(EDP_PSR_IIR, D_BXT, NULL, bxt_edp_psr_imr_iir_write); | ||
3221 | |||
3222 | MMIO_D(RC6_CTX_BASE, D_BXT); | 3222 | MMIO_D(RC6_CTX_BASE, D_BXT); |
3223 | 3223 | ||
3224 | MMIO_D(GEN8_PUSHBUS_CONTROL, D_BXT); | 3224 | MMIO_D(GEN8_PUSHBUS_CONTROL, D_BXT); |