Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cef105f7 authored by Christian König's avatar Christian König Committed by Alex Deucher
Browse files

drm/amdgpu: add IV trace point



This allows us to grab IVs without spamming the log.

Signed-off-by: default avatarChristian König <christian.koenig@amd.com>
Reviewed-by: default avatarFelix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: default avatarAlex Deucher <alexander.deucher@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 614dea31
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -33,6 +33,7 @@
#include "amdgpu_ih.h"
#include "amdgpu_ih.h"
#include "atom.h"
#include "atom.h"
#include "amdgpu_connectors.h"
#include "amdgpu_connectors.h"
#include "amdgpu_trace.h"


#include <linux/pm_runtime.h>
#include <linux/pm_runtime.h>


@@ -356,6 +357,8 @@ void amdgpu_irq_dispatch(struct amdgpu_device *adev,
	struct amdgpu_irq_src *src;
	struct amdgpu_irq_src *src;
	int r;
	int r;


	trace_amdgpu_iv(entry);

	if (client_id >= AMDGPU_IH_CLIENTID_MAX) {
	if (client_id >= AMDGPU_IH_CLIENTID_MAX) {
		DRM_DEBUG("Invalid client_id in IV: %d\n", client_id);
		DRM_DEBUG("Invalid client_id in IV: %d\n", client_id);
		return;
		return;
+37 −0
Original line number Original line Diff line number Diff line
@@ -52,6 +52,43 @@ TRACE_EVENT(amdgpu_mm_wreg,
		      (unsigned long)__entry->value)
		      (unsigned long)__entry->value)
);
);


TRACE_EVENT(amdgpu_iv,
	    TP_PROTO(struct amdgpu_iv_entry *iv),
	    TP_ARGS(iv),
	    TP_STRUCT__entry(
			     __field(unsigned, client_id)
			     __field(unsigned, src_id)
			     __field(unsigned, ring_id)
			     __field(unsigned, vm_id)
			     __field(unsigned, vm_id_src)
			     __field(uint64_t, timestamp)
			     __field(unsigned, timestamp_src)
			     __field(unsigned, pas_id)
			     __array(unsigned, src_data, 4)
			    ),
	    TP_fast_assign(
			   __entry->client_id = iv->client_id;
			   __entry->src_id = iv->src_id;
			   __entry->ring_id = iv->ring_id;
			   __entry->vm_id = iv->vm_id;
			   __entry->vm_id_src = iv->vm_id_src;
			   __entry->timestamp = iv->timestamp;
			   __entry->timestamp_src = iv->timestamp_src;
			   __entry->pas_id = iv->pas_id;
			   __entry->src_data[0] = iv->src_data[0];
			   __entry->src_data[1] = iv->src_data[1];
			   __entry->src_data[2] = iv->src_data[2];
			   __entry->src_data[3] = iv->src_data[3];
			   ),
	    TP_printk("client_id:%u src_id:%u ring:%u vm_id:%u timestamp: %llu pas_id:%u src_data: %08x %08x %08x %08x\n",
		      __entry->client_id, __entry->src_id,
		      __entry->ring_id, __entry->vm_id,
		      __entry->timestamp, __entry->pas_id,
		      __entry->src_data[0], __entry->src_data[1],
		      __entry->src_data[2], __entry->src_data[3])
);


TRACE_EVENT(amdgpu_bo_create,
TRACE_EVENT(amdgpu_bo_create,
	    TP_PROTO(struct amdgpu_bo *bo),
	    TP_PROTO(struct amdgpu_bo *bo),
	    TP_ARGS(bo),
	    TP_ARGS(bo),