diff options
| author | Christian König <christian.koenig@amd.com> | 2016-08-24 08:30:21 -0400 |
|---|---|---|
| committer | Alex Deucher <alexander.deucher@amd.com> | 2016-10-25 14:38:14 -0400 |
| commit | 56de55a1a8fcabf8b3f6a64eedd3b6079b1f2fc7 (patch) | |
| tree | 6b8f1152bc3b5a0a90b84adaa9d0813285fff391 /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
| parent | 03f48dd5d2085b978353a804635b6d34e77a5635 (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.c | 9 |
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) |
