[Intel-xe] [PATCH V5 4/4] drm/xe: Make usable size of VRAM readable
Matthew Brost
matthew.brost at intel.com
Wed Jun 28 17:53:35 UTC 2023
On Wed, Jun 28, 2023 at 12:45:27PM +0530, Tejas Upadhyay wrote:
> Current size member of vram struct does not give
> complete information as what "size" contains. Does
> it contain reserved portions or not. Name it usable
> size and accordingly describe other size members as
> well.
>
> Signed-off-by: Tejas Upadhyay <tejas.upadhyay at intel.com>
Reviewed-by: Matthew Brost <matthew.brost at intel.com>
> ---
> drivers/gpu/drm/xe/display/xe_plane_initial.c | 2 +-
> drivers/gpu/drm/xe/xe_bo.c | 2 +-
> drivers/gpu/drm/xe/xe_device_types.h | 13 ++++++++++---
> drivers/gpu/drm/xe/xe_mmio.c | 6 +++---
> drivers/gpu/drm/xe/xe_query.c | 2 +-
> drivers/gpu/drm/xe/xe_tile.c | 2 +-
> drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 3 ++-
> 7 files changed, 19 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> index 99c35a4ef673..fad4c66a8226 100644
> --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
> +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> @@ -83,7 +83,7 @@ initial_plane_bo(struct xe_device *xe,
> * We don't currently expect this to ever be placed in the
> * stolen portion.
> */
> - if (phys_base >= tile0->mem.vram.size) {
> + if (phys_base >= tile0->mem.vram.usable_size) {
> drm_err(&xe->drm,
> "Initial plane programming using invalid range, phys_base=%pa\n",
> &phys_base);
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index 21fca198a882..e240df6c7ae6 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -125,7 +125,7 @@ static void add_vram(struct xe_device *xe, struct xe_bo *bo,
> {
> struct xe_tile *tile = mem_type_to_tile(xe, mem_type);
>
> - XE_BUG_ON(!tile->mem.vram.size);
> + XE_BUG_ON(!tile->mem.vram.usable_size);
>
> places[*c] = (struct ttm_place) {
> .mem_type = mem_type,
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index bd3e20ce3a4b..6afe37c8704e 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -129,11 +129,18 @@ struct xe_tile {
> resource_size_t io_size;
> /** @base: offset of VRAM starting base */
> resource_size_t base;
> - /** @size: size of VRAM. */
> - resource_size_t size;
> + /**
> + * @usable_size: usable size of VRAM
> + *
> + * Usable size of VRAM excluding reserved portions
> + * (e.g stolen mem)
> + */
> + resource_size_t usable_size;
> /**
> * @actual_physical_size: Actual VRAM size
> - * including stolen mem for tile
> + *
> + * Actual VRAM size including reserved portions
> + * (e.g stolen mem)
> */
> resource_size_t actual_physical_size;
> /** @mapping: pointer to VRAM mappable space */
> diff --git a/drivers/gpu/drm/xe/xe_mmio.c b/drivers/gpu/drm/xe/xe_mmio.c
> index 7d92258cd35d..5effb21db9d4 100644
> --- a/drivers/gpu/drm/xe/xe_mmio.c
> +++ b/drivers/gpu/drm/xe/xe_mmio.c
> @@ -289,13 +289,13 @@ int xe_mmio_probe_vram(struct xe_device *xe)
> tile->mem.vram.base = tile_offset;
>
> /* small bar can limit the visible size. size accordingly */
> - tile->mem.vram.size = min_t(u64, vram_size, io_size);
> + tile->mem.vram.usable_size = min_t(u64, vram_size, io_size);
> tile->mem.vram.mapping = xe->mem.vram.mapping + tile_offset;
>
> drm_info(&xe->drm, "VRAM[%u, %u]: %pa, %pa\n", id, tile->id,
> - &tile->mem.vram.io_start, &tile->mem.vram.size);
> + &tile->mem.vram.io_start, &tile->mem.vram.usable_size);
>
> - if (tile->mem.vram.io_size < tile->mem.vram.size)
> + if (tile->mem.vram.io_size < tile->mem.vram.usable_size)
> drm_info(&xe->drm, "VRAM[%u, %u]: CPU access limited to %pa\n", id,
> tile->id, &tile->mem.vram.io_size);
>
> diff --git a/drivers/gpu/drm/xe/xe_query.c b/drivers/gpu/drm/xe/xe_query.c
> index 15e171ca7e62..9acbb27dfcab 100644
> --- a/drivers/gpu/drm/xe/xe_query.c
> +++ b/drivers/gpu/drm/xe/xe_query.c
> @@ -188,7 +188,7 @@ static int query_config(struct xe_device *xe, struct drm_xe_device_query *query)
> config->num_params = num_params;
> config->info[XE_QUERY_CONFIG_REV_AND_DEVICE_ID] =
> xe->info.devid | (xe->info.revid << 16);
> - if (xe_device_get_root_tile(xe)->mem.vram.size)
> + if (xe_device_get_root_tile(xe)->mem.vram.usable_size)
> config->info[XE_QUERY_CONFIG_FLAGS] =
> XE_QUERY_CONFIG_FLAGS_HAS_VRAM;
> if (xe->info.enable_guc)
> diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
> index ac70486d09c3..e0bc2b60ab09 100644
> --- a/drivers/gpu/drm/xe/xe_tile.c
> +++ b/drivers/gpu/drm/xe/xe_tile.c
> @@ -101,7 +101,7 @@ static int tile_ttm_mgr_init(struct xe_tile *tile)
> struct xe_device *xe = tile_to_xe(tile);
> int err;
>
> - if (tile->mem.vram.size) {
> + if (tile->mem.vram.usable_size) {
> err = xe_ttm_vram_mgr_init(tile, tile->mem.vram_mgr);
> if (err)
> return err;
> diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> index 1a84abd35fcf..a10fd0366da3 100644
> --- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> +++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> @@ -360,7 +360,8 @@ int xe_ttm_vram_mgr_init(struct xe_tile *tile, struct xe_ttm_vram_mgr *mgr)
> mgr->tile = tile;
>
> return __xe_ttm_vram_mgr_init(xe, mgr, XE_PL_VRAM0 + tile->id,
> - tile->mem.vram.size, tile->mem.vram.io_size,
> + tile->mem.vram.usable_size,
> + tile->mem.vram.io_size,
> PAGE_SIZE);
> }
>
> --
> 2.25.1
>
More information about the Intel-xe
mailing list