aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
diff options
context:
space:
mode:
authorChristian König <christian.koenig@amd.com>2016-08-24 08:30:21 -0400
committerAlex Deucher <alexander.deucher@amd.com>2016-10-25 14:38:14 -0400
commit56de55a1a8fcabf8b3f6a64eedd3b6079b1f2fc7 (patch)
tree6b8f1152bc3b5a0a90b84adaa9d0813285fff391 /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
parent03f48dd5d2085b978353a804635b6d34e77a5635 (diff)
drm/amdgpu: use explicit limit for VRAM_CONTIGUOUS
Split VRAM won't have a valid offset, so just set an explicit limit when the flag is given to trigger reallocation if necessary. Signed-off-by: Christian König <christian.koenig@amd.com> Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net> Tested-by: Mike Lothian <mike@fireburn.co.uk> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_object.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
index ba41807eb917..c6754e71e1f5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c
@@ -121,12 +121,17 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev,
121 121
122 if (domain & AMDGPU_GEM_DOMAIN_VRAM) { 122 if (domain & AMDGPU_GEM_DOMAIN_VRAM) {
123 unsigned visible_pfn = adev->mc.visible_vram_size >> PAGE_SHIFT; 123 unsigned visible_pfn = adev->mc.visible_vram_size >> PAGE_SHIFT;
124 unsigned lpfn = 0;
125
126 /* This forces a reallocation if the flag wasn't set before */
127 if (flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS)
128 lpfn = adev->mc.real_vram_size >> PAGE_SHIFT;
124 129
125 if (flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS && 130 if (flags & AMDGPU_GEM_CREATE_NO_CPU_ACCESS &&
126 !(flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) && 131 !(flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) &&
127 adev->mc.visible_vram_size < adev->mc.real_vram_size) { 132 adev->mc.visible_vram_size < adev->mc.real_vram_size) {
128 places[c].fpfn = visible_pfn; 133 places[c].fpfn = visible_pfn;
129 places[c].lpfn = 0; 134 places[c].lpfn = lpfn;
130 places[c].flags = TTM_PL_FLAG_WC | 135 places[c].flags = TTM_PL_FLAG_WC |
131 TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM | 136 TTM_PL_FLAG_UNCACHED | TTM_PL_FLAG_VRAM |
132 TTM_PL_FLAG_TOPDOWN; 137 TTM_PL_FLAG_TOPDOWN;
@@ -134,7 +139,7 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev,
134 } 139 }
135 140
136 places[c].fpfn = 0; 141 places[c].fpfn = 0;
137 places[c].lpfn = 0; 142 places[c].lpfn = lpfn;
138 places[c].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | 143 places[c].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED |
139 TTM_PL_FLAG_VRAM; 144 TTM_PL_FLAG_VRAM;
140 if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) 145 if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED)