Skip to content

Commit a0e4a29

Browse files
nirmoyChristianKoenigAMD
authored andcommitted
drm/radeon: don't use ttm bo->offset
Calculate GPU offset in radeon_bo_gpu_offset without depending on bo->offset. Signed-off-by: Nirmoy Das <[email protected]> Reviewed-and-tested-by: Christian König <[email protected]> Signed-off-by: Christian König <[email protected]> Link: https://patchwork.freedesktop.org/patch/372935/
1 parent b1a8ef9 commit a0e4a29

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

drivers/gpu/drm/radeon/radeon.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2828,6 +2828,7 @@ extern void radeon_ttm_set_active_vram_size(struct radeon_device *rdev, u64 size
28282828
extern void radeon_program_register_sequence(struct radeon_device *rdev,
28292829
const u32 *registers,
28302830
const u32 array_size);
2831+
struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev);
28312832

28322833
/*
28332834
* vm

drivers/gpu/drm/radeon/radeon_object.h

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,21 @@ static inline void radeon_bo_unreserve(struct radeon_bo *bo)
9090
*/
9191
static inline u64 radeon_bo_gpu_offset(struct radeon_bo *bo)
9292
{
93-
return bo->tbo.offset;
93+
struct radeon_device *rdev;
94+
u64 start = 0;
95+
96+
rdev = radeon_get_rdev(bo->tbo.bdev);
97+
98+
switch (bo->tbo.mem.mem_type) {
99+
case TTM_PL_TT:
100+
start = rdev->mc.gtt_start;
101+
break;
102+
case TTM_PL_VRAM:
103+
start = rdev->mc.vram_start;
104+
break;
105+
}
106+
107+
return (bo->tbo.mem.start << PAGE_SHIFT) + start;
94108
}
95109

96110
static inline unsigned long radeon_bo_size(struct radeon_bo *bo)

drivers/gpu/drm/radeon/radeon_ttm.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
static int radeon_ttm_debugfs_init(struct radeon_device *rdev);
5757
static void radeon_ttm_debugfs_fini(struct radeon_device *rdev);
5858

59-
static struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev)
59+
struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev)
6060
{
6161
struct radeon_mman *mman;
6262
struct radeon_device *rdev;
@@ -82,7 +82,6 @@ static int radeon_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
8282
break;
8383
case TTM_PL_TT:
8484
man->func = &ttm_bo_manager_func;
85-
man->gpu_offset = rdev->mc.gtt_start;
8685
man->available_caching = TTM_PL_MASK_CACHING;
8786
man->default_caching = TTM_PL_FLAG_CACHED;
8887
man->flags = TTM_MEMTYPE_FLAG_MAPPABLE | TTM_MEMTYPE_FLAG_CMA;
@@ -104,7 +103,6 @@ static int radeon_init_mem_type(struct ttm_bo_device *bdev, uint32_t type,
104103
case TTM_PL_VRAM:
105104
/* "On-card" video ram */
106105
man->func = &ttm_bo_manager_func;
107-
man->gpu_offset = rdev->mc.vram_start;
108106
man->flags = TTM_MEMTYPE_FLAG_FIXED |
109107
TTM_MEMTYPE_FLAG_MAPPABLE;
110108
man->available_caching = TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_WC;

0 commit comments

Comments
 (0)