[Intel-xe] [PATCH v2 09/10] drm/xe: Carve out top of DSM as reserved
Lucas De Marchi
lucas.demarchi at intel.com
Wed Jul 26 18:03:20 UTC 2023
On Wed, Jul 26, 2023 at 10:07:57AM -0700, Matt Roper wrote:
>On Wed, Jul 26, 2023 at 10:04:07AM -0700, Matt Roper wrote:
>> On Wed, Jul 26, 2023 at 09:07:07AM -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. On a MTL system, the output now matches the expected values:
>> >
>> > Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>>
>> Reviewed-by: Matt Roper <matthew.d.roper 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 dbf572d11af0..315f6f8dadf3 100644
>> > --- a/drivers/gpu/drm/xe/regs/xe_regs.h
>> > +++ b/drivers/gpu/drm/xe/regs/xe_regs.h
>> > @@ -84,4 +84,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..7bba8fff5a5d 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) * SZ_1M;
>> > +
>> > if (drm_WARN_ON(&xe->drm, stolen_size + SZ_8M > pci_resource_len(pdev, 2)))
>> > return 0;
>
>Oh, actually shouldn't we do this WARN check before we slice off the
>WOPCM? If the GSM + DSM (_including_ WOPCM) is larger than the size of
>the BAR, something is wrong.
as far as I can see, the check is only for: "do we have access to
everything we need"? So I left it after removing wopcm because we don´t
care about accesing that.
Lucas De Marchi
More information about the Intel-xe
mailing list