void radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring, struct radeon_semaphore *semaphore) { trace_radeon_semaphore_wait(ring, semaphore); ++semaphore->waiters; radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, true); }
void radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring, struct radeon_semaphore *semaphore) { trace_radeon_semaphore_signale(ring, semaphore); --semaphore->waiters; radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, false); }
bool radeon_semaphore_emit_wait(struct radeon_device *rdev, int ridx, struct radeon_semaphore *semaphore) { struct radeon_ring *ring = &rdev->ring[ridx]; trace_radeon_semaphore_wait(ridx, semaphore); if (radeon_semaphore_ring_emit(rdev, ridx, ring, semaphore, true)) { ++semaphore->waiters; /* for debugging lockup only, used by sysfs debug files */ ring->last_semaphore_wait_addr = semaphore->gpu_addr; return true; } return false; }