Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu: add IV trace point

This allows us to grab IVs without spamming the log.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

authored by

Christian König and committed by
Alex Deucher
cef105f7 614dea31

+40
+3
drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c
··· 33 33 #include "amdgpu_ih.h" 34 34 #include "atom.h" 35 35 #include "amdgpu_connectors.h" 36 + #include "amdgpu_trace.h" 36 37 37 38 #include <linux/pm_runtime.h> 38 39 ··· 356 355 unsigned src_id = entry->src_id; 357 356 struct amdgpu_irq_src *src; 358 357 int r; 358 + 359 + trace_amdgpu_iv(entry); 359 360 360 361 if (client_id >= AMDGPU_IH_CLIENTID_MAX) { 361 362 DRM_DEBUG("Invalid client_id in IV: %d\n", client_id);
+37
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
··· 52 52 (unsigned long)__entry->value) 53 53 ); 54 54 55 + TRACE_EVENT(amdgpu_iv, 56 + TP_PROTO(struct amdgpu_iv_entry *iv), 57 + TP_ARGS(iv), 58 + TP_STRUCT__entry( 59 + __field(unsigned, client_id) 60 + __field(unsigned, src_id) 61 + __field(unsigned, ring_id) 62 + __field(unsigned, vm_id) 63 + __field(unsigned, vm_id_src) 64 + __field(uint64_t, timestamp) 65 + __field(unsigned, timestamp_src) 66 + __field(unsigned, pas_id) 67 + __array(unsigned, src_data, 4) 68 + ), 69 + TP_fast_assign( 70 + __entry->client_id = iv->client_id; 71 + __entry->src_id = iv->src_id; 72 + __entry->ring_id = iv->ring_id; 73 + __entry->vm_id = iv->vm_id; 74 + __entry->vm_id_src = iv->vm_id_src; 75 + __entry->timestamp = iv->timestamp; 76 + __entry->timestamp_src = iv->timestamp_src; 77 + __entry->pas_id = iv->pas_id; 78 + __entry->src_data[0] = iv->src_data[0]; 79 + __entry->src_data[1] = iv->src_data[1]; 80 + __entry->src_data[2] = iv->src_data[2]; 81 + __entry->src_data[3] = iv->src_data[3]; 82 + ), 83 + 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", 84 + __entry->client_id, __entry->src_id, 85 + __entry->ring_id, __entry->vm_id, 86 + __entry->timestamp, __entry->pas_id, 87 + __entry->src_data[0], __entry->src_data[1], 88 + __entry->src_data[2], __entry->src_data[3]) 89 + ); 90 + 91 + 55 92 TRACE_EVENT(amdgpu_bo_create, 56 93 TP_PROTO(struct amdgpu_bo *bo), 57 94 TP_ARGS(bo),