diff options
author | Michel Dänzer <michel.daenzer@amd.com> | 2015-01-21 03:36:37 -0500 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2015-01-22 11:48:03 -0500 |
commit | 16653dbae06609b9d0a7427de6c7f4c98d76523c (patch) | |
tree | 09980f77c2973cbcaefd3036fba4de248550093e /drivers/gpu | |
parent | 5636d2f842c7bd7800002868ead3d6b809d385a0 (diff) |
drm/radeon: Remove rdev->gart.pages_addr array
radeon_vm_map_gart can use rdev->gart.pages_entry instead.
Also move the masking of the page address to radeon_vm_map_gart from its
callers.
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu')
-rw-r--r-- | drivers/gpu/drm/radeon/cik_sdma.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/ni_dma.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_gart.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/radeon_vm.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/radeon/si_dma.c | 1 |
6 files changed, 2 insertions, 20 deletions
diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c index a0133c74f4cf..42cd0cffe210 100644 --- a/drivers/gpu/drm/radeon/cik_sdma.c +++ b/drivers/gpu/drm/radeon/cik_sdma.c | |||
@@ -816,7 +816,6 @@ void cik_sdma_vm_write_pages(struct radeon_device *rdev, | |||
816 | for (; ndw > 0; ndw -= 2, --count, pe += 8) { | 816 | for (; ndw > 0; ndw -= 2, --count, pe += 8) { |
817 | if (flags & R600_PTE_SYSTEM) { | 817 | if (flags & R600_PTE_SYSTEM) { |
818 | value = radeon_vm_map_gart(rdev, addr); | 818 | value = radeon_vm_map_gart(rdev, addr); |
819 | value &= 0xFFFFFFFFFFFFF000ULL; | ||
820 | } else if (flags & R600_PTE_VALID) { | 819 | } else if (flags & R600_PTE_VALID) { |
821 | value = addr; | 820 | value = addr; |
822 | } else { | 821 | } else { |
diff --git a/drivers/gpu/drm/radeon/ni_dma.c b/drivers/gpu/drm/radeon/ni_dma.c index 4be2bb7cbef3..ce787a9f12c0 100644 --- a/drivers/gpu/drm/radeon/ni_dma.c +++ b/drivers/gpu/drm/radeon/ni_dma.c | |||
@@ -372,7 +372,6 @@ void cayman_dma_vm_write_pages(struct radeon_device *rdev, | |||
372 | for (; ndw > 0; ndw -= 2, --count, pe += 8) { | 372 | for (; ndw > 0; ndw -= 2, --count, pe += 8) { |
373 | if (flags & R600_PTE_SYSTEM) { | 373 | if (flags & R600_PTE_SYSTEM) { |
374 | value = radeon_vm_map_gart(rdev, addr); | 374 | value = radeon_vm_map_gart(rdev, addr); |
375 | value &= 0xFFFFFFFFFFFFF000ULL; | ||
376 | } else if (flags & R600_PTE_VALID) { | 375 | } else if (flags & R600_PTE_VALID) { |
377 | value = addr; | 376 | value = addr; |
378 | } else { | 377 | } else { |
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h index 40c4c7aa9103..3f2a8d3febca 100644 --- a/drivers/gpu/drm/radeon/radeon.h +++ b/drivers/gpu/drm/radeon/radeon.h | |||
@@ -646,7 +646,6 @@ struct radeon_gart { | |||
646 | unsigned num_cpu_pages; | 646 | unsigned num_cpu_pages; |
647 | unsigned table_size; | 647 | unsigned table_size; |
648 | struct page **pages; | 648 | struct page **pages; |
649 | dma_addr_t *pages_addr; | ||
650 | uint64_t *pages_entry; | 649 | uint64_t *pages_entry; |
651 | bool ready; | 650 | bool ready; |
652 | }; | 651 | }; |
diff --git a/drivers/gpu/drm/radeon/radeon_gart.c b/drivers/gpu/drm/radeon/radeon_gart.c index c7be612b60c9..5450fa95a47e 100644 --- a/drivers/gpu/drm/radeon/radeon_gart.c +++ b/drivers/gpu/drm/radeon/radeon_gart.c | |||
@@ -251,7 +251,6 @@ void radeon_gart_unbind(struct radeon_device *rdev, unsigned offset, | |||
251 | for (i = 0; i < pages; i++, p++) { | 251 | for (i = 0; i < pages; i++, p++) { |
252 | if (rdev->gart.pages[p]) { | 252 | if (rdev->gart.pages[p]) { |
253 | rdev->gart.pages[p] = NULL; | 253 | rdev->gart.pages[p] = NULL; |
254 | rdev->gart.pages_addr[p] = rdev->dummy_page.addr; | ||
255 | for (j = 0; j < (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); j++, t++) { | 254 | for (j = 0; j < (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); j++, t++) { |
256 | rdev->gart.pages_entry[t] = rdev->dummy_page.entry; | 255 | rdev->gart.pages_entry[t] = rdev->dummy_page.entry; |
257 | if (rdev->gart.ptr) { | 256 | if (rdev->gart.ptr) { |
@@ -296,7 +295,6 @@ int radeon_gart_bind(struct radeon_device *rdev, unsigned offset, | |||
296 | p = t / (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); | 295 | p = t / (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); |
297 | 296 | ||
298 | for (i = 0; i < pages; i++, p++) { | 297 | for (i = 0; i < pages; i++, p++) { |
299 | rdev->gart.pages_addr[p] = dma_addr[i]; | ||
300 | rdev->gart.pages[p] = pagelist[i]; | 298 | rdev->gart.pages[p] = pagelist[i]; |
301 | page_base = dma_addr[i]; | 299 | page_base = dma_addr[i]; |
302 | for (j = 0; j < (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); j++, t++) { | 300 | for (j = 0; j < (PAGE_SIZE / RADEON_GPU_PAGE_SIZE); j++, t++) { |
@@ -347,12 +345,6 @@ int radeon_gart_init(struct radeon_device *rdev) | |||
347 | radeon_gart_fini(rdev); | 345 | radeon_gart_fini(rdev); |
348 | return -ENOMEM; | 346 | return -ENOMEM; |
349 | } | 347 | } |
350 | rdev->gart.pages_addr = vzalloc(sizeof(dma_addr_t) * | ||
351 | rdev->gart.num_cpu_pages); | ||
352 | if (rdev->gart.pages_addr == NULL) { | ||
353 | radeon_gart_fini(rdev); | ||
354 | return -ENOMEM; | ||
355 | } | ||
356 | rdev->gart.pages_entry = vmalloc(sizeof(uint64_t) * | 348 | rdev->gart.pages_entry = vmalloc(sizeof(uint64_t) * |
357 | rdev->gart.num_gpu_pages); | 349 | rdev->gart.num_gpu_pages); |
358 | if (rdev->gart.pages_entry == NULL) { | 350 | if (rdev->gart.pages_entry == NULL) { |
@@ -360,8 +352,6 @@ int radeon_gart_init(struct radeon_device *rdev) | |||
360 | return -ENOMEM; | 352 | return -ENOMEM; |
361 | } | 353 | } |
362 | /* set GART entry to point to the dummy page by default */ | 354 | /* set GART entry to point to the dummy page by default */ |
363 | for (i = 0; i < rdev->gart.num_cpu_pages; i++) | ||
364 | rdev->gart.pages_addr[i] = rdev->dummy_page.addr; | ||
365 | for (i = 0; i < rdev->gart.num_gpu_pages; i++) | 355 | for (i = 0; i < rdev->gart.num_gpu_pages; i++) |
366 | rdev->gart.pages_entry[i] = rdev->dummy_page.entry; | 356 | rdev->gart.pages_entry[i] = rdev->dummy_page.entry; |
367 | return 0; | 357 | return 0; |
@@ -382,10 +372,8 @@ void radeon_gart_fini(struct radeon_device *rdev) | |||
382 | } | 372 | } |
383 | rdev->gart.ready = false; | 373 | rdev->gart.ready = false; |
384 | vfree(rdev->gart.pages); | 374 | vfree(rdev->gart.pages); |
385 | vfree(rdev->gart.pages_addr); | ||
386 | vfree(rdev->gart.pages_entry); | 375 | vfree(rdev->gart.pages_entry); |
387 | rdev->gart.pages = NULL; | 376 | rdev->gart.pages = NULL; |
388 | rdev->gart.pages_addr = NULL; | ||
389 | rdev->gart.pages_entry = NULL; | 377 | rdev->gart.pages_entry = NULL; |
390 | 378 | ||
391 | radeon_dummy_page_fini(rdev); | 379 | radeon_dummy_page_fini(rdev); |
diff --git a/drivers/gpu/drm/radeon/radeon_vm.c b/drivers/gpu/drm/radeon/radeon_vm.c index cde48c42b30a..06d2246d07f1 100644 --- a/drivers/gpu/drm/radeon/radeon_vm.c +++ b/drivers/gpu/drm/radeon/radeon_vm.c | |||
@@ -587,10 +587,8 @@ uint64_t radeon_vm_map_gart(struct radeon_device *rdev, uint64_t addr) | |||
587 | uint64_t result; | 587 | uint64_t result; |
588 | 588 | ||
589 | /* page table offset */ | 589 | /* page table offset */ |
590 | result = rdev->gart.pages_addr[addr >> PAGE_SHIFT]; | 590 | result = rdev->gart.pages_entry[addr >> RADEON_GPU_PAGE_SHIFT]; |
591 | 591 | result &= ~RADEON_GPU_PAGE_MASK; | |
592 | /* in case cpu page size != gpu page size*/ | ||
593 | result |= addr & (~PAGE_MASK); | ||
594 | 592 | ||
595 | return result; | 593 | return result; |
596 | } | 594 | } |
diff --git a/drivers/gpu/drm/radeon/si_dma.c b/drivers/gpu/drm/radeon/si_dma.c index aa7b872b2c43..83207929fc62 100644 --- a/drivers/gpu/drm/radeon/si_dma.c +++ b/drivers/gpu/drm/radeon/si_dma.c | |||
@@ -123,7 +123,6 @@ void si_dma_vm_write_pages(struct radeon_device *rdev, | |||
123 | for (; ndw > 0; ndw -= 2, --count, pe += 8) { | 123 | for (; ndw > 0; ndw -= 2, --count, pe += 8) { |
124 | if (flags & R600_PTE_SYSTEM) { | 124 | if (flags & R600_PTE_SYSTEM) { |
125 | value = radeon_vm_map_gart(rdev, addr); | 125 | value = radeon_vm_map_gart(rdev, addr); |
126 | value &= 0xFFFFFFFFFFFFF000ULL; | ||
127 | } else if (flags & R600_PTE_VALID) { | 126 | } else if (flags & R600_PTE_VALID) { |
128 | value = addr; | 127 | value = addr; |
129 | } else { | 128 | } else { |