aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/radeon/cik_sdma.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/radeon/cik_sdma.c')
-rw-r--r--drivers/gpu/drm/radeon/cik_sdma.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/drivers/gpu/drm/radeon/cik_sdma.c b/drivers/gpu/drm/radeon/cik_sdma.c
index ec91427094e5..8d84ebe2b6fa 100644
--- a/drivers/gpu/drm/radeon/cik_sdma.c
+++ b/drivers/gpu/drm/radeon/cik_sdma.c
@@ -654,13 +654,12 @@ void cik_sdma_vm_set_page(struct radeon_device *rdev,
654 uint64_t addr, unsigned count, 654 uint64_t addr, unsigned count,
655 uint32_t incr, uint32_t flags) 655 uint32_t incr, uint32_t flags)
656{ 656{
657 uint32_t r600_flags = cayman_vm_page_flags(rdev, flags);
658 uint64_t value; 657 uint64_t value;
659 unsigned ndw; 658 unsigned ndw;
660 659
661 trace_radeon_vm_set_page(pe, addr, count, incr, r600_flags); 660 trace_radeon_vm_set_page(pe, addr, count, incr, flags);
662 661
663 if (flags & RADEON_VM_PAGE_SYSTEM) { 662 if (flags & R600_PTE_SYSTEM) {
664 while (count) { 663 while (count) {
665 ndw = count * 2; 664 ndw = count * 2;
666 if (ndw > 0xFFFFE) 665 if (ndw > 0xFFFFE)
@@ -672,16 +671,10 @@ void cik_sdma_vm_set_page(struct radeon_device *rdev,
672 ib->ptr[ib->length_dw++] = upper_32_bits(pe); 671 ib->ptr[ib->length_dw++] = upper_32_bits(pe);
673 ib->ptr[ib->length_dw++] = ndw; 672 ib->ptr[ib->length_dw++] = ndw;
674 for (; ndw > 0; ndw -= 2, --count, pe += 8) { 673 for (; ndw > 0; ndw -= 2, --count, pe += 8) {
675 if (flags & RADEON_VM_PAGE_SYSTEM) { 674 value = radeon_vm_map_gart(rdev, addr);
676 value = radeon_vm_map_gart(rdev, addr); 675 value &= 0xFFFFFFFFFFFFF000ULL;
677 value &= 0xFFFFFFFFFFFFF000ULL;
678 } else if (flags & RADEON_VM_PAGE_VALID) {
679 value = addr;
680 } else {
681 value = 0;
682 }
683 addr += incr; 676 addr += incr;
684 value |= r600_flags; 677 value |= flags;
685 ib->ptr[ib->length_dw++] = value; 678 ib->ptr[ib->length_dw++] = value;
686 ib->ptr[ib->length_dw++] = upper_32_bits(value); 679 ib->ptr[ib->length_dw++] = upper_32_bits(value);
687 } 680 }
@@ -692,7 +685,7 @@ void cik_sdma_vm_set_page(struct radeon_device *rdev,
692 if (ndw > 0x7FFFF) 685 if (ndw > 0x7FFFF)
693 ndw = 0x7FFFF; 686 ndw = 0x7FFFF;
694 687
695 if (flags & RADEON_VM_PAGE_VALID) 688 if (flags & R600_PTE_VALID)
696 value = addr; 689 value = addr;
697 else 690 else
698 value = 0; 691 value = 0;
@@ -700,7 +693,7 @@ void cik_sdma_vm_set_page(struct radeon_device *rdev,
700 ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_GENERATE_PTE_PDE, 0, 0); 693 ib->ptr[ib->length_dw++] = SDMA_PACKET(SDMA_OPCODE_GENERATE_PTE_PDE, 0, 0);
701 ib->ptr[ib->length_dw++] = pe; /* dst addr */ 694 ib->ptr[ib->length_dw++] = pe; /* dst addr */
702 ib->ptr[ib->length_dw++] = upper_32_bits(pe); 695 ib->ptr[ib->length_dw++] = upper_32_bits(pe);
703 ib->ptr[ib->length_dw++] = r600_flags; /* mask */ 696 ib->ptr[ib->length_dw++] = flags; /* mask */
704 ib->ptr[ib->length_dw++] = 0; 697 ib->ptr[ib->length_dw++] = 0;
705 ib->ptr[ib->length_dw++] = value; /* value */ 698 ib->ptr[ib->length_dw++] = value; /* value */
706 ib->ptr[ib->length_dw++] = upper_32_bits(value); 699 ib->ptr[ib->length_dw++] = upper_32_bits(value);