Lines Matching refs:rdev
45 static int radeon_debugfs_ring_init(struct radeon_device *rdev, struct radeon_ring *ring);
57 bool radeon_ring_supports_scratch_reg(struct radeon_device *rdev, in radeon_ring_supports_scratch_reg() argument
78 void radeon_ring_free_size(struct radeon_device *rdev, struct radeon_ring *ring) in radeon_ring_free_size() argument
80 uint32_t rptr = radeon_ring_get_rptr(rdev, ring); in radeon_ring_free_size()
90 radeon_ring_lockup_update(rdev, ring); in radeon_ring_free_size()
104 int radeon_ring_alloc(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ndw) in radeon_ring_alloc() argument
113 radeon_ring_free_size(rdev, ring); in radeon_ring_alloc()
116 radeon_ring_free_size(rdev, ring); in radeon_ring_alloc()
120 r = radeon_fence_wait_next(rdev, ring->idx); in radeon_ring_alloc()
140 int radeon_ring_lock(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ndw) in radeon_ring_lock() argument
144 mutex_lock(&rdev->ring_lock); in radeon_ring_lock()
145 r = radeon_ring_alloc(rdev, ring, ndw); in radeon_ring_lock()
147 mutex_unlock(&rdev->ring_lock); in radeon_ring_lock()
164 void radeon_ring_commit(struct radeon_device *rdev, struct radeon_ring *ring, in radeon_ring_commit() argument
170 if (hdp_flush && rdev->asic->ring[ring->idx]->hdp_flush) in radeon_ring_commit()
171 rdev->asic->ring[ring->idx]->hdp_flush(rdev, ring); in radeon_ring_commit()
180 if (hdp_flush && rdev->asic->mmio_hdp_flush) in radeon_ring_commit()
181 rdev->asic->mmio_hdp_flush(rdev); in radeon_ring_commit()
182 radeon_ring_set_wptr(rdev, ring); in radeon_ring_commit()
195 void radeon_ring_unlock_commit(struct radeon_device *rdev, struct radeon_ring *ring, in radeon_ring_unlock_commit() argument
198 radeon_ring_commit(rdev, ring, hdp_flush); in radeon_ring_unlock_commit()
199 mutex_unlock(&rdev->ring_lock); in radeon_ring_unlock_commit()
221 void radeon_ring_unlock_undo(struct radeon_device *rdev, struct radeon_ring *ring) in radeon_ring_unlock_undo() argument
224 mutex_unlock(&rdev->ring_lock); in radeon_ring_unlock_undo()
234 void radeon_ring_lockup_update(struct radeon_device *rdev, in radeon_ring_lockup_update() argument
237 atomic_set(&ring->last_rptr, radeon_ring_get_rptr(rdev, ring)); in radeon_ring_lockup_update()
247 bool radeon_ring_test_lockup(struct radeon_device *rdev, struct radeon_ring *ring) in radeon_ring_test_lockup() argument
249 uint32_t rptr = radeon_ring_get_rptr(rdev, ring); in radeon_ring_test_lockup()
255 radeon_ring_lockup_update(rdev, ring); in radeon_ring_test_lockup()
261 dev_err(rdev->dev, "ring %d stalled for more than %llumsec\n", in radeon_ring_test_lockup()
277 unsigned radeon_ring_backup(struct radeon_device *rdev, struct radeon_ring *ring, in radeon_ring_backup() argument
283 mutex_lock(&rdev->ring_lock); in radeon_ring_backup()
287 mutex_unlock(&rdev->ring_lock); in radeon_ring_backup()
292 if (!radeon_fence_count_emitted(rdev, ring->idx)) { in radeon_ring_backup()
293 mutex_unlock(&rdev->ring_lock); in radeon_ring_backup()
300 else if (rdev->wb.enabled) in radeon_ring_backup()
304 mutex_unlock(&rdev->ring_lock); in radeon_ring_backup()
312 mutex_unlock(&rdev->ring_lock); in radeon_ring_backup()
319 mutex_unlock(&rdev->ring_lock); in radeon_ring_backup()
327 mutex_unlock(&rdev->ring_lock); in radeon_ring_backup()
341 int radeon_ring_restore(struct radeon_device *rdev, struct radeon_ring *ring, in radeon_ring_restore() argument
350 r = radeon_ring_lock(rdev, ring, size); in radeon_ring_restore()
358 radeon_ring_unlock_commit(rdev, ring, false); in radeon_ring_restore()
375 int radeon_ring_init(struct radeon_device *rdev, struct radeon_ring *ring, unsigned ring_size, in radeon_ring_init() argument
385 r = radeon_bo_create(rdev, ring->ring_size, PAGE_SIZE, true, in radeon_ring_init()
389 dev_err(rdev->dev, "(%d) ring create failed\n", r); in radeon_ring_init()
399 dev_err(rdev->dev, "(%d) ring pin failed\n", r); in radeon_ring_init()
406 dev_err(rdev->dev, "(%d) ring map failed\n", r); in radeon_ring_init()
412 if (rdev->wb.enabled) { in radeon_ring_init()
414 ring->next_rptr_gpu_addr = rdev->wb.gpu_addr + index; in radeon_ring_init()
415 ring->next_rptr_cpu_addr = &rdev->wb.wb[index/4]; in radeon_ring_init()
417 if (radeon_debugfs_ring_init(rdev, ring)) { in radeon_ring_init()
420 radeon_ring_lockup_update(rdev, ring); in radeon_ring_init()
432 void radeon_ring_fini(struct radeon_device *rdev, struct radeon_ring *ring) in radeon_ring_fini() argument
437 mutex_lock(&rdev->ring_lock); in radeon_ring_fini()
442 mutex_unlock(&rdev->ring_lock); in radeon_ring_fini()
464 struct radeon_device *rdev = dev->dev_private; in radeon_debugfs_ring_info() local
466 struct radeon_ring *ring = &rdev->ring[ridx]; in radeon_debugfs_ring_info()
471 radeon_ring_free_size(rdev, ring); in radeon_debugfs_ring_info()
474 wptr = radeon_ring_get_wptr(rdev, ring); in radeon_debugfs_ring_info()
478 rptr = radeon_ring_get_rptr(rdev, ring); in radeon_debugfs_ring_info()
539 static int radeon_debugfs_ring_init(struct radeon_device *rdev, struct radeon_ring *ring) in radeon_debugfs_ring_init() argument
548 if (&rdev->ring[ridx] != ring) in radeon_debugfs_ring_init()
551 r = radeon_debugfs_add_files(rdev, info, 1); in radeon_debugfs_ring_init()