diff options
author | Christian König <christian.koenig@amd.com> | 2017-09-11 11:10:26 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-13 12:10:13 -0400 |
commit | 88531913a841a6354adfb40c78c86599639e5f32 (patch) | |
tree | 3d41eef3240cfcecda77b8bf644b34d4a1a95eef /drivers/gpu/drm/amd/amdgpu | |
parent | 9f0ed7aab60e3563bfe247bc2ad82db3a88c2d57 (diff) |
drm/amd: remove min/max addr handling from cgs
Nobody is actually using this and it causes a bunch of unused and buggy code.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 48 |
1 files changed, 3 insertions, 45 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c index 892cd8b3483c..df3bf22039d5 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | |||
@@ -45,7 +45,6 @@ struct amdgpu_cgs_device { | |||
45 | static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, | 45 | static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, |
46 | enum cgs_gpu_mem_type type, | 46 | enum cgs_gpu_mem_type type, |
47 | uint64_t size, uint64_t align, | 47 | uint64_t size, uint64_t align, |
48 | uint64_t min_offset, uint64_t max_offset, | ||
49 | cgs_handle_t *handle) | 48 | cgs_handle_t *handle) |
50 | { | 49 | { |
51 | CGS_FUNC_ADEV; | 50 | CGS_FUNC_ADEV; |
@@ -53,13 +52,6 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, | |||
53 | int ret = 0; | 52 | int ret = 0; |
54 | uint32_t domain = 0; | 53 | uint32_t domain = 0; |
55 | struct amdgpu_bo *obj; | 54 | struct amdgpu_bo *obj; |
56 | struct ttm_placement placement; | ||
57 | struct ttm_place place; | ||
58 | |||
59 | if (min_offset > max_offset) { | ||
60 | BUG_ON(1); | ||
61 | return -EINVAL; | ||
62 | } | ||
63 | 55 | ||
64 | /* fail if the alignment is not a power of 2 */ | 56 | /* fail if the alignment is not a power of 2 */ |
65 | if (((align != 1) && (align & (align - 1))) | 57 | if (((align != 1) && (align & (align - 1))) |
@@ -73,41 +65,19 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, | |||
73 | flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | | 65 | flags = AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED | |
74 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; | 66 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; |
75 | domain = AMDGPU_GEM_DOMAIN_VRAM; | 67 | domain = AMDGPU_GEM_DOMAIN_VRAM; |
76 | if (max_offset > adev->mc.real_vram_size) | ||
77 | return -EINVAL; | ||
78 | place.fpfn = min_offset >> PAGE_SHIFT; | ||
79 | place.lpfn = max_offset >> PAGE_SHIFT; | ||
80 | place.flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | | ||
81 | TTM_PL_FLAG_VRAM; | ||
82 | break; | 68 | break; |
83 | case CGS_GPU_MEM_TYPE__INVISIBLE_CONTIG_FB: | 69 | case CGS_GPU_MEM_TYPE__INVISIBLE_CONTIG_FB: |
84 | case CGS_GPU_MEM_TYPE__INVISIBLE_FB: | 70 | case CGS_GPU_MEM_TYPE__INVISIBLE_FB: |
85 | flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS | | 71 | flags = AMDGPU_GEM_CREATE_NO_CPU_ACCESS | |
86 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; | 72 | AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS; |
87 | domain = AMDGPU_GEM_DOMAIN_VRAM; | 73 | domain = AMDGPU_GEM_DOMAIN_VRAM; |
88 | if (adev->mc.visible_vram_size < adev->mc.real_vram_size) { | ||
89 | place.fpfn = | ||
90 | max(min_offset, adev->mc.visible_vram_size) >> PAGE_SHIFT; | ||
91 | place.lpfn = | ||
92 | min(max_offset, adev->mc.real_vram_size) >> PAGE_SHIFT; | ||
93 | place.flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_UNCACHED | | ||
94 | TTM_PL_FLAG_VRAM; | ||
95 | } | ||
96 | |||
97 | break; | 74 | break; |
98 | case CGS_GPU_MEM_TYPE__GART_CACHEABLE: | 75 | case CGS_GPU_MEM_TYPE__GART_CACHEABLE: |
99 | domain = AMDGPU_GEM_DOMAIN_GTT; | 76 | domain = AMDGPU_GEM_DOMAIN_GTT; |
100 | place.fpfn = min_offset >> PAGE_SHIFT; | ||
101 | place.lpfn = max_offset >> PAGE_SHIFT; | ||
102 | place.flags = TTM_PL_FLAG_CACHED | TTM_PL_FLAG_TT; | ||
103 | break; | 77 | break; |
104 | case CGS_GPU_MEM_TYPE__GART_WRITECOMBINE: | 78 | case CGS_GPU_MEM_TYPE__GART_WRITECOMBINE: |
105 | flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC; | 79 | flags = AMDGPU_GEM_CREATE_CPU_GTT_USWC; |
106 | domain = AMDGPU_GEM_DOMAIN_GTT; | 80 | domain = AMDGPU_GEM_DOMAIN_GTT; |
107 | place.fpfn = min_offset >> PAGE_SHIFT; | ||
108 | place.lpfn = max_offset >> PAGE_SHIFT; | ||
109 | place.flags = TTM_PL_FLAG_WC | TTM_PL_FLAG_TT | | ||
110 | TTM_PL_FLAG_UNCACHED; | ||
111 | break; | 81 | break; |
112 | default: | 82 | default: |
113 | return -EINVAL; | 83 | return -EINVAL; |
@@ -116,15 +86,8 @@ static int amdgpu_cgs_alloc_gpu_mem(struct cgs_device *cgs_device, | |||
116 | 86 | ||
117 | *handle = 0; | 87 | *handle = 0; |
118 | 88 | ||
119 | placement.placement = &place; | 89 | ret = amdgpu_bo_create(adev, size, align, true, domain, flags, |
120 | placement.num_placement = 1; | 90 | NULL, NULL, 0, &obj); |
121 | placement.busy_placement = &place; | ||
122 | placement.num_busy_placement = 1; | ||
123 | |||
124 | ret = amdgpu_bo_create_restricted(adev, size, align, | ||
125 | true, domain, flags, | ||
126 | NULL, &placement, NULL, | ||
127 | 0, &obj); | ||
128 | if (ret) { | 91 | if (ret) { |
129 | DRM_ERROR("(%d) bo create failed\n", ret); | 92 | DRM_ERROR("(%d) bo create failed\n", ret); |
130 | return ret; | 93 | return ret; |
@@ -155,19 +118,14 @@ static int amdgpu_cgs_gmap_gpu_mem(struct cgs_device *cgs_device, cgs_handle_t h | |||
155 | uint64_t *mcaddr) | 118 | uint64_t *mcaddr) |
156 | { | 119 | { |
157 | int r; | 120 | int r; |
158 | u64 min_offset, max_offset; | ||
159 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; | 121 | struct amdgpu_bo *obj = (struct amdgpu_bo *)handle; |
160 | 122 | ||
161 | WARN_ON_ONCE(obj->placement.num_placement > 1); | 123 | WARN_ON_ONCE(obj->placement.num_placement > 1); |
162 | 124 | ||
163 | min_offset = obj->placements[0].fpfn << PAGE_SHIFT; | ||
164 | max_offset = obj->placements[0].lpfn << PAGE_SHIFT; | ||
165 | |||
166 | r = amdgpu_bo_reserve(obj, true); | 125 | r = amdgpu_bo_reserve(obj, true); |
167 | if (unlikely(r != 0)) | 126 | if (unlikely(r != 0)) |
168 | return r; | 127 | return r; |
169 | r = amdgpu_bo_pin_restricted(obj, obj->preferred_domains, | 128 | r = amdgpu_bo_pin(obj, obj->preferred_domains, mcaddr); |
170 | min_offset, max_offset, mcaddr); | ||
171 | amdgpu_bo_unreserve(obj); | 129 | amdgpu_bo_unreserve(obj); |
172 | return r; | 130 | return r; |
173 | } | 131 | } |