aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWeinan Li <weinan.z.li@intel.com>2017-02-21 22:03:24 -0500
committerZhenyu Wang <zhenyuw@linux.intel.com>2017-02-23 04:33:15 -0500
commitd8a355be0b2b5613f7b34aee1394369d45d50586 (patch)
treeaadf69e7d2a4898677dc6deca6949405438b3e8b
parentda9cc8de22aa6bd6ed51c406432d599ab520a6e3 (diff)
drm/i915/gvt: refine pcode write emulation
In GVT-g we always emulate as pcode read/write success and ready for access anytime, since we don't touch real physical registers here. Add 'SKL_PCODE_CDCLK_CONTROL' write emulation, without it will cause skl_set_cdclk fail in guest. Signed-off-by: Weinan Li <weinan.z.li@intel.com> Signed-off-by: Zhenyu Wang <zhenyuw@linux.intel.com>
-rw-r--r--drivers/gpu/drm/i915/gvt/handlers.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
index bfe12ddb0210..f89b183488e9 100644
--- a/drivers/gpu/drm/i915/gvt/handlers.c
+++ b/drivers/gpu/drm/i915/gvt/handlers.c
@@ -1315,6 +1315,9 @@ static int mailbox_write(struct intel_vgpu *vgpu, unsigned int offset,
1315 else 1315 else
1316 *data0 = 0x61514b3d; 1316 *data0 = 0x61514b3d;
1317 break; 1317 break;
1318 case SKL_PCODE_CDCLK_CONTROL:
1319 *data0 = SKL_CDCLK_READY_FOR_CHANGE;
1320 break;
1318 case 0x5: 1321 case 0x5:
1319 *data0 |= 0x1; 1322 *data0 |= 0x1;
1320 break; 1323 break;
@@ -1322,8 +1325,13 @@ static int mailbox_write(struct intel_vgpu *vgpu, unsigned int offset,
1322 1325
1323 gvt_dbg_core("VM(%d) write %x to mailbox, return data0 %x\n", 1326 gvt_dbg_core("VM(%d) write %x to mailbox, return data0 %x\n",
1324 vgpu->id, value, *data0); 1327 vgpu->id, value, *data0);
1325 1328 /**
1326 value &= ~(1 << 31); 1329 * PCODE_READY clear means ready for pcode read/write,
1330 * PCODE_ERROR_MASK clear means no error happened. In GVT-g we
1331 * always emulate as pcode read/write success and ready for access
1332 * anytime, since we don't touch real physical registers here.
1333 */
1334 value &= ~(GEN6_PCODE_READY | GEN6_PCODE_ERROR_MASK);
1327 return intel_vgpu_default_mmio_write(vgpu, offset, &value, bytes); 1335 return intel_vgpu_default_mmio_write(vgpu, offset, &value, bytes);
1328} 1336}
1329 1337