From: Matt Roper Date: Thu, 1 Jun 2023 21:52:28 +0000 (-0700) Subject: drm/xe: Clarify 'gt' retrieval for primary tile X-Git-Tag: microblaze-v6.10~28^2~20^2~855 X-Git-Url: http://git.monstr.eu/?a=commitdiff_plain;h=ed006ba5e6e8334deb86fbc1e35d2411a4870281;p=linux-2.6-microblaze.git drm/xe: Clarify 'gt' retrieval for primary tile There are a bunch of places in the driver where we need to perform non-GT MMIO against the platform's primary tile (display code, top-level interrupt enable/disable, driver initialization, etc.). Rename 'to_gt()' to 'xe_primary_mmio_gt()' to clarify that we're trying to get a primary MMIO handle for these top-level operations. In the future we need to move away from xe_gt as the target for MMIO operations (most of which are completely unrelated to GT). v2: - s/xe_primary_mmio_gt/xe_root_mmio_gt/ for more consistency with how we refer to tile 0. (Lucas) v3: - Tweak comment on xe_root_mmio_gt(). (Lucas) Acked-by: Nirmoy Das Reviewed-by: Lucas De Marchi Link: https://lore.kernel.org/r/20230601215244.678611-16-matthew.d.roper@intel.com Signed-off-by: Matt Roper Signed-off-by: Rodrigo Vivi --- diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c index 50ce4e97299e..0ff3b94bd662 100644 --- a/drivers/gpu/drm/xe/xe_device.c +++ b/drivers/gpu/drm/xe/xe_device.c @@ -355,7 +355,7 @@ static void device_kill_persistent_engines(struct xe_device *xe, void xe_device_wmb(struct xe_device *xe) { - struct xe_gt *gt = xe_device_get_gt(xe, 0); + struct xe_gt *gt = xe_root_mmio_gt(xe); wmb(); if (IS_DGFX(xe)) diff --git a/drivers/gpu/drm/xe/xe_device.h b/drivers/gpu/drm/xe/xe_device.h index 3516ac1dcbc4..e88f685f3f21 100644 --- a/drivers/gpu/drm/xe/xe_device.h +++ b/drivers/gpu/drm/xe/xe_device.h @@ -66,9 +66,18 @@ static inline struct xe_gt *xe_device_get_gt(struct xe_device *xe, u8 gt_id) } /* - * FIXME: Placeholder until multi-gt lands. Once that lands, kill this function. + * Provide a GT structure suitable for performing non-GT MMIO operations against + * the primary tile. Primarily intended for early tile initialization, display + * handling, top-most interrupt enable/disable, etc. Since anything using the + * MMIO handle returned by this function doesn't need GSI offset translation, + * we'll return the primary GT from the root tile. + * + * FIXME: Fix the driver design so that 'gt' isn't the target of all MMIO + * operations. + * + * Returns the primary gt of the root tile. */ -static inline struct xe_gt *to_gt(struct xe_device *xe) +static inline struct xe_gt *xe_root_mmio_gt(struct xe_device *xe) { return &xe_device_get_root_tile(xe)->primary_gt; } diff --git a/drivers/gpu/drm/xe/xe_irq.c b/drivers/gpu/drm/xe/xe_irq.c index e9614e90efaf..6d9545664386 100644 --- a/drivers/gpu/drm/xe/xe_irq.c +++ b/drivers/gpu/drm/xe/xe_irq.c @@ -284,7 +284,7 @@ static void gt_irq_handler(struct xe_device *xe, struct xe_gt *gt, static irqreturn_t xelp_irq_handler(int irq, void *arg) { struct xe_device *xe = arg; - struct xe_gt *gt = xe_device_get_gt(xe, 0); /* Only 1 GT here */ + struct xe_gt *gt = xe_root_mmio_gt(xe); u32 master_ctl, gu_misc_iir; long unsigned int intr_dw[2]; u32 identity[32]; @@ -306,7 +306,7 @@ static irqreturn_t xelp_irq_handler(int irq, void *arg) static u32 dg1_intr_disable(struct xe_device *xe) { - struct xe_gt *gt = xe_device_get_gt(xe, 0); + struct xe_gt *gt = xe_root_mmio_gt(xe); u32 val; /* First disable interrupts */ @@ -324,7 +324,7 @@ static u32 dg1_intr_disable(struct xe_device *xe) static void dg1_intr_enable(struct xe_device *xe, bool stall) { - struct xe_gt *gt = xe_device_get_gt(xe, 0); + struct xe_gt *gt = xe_root_mmio_gt(xe); xe_mmio_write32(gt, DG1_MSTR_TILE_INTR, DG1_MSTR_IRQ); if (stall) diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c index 86f010ac9ccf..7739282d364d 100644 --- a/drivers/gpu/drm/xe/xe_mmio.c +++ b/drivers/gpu/drm/xe/xe_mmio.c @@ -328,7 +328,7 @@ int xe_mmio_probe_vram(struct xe_device *xe) static void xe_mmio_probe_tiles(struct xe_device *xe) { - struct xe_gt *gt = &xe_device_get_root_tile(xe)->primary_gt; + struct xe_gt *gt = xe_root_mmio_gt(xe); u32 mtcfg; u8 adj_tile_count; u8 id; @@ -380,7 +380,7 @@ static void mmio_fini(struct drm_device *drm, void *arg) int xe_mmio_init(struct xe_device *xe) { struct xe_tile *root_tile = xe_device_get_root_tile(xe); - struct xe_gt *gt = xe_device_get_gt(xe, 0); + struct xe_gt *gt = xe_root_mmio_gt(xe); const int mmio_bar = 0; int err; @@ -439,7 +439,7 @@ int xe_mmio_ioctl(struct drm_device *dev, void *data, struct drm_file *file) { struct xe_device *xe = to_xe_device(dev); - struct xe_gt *gt = xe_device_get_gt(xe, 0); + struct xe_gt *gt = xe_root_mmio_gt(xe); struct drm_xe_mmio *args = data; unsigned int bits_flag, bytes; struct xe_reg reg; diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c index 799bf68800e7..8087c94dd782 100644 --- a/drivers/gpu/drm/xe/xe_query.c +++ b/drivers/gpu/drm/xe/xe_query.c @@ -259,7 +259,7 @@ static int query_gts(struct xe_device *xe, struct drm_xe_device_query *query) static int query_hwconfig(struct xe_device *xe, struct drm_xe_device_query *query) { - struct xe_gt *gt = xe_device_get_gt(xe, 0); + struct xe_gt *gt = xe_root_mmio_gt(xe); size_t size = xe_guc_hwconfig_size(>->uc.guc); void __user *query_ptr = u64_to_user_ptr(query->data); void *hwconfig; diff --git a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c index c68325161c19..21ecc734f10a 100644 --- a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c +++ b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c @@ -54,7 +54,7 @@ bool xe_ttm_stolen_cpu_access_needs_ggtt(struct xe_device *xe) static s64 detect_bar2_dgfx(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr) { struct xe_tile *tile = xe_device_get_root_tile(xe); - struct xe_gt *mmio = &tile->primary_gt; + struct xe_gt *mmio = xe_root_mmio_gt(xe); struct pci_dev *pdev = to_pci_dev(xe->drm.dev); u64 stolen_size; u64 tile_offset; @@ -92,7 +92,7 @@ static u32 detect_bar2_integrated(struct xe_device *xe, struct xe_ttm_stolen_mgr u32 stolen_size; u32 ggc, gms; - ggc = xe_mmio_read32(to_gt(xe), GGC); + ggc = xe_mmio_read32(xe_root_mmio_gt(xe), GGC); /* check GGMS, should be fixed 0x3 (8MB) */ if (drm_WARN_ON(&xe->drm, (ggc & GGMS_MASK) != GGMS_MASK))