Intel-XE Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Matt Roper <matthew.d.roper@intel.com>
To: intel-xe@lists.freedesktop.org
Cc: matthew.d.roper@intel.com
Subject: [PATCH 03/43] drm/xe: Clarify size of MMIO region
Date: Tue,  3 Sep 2024 17:21:04 -0700	[thread overview]
Message-ID: <20240904002100.2023834-48-matthew.d.roper@intel.com> (raw)
In-Reply-To: <20240904002100.2023834-45-matthew.d.roper@intel.com>

xe_mmio currently has a size parameter that is assigned but never used
anywhere.  The current values assigned appear to be the size of the BAR
region assigned for the tile (both for registers and other purposes such
as the GGTT).  Since the current field isn't being used for anything,
change the assignments to 4MB (the size of the register region on all
current platform) and rename the field to 'regs_length' to more clearly
describe what it represents.  We can use this value in later patches to
help ensure no register accesses accidentally go past the end of the
desired register space (which might not be caught easily if they still
fall within the iomap).

Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
---
 drivers/gpu/drm/xe/xe_device_types.h | 10 ++++++++--
 drivers/gpu/drm/xe/xe_mmio.c         | 10 ++++++++--
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
index a02e5dfcc6a7..7427f40086e8 100644
--- a/drivers/gpu/drm/xe/xe_device_types.h
+++ b/drivers/gpu/drm/xe/xe_device_types.h
@@ -119,8 +119,14 @@ struct xe_mmio {
 	/** @regs: Map used to access registers. */
 	void __iomem *regs;
 
-	/** @map_size: Size of the map. */
-	size_t size;
+	/**
+	 * @map_size: Length of the register region within the map.
+	 *
+	 * The size of the map itself it generally larger than the iomap; the
+	 * map itself is generally shared with other regions, and also includes
+	 * non-register regions such as the GGTT PTEs.
+	 */
+	size_t regs_length;
 };
 
 /**
diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
index 3fd462fda625..ad6a7992b00e 100644
--- a/drivers/gpu/drm/xe/xe_mmio.c
+++ b/drivers/gpu/drm/xe/xe_mmio.c
@@ -36,13 +36,19 @@ static void tiles_fini(void *arg)
 /*
  * On multi-tile devices, partition the BAR space for MMIO on each tile,
  * possibly accounting for register override on the number of tiles available.
+ * tile_mmio_size contains both the tile's 4MB register space, as well as
+ * additional space for the GTT and other (possibly unused) regions).
  * Resulting memory layout is like below:
  *
  * .----------------------. <- tile_count * tile_mmio_size
  * |         ....         |
  * |----------------------| <- 2 * tile_mmio_size
+ * |   tile1 GTT + other  |
+ * |----------------------| <- 1 * tile_mmio_size + 4MB
  * |   tile1->mmio.regs   |
  * |----------------------| <- 1 * tile_mmio_size
+ * |   tile0 GTT + other  |
+ * |----------------------| <- 4MB
  * |   tile0->mmio.regs   |
  * '----------------------' <- 0MB
  */
@@ -90,7 +96,7 @@ static void mmio_multi_tile_setup(struct xe_device *xe, size_t tile_mmio_size)
 
 	regs = xe->mmio.regs;
 	for_each_tile(tile, xe, id) {
-		tile->mmio.size = tile_mmio_size;
+		tile->mmio.regs_length = SZ_4M;
 		tile->mmio.regs = regs;
 		regs += tile_mmio_size;
 	}
@@ -172,7 +178,7 @@ int xe_mmio_init(struct xe_device *xe)
 	}
 
 	/* Setup first tile; other tiles (if present) will be setup later. */
-	root_tile->mmio.size = SZ_16M;
+	root_tile->mmio.regs_length = SZ_4M;
 	root_tile->mmio.regs = xe->mmio.regs;
 
 	return devm_add_action_or_reset(xe->drm.dev, mmio_fini, xe);
-- 
2.45.2


  parent reply	other threads:[~2024-09-04  0:21 UTC|newest]

Thread overview: 75+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-04  0:21 [PATCH 00/43] Stop using xe_gt as a register MMIO target Matt Roper
2024-09-04  0:21 ` [PATCH 01/43] drm/xe: Move forcewake to 'gt.pm' substructure Matt Roper
2024-09-05 20:03   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 02/43] drm/xe: Create dedicated xe_mmio structure Matt Roper
2024-09-05 20:08   ` Lucas De Marchi
2024-09-06 13:49   ` Michal Wajdeczko
2024-09-04  0:21 ` Matt Roper [this message]
2024-09-05 21:19   ` [PATCH 03/43] drm/xe: Clarify size of MMIO region Lucas De Marchi
2024-09-04  0:21 ` [PATCH 04/43] drm/xe: Move GSI offset adjustment fields into 'struct xe_mmio' Matt Roper
2024-09-05 21:53   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 05/43] drm/xe: Populate GT's mmio iomap from tile during init Matt Roper
2024-09-05 21:58   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 06/43] drm/xe: Switch mmio_ext to use 'struct xe_mmio' Matt Roper
2024-09-06  1:47   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 07/43] drm/xe: Add xe_device backpointer to xe_mmio Matt Roper
2024-09-06  1:51   ` Lucas De Marchi
2024-09-06 14:15   ` Michal Wajdeczko
2024-09-04  0:21 ` [PATCH 08/43] drm/xe: Adjust mmio code to pass VF substructure to SRIOV code Matt Roper
2024-09-06  3:32   ` Lucas De Marchi
2024-09-06 15:28   ` Michal Wajdeczko
2024-09-06 19:44     ` Matt Roper
2024-09-04  0:21 ` [PATCH 09/43] drm/xe: Switch MMIO interface to take xe_mmio instead of xe_gt Matt Roper
2024-09-06  3:44   ` Lucas De Marchi
2024-09-06 22:44     ` Matt Roper
2024-09-04  0:21 ` [PATCH 10/43] drm/xe/irq: Convert register access to use xe_mmio Matt Roper
2024-09-06  3:47   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 11/43] drm/xe/pcode: " Matt Roper
2024-09-06 21:40   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 12/43] drm/xe/hwmon: " Matt Roper
2024-09-06 21:41   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 13/43] drm/xe/vram: " Matt Roper
2024-09-06 21:46   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 14/43] drm/xe/compat-i915: " Matt Roper
2024-09-06  9:02   ` Jani Nikula
2024-09-06 21:51     ` Lucas De Marchi
2024-09-06 23:17       ` Matt Roper
2024-09-04  0:21 ` [PATCH 15/43] drm/xe/lmtt: " Matt Roper
2024-09-06 21:52   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 16/43] drm/xe/stolen: " Matt Roper
2024-09-06 23:17   ` Lucas De Marchi
2024-09-04  0:21 ` [PATCH 17/43] drm/xe/device: " Matt Roper
2024-09-04  0:21 ` [PATCH 18/43] drm/xe/pci: " Matt Roper
2024-09-04  0:21 ` [PATCH 19/43] drm/xe/wa: " Matt Roper
2024-09-04  0:21 ` [PATCH 20/43] drm/xe/uc: " Matt Roper
2024-09-04  0:21 ` [PATCH 21/43] drm/xe/guc: " Matt Roper
2024-09-04  0:21 ` [PATCH 22/43] drm/xe/huc: " Matt Roper
2024-09-04  0:21 ` [PATCH 23/43] drm/xe/gsc: " Matt Roper
2024-09-04  0:21 ` [PATCH 24/43] drm/xe/query: " Matt Roper
2024-09-04  0:21 ` [PATCH 25/43] drm/xe/mcr: " Matt Roper
2024-09-04  0:21 ` [PATCH 26/43] drm/xe/mocs: " Matt Roper
2024-09-04  0:21 ` [PATCH 27/43] drm/xe/hw_engine: " Matt Roper
2024-09-04  0:21 ` [PATCH 28/43] drm/xe/gt_throttle: " Matt Roper
2024-09-04  0:21 ` [PATCH 29/43] drm/xe/pat: " Matt Roper
2024-09-04  0:21 ` [PATCH 30/43] drm/xe/wopcm: " Matt Roper
2024-09-04  0:21 ` [PATCH 31/43] drm/xe/oa: " Matt Roper
2024-09-04  0:21 ` [PATCH 32/43] drm/xe/topology: " Matt Roper
2024-09-04  0:21 ` [PATCH 33/43] drm/xe/execlist: " Matt Roper
2024-09-04  0:21 ` [PATCH 34/43] drm/xe/gt_clock: " Matt Roper
2024-09-04  0:21 ` [PATCH 35/43] drm/xe/reg_sr: " Matt Roper
2024-09-04  0:21 ` [PATCH 36/43] drm/xe/gt: " Matt Roper
2024-09-04  0:21 ` [PATCH 37/43] drm/xe/sriov: " Matt Roper
2024-09-04  0:21 ` [PATCH 38/43] drm/xe/tlb: " Matt Roper
2024-09-04  0:21 ` [PATCH 39/43] drm/xe/gt_idle: " Matt Roper
2024-09-04  0:21 ` [PATCH 40/43] drm/xe/forcewake: " Matt Roper
2024-09-04  0:21 ` [PATCH 41/43] drm/xe/ggtt: " Matt Roper
2024-09-04  0:21 ` [PATCH 42/43] drm/xe/ccs_mode: " Matt Roper
2024-09-04  0:21 ` [PATCH 43/43] drm/xe/mmio: Drop compatibility macros Matt Roper
2024-09-04  0:27 ` ✓ CI.Patch_applied: success for Stop using xe_gt as a register MMIO target Patchwork
2024-09-04  0:28 ` ✗ CI.checkpatch: warning " Patchwork
2024-09-04  0:29 ` ✓ CI.KUnit: success " Patchwork
2024-09-04  0:41 ` ✓ CI.Build: " Patchwork
2024-09-04  0:43 ` ✗ CI.Hooks: failure " Patchwork
2024-09-04  0:44 ` ✓ CI.checksparse: success " Patchwork
2024-09-04  1:03 ` ✓ CI.BAT: " Patchwork
2024-09-04  5:33 ` ✗ CI.FULL: 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=20240904002100.2023834-48-matthew.d.roper@intel.com \
    --to=matthew.d.roper@intel.com \
    --cc=intel-xe@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