drm/ttm: nuke memory type flags
It's not supported to specify more than one of those flags. So it never made sense to make this a flag in the first place. Nuke the flags and specify directly which memory type to use. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/389826/?series=81551&rev=1
This commit is contained in:
@@ -112,58 +112,58 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
|
||||
rbo->rdev->mc.visible_vram_size < rbo->rdev->mc.real_vram_size) {
|
||||
rbo->placements[c].fpfn =
|
||||
rbo->rdev->mc.visible_vram_size >> PAGE_SHIFT;
|
||||
rbo->placements[c].mem_type = TTM_PL_VRAM;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_WC |
|
||||
TTM_PL_FLAG_UNCACHED |
|
||||
TTM_PL_FLAG_VRAM;
|
||||
TTM_PL_FLAG_UNCACHED;
|
||||
}
|
||||
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c].mem_type = TTM_PL_VRAM;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_WC |
|
||||
TTM_PL_FLAG_UNCACHED |
|
||||
TTM_PL_FLAG_VRAM;
|
||||
TTM_PL_FLAG_UNCACHED;
|
||||
}
|
||||
|
||||
if (domain & RADEON_GEM_DOMAIN_GTT) {
|
||||
if (rbo->flags & RADEON_GEM_GTT_UC) {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_UNCACHED |
|
||||
TTM_PL_FLAG_TT;
|
||||
rbo->placements[c].mem_type = TTM_PL_TT;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_UNCACHED;
|
||||
|
||||
} else if ((rbo->flags & RADEON_GEM_GTT_WC) ||
|
||||
(rbo->rdev->flags & RADEON_IS_AGP)) {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c].mem_type = TTM_PL_TT;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_WC |
|
||||
TTM_PL_FLAG_UNCACHED |
|
||||
TTM_PL_FLAG_TT;
|
||||
TTM_PL_FLAG_UNCACHED;
|
||||
} else {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_CACHED |
|
||||
TTM_PL_FLAG_TT;
|
||||
rbo->placements[c].mem_type = TTM_PL_TT;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_CACHED;
|
||||
}
|
||||
}
|
||||
|
||||
if (domain & RADEON_GEM_DOMAIN_CPU) {
|
||||
if (rbo->flags & RADEON_GEM_GTT_UC) {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_UNCACHED |
|
||||
TTM_PL_FLAG_SYSTEM;
|
||||
rbo->placements[c].mem_type = TTM_PL_SYSTEM;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_UNCACHED;
|
||||
|
||||
} else if ((rbo->flags & RADEON_GEM_GTT_WC) ||
|
||||
rbo->rdev->flags & RADEON_IS_AGP) {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c].mem_type = TTM_PL_SYSTEM;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_WC |
|
||||
TTM_PL_FLAG_UNCACHED |
|
||||
TTM_PL_FLAG_SYSTEM;
|
||||
TTM_PL_FLAG_UNCACHED;
|
||||
} else {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_CACHED |
|
||||
TTM_PL_FLAG_SYSTEM;
|
||||
rbo->placements[c].mem_type = TTM_PL_SYSTEM;
|
||||
rbo->placements[c++].flags = TTM_PL_FLAG_CACHED;
|
||||
}
|
||||
}
|
||||
if (!c) {
|
||||
rbo->placements[c].fpfn = 0;
|
||||
rbo->placements[c++].flags = TTM_PL_MASK_CACHING |
|
||||
TTM_PL_FLAG_SYSTEM;
|
||||
rbo->placements[c].mem_type = TTM_PL_SYSTEM;
|
||||
rbo->placements[c++].flags = TTM_PL_MASK_CACHING;
|
||||
}
|
||||
|
||||
rbo->placement.num_placement = c;
|
||||
@@ -171,7 +171,7 @@ void radeon_ttm_placement_from_domain(struct radeon_bo *rbo, u32 domain)
|
||||
|
||||
for (i = 0; i < c; ++i) {
|
||||
if ((rbo->flags & RADEON_GEM_CPU_ACCESS) &&
|
||||
(rbo->placements[i].flags & TTM_PL_FLAG_VRAM) &&
|
||||
(rbo->placements[i].mem_type == TTM_PL_VRAM) &&
|
||||
!rbo->placements[i].fpfn)
|
||||
rbo->placements[i].lpfn =
|
||||
rbo->rdev->mc.visible_vram_size >> PAGE_SHIFT;
|
||||
@@ -360,7 +360,7 @@ int radeon_bo_pin_restricted(struct radeon_bo *bo, u32 domain, u64 max_offset,
|
||||
radeon_ttm_placement_from_domain(bo, domain);
|
||||
for (i = 0; i < bo->placement.num_placement; i++) {
|
||||
/* force to pin into visible video ram */
|
||||
if ((bo->placements[i].flags & TTM_PL_FLAG_VRAM) &&
|
||||
if ((bo->placements[i].mem_type == TTM_PL_VRAM) &&
|
||||
!(bo->flags & RADEON_GEM_NO_CPU_ACCESS) &&
|
||||
(!max_offset || max_offset > bo->rdev->mc.visible_vram_size))
|
||||
bo->placements[i].lpfn =
|
||||
@@ -824,7 +824,7 @@ int radeon_bo_fault_reserve_notify(struct ttm_buffer_object *bo)
|
||||
lpfn = rdev->mc.visible_vram_size >> PAGE_SHIFT;
|
||||
for (i = 0; i < rbo->placement.num_placement; i++) {
|
||||
/* Force into visible VRAM */
|
||||
if ((rbo->placements[i].flags & TTM_PL_FLAG_VRAM) &&
|
||||
if ((rbo->placements[i].mem_type == TTM_PL_VRAM) &&
|
||||
(!rbo->placements[i].lpfn || rbo->placements[i].lpfn > lpfn))
|
||||
rbo->placements[i].lpfn = lpfn;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user