diff options
author | Weinan Li <weinan.z.li@intel.com> | 2017-02-21 22:03:24 -0500 |
---|---|---|
committer | Zhenyu Wang <zhenyuw@linux.intel.com> | 2017-02-23 04:33:15 -0500 |
commit | d8a355be0b2b5613f7b34aee1394369d45d50586 (patch) | |
tree | aadf69e7d2a4898677dc6deca6949405438b3e8b | |
parent | da9cc8de22aa6bd6ed51c406432d599ab520a6e3 (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.c | 12 |
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 | ||