All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anusha Srivatsa <anusha.srivatsa@intel.com>
To: intel-gfx@lists.freedesktop.org
Subject: [Intel-gfx] [PATCH] drm/i915/dmc: Add DMC_EVT_HTP and DMC_EVT_CTL programming
Date: Mon, 28 Mar 2022 08:34:45 -0700	[thread overview]
Message-ID: <20220328153445.2578957-1-anusha.srivatsa@intel.com> (raw)

We need add some checks around DMC reloading to
prevents the rare possibility of some adversary
writing to a random mmio register

BSpec: 49193

Cc: Imre Deak <imre.deak@intel.com>
Signed-off-by: Anusha Srivatsa <anusha.srivatsa@intel.com>
---
 .../drm/i915/display/intel_display_power.c    | 23 +++++++++++++++++++
 drivers/gpu/drm/i915/i915_reg.h               | 10 ++++++++
 2 files changed, 33 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_power.c b/drivers/gpu/drm/i915/display/intel_display_power.c
index 3dc859032bac..81cc4c658e3f 100644
--- a/drivers/gpu/drm/i915/display/intel_display_power.c
+++ b/drivers/gpu/drm/i915/display/intel_display_power.c
@@ -29,6 +29,8 @@
 #include "intel_vga.h"
 #include "vlv_sideband.h"
 
+#define DMC_EVT_HTP_CTL_MAX	8
+
 const char *
 intel_display_power_domain_str(enum intel_display_power_domain domain)
 {
@@ -1101,6 +1103,26 @@ static void gen9_assert_dbuf_enabled(struct drm_i915_private *dev_priv)
 		 enabled_dbuf_slices);
 }
 
+static void tgl_dmc_mmio_prog(struct drm_i915_private *dev_priv)
+{
+	struct intel_dmc *dmc = &dev_priv->dmc;
+	int i, id;
+
+	for (i = 0; i <= DMC_EVT_HTP_CTL_MAX; i++) {
+		intel_de_write(dev_priv, TGL_MAIN_DMC_EVT_CTL(i), DMC_EVT_CTL_VAL);
+		intel_de_write(dev_priv, TGL_MAIN_DMC_EVT_HTP(i), DMC_EVT_HTP_VAL);
+	}
+	/* Pipe DMC MMIOs */
+	for (id = 1; i <= DMC_FW_MAX; id++) {
+		for (i = 0; i <= DMC_EVT_HTP_CTL_MAX; i++) {
+			intel_de_write(dev_priv, PIPEDMC_EVT_CTL_OFFSET(dmc->dmc_info[id].start_mmioaddr, i),
+			DMC_EVT_CTL_VAL);
+			intel_de_write(dev_priv, PIPEDMC_EVT_HTP_OFFSET(dmc->dmc_info[id].start_mmioaddr, i),
+			DMC_EVT_HTP_VAL);
+		}
+	}
+}
+
 static void gen9_disable_dc_states(struct drm_i915_private *dev_priv)
 {
 	struct intel_cdclk_config cdclk_config = {};
@@ -1139,6 +1161,7 @@ static void gen9_dc_off_power_well_enable(struct drm_i915_private *dev_priv,
 					  struct i915_power_well *power_well)
 {
 	gen9_disable_dc_states(dev_priv);
+	tgl_dmc_mmio_prog(dev_priv);
 }
 
 static void gen9_dc_off_power_well_disable(struct drm_i915_private *dev_priv,
diff --git a/drivers/gpu/drm/i915/i915_reg.h b/drivers/gpu/drm/i915/i915_reg.h
index a0d652f19ff9..7e3ef777c26d 100644
--- a/drivers/gpu/drm/i915/i915_reg.h
+++ b/drivers/gpu/drm/i915/i915_reg.h
@@ -5525,6 +5525,16 @@
 #define TGL_DMC_DEBUG3		_MMIO(0x101090)
 #define DG1_DMC_DEBUG3		_MMIO(0x13415c)
 
+/* Main DMC EVT_HTP and EVT_CTL registers  */
+#define DMC_EVT_CTL_VAL		0x00030100
+#define DMC_EVT_HTP_VAL		0x00000000
+#define TGL_MAIN_DMC_EVT_HTP(n)	_MMIO(0x8F004 + (n) * 4)
+#define TGL_MAIN_DMC_EVT_CTL(n)	_MMIO(0x8F034 + (n) * 4)
+#define PIPEDMC_EVT_HTP_BASE	0x00004
+#define PIPEDMC_EVT_CTL_BASE	0x00034
+#define PIPEDMC_EVT_HTP_OFFSET(addr, i)		_MMIO(addr + PIPEDMC_EVT_HTP_BASE + (i * 4))
+#define PIPEDMC_EVT_CTL_OFFSET(addr, i)		_MMIO(addr + PIPEDMC_EVT_CTL_BASE + (i * 4))
+
 /* Display Internal Timeout Register */
 #define RM_TIMEOUT		_MMIO(0x42060)
 #define  MMIO_TIMEOUT_US(us)	((us) << 0)
-- 
2.25.1


             reply	other threads:[~2022-03-28 15:38 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-28 15:34 Anusha Srivatsa [this message]
2022-03-28 22:51 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for drm/i915/dmc: Add DMC_EVT_HTP and DMC_EVT_CTL programming Patchwork
2022-03-28 22:52 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-03-28 22:56 ` [Intel-gfx] ✗ Fi.CI.DOCS: " Patchwork
2022-03-28 23:09 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2022-04-01 12:47 ` [Intel-gfx] [PATCH] " Jani Nikula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220328153445.2578957-1-anusha.srivatsa@intel.com \
    --to=anusha.srivatsa@intel.com \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.