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 | |
| 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>
| -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 { |
