|
@@ -1366,18 +1366,28 @@ static int skl_misc_ctl_write(struct intel_vgpu *vgpu, unsigned int offset,
|
|
|
void *p_data, unsigned int bytes)
|
|
|
{
|
|
|
struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
|
|
|
- i915_reg_t reg = {.reg = offset};
|
|
|
+ u32 v = *(u32 *)p_data;
|
|
|
+
|
|
|
+ if (!IS_SKYLAKE(dev_priv) && !IS_KABYLAKE(dev_priv))
|
|
|
+ return intel_vgpu_default_mmio_write(vgpu,
|
|
|
+ offset, p_data, bytes);
|
|
|
|
|
|
switch (offset) {
|
|
|
case 0x4ddc:
|
|
|
- vgpu_vreg(vgpu, offset) = 0x8000003c;
|
|
|
- /* WaCompressedResourceSamplerPbeMediaNewHashMode:skl */
|
|
|
- I915_WRITE(reg, vgpu_vreg(vgpu, offset));
|
|
|
+ /* bypass WaCompressedResourceSamplerPbeMediaNewHashMode */
|
|
|
+ vgpu_vreg(vgpu, offset) = v & ~(1 << 31);
|
|
|
break;
|
|
|
case 0x42080:
|
|
|
- vgpu_vreg(vgpu, offset) = 0x8000;
|
|
|
- /* WaCompressedResourceDisplayNewHashMode:skl */
|
|
|
- I915_WRITE(reg, vgpu_vreg(vgpu, offset));
|
|
|
+ /* bypass WaCompressedResourceDisplayNewHashMode */
|
|
|
+ vgpu_vreg(vgpu, offset) = v & ~(1 << 15);
|
|
|
+ break;
|
|
|
+ case 0xe194:
|
|
|
+ /* bypass WaCompressedResourceSamplerPbeMediaNewHashMode */
|
|
|
+ vgpu_vreg(vgpu, offset) = v & ~(1 << 8);
|
|
|
+ break;
|
|
|
+ case 0x7014:
|
|
|
+ /* bypass WaCompressedResourceSamplerPbeMediaNewHashMode */
|
|
|
+ vgpu_vreg(vgpu, offset) = v & ~(1 << 13);
|
|
|
break;
|
|
|
default:
|
|
|
return -EINVAL;
|
|
@@ -1634,7 +1644,8 @@ static int init_generic_mmio_info(struct intel_gvt *gvt)
|
|
|
MMIO_DFH(GAM_ECOCHK, D_ALL, F_CMD_ACCESS, NULL, NULL);
|
|
|
MMIO_DFH(GEN7_COMMON_SLICE_CHICKEN1, D_ALL, F_MODE_MASK | F_CMD_ACCESS,
|
|
|
NULL, NULL);
|
|
|
- MMIO_DFH(COMMON_SLICE_CHICKEN2, D_ALL, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
|
|
|
+ MMIO_DFH(COMMON_SLICE_CHICKEN2, D_ALL, F_MODE_MASK | F_CMD_ACCESS, NULL,
|
|
|
+ skl_misc_ctl_write);
|
|
|
MMIO_DFH(0x9030, D_ALL, F_CMD_ACCESS, NULL, NULL);
|
|
|
MMIO_DFH(0x20a0, D_ALL, F_CMD_ACCESS, NULL, NULL);
|
|
|
MMIO_DFH(0x2420, D_ALL, F_CMD_ACCESS, NULL, NULL);
|
|
@@ -2568,7 +2579,8 @@ static int init_broadwell_mmio_info(struct intel_gvt *gvt)
|
|
|
MMIO_D(0x6e570, D_BDW_PLUS);
|
|
|
MMIO_D(0x65f10, D_BDW_PLUS);
|
|
|
|
|
|
- MMIO_DFH(0xe194, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
|
|
|
+ MMIO_DFH(0xe194, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL,
|
|
|
+ skl_misc_ctl_write);
|
|
|
MMIO_DFH(0xe188, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
|
|
|
MMIO_DFH(HALF_SLICE_CHICKEN2, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
|
|
|
MMIO_DFH(0x2580, D_BDW_PLUS, F_MODE_MASK | F_CMD_ACCESS, NULL, NULL);
|