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
next 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.