Skip to content

Commit 1426f15

Browse files
piorkovgregkh
authored andcommitted
drm/xe: Move struct xe_vram_region to a dedicated header
[ Upstream commit 7a20b4f558f4291161f71a5b7384262db9ccd6b0 ] 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 v4: Move helper to get tile dpagemap to xe_svm.c Signed-off-by: Piotr Piórkowski <[email protected]> Suggested-by: Jani Nikula <[email protected]> Reviewed-by: Satyanarayana K V P <[email protected]> # rev3 Acked-by: Matthew Brost <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Lucas De Marchi <[email protected]> Stable-dep-of: d30203739be7 ("drm/xe: Move rebar to be done earlier") Signed-off-by: Sasha Levin <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent 31afb33 commit 1426f15

13 files changed

Lines changed: 91 additions & 72 deletions

drivers/gpu/drm/xe/display/xe_fb_pin.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
#include "xe_device.h"
1717
#include "xe_ggtt.h"
1818
#include "xe_pm.h"
19+
#include "xe_vram_types.h"
1920

2021
static void
2122
write_dpt_rotated(struct xe_bo *bo, struct iosys_map *map, u32 *dpt_ofs, u32 bo_ofs,

drivers/gpu/drm/xe/display/xe_plane_initial.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "intel_plane.h"
2222
#include "intel_plane_initial.h"
2323
#include "xe_bo.h"
24+
#include "xe_vram_types.h"
2425
#include "xe_wa.h"
2526

2627
#include <generated/xe_wa_oob.h>

drivers/gpu/drm/xe/xe_bo.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#include "xe_trace_bo.h"
3737
#include "xe_ttm_stolen_mgr.h"
3838
#include "xe_vm.h"
39+
#include "xe_vram_types.h"
3940

4041
const char *const xe_mem_type_to_name[TTM_NUM_MEM_TYPES] = {
4142
[XE_PL_SYSTEM] = "system",

drivers/gpu/drm/xe/xe_bo_types.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include <linux/iosys-map.h>
1010

1111
#include <drm/drm_gpusvm.h>
12+
#include <drm/drm_pagemap.h>
1213
#include <drm/ttm/ttm_bo.h>
1314
#include <drm/ttm/ttm_device.h>
1415
#include <drm/ttm/ttm_placement.h>

drivers/gpu/drm/xe/xe_device.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@
6464
#include "xe_ttm_sys_mgr.h"
6565
#include "xe_vm.h"
6666
#include "xe_vram.h"
67+
#include "xe_vram_types.h"
6768
#include "xe_vsec.h"
6869
#include "xe_wait_user_fence.h"
6970
#include "xe_wa.h"

drivers/gpu/drm/xe/xe_device_types.h

Lines changed: 1 addition & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010

1111
#include <drm/drm_device.h>
1212
#include <drm/drm_file.h>
13-
#include <drm/drm_pagemap.h>
1413
#include <drm/ttm/ttm_device.h>
1514

1615
#include "xe_devcoredump_types.h"
@@ -26,7 +25,6 @@
2625
#include "xe_sriov_vf_types.h"
2726
#include "xe_step_types.h"
2827
#include "xe_survivability_mode_types.h"
29-
#include "xe_ttm_vram_mgr_types.h"
3028

3129
#if IS_ENABLED(CONFIG_DRM_XE_DEBUG)
3230
#define TEST_VM_OPS_ERROR
@@ -39,6 +37,7 @@ struct xe_ggtt;
3937
struct xe_i2c;
4038
struct xe_pat_ops;
4139
struct xe_pxp;
40+
struct xe_vram_region;
4241

4342
#define XE_BO_INVALID_OFFSET LONG_MAX
4443

@@ -71,63 +70,6 @@ struct xe_pxp;
7170
const struct xe_tile * : (const struct xe_device *)((tile__)->xe), \
7271
struct xe_tile * : (tile__)->xe)
7372

74-
/**
75-
* struct xe_vram_region - memory region structure
76-
* This is used to describe a memory region in xe
77-
* device, such as HBM memory or CXL extension memory.
78-
*/
79-
struct xe_vram_region {
80-
/** @tile: Back pointer to tile */
81-
struct xe_tile *tile;
82-
/** @io_start: IO start address of this VRAM instance */
83-
resource_size_t io_start;
84-
/**
85-
* @io_size: IO size of this VRAM instance
86-
*
87-
* This represents how much of this VRAM we can access
88-
* via the CPU through the VRAM BAR. This can be smaller
89-
* than @usable_size, in which case only part of VRAM is CPU
90-
* accessible (typically the first 256M). This
91-
* configuration is known as small-bar.
92-
*/
93-
resource_size_t io_size;
94-
/** @dpa_base: This memory regions's DPA (device physical address) base */
95-
resource_size_t dpa_base;
96-
/**
97-
* @usable_size: usable size of VRAM
98-
*
99-
* Usable size of VRAM excluding reserved portions
100-
* (e.g stolen mem)
101-
*/
102-
resource_size_t usable_size;
103-
/**
104-
* @actual_physical_size: Actual VRAM size
105-
*
106-
* Actual VRAM size including reserved portions
107-
* (e.g stolen mem)
108-
*/
109-
resource_size_t actual_physical_size;
110-
/** @mapping: pointer to VRAM mappable space */
111-
void __iomem *mapping;
112-
/** @ttm: VRAM TTM manager */
113-
struct xe_ttm_vram_mgr ttm;
114-
#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
115-
/** @pagemap: Used to remap device memory as ZONE_DEVICE */
116-
struct dev_pagemap pagemap;
117-
/**
118-
* @dpagemap: The struct drm_pagemap of the ZONE_DEVICE memory
119-
* pages of this tile.
120-
*/
121-
struct drm_pagemap dpagemap;
122-
/**
123-
* @hpa_base: base host physical address
124-
*
125-
* This is generated when remap device memory as ZONE_DEVICE
126-
*/
127-
resource_size_t hpa_base;
128-
#endif
129-
};
130-
13173
/**
13274
* struct xe_mmio - register mmio structure
13375
*

drivers/gpu/drm/xe/xe_gt_sriov_pf_config.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
#include "xe_migrate.h"
3434
#include "xe_sriov.h"
3535
#include "xe_ttm_vram_mgr.h"
36+
#include "xe_vram_types.h"
3637
#include "xe_wopcm.h"
3738

3839
#define make_u64_from_u32(hi, lo) ((u64)((u64)(u32)(hi) << 32 | (u32)(lo)))

drivers/gpu/drm/xe/xe_svm.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "xe_ttm_vram_mgr.h"
1818
#include "xe_vm.h"
1919
#include "xe_vm_types.h"
20+
#include "xe_vram_types.h"
2021

2122
static bool xe_svm_range_in_vram(struct xe_svm_range *range)
2223
{
@@ -989,6 +990,11 @@ int xe_svm_range_get_pages(struct xe_vm *vm, struct xe_svm_range *range,
989990

990991
#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
991992

993+
static struct drm_pagemap *tile_local_pagemap(struct xe_tile *tile)
994+
{
995+
return &tile->mem.vram->dpagemap;
996+
}
997+
992998
/**
993999
* xe_svm_alloc_vram()- Allocate device memory pages for range,
9941000
* migrating existing data.
@@ -1006,7 +1012,7 @@ int xe_svm_alloc_vram(struct xe_tile *tile, struct xe_svm_range *range,
10061012
xe_assert(tile_to_xe(tile), range->base.flags.migrate_devmem);
10071013
range_debug(range, "ALLOCATE VRAM");
10081014

1009-
dpagemap = xe_tile_local_pagemap(tile);
1015+
dpagemap = tile_local_pagemap(tile);
10101016
return drm_pagemap_populate_mm(dpagemap, xe_svm_range_start(range),
10111017
xe_svm_range_end(range),
10121018
range->base.gpusvm->mm,

drivers/gpu/drm/xe/xe_tile.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "xe_ttm_vram_mgr.h"
2121
#include "xe_wa.h"
2222
#include "xe_vram.h"
23+
#include "xe_vram_types.h"
2324

2425
/**
2526
* DOC: Multi-tile Design

drivers/gpu/drm/xe/xe_tile.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,6 @@ int xe_tile_alloc_vram(struct xe_tile *tile);
1818

1919
void xe_tile_migrate_wait(struct xe_tile *tile);
2020

21-
#if IS_ENABLED(CONFIG_DRM_XE_PAGEMAP)
22-
static inline struct drm_pagemap *xe_tile_local_pagemap(struct xe_tile *tile)
23-
{
24-
return &tile->mem.vram->dpagemap;
25-
}
26-
#else
27-
static inline struct drm_pagemap *xe_tile_local_pagemap(struct xe_tile *tile)
28-
{
29-
return NULL;
30-
}
31-
#endif
32-
3321
static inline bool xe_tile_is_root(struct xe_tile *tile)
3422
{
3523
return tile->id == 0;

0 commit comments

Comments
 (0)