[PATCH] drm/xe/xe2: Use XE_WA() check

Lucas De Marchi lucas.demarchi at intel.com
Tue Jul 16 15:21:49 UTC 2024


On Tue, Jul 16, 2024 at 03:16:35PM GMT, Tejas Upadhyay wrote:
>Use XE_WA as used elsewhere.
>
>Fixes: 86c5b70a9c0c ("drm/xe/xe2: Add Wa_15015404425")
>Signed-off-by: Tejas Upadhyay <tejas.upadhyay at intel.com>
>---
> drivers/gpu/drm/xe/xe_mmio.c       | 5 ++++-
> drivers/gpu/drm/xe/xe_wa_oob.rules | 1 +
> 2 files changed, 5 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
>index ea3c37d3e13f..1138934cf969 100644
>--- a/drivers/gpu/drm/xe/xe_mmio.c
>+++ b/drivers/gpu/drm/xe/xe_mmio.c
>@@ -13,6 +13,8 @@
> #include <drm/drm_managed.h>
> #include <drm/drm_print.h>
>
>+#include <generated/xe_wa_oob.h>
>+
> #include "regs/xe_bars.h"
> #include "regs/xe_regs.h"
> #include "xe_device.h"
>@@ -22,6 +24,7 @@
> #include "xe_macros.h"
> #include "xe_sriov.h"
> #include "xe_trace.h"
>+#include "xe_wa.h"
>
> static void tiles_fini(void *arg)
> {
>@@ -127,7 +130,7 @@ static void mmio_flush_pending_writes(struct xe_gt *gt)
> 	struct xe_tile *tile = gt_to_tile(gt);
> 	int i;
>
>-	if (tile->xe->info.platform != XE_LUNARLAKE)
>+	if (!XE_WA(gt, 15015404425))

I'm not sure we can actually call it that early as we have the
following call chain on init:

xe_device_probe_early()
   xe_mmio_init()
...
xe_device_probe()
   xe_sriov_init()
   xe_mmio_probe_tiles() <<<<
   xe_gt_init_early()
     xe_wa_process_oob()

xe_mmio_probe_tiles() does call xe_mmio_read64_2x32() on
xe_root_mmio_gt(). From a quick grep I'm not sure there are other cases.
Can you rebase on https://patchwork.freedesktop.org/series/136146/
to make sure the assert doesn't trigger?

So... although xe_wa_process_oob() is called very early on gt init,
there are still cases in which it may not be safe. At least for that
mtcfg reg read, I think it's odd to call xe_mmio_* before actually
setting up the mmio regs per tile.

And just after writting the above I noticed the

	if (tile_count == 1)
		goto add_mmio_ext;

uggh, that neeeds to be properly refactored, although doesn't invalidate
the reasoning above.

Lucas De Marchi

> 		return;
>
> 	/* 4 dummy writes */
>diff --git a/drivers/gpu/drm/xe/xe_wa_oob.rules b/drivers/gpu/drm/xe/xe_wa_oob.rules
>index 08f7336881e3..3d0e0779a833 100644
>--- a/drivers/gpu/drm/xe/xe_wa_oob.rules
>+++ b/drivers/gpu/drm/xe/xe_wa_oob.rules
>@@ -30,3 +30,4 @@
> 22019338487	MEDIA_VERSION(2000)
> 		GRAPHICS_VERSION(2001)
> 16023588340	GRAPHICS_VERSION(2001)
>+15015404425	GRAPHICS_VERSION(2004)
>-- 
>2.25.1
>


More information about the Intel-xe mailing list