clear-pkgs-linux-iot-lts2018/1149-drm-i915-add-GEN9-cach...

76 lines
2.3 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Min He <min.he@intel.com>
Date: Wed, 10 Jul 2019 06:59:18 +0000
Subject: [PATCH] drm/i915: add GEN9 cache sharing control in debugfs
To support cache sharing QoS, we added support for Gen9 in this patch.
Tracked-On: PKT-2559
Tracked-On: projectacrn/acrn-hypervisor#3392
Signed-off-by: Min He <min.he@intel.com>
Reviewed-by: Zhao Yakui <yakui.zhao@intel.com>
---
drivers/gpu/drm/i915/i915_debugfs.c | 16 +++++++++++++---
drivers/gpu/drm/i915/i915_reg.h | 3 +++
2 files changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 320564fd8b4b..61b8a1ff7adc 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -4267,7 +4267,8 @@ i915_cache_sharing_get(void *data, u64 *val)
struct drm_i915_private *dev_priv = data;
u32 snpcr;
- if (!(IS_GEN6(dev_priv) || IS_GEN7(dev_priv)))
+ if (!(IS_GEN6(dev_priv) || IS_GEN7(dev_priv)
+ || IS_GEN9(dev_priv)))
return -ENODEV;
intel_runtime_pm_get(dev_priv);
@@ -4285,9 +4286,10 @@ static int
i915_cache_sharing_set(void *data, u64 val)
{
struct drm_i915_private *dev_priv = data;
- u32 snpcr;
+ u32 snpcr, idicr;
- if (!(IS_GEN6(dev_priv) || IS_GEN7(dev_priv)))
+ if (!(IS_GEN6(dev_priv) || IS_GEN7(dev_priv)
+ || IS_GEN9(dev_priv)))
return -ENODEV;
if (val > 3)
@@ -4302,6 +4304,14 @@ i915_cache_sharing_set(void *data, u64 val)
snpcr |= (val << GEN6_MBC_SNPCR_SHIFT);
I915_WRITE(GEN6_MBCUNIT_SNPCR, snpcr);
+
+ if (IS_GEN9(dev_priv)) {
+ idicr = I915_READ(HSW_IDICR);
+ idicr &= ~IDI_QOS_MASK;
+ idicr |= (val << IDI_QOS_SHIFT);
+ I915_WRITE(HSW_IDICR, idicr);
+ }
+
intel_runtime_pm_put(dev_priv);
return 0;
}
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index 673998b338ed..12d3d15b45fe 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -8377,6 +8377,9 @@ enum {
#define HSW_IDICR _MMIO(0x9008)
#define IDIHASHMSK(x) (((x) & 0x3f) << 16)
+#define IDI_QOS_MASK (3 << 22)
+#define IDI_QOS_SHIFT 22
+
#define HSW_EDRAM_CAP _MMIO(0x120010)
#define EDRAM_ENABLED 0x1
#define EDRAM_NUM_BANKS(cap) (((cap) >> 1) & 0xf)
--
https://clearlinux.org