[Intel-xe] [PATCH 2/4] drm/xe: Carve out top of DSM as reserved

Lucas De Marchi lucas.demarchi at intel.com
Tue Jul 25 22:04:54 UTC 2023


On Tue, Jul 25, 2023 at 01:28:34PM -0700, Lucas De Marchi wrote:
>Top of DSM contains the WOPCM where kernel driver shouldn't access as
>it contains data from other HW agents. Carve it out from the stolen
>memory.
>
>Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>---
> drivers/gpu/drm/xe/regs/xe_regs.h      | 3 +++
> drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c | 8 +++++++-
> 2 files changed, 10 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/gpu/drm/xe/regs/xe_regs.h b/drivers/gpu/drm/xe/regs/xe_regs.h
>index 8be616a1bd51..dd7568badb4e 100644
>--- a/drivers/gpu/drm/xe/regs/xe_regs.h
>+++ b/drivers/gpu/drm/xe/regs/xe_regs.h
>@@ -101,4 +101,7 @@
> #define DSMBASE					XE_REG(0x1080C0)
> #define   BDSM_MASK				REG_GENMASK64(63, 20)
>
>+#define STOLEN_RESERVED				XE_REG(0x1082C0)
>+#define   WOPCM_SIZE_MASK			REG_GENMASK64(8, 7)
>+
> #endif
>diff --git a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
>index 271b3fba4129..3a7d7b42b43d 100644
>--- a/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
>+++ b/drivers/gpu/drm/xe/xe_ttm_stolen_mgr.c
>@@ -89,7 +89,7 @@ static s64 detect_bar2_dgfx(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
> static u32 detect_bar2_integrated(struct xe_device *xe, struct xe_ttm_stolen_mgr *mgr)
> {
> 	struct pci_dev *pdev = to_pci_dev(xe->drm.dev);
>-	u32 stolen_size;
>+	u32 stolen_size, wopcm_size;
> 	u32 ggc, gms;
>
> 	ggc = xe_mmio_read32(xe_root_mmio_gt(xe), GGC);
>@@ -124,6 +124,12 @@ static u32 detect_bar2_integrated(struct xe_device *xe, struct xe_ttm_stolen_mgr
> 		return 0;
> 	}
>
>+	/* Carve out the top of DSM as it contains the reserved WOPCM region */
>+	wopcm_size = REG_FIELD_GET64(WOPCM_SIZE_MASK,
>+				     xe_mmio_read64(xe_root_mmio_gt(xe),
>+						    STOLEN_RESERVED));
>+	stolen_size -= 1U << wopcm_size;

oops, just noticed I forgot to add the * SZ_1M. I will add in the next
version.

Lucas De Marchi

>+
> 	if (drm_WARN_ON(&xe->drm, stolen_size + SZ_8M > pci_resource_len(pdev, 2)))
> 		return 0;
>
>-- 
>2.40.1
>


More information about the Intel-xe mailing list