diff options
author | Christian König <christian.koenig@amd.com> | 2017-03-29 07:41:57 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-04-04 23:34:27 -0400 |
commit | 89bb5752c054e971fd453456792cb3db3d738f75 (patch) | |
tree | 2d9a9d7b1d1954f62788074ae5767046ed84b651 /drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |
parent | f75e237c41587b5e438cbf5d5c90ffcda4080955 (diff) |
drm/amdgpu: use TTM_PL_FLAG_CONTIGUOUS v2
Implement AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS using TTM_PL_FLAG_CONTIGUOUS
instead of a placement limit. That allows us to better handle CPU
accessible placements.
v2: prevent virtual BO start address from overflowing
Signed-off-by: Christian König <christian.koenig@amd.com>
Acked-by: Michel Dänzer <michel.daenzer@amd.com>
Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
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 | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c index 5aac350b007f..4dddeafabd09 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.c | |||
@@ -122,20 +122,19 @@ static void amdgpu_ttm_placement_init(struct amdgpu_device *adev, | |||
122 | 122 | ||
123 | if (domain & AMDGPU_GEM_DOMAIN_VRAM) { | 123 | if (domain & AMDGPU_GEM_DOMAIN_VRAM) { |
124 | unsigned visible_pfn = adev->mc.visible_vram_size >> PAGE_SHIFT; | 124 | unsigned visible_pfn = adev->mc.visible_vram_size >> PAGE_SHIFT; |
125 | unsigned lpfn = 0; | ||
126 | |||
127 | /* This forces a reallocation if the flag wasn't set before */ | ||
128 | if (flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS) | ||
129 | lpfn = adev->mc.real_vram_size >> PAGE_SHIFT; | ||
130 | 125 | ||
131 | places[c].fpfn = 0; | 126 | places[c].fpfn = 0; |
132 | places[c].lpfn = lpfn; | 127 | places[c].lpfn = 0; |
133 | places[c].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | | 128 | places[c].flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | |
134 | TTM_PL_FLAG_VRAM; | 129 | TTM_PL_FLAG_VRAM; |
130 | |||
135 | if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) | 131 | if (flags & AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED) |
136 | places[c].lpfn = visible_pfn; | 132 | places[c].lpfn = visible_pfn; |
137 | else | 133 | else |
138 | places[c].flags |= TTM_PL_FLAG_TOPDOWN; | 134 | places[c].flags |= TTM_PL_FLAG_TOPDOWN; |
135 | |||
136 | if (flags & AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS) | ||
137 | places[c].flags |= TTM_PL_FLAG_CONTIGUOUS; | ||
139 | c++; | 138 | c++; |
140 | } | 139 | } |
141 | 140 | ||