aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/radeon/ni.c7
-rw-r--r--drivers/gpu/drm/radeon/radeon.h4
-rw-r--r--drivers/gpu/drm/radeon/radeon_asic.h4
-rw-r--r--drivers/gpu/drm/radeon/radeon_ring.c2
-rw-r--r--drivers/gpu/drm/radeon/si.c7
5 files changed, 11 insertions, 13 deletions
diff --git a/drivers/gpu/drm/radeon/ni.c b/drivers/gpu/drm/radeon/ni.c
index f920a2c5ef23..9a46f7d4e61f 100644
--- a/drivers/gpu/drm/radeon/ni.c
+++ b/drivers/gpu/drm/radeon/ni.c
@@ -1565,10 +1565,9 @@ void cayman_vm_set_page(struct radeon_device *rdev, uint64_t pe,
1565 * Update the page table base and flush the VM TLB 1565 * Update the page table base and flush the VM TLB
1566 * using the CP (cayman-si). 1566 * using the CP (cayman-si).
1567 */ 1567 */
1568void cayman_vm_flush(struct radeon_device *rdev, struct radeon_ib *ib) 1568void cayman_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm)
1569{ 1569{
1570 struct radeon_ring *ring = &rdev->ring[ib->ring]; 1570 struct radeon_ring *ring = &rdev->ring[ridx];
1571 struct radeon_vm *vm = ib->vm;
1572 1571
1573 if (vm == NULL) 1572 if (vm == NULL)
1574 return; 1573 return;
@@ -1588,5 +1587,5 @@ void cayman_vm_flush(struct radeon_device *rdev, struct radeon_ib *ib)
1588 1587
1589 /* bits 0-7 are the VM contexts0-7 */ 1588 /* bits 0-7 are the VM contexts0-7 */
1590 radeon_ring_write(ring, PACKET0(VM_INVALIDATE_REQUEST, 0)); 1589 radeon_ring_write(ring, PACKET0(VM_INVALIDATE_REQUEST, 0));
1591 radeon_ring_write(ring, 1 << ib->vm->id); 1590 radeon_ring_write(ring, 1 << vm->id);
1592} 1591}
diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
index 519d8a32aa43..b04c06444d8b 100644
--- a/drivers/gpu/drm/radeon/radeon.h
+++ b/drivers/gpu/drm/radeon/radeon.h
@@ -1165,7 +1165,7 @@ struct radeon_asic {
1165 int (*ring_test)(struct radeon_device *rdev, struct radeon_ring *cp); 1165 int (*ring_test)(struct radeon_device *rdev, struct radeon_ring *cp);
1166 int (*ib_test)(struct radeon_device *rdev, struct radeon_ring *cp); 1166 int (*ib_test)(struct radeon_device *rdev, struct radeon_ring *cp);
1167 bool (*is_lockup)(struct radeon_device *rdev, struct radeon_ring *cp); 1167 bool (*is_lockup)(struct radeon_device *rdev, struct radeon_ring *cp);
1168 void (*vm_flush)(struct radeon_device *rdev, struct radeon_ib *ib); 1168 void (*vm_flush)(struct radeon_device *rdev, int ridx, struct radeon_vm *vm);
1169 } ring[RADEON_NUM_RINGS]; 1169 } ring[RADEON_NUM_RINGS];
1170 /* irqs */ 1170 /* irqs */
1171 struct { 1171 struct {
@@ -1772,7 +1772,7 @@ void radeon_ring_write(struct radeon_ring *ring, uint32_t v);
1772#define radeon_ring_ib_execute(rdev, r, ib) (rdev)->asic->ring[(r)].ib_execute((rdev), (ib)) 1772#define radeon_ring_ib_execute(rdev, r, ib) (rdev)->asic->ring[(r)].ib_execute((rdev), (ib))
1773#define radeon_ring_ib_parse(rdev, r, ib) (rdev)->asic->ring[(r)].ib_parse((rdev), (ib)) 1773#define radeon_ring_ib_parse(rdev, r, ib) (rdev)->asic->ring[(r)].ib_parse((rdev), (ib))
1774#define radeon_ring_is_lockup(rdev, r, cp) (rdev)->asic->ring[(r)].is_lockup((rdev), (cp)) 1774#define radeon_ring_is_lockup(rdev, r, cp) (rdev)->asic->ring[(r)].is_lockup((rdev), (cp))
1775#define radeon_ring_vm_flush(rdev, r, ib) (rdev)->asic->ring[(r)].vm_flush((rdev), (ib)) 1775#define radeon_ring_vm_flush(rdev, r, vm) (rdev)->asic->ring[(r)].vm_flush((rdev), (r), (vm))
1776#define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev)) 1776#define radeon_irq_set(rdev) (rdev)->asic->irq.set((rdev))
1777#define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev)) 1777#define radeon_irq_process(rdev) (rdev)->asic->irq.process((rdev))
1778#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc)) 1778#define radeon_get_vblank_counter(rdev, crtc) (rdev)->asic->display.get_vblank_counter((rdev), (crtc))
diff --git a/drivers/gpu/drm/radeon/radeon_asic.h b/drivers/gpu/drm/radeon/radeon_asic.h
index f158c11c9065..5c823e77bc21 100644
--- a/drivers/gpu/drm/radeon/radeon_asic.h
+++ b/drivers/gpu/drm/radeon/radeon_asic.h
@@ -443,7 +443,7 @@ int cayman_asic_reset(struct radeon_device *rdev);
443void cayman_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib); 443void cayman_ring_ib_execute(struct radeon_device *rdev, struct radeon_ib *ib);
444int cayman_vm_init(struct radeon_device *rdev); 444int cayman_vm_init(struct radeon_device *rdev);
445void cayman_vm_fini(struct radeon_device *rdev); 445void cayman_vm_fini(struct radeon_device *rdev);
446void cayman_vm_flush(struct radeon_device *rdev, struct radeon_ib *ib); 446void cayman_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm);
447uint32_t cayman_vm_page_flags(struct radeon_device *rdev, uint32_t flags); 447uint32_t cayman_vm_page_flags(struct radeon_device *rdev, uint32_t flags);
448void cayman_vm_set_page(struct radeon_device *rdev, uint64_t pe, 448void cayman_vm_set_page(struct radeon_device *rdev, uint64_t pe,
449 uint64_t addr, unsigned count, 449 uint64_t addr, unsigned count,
@@ -470,7 +470,7 @@ int si_irq_set(struct radeon_device *rdev);
470int si_irq_process(struct radeon_device *rdev); 470int si_irq_process(struct radeon_device *rdev);
471int si_vm_init(struct radeon_device *rdev); 471int si_vm_init(struct radeon_device *rdev);
472void si_vm_fini(struct radeon_device *rdev); 472void si_vm_fini(struct radeon_device *rdev);
473void si_vm_flush(struct radeon_device *rdev, struct radeon_ib *ib); 473void si_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm);
474int si_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib); 474int si_ib_parse(struct radeon_device *rdev, struct radeon_ib *ib);
475uint64_t si_get_gpu_clock(struct radeon_device *rdev); 475uint64_t si_get_gpu_clock(struct radeon_device *rdev);
476 476
diff --git a/drivers/gpu/drm/radeon/radeon_ring.c b/drivers/gpu/drm/radeon/radeon_ring.c
index d90b0bc6f072..028508859a3b 100644
--- a/drivers/gpu/drm/radeon/radeon_ring.c
+++ b/drivers/gpu/drm/radeon/radeon_ring.c
@@ -162,7 +162,7 @@ int radeon_ib_schedule(struct radeon_device *rdev, struct radeon_ib *ib,
162 } 162 }
163 /* if we can't remember our last VM flush then flush now! */ 163 /* if we can't remember our last VM flush then flush now! */
164 if (ib->vm && !ib->vm->last_flush) { 164 if (ib->vm && !ib->vm->last_flush) {
165 radeon_ring_vm_flush(rdev, ib->ring, ib); 165 radeon_ring_vm_flush(rdev, ib->ring, ib->vm);
166 } 166 }
167 if (const_ib) { 167 if (const_ib) {
168 radeon_ring_ib_execute(rdev, const_ib->ring, const_ib); 168 radeon_ring_ib_execute(rdev, const_ib->ring, const_ib);
diff --git a/drivers/gpu/drm/radeon/si.c b/drivers/gpu/drm/radeon/si.c
index 916d1cb274c0..3319a9a53d8e 100644
--- a/drivers/gpu/drm/radeon/si.c
+++ b/drivers/gpu/drm/radeon/si.c
@@ -2789,10 +2789,9 @@ void si_vm_fini(struct radeon_device *rdev)
2789{ 2789{
2790} 2790}
2791 2791
2792void si_vm_flush(struct radeon_device *rdev, struct radeon_ib *ib) 2792void si_vm_flush(struct radeon_device *rdev, int ridx, struct radeon_vm *vm)
2793{ 2793{
2794 struct radeon_ring *ring = &rdev->ring[ib->ring]; 2794 struct radeon_ring *ring = &rdev->ring[ridx];
2795 struct radeon_vm *vm = ib->vm;
2796 2795
2797 if (vm == NULL) 2796 if (vm == NULL)
2798 return; 2797 return;
@@ -2826,7 +2825,7 @@ void si_vm_flush(struct radeon_device *rdev, struct radeon_ib *ib)
2826 WRITE_DATA_DST_SEL(0))); 2825 WRITE_DATA_DST_SEL(0)));
2827 radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2); 2826 radeon_ring_write(ring, VM_INVALIDATE_REQUEST >> 2);
2828 radeon_ring_write(ring, 0); 2827 radeon_ring_write(ring, 0);
2829 radeon_ring_write(ring, 1 << ib->vm->id); 2828 radeon_ring_write(ring, 1 << vm->id);
2830} 2829}
2831 2830
2832/* 2831/*