From: Matt Roper <matthew.d.roper@intel.com>
To: intel-gfx@lists.freedesktop.org
Cc: dri-devel@lists.freedesktop.org
Subject: [Intel-gfx] [PATCH 0/7] i915: Prep work for explicit MCR handling
Date: Thu, 1 Sep 2022 17:47:33 -0700 [thread overview]
Message-ID: <20220902004740.2849371-1-matthew.d.roper@intel.com> (raw)
Steering of multicast/replicated registers becomes a bit more
complicated on Meteor Lake. Whereas previously the control register we
used to manage the steering was only used by our driver[*], software's
control of steering has now been consolidated with the controls for
various other hardware/firmware agents into a single register. We can
no longer utilize pre-programmed implicit steering since other firmware
agents may change the steering target and not restore it afterward;
we'll need to explicitly steer all types of MCR registers (including the
GSLICE/COMPUTE/DSS ranges that have been handled implicitly in the
past). Furthermore, since multiple agents will now be sharing a single
steering control register, races are possible. To address this, the
hardware adds a new MCR semaphore register which is supposed to be used
to temporarily lock the steering while performing MCR operations.
It's going to become important for us to handle accesses of multicast
registers very explicitly going forward. This series provides some prep
work for that by updating our register definitions to clearly define
registers as either MCR or non-MCR and ensure that we're using the
intel_gt_mcr_*() functions rather than intel_uncore_*() when operating
on MCR registers. In a future series we plan to change the MCR_REG()
register definitions to actually declare MCR registers as a new C type
(i.e., not an i915_reg_t) so that the compiler will be able to help us
find any mistakes where non-MCR functions are used on MCR registers and
vice-versa. Introduction of the MTL steering tables and introduction of
the steering semaphore support will also arrive in future patch series.
[*] This is a bit of an oversimplification; there are some hardware and
software debug tools that use the same MCR_SELECTOR register that i915
does and which could potentially re-steer MCR accesses behind our back.
E.g., simply using IGT's "intel_reg" tool to write the MCR_SELECTOR
register at the wrong time could interfere with driver operation. But
given that these debug facilities require root privileges to run and are
only used by people intentionally debugging the driver or hardware, we
can ignore such races for real-world usage.
Matt Roper (7):
drm/i915/gen8: Create separate reg definitions for new MCR registers
drm/i915/xehp: Create separate reg definitions for new MCR registers
drm/i915/gt: Drop a few unused register definitions
drm/i915/gt: Correct prefix on a few registers
drm/i915: Define MCR registers explicitly
drm/i915/gt: Always use MCR functions on multicast registers
drm/i915/gt: Add MCR-specific workaround initializers
drivers/gpu/drm/i915/gt/intel_engine_cs.c | 4 +-
drivers/gpu/drm/i915/gt/intel_ggtt.c | 4 +-
drivers/gpu/drm/i915/gt/intel_gt_regs.h | 138 +++---
drivers/gpu/drm/i915/gt/intel_gtt.c | 44 +-
drivers/gpu/drm/i915/gt/intel_gtt.h | 2 +-
drivers/gpu/drm/i915/gt/intel_mocs.c | 12 +-
drivers/gpu/drm/i915/gt/intel_workarounds.c | 426 +++++++++++-------
.../gpu/drm/i915/gt/intel_workarounds_types.h | 4 +-
drivers/gpu/drm/i915/gt/uc/intel_guc_ads.c | 7 +-
.../gpu/drm/i915/gt/uc/intel_guc_capture.c | 4 +-
drivers/gpu/drm/i915/gt/uc/intel_guc_fw.c | 12 +-
drivers/gpu/drm/i915/gvt/handlers.c | 2 +-
drivers/gpu/drm/i915/gvt/mmio_context.c | 2 +-
drivers/gpu/drm/i915/intel_gvt_mmio_table.c | 2 +-
drivers/gpu/drm/i915/intel_pm.c | 20 +-
15 files changed, 397 insertions(+), 286 deletions(-)
--
2.37.2
next reply other threads:[~2022-09-02 0:47 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-02 0:47 Matt Roper [this message]
2022-09-02 0:47 ` [Intel-gfx] [PATCH 1/7] drm/i915/gen8: Create separate reg definitions for new MCR registers Matt Roper
2022-09-02 0:47 ` [Intel-gfx] [PATCH 2/7] drm/i915/xehp: " Matt Roper
2022-09-02 0:47 ` [Intel-gfx] [PATCH 3/7] drm/i915/gt: Drop a few unused register definitions Matt Roper
2022-09-02 0:47 ` [Intel-gfx] [PATCH 4/7] drm/i915/gt: Correct prefix on a few registers Matt Roper
2022-09-02 0:47 ` [Intel-gfx] [PATCH 5/7] drm/i915: Define MCR registers explicitly Matt Roper
2022-09-02 0:47 ` [Intel-gfx] [PATCH 6/7] drm/i915/gt: Always use MCR functions on multicast registers Matt Roper
2022-09-02 0:47 ` [Intel-gfx] [PATCH 7/7] drm/i915/gt: Add MCR-specific workaround initializers Matt Roper
2022-09-02 1:13 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for i915: Prep work for explicit MCR handling Patchwork
2022-09-02 1:13 ` [Intel-gfx] ✗ Fi.CI.SPARSE: " Patchwork
2022-09-02 1:27 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
2022-09-09 23:27 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for i915: Prep work for explicit MCR handling (rev2) Patchwork
2022-09-09 23:41 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
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=20220902004740.2849371-1-matthew.d.roper@intel.com \
--to=matthew.d.roper@intel.com \
--cc=dri-devel@lists.freedesktop.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox