mirror of
https://github.com/torvalds/linux.git
synced 2024-12-26 12:52:30 +00:00
drm/radeon: add semaphore trace point
Signed-off-by: Christian König <christian.koenig@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> Cc: stable@vger.kernel.org
This commit is contained in:
parent
97b6ff6be9
commit
bd80c8ba99
@ -29,7 +29,7 @@
|
|||||||
*/
|
*/
|
||||||
#include <drm/drmP.h>
|
#include <drm/drmP.h>
|
||||||
#include "radeon.h"
|
#include "radeon.h"
|
||||||
|
#include "radeon_trace.h"
|
||||||
|
|
||||||
int radeon_semaphore_create(struct radeon_device *rdev,
|
int radeon_semaphore_create(struct radeon_device *rdev,
|
||||||
struct radeon_semaphore **semaphore)
|
struct radeon_semaphore **semaphore)
|
||||||
@ -56,6 +56,8 @@ int radeon_semaphore_create(struct radeon_device *rdev,
|
|||||||
void radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring,
|
void radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring,
|
||||||
struct radeon_semaphore *semaphore)
|
struct radeon_semaphore *semaphore)
|
||||||
{
|
{
|
||||||
|
trace_radeon_semaphore_signale(ring, semaphore);
|
||||||
|
|
||||||
--semaphore->waiters;
|
--semaphore->waiters;
|
||||||
radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, false);
|
radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, false);
|
||||||
}
|
}
|
||||||
@ -63,6 +65,8 @@ void radeon_semaphore_emit_signal(struct radeon_device *rdev, int ring,
|
|||||||
void radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring,
|
void radeon_semaphore_emit_wait(struct radeon_device *rdev, int ring,
|
||||||
struct radeon_semaphore *semaphore)
|
struct radeon_semaphore *semaphore)
|
||||||
{
|
{
|
||||||
|
trace_radeon_semaphore_wait(ring, semaphore);
|
||||||
|
|
||||||
++semaphore->waiters;
|
++semaphore->waiters;
|
||||||
radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, true);
|
radeon_semaphore_ring_emit(rdev, ring, &rdev->ring[ring], semaphore, true);
|
||||||
}
|
}
|
||||||
|
@ -111,6 +111,42 @@ DEFINE_EVENT(radeon_fence_request, radeon_fence_wait_end,
|
|||||||
TP_ARGS(dev, seqno)
|
TP_ARGS(dev, seqno)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
DECLARE_EVENT_CLASS(radeon_semaphore_request,
|
||||||
|
|
||||||
|
TP_PROTO(int ring, struct radeon_semaphore *sem),
|
||||||
|
|
||||||
|
TP_ARGS(ring, sem),
|
||||||
|
|
||||||
|
TP_STRUCT__entry(
|
||||||
|
__field(int, ring)
|
||||||
|
__field(signed, waiters)
|
||||||
|
__field(uint64_t, gpu_addr)
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_fast_assign(
|
||||||
|
__entry->ring = ring;
|
||||||
|
__entry->waiters = sem->waiters;
|
||||||
|
__entry->gpu_addr = sem->gpu_addr;
|
||||||
|
),
|
||||||
|
|
||||||
|
TP_printk("ring=%u, waiters=%d, addr=%010Lx", __entry->ring,
|
||||||
|
__entry->waiters, __entry->gpu_addr)
|
||||||
|
);
|
||||||
|
|
||||||
|
DEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_signale,
|
||||||
|
|
||||||
|
TP_PROTO(int ring, struct radeon_semaphore *sem),
|
||||||
|
|
||||||
|
TP_ARGS(ring, sem)
|
||||||
|
);
|
||||||
|
|
||||||
|
DEFINE_EVENT(radeon_semaphore_request, radeon_semaphore_wait,
|
||||||
|
|
||||||
|
TP_PROTO(int ring, struct radeon_semaphore *sem),
|
||||||
|
|
||||||
|
TP_ARGS(ring, sem)
|
||||||
|
);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* This part must be outside protection */
|
/* This part must be outside protection */
|
||||||
|
Loading…
Reference in New Issue
Block a user