[PATCH v8 3/4] drm/xe: Move struct xe_vram_region to a dedicated header
K V P, Satyanarayana
satyanarayana.k.v.p at intel.com
Mon Jul 7 10:01:13 UTC 2025
On 02-07-2025 14:14, Piórkowski, Piotr wrote:
> From: Piotr Piórkowski<piotr.piorkowski at intel.com>
>
> Let's move the xe_vram_region structure to a new header dedicated to VRAM
> to improve modularity and avoid unnecessary dependencies when only
> VRAM-related structures are needed.
>
> v2: Fix build if CONFIG_DRM_XE_DEVMEM_MIRROR is enabled
> v3: Fix build if CONFIG_DRM_XE_DISPLAY is enabled
>
> Signed-off-by: Piotr Piórkowski<piotr.piorkowski at intel.com>
> Suggested-by: Jani Nikula<jani.nikula at intel.com>
> ---
> drivers/gpu/drm/xe/display/xe_fb_pin.c | 1 +
> drivers/gpu/drm/xe/display/xe_plane_initial.c | 1 +
> drivers/gpu/drm/xe/xe_bo.c | 1 +
> drivers/gpu/drm/xe/xe_bo_types.h | 1 +
> drivers/gpu/drm/xe/xe_device.c | 1 +
> drivers/gpu/drm/xe/xe_device_types.h | 60 +--------------
> drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c | 1 +
> drivers/gpu/drm/xe/xe_svm.c | 3 +-
> drivers/gpu/drm/xe/xe_tile.c | 1 +
> drivers/gpu/drm/xe/xe_tile.h | 11 ---
> drivers/gpu/drm/xe/xe_ttm_vram_mgr.c | 1 +
> drivers/gpu/drm/xe/xe_vram.c | 1 +
> drivers/gpu/drm/xe/xe_vram_types.h | 74 +++++++++++++++++++
> 13 files changed, 86 insertions(+), 71 deletions(-)
> create mode 100644 drivers/gpu/drm/xe/xe_vram_types.h
>
> diff --git a/drivers/gpu/drm/xe/display/xe_fb_pin.c b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> index 2187b2de64e1..f2cfba674899 100644
> --- a/drivers/gpu/drm/xe/display/xe_fb_pin.c
> +++ b/drivers/gpu/drm/xe/display/xe_fb_pin.c
> @@ -16,6 +16,7 @@
> #include "xe_device.h"
> #include "xe_ggtt.h"
> #include "xe_pm.h"
> +#include "xe_vram_types.h"
>
> static void
> write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32 *dpt_ofs, u32 bo_ofs,
> diff --git a/drivers/gpu/drm/xe/display/xe_plane_initial.c b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> index 873f4e18cb2a..a47e3275acb0 100644
> --- a/drivers/gpu/drm/xe/display/xe_plane_initial.c
> +++ b/drivers/gpu/drm/xe/display/xe_plane_initial.c
> @@ -22,6 +22,7 @@
> #include "intel_plane_initial.h"
> #include "xe_bo.h"
> #include "xe_wa.h"
> +#include "xe_vram_types.h"
Sort the header files in ascending order.
>
> #include <generated/xe_wa_oob.h>
>
> diff --git a/drivers/gpu/drm/xe/xe_bo.c b/drivers/gpu/drm/xe/xe_bo.c
> index 7f8470b22dc9..a35a9e0dbfae 100644
> --- a/drivers/gpu/drm/xe/xe_bo.c
> +++ b/drivers/gpu/drm/xe/xe_bo.c
> @@ -34,6 +34,7 @@
> #include "xe_trace_bo.h"
> #include "xe_ttm_stolen_mgr.h"
> #include "xe_vm.h"
> +#include "xe_vram_types.h"
>
> const char *const xe_mem_type_to_name[TTM_NUM_MEM_TYPES] = {
> [XE_PL_SYSTEM] = "system",
> diff --git a/drivers/gpu/drm/xe/xe_bo_types.h b/drivers/gpu/drm/xe/xe_bo_types.h
> index ff560d82496f..57d34698139e 100644
> --- a/drivers/gpu/drm/xe/xe_bo_types.h
> +++ b/drivers/gpu/drm/xe/xe_bo_types.h
> @@ -9,6 +9,7 @@
> #include <linux/iosys-map.h>
>
> #include <drm/drm_gpusvm.h>
> +#include <drm/drm_pagemap.h>
> #include <drm/ttm/ttm_bo.h>
> #include <drm/ttm/ttm_device.h>
> #include <drm/ttm/ttm_placement.h>
> diff --git a/drivers/gpu/drm/xe/xe_device.c b/drivers/gpu/drm/xe/xe_device.c
> index 19019b032c78..4bd0619574ff 100644
> --- a/drivers/gpu/drm/xe/xe_device.c
> +++ b/drivers/gpu/drm/xe/xe_device.c
> @@ -63,6 +63,7 @@
> #include "xe_ttm_sys_mgr.h"
> #include "xe_vm.h"
> #include "xe_vram.h"
> +#include "xe_vram_types.h"
> #include "xe_vsec.h"
> #include "xe_wait_user_fence.h"
> #include "xe_wa.h"
> diff --git a/drivers/gpu/drm/xe/xe_device_types.h b/drivers/gpu/drm/xe/xe_device_types.h
> index bd8aa742618b..619728bba77a 100644
> --- a/drivers/gpu/drm/xe/xe_device_types.h
> +++ b/drivers/gpu/drm/xe/xe_device_types.h
> @@ -10,7 +10,6 @@
>
> #include <drm/drm_device.h>
> #include <drm/drm_file.h>
> -#include <drm/drm_pagemap.h>
> #include <drm/ttm/ttm_device.h>
>
> #include "xe_devcoredump_types.h"
> @@ -24,7 +23,6 @@
> #include "xe_sriov_types.h"
> #include "xe_step_types.h"
> #include "xe_survivability_mode_types.h"
> -#include "xe_ttm_vram_mgr_types.h"
>
> #if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
> #define TEST_VM_OPS_ERROR
> @@ -36,6 +34,7 @@ struct intel_dg_nvm_dev;
> struct xe_ggtt;
> struct xe_pat_ops;
> struct xe_pxp;
> +struct xe_vram;
Follow inverse xmas tree format.
>
> #define XE_BO_INVALID_OFFSET LONG_MAX
>
> @@ -68,63 +67,6 @@ struct xe_pxp;
> const struct xe_tile * : (const struct xe_device *)((tile__)->xe), \
> struct xe_tile * : (tile__)->xe)
>
> -/**
> - * struct xe_vram_region - memory region structure
> - * This is used to describe a memory region in xe
> - * device, such as HBM memory or CXL extension memory.
> - */
> -struct xe_vram_region {
> - /** @tile: Back pointer to tile */
> - struct xe_tile *tile;
> - /** @io_start: IO start address of this VRAM instance */
> - resource_size_t io_start;
> - /**
> - * @io_size: IO size of this VRAM instance
> - *
> - * This represents how much of this VRAM we can access
> - * via the CPU through the VRAM BAR. This can be smaller
> - * than @usable_size, in which case only part of VRAM is CPU
> - * accessible (typically the first 256M). This
> - * configuration is known as small-bar.
> - */
> - resource_size_t io_size;
> - /** @dpa_base: This memory regions's DPA (device physical address) base */
> - resource_size_t dpa_base;
> - /**
> - * @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
> - *
> - * Actual VRAM size including reserved portions
> - * (e.g stolen mem)
> - */
> - resource_size_t actual_physical_size;
> - /** @mapping: pointer to VRAM mappable space */
> - void __iomem *mapping;
> - /** @ttm: VRAM TTM manager */
> - struct xe_ttm_vram_mgr ttm;
> -#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
> - /** @pagemap: Used to remap device memory as ZONE_DEVICE */
> - struct dev_pagemap pagemap;
> - /**
> - * @dpagemap: The struct drm_pagemap of the ZONE_DEVICE memory
> - * pages of this tile.
> - */
> - struct drm_pagemap dpagemap;
> - /**
> - * @hpa_base: base host physical address
> - *
> - * This is generated when remap device memory as ZONE_DEVICE
> - */
> - resource_size_t hpa_base;
> -#endif
> -};
> -
> /**
> * struct xe_mmio - register mmio structure
> *
> 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 e69a05126dae..275ab5f03291 100644
> --- a/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> +++ b/drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c
> @@ -33,6 +33,7 @@
> #include "xe_migrate.h"
> #include "xe_sriov.h"
> #include "xe_ttm_vram_mgr.h"
> +#include "xe_vram_types.h"
> #include "xe_wopcm.h"
>
> #define make_u64_from_u32(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))
> diff --git a/drivers/gpu/drm/xe/xe_svm.c b/drivers/gpu/drm/xe/xe_svm.c
> index e6871734ffa9..ee015e3f5d9e 100644
> --- a/drivers/gpu/drm/xe/xe_svm.c
> +++ b/drivers/gpu/drm/xe/xe_svm.c
> @@ -17,6 +17,7 @@
> #include "xe_ttm_vram_mgr.h"
> #include "xe_vm.h"
> #include "xe_vm_types.h"
> +#include "xe_vram_types.h"
>
> static bool xe_svm_range_in_vram(struct xe_svm_range *range)
> {
> @@ -1006,7 +1007,7 @@ int xe_svm_alloc_vram(struct xe_tile *tile, struct xe_svm_range *range,
> xe_assert(tile_to_xe(tile), range->base.flags.migrate_devmem);
> range_debug(range, "ALLOCATE VRAM");
>
> - dpagemap = xe_tile_local_pagemap(tile);
> + dpagemap = &tile->mem.vram->dpagemap;
> return drm_pagemap_populate_mm(dpagemap, xe_svm_range_start(range),
> xe_svm_range_end(range),
> range->base.gpusvm->mm,
> diff --git a/drivers/gpu/drm/xe/xe_tile.c b/drivers/gpu/drm/xe/xe_tile.c
> index 858ce0183aaa..bd2ff91a7d1c 100644
> --- a/drivers/gpu/drm/xe/xe_tile.c
> +++ b/drivers/gpu/drm/xe/xe_tile.c
> @@ -20,6 +20,7 @@
> #include "xe_ttm_vram_mgr.h"
> #include "xe_wa.h"
> #include "xe_vram.h"
> +#include "xe_vram_types.h"
>
> /**
> * DOC: Multi-tile Design
> diff --git a/drivers/gpu/drm/xe/xe_tile.h b/drivers/gpu/drm/xe/xe_tile.h
> index fb0473fa9098..8dd87ccb2aca 100644
> --- a/drivers/gpu/drm/xe/xe_tile.h
> +++ b/drivers/gpu/drm/xe/xe_tile.h
> @@ -18,15 +18,4 @@ int xe_tile_alloc_vram(struct xe_tile *tile);
>
> void xe_tile_migrate_wait(struct xe_tile *tile);
>
> -#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
> -static inline struct drm_pagemap *xe_tile_local_pagemap(struct xe_tile *tile)
> -{
> - return &tile->mem.vram->dpagemap;
> -}
> -#else
> -static inline struct drm_pagemap *xe_tile_local_pagemap(struct xe_tile *tile)
> -{
> - return NULL;
> -}
> -#endif
> #endif
> diff --git a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> index 3de2df47959b..8f9b8a1d2c05 100644
> --- a/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> +++ b/drivers/gpu/drm/xe/xe_ttm_vram_mgr.c
> @@ -15,6 +15,7 @@
> #include "xe_gt.h"
> #include "xe_res_cursor.h"
> #include "xe_ttm_vram_mgr.h"
> +#include "xe_vram_types.h"
>
> static inline struct drm_buddy_block *
> xe_ttm_vram_mgr_first_block(struct list_head *list)
> diff --git a/drivers/gpu/drm/xe/xe_vram.c b/drivers/gpu/drm/xe/xe_vram.c
> index 71f463f2c3be..35fd7f5d7cff 100644
> --- a/drivers/gpu/drm/xe/xe_vram.c
> +++ b/drivers/gpu/drm/xe/xe_vram.c
> @@ -20,6 +20,7 @@
> #include "xe_module.h"
> #include "xe_sriov.h"
> #include "xe_vram.h"
> +#include "xe_vram_types.h"
>
> #define BAR_SIZE_SHIFT 20
>
> diff --git a/drivers/gpu/drm/xe/xe_vram_types.h b/drivers/gpu/drm/xe/xe_vram_types.h
> new file mode 100644
> index 000000000000..a01838236036
> --- /dev/null
> +++ b/drivers/gpu/drm/xe/xe_vram_types.h
> @@ -0,0 +1,74 @@
> +/* SPDX-License-Identifier: MIT */
> +/*
> + * Copyright © 2025 Intel Corporation
> + */
> +
> +#ifndef _XE_VRAM_TYPES_H_
> +#define _XE_VRAM_TYPES_H_
> +
> +#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
> +#include <drm/drm_pagemap.h>
> +#endif
> +
> +#include "xe_ttm_vram_mgr_types.h"
> +
> +struct xe_tile;
> +
> +/**
> + * struct xe_vram_region - memory region structure
> + * This is used to describe a memory region in xe
> + * device, such as HBM memory or CXL extension memory.
> + */
> +struct xe_vram_region {
> + /** @tile: Back pointer to tile */
> + struct xe_tile *tile;
> + /** @io_start: IO start address of this VRAM instance */
> + resource_size_t io_start;
> + /**
> + * @io_size: IO size of this VRAM instance
> + *
> + * This represents how much of this VRAM we can access
> + * via the CPU through the VRAM BAR. This can be smaller
> + * than @usable_size, in which case only part of VRAM is CPU
> + * accessible (typically the first 256M). This
> + * configuration is known as small-bar.
> + */
> + resource_size_t io_size;
> + /** @dpa_base: This memory regions's DPA (device physical address) base */
> + resource_size_t dpa_base;
> + /**
> + * @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
> + *
> + * Actual VRAM size including reserved portions
> + * (e.g stolen mem)
> + */
> + resource_size_t actual_physical_size;
> + /** @mapping: pointer to VRAM mappable space */
> + void __iomem *mapping;
> + /** @ttm: VRAM TTM manager */
> + struct xe_ttm_vram_mgr ttm;
> +#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
> + /** @pagemap: Used to remap device memory as ZONE_DEVICE */
> + struct dev_pagemap pagemap;
> + /**
> + * @dpagemap: The struct drm_pagemap of the ZONE_DEVICE memory
> + * pages of this tile.
> + */
> + struct drm_pagemap dpagemap;
> + /**
> + * @hpa_base: base host physical address
> + *
> + * This is generated when remap device memory as ZONE_DEVICE
> + */
> + resource_size_t hpa_base;
> +#endif
> +};
> +
> +#endif
With nits fixed,
Reviewed-by: Satyanarayana K V P <satyanarayana.k.v.p at intel.com
<mailto:satyanarayana.k.v.p at intel.com>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/intel-xe/attachments/20250707/a8488974/attachment-0001.htm>
More information about the Intel-xe
mailing list