|
@@ -640,6 +640,14 @@ static inline void __force_wake_get(struct drm_i915_private *dev_priv,
|
|
dev_priv->uncore.funcs.force_wake_get(dev_priv, fw_domains);
|
|
dev_priv->uncore.funcs.force_wake_get(dev_priv, fw_domains);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#define __vgpu_read(x) \
|
|
|
|
+static u##x \
|
|
|
|
+vgpu_read##x(struct drm_i915_private *dev_priv, off_t reg, bool trace) { \
|
|
|
|
+ GEN6_READ_HEADER(x); \
|
|
|
|
+ val = __raw_i915_read##x(dev_priv, reg); \
|
|
|
|
+ GEN6_READ_FOOTER; \
|
|
|
|
+}
|
|
|
|
+
|
|
#define __gen6_read(x) \
|
|
#define __gen6_read(x) \
|
|
static u##x \
|
|
static u##x \
|
|
gen6_read##x(struct drm_i915_private *dev_priv, off_t reg, bool trace) { \
|
|
gen6_read##x(struct drm_i915_private *dev_priv, off_t reg, bool trace) { \
|
|
@@ -703,6 +711,10 @@ gen9_read##x(struct drm_i915_private *dev_priv, off_t reg, bool trace) { \
|
|
GEN6_READ_FOOTER; \
|
|
GEN6_READ_FOOTER; \
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+__vgpu_read(8)
|
|
|
|
+__vgpu_read(16)
|
|
|
|
+__vgpu_read(32)
|
|
|
|
+__vgpu_read(64)
|
|
__gen9_read(8)
|
|
__gen9_read(8)
|
|
__gen9_read(16)
|
|
__gen9_read(16)
|
|
__gen9_read(32)
|
|
__gen9_read(32)
|
|
@@ -724,6 +736,7 @@ __gen6_read(64)
|
|
#undef __chv_read
|
|
#undef __chv_read
|
|
#undef __vlv_read
|
|
#undef __vlv_read
|
|
#undef __gen6_read
|
|
#undef __gen6_read
|
|
|
|
+#undef __vgpu_read
|
|
#undef GEN6_READ_FOOTER
|
|
#undef GEN6_READ_FOOTER
|
|
#undef GEN6_READ_HEADER
|
|
#undef GEN6_READ_HEADER
|
|
|
|
|
|
@@ -807,6 +820,14 @@ hsw_write##x(struct drm_i915_private *dev_priv, off_t reg, u##x val, bool trace)
|
|
GEN6_WRITE_FOOTER; \
|
|
GEN6_WRITE_FOOTER; \
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+#define __vgpu_write(x) \
|
|
|
|
+static void vgpu_write##x(struct drm_i915_private *dev_priv, \
|
|
|
|
+ off_t reg, u##x val, bool trace) { \
|
|
|
|
+ GEN6_WRITE_HEADER; \
|
|
|
|
+ __raw_i915_write##x(dev_priv, reg, val); \
|
|
|
|
+ GEN6_WRITE_FOOTER; \
|
|
|
|
+}
|
|
|
|
+
|
|
static const u32 gen8_shadowed_regs[] = {
|
|
static const u32 gen8_shadowed_regs[] = {
|
|
FORCEWAKE_MT,
|
|
FORCEWAKE_MT,
|
|
GEN6_RPNSWREQ,
|
|
GEN6_RPNSWREQ,
|
|
@@ -924,12 +945,17 @@ __gen6_write(8)
|
|
__gen6_write(16)
|
|
__gen6_write(16)
|
|
__gen6_write(32)
|
|
__gen6_write(32)
|
|
__gen6_write(64)
|
|
__gen6_write(64)
|
|
|
|
+__vgpu_write(8)
|
|
|
|
+__vgpu_write(16)
|
|
|
|
+__vgpu_write(32)
|
|
|
|
+__vgpu_write(64)
|
|
|
|
|
|
#undef __gen9_write
|
|
#undef __gen9_write
|
|
#undef __chv_write
|
|
#undef __chv_write
|
|
#undef __gen8_write
|
|
#undef __gen8_write
|
|
#undef __hsw_write
|
|
#undef __hsw_write
|
|
#undef __gen6_write
|
|
#undef __gen6_write
|
|
|
|
+#undef __vgpu_write
|
|
#undef GEN6_WRITE_FOOTER
|
|
#undef GEN6_WRITE_FOOTER
|
|
#undef GEN6_WRITE_HEADER
|
|
#undef GEN6_WRITE_HEADER
|
|
|
|
|
|
@@ -1126,6 +1152,11 @@ void intel_uncore_init(struct drm_device *dev)
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ if (intel_vgpu_active(dev)) {
|
|
|
|
+ ASSIGN_WRITE_MMIO_VFUNCS(vgpu);
|
|
|
|
+ ASSIGN_READ_MMIO_VFUNCS(vgpu);
|
|
|
|
+ }
|
|
|
|
+
|
|
i915_check_and_clear_faults(dev);
|
|
i915_check_and_clear_faults(dev);
|
|
}
|
|
}
|
|
#undef ASSIGN_WRITE_MMIO_VFUNCS
|
|
#undef ASSIGN_WRITE_MMIO_VFUNCS
|