hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c
....@@ -25,7 +25,10 @@
2525 * Alex Deucher
2626 * Jerome Glisse
2727 */
28
-#include <drm/drmP.h>
28
+
29
+#include <linux/pci.h>
30
+#include <linux/vmalloc.h>
31
+
2932 #include <drm/amdgpu_drm.h>
3033 #ifdef CONFIG_X86
3134 #include <asm/set_memory.h>
....@@ -68,7 +71,7 @@
6871 */
6972 static int amdgpu_gart_dummy_page_init(struct amdgpu_device *adev)
7073 {
71
- struct page *dummy_page = adev->mman.bdev.glob->dummy_read_page;
74
+ struct page *dummy_page = ttm_bo_glob.dummy_read_page;
7275
7376 if (adev->dummy_page_addr)
7477 return 0;
....@@ -112,7 +115,7 @@
112115 {
113116 int r;
114117
115
- if (adev->gart.robj == NULL) {
118
+ if (adev->gart.bo == NULL) {
116119 struct amdgpu_bo_param bp;
117120
118121 memset(&bp, 0, sizeof(bp));
....@@ -123,7 +126,7 @@
123126 AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS;
124127 bp.type = ttm_bo_type_kernel;
125128 bp.resv = NULL;
126
- r = amdgpu_bo_create(adev, &bp, &adev->gart.robj);
129
+ r = amdgpu_bo_create(adev, &bp, &adev->gart.bo);
127130 if (r) {
128131 return r;
129132 }
....@@ -145,19 +148,18 @@
145148 {
146149 int r;
147150
148
- r = amdgpu_bo_reserve(adev->gart.robj, false);
151
+ r = amdgpu_bo_reserve(adev->gart.bo, false);
149152 if (unlikely(r != 0))
150153 return r;
151
- r = amdgpu_bo_pin(adev->gart.robj, AMDGPU_GEM_DOMAIN_VRAM);
154
+ r = amdgpu_bo_pin(adev->gart.bo, AMDGPU_GEM_DOMAIN_VRAM);
152155 if (r) {
153
- amdgpu_bo_unreserve(adev->gart.robj);
156
+ amdgpu_bo_unreserve(adev->gart.bo);
154157 return r;
155158 }
156
- r = amdgpu_bo_kmap(adev->gart.robj, &adev->gart.ptr);
159
+ r = amdgpu_bo_kmap(adev->gart.bo, &adev->gart.ptr);
157160 if (r)
158
- amdgpu_bo_unpin(adev->gart.robj);
159
- amdgpu_bo_unreserve(adev->gart.robj);
160
- adev->gart.table_addr = amdgpu_bo_gpu_offset(adev->gart.robj);
161
+ amdgpu_bo_unpin(adev->gart.bo);
162
+ amdgpu_bo_unreserve(adev->gart.bo);
161163 return r;
162164 }
163165
....@@ -173,14 +175,14 @@
173175 {
174176 int r;
175177
176
- if (adev->gart.robj == NULL) {
178
+ if (adev->gart.bo == NULL) {
177179 return;
178180 }
179
- r = amdgpu_bo_reserve(adev->gart.robj, true);
181
+ r = amdgpu_bo_reserve(adev->gart.bo, true);
180182 if (likely(r == 0)) {
181
- amdgpu_bo_kunmap(adev->gart.robj);
182
- amdgpu_bo_unpin(adev->gart.robj);
183
- amdgpu_bo_unreserve(adev->gart.robj);
183
+ amdgpu_bo_kunmap(adev->gart.bo);
184
+ amdgpu_bo_unpin(adev->gart.bo);
185
+ amdgpu_bo_unreserve(adev->gart.bo);
184186 adev->gart.ptr = NULL;
185187 }
186188 }
....@@ -196,10 +198,10 @@
196198 */
197199 void amdgpu_gart_table_vram_free(struct amdgpu_device *adev)
198200 {
199
- if (adev->gart.robj == NULL) {
201
+ if (adev->gart.bo == NULL) {
200202 return;
201203 }
202
- amdgpu_bo_unref(&adev->gart.robj);
204
+ amdgpu_bo_unref(&adev->gart.bo);
203205 }
204206
205207 /*
....@@ -249,7 +251,9 @@
249251 }
250252 mb();
251253 amdgpu_asic_flush_hdp(adev, NULL);
252
- amdgpu_gmc_flush_gpu_tlb(adev, 0);
254
+ for (i = 0; i < adev->num_vmhubs; i++)
255
+ amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0);
256
+
253257 return 0;
254258 }
255259
....@@ -260,6 +264,8 @@
260264 * @offset: offset into the GPU's gart aperture
261265 * @pages: number of pages to bind
262266 * @dma_addr: DMA addresses of pages
267
+ * @flags: page table entry flags
268
+ * @dst: CPU address of the gart table
263269 *
264270 * Map the dma_addresses into GART entries (all asics).
265271 * Returns 0 for success, -EINVAL for failure.
....@@ -296,6 +302,7 @@
296302 * @pages: number of pages to bind
297303 * @pagelist: pages to bind
298304 * @dma_addr: DMA addresses of pages
305
+ * @flags: page table entry flags
299306 *
300307 * Binds the requested pages to the gart page table
301308 * (all asics).
....@@ -306,9 +313,9 @@
306313 uint64_t flags)
307314 {
308315 #ifdef CONFIG_DRM_AMDGPU_GART_DEBUGFS
309
- unsigned i,t,p;
316
+ unsigned t,p;
310317 #endif
311
- int r;
318
+ int r, i;
312319
313320 if (!adev->gart.ready) {
314321 WARN(1, "trying to bind memory to uninitialized GART !\n");
....@@ -332,7 +339,8 @@
332339
333340 mb();
334341 amdgpu_asic_flush_hdp(adev, NULL);
335
- amdgpu_gmc_flush_gpu_tlb(adev, 0);
342
+ for (i = 0; i < adev->num_vmhubs; i++)
343
+ amdgpu_gmc_flush_gpu_tlb(adev, 0, i, 0);
336344 return 0;
337345 }
338346