[PATCH v1 2/2] drm/xe: Move VRAM manager to struct xe_vram_region
Piotr Piórkowski
piotr.piorkowski at intel.com
Fri Jan 31 10:59:04 UTC 2025
Rodrigo Vivi <rodrigo.vivi at intel.com> wrote on pią [2025-sty-31 05:37:42 -0500]:
> On Fri, Jan 31, 2025 at 11:09:13AM +0100, Piórkowski, Piotr wrote:
> > From: Piotr Piórkowski <piotr.piorkowski at intel.com>
> >
> > VRAM manager is related directly to struct xe_vram_region so it
> > should be inside this structure.
> > Let's move the VRAM to struct xe_vram_region.
> >
> > Signed-off-by: Piotr Piórkowski <piotr.piorkowski at intel.com>
> > ---
> > drivers/gpu/drm/xe/xe_device_types.h | 5 ++---
> > drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 2 +-
> > drivers/gpu/drm/xe/xe_tile.c | 6 +++---
> > 3 files changed, 6 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> > index c7c285c6a6c9..a4d998add4c3 100644
> > --- a/drivers/gpu/drm/xe/xe_device_types.h
> > +++ b/drivers/gpu/drm/xe/xe_device_types.h
> > @@ -104,6 +104,8 @@ struct xe_vram_region {
> > resource_size_t actual_physical_size;
> > /** @mapping: pointer to VRAM mappable space */
> > void __iomem *mapping;
> > + /** @vram_mgr: VRAM TTM manager */
> > + struct xe_ttm_vram_mgr *vram_mgr;
> > };
> >
> > /**
> > @@ -198,9 +200,6 @@ struct xe_tile {
> > */
> > struct xe_vram_region vram;
> >
> > - /** @mem.vram_mgr: VRAM TTM manager */
> > - struct xe_ttm_vram_mgr *vram_mgr;
> > -
> > /** @mem.ggtt: Global graphics translation table */
> > struct xe_ggtt *ggtt;
> >
> > diff --git a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> > index b1d994d65589..98e443faabdc 100644
> > --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> > +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> > @@ -1560,7 +1560,7 @@ static u64 pf_query_free_lmem(struct xe_gt *gt)
> > {
> > struct xe_tile *tile = gt->tile;
> >
> > - return xe_ttm_vram_get_avail(&tile->mem.vram_mgr->manager);
> > + return xe_ttm_vram_get_avail(&tile->mem.vram.vram_mgr->manager);
>
> I like your series, but I didn't like how this ended here
> vram vram
> manager manager
>
> Then I went to see if there was something we could do about the
> xe_ttm_vram_mgr itself, but then I noticed it has pointer to
> xe_vram_region inside it and I disliked this double pointer now.
>
> So, if we really want to take this path we probably need a bigger
> refactor, or this can bring more confusion then help.
I know what you mean - it irritated me too...
For now, I suggested this solution, because it solved my other problems...
But I agree that it looks bad, and I will try maybe to do something about it.
Thanks!
>
> > }
> >
> > static u64 pf_query_max_lmem(struct xe_gt *gt)
> > diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
> > index 2825553b568f..b13a0ec7c296 100644
> > --- a/drivers/gpu/drm/xe/xe_tile.c
> > +++ b/drivers/gpu/drm/xe/xe_tile.c
> > @@ -94,8 +94,8 @@ static int xe_tile_alloc(struct xe_tile *tile)
> > return -ENOMEM;
> > tile->mem.ggtt->tile = tile;
> >
> > - tile->mem.vram_mgr = drmm_kzalloc(drm, sizeof(*tile->mem.vram_mgr), GFP_KERNEL);
> > - if (!tile->mem.vram_mgr)
> > + tile->mem.vram.vram_mgr = drmm_kzalloc(drm, sizeof(*tile->mem.vram.vram_mgr), GFP_KERNEL);
> > + if (!tile->mem.vram.vram_mgr)
> > return -ENOMEM;
> >
> > return 0;
> > @@ -139,7 +139,7 @@ static int tile_ttm_mgr_init(struct xe_tile *tile)
> > int err;
> >
> > if (tile->mem.vram.usable_size) {
> > - err = xe_ttm_vram_mgr_init(tile, tile->mem.vram_mgr);
> > + err = xe_ttm_vram_mgr_init(tile, tile->mem.vram.vram_mgr);
> > if (err)
> > return err;
> > xe->info.mem_region_mask |= BIT(tile->id) << 1;
> > --
> > 2.34.1
> >
--
More information about the Intel-xe
mailing list