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

drm/xe: Add trace to lrc timestamp update

Help debugging when LRC timestamp is updated for a exec queue.

Reviewed-by: Jonathan Cavitt <jonathan.cavitt@intel.com>
Reviewed-by: Nirmoy Das <nirmoy.das@intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20241104143815.2112272-2-lucas.demarchi@intel.com
Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>

+65
+1
drivers/gpu/drm/xe/Makefile
··· 101 101 xe_trace.o \ 102 102 xe_trace_bo.o \ 103 103 xe_trace_guc.o \ 104 + xe_trace_lrc.o \ 104 105 xe_ttm_sys_mgr.o \ 105 106 xe_ttm_stolen_mgr.o \ 106 107 xe_ttm_vram_mgr.o \
+3
drivers/gpu/drm/xe/xe_lrc.c
··· 25 25 #include "xe_map.h" 26 26 #include "xe_memirq.h" 27 27 #include "xe_sriov.h" 28 + #include "xe_trace_lrc.h" 28 29 #include "xe_vm.h" 29 30 #include "xe_wa.h" 30 31 ··· 1758 1757 *old_ts = lrc->ctx_timestamp; 1759 1758 1760 1759 lrc->ctx_timestamp = xe_lrc_ctx_timestamp(lrc); 1760 + 1761 + trace_xe_lrc_update_timestamp(lrc, *old_ts); 1761 1762 1762 1763 return lrc->ctx_timestamp; 1763 1764 }
+9
drivers/gpu/drm/xe/xe_trace_lrc.c
··· 1 + // SPDX-License-Identifier: GPL-2.0-only 2 + /* 3 + * Copyright © 2024 Intel Corporation 4 + */ 5 + 6 + #ifndef __CHECKER__ 7 + #define CREATE_TRACE_POINTS 8 + #include "xe_trace_lrc.h" 9 + #endif
+52
drivers/gpu/drm/xe/xe_trace_lrc.h
··· 1 + /* SPDX-License-Identifier: GPL-2.0-only */ 2 + /* 3 + * Copyright © 2024 Intel Corporation 4 + */ 5 + 6 + #undef TRACE_SYSTEM 7 + #define TRACE_SYSTEM xe 8 + 9 + #if !defined(_XE_TRACE_LRC_H_) || defined(TRACE_HEADER_MULTI_READ) 10 + #define _XE_TRACE_LRC_H_ 11 + 12 + #include <linux/tracepoint.h> 13 + #include <linux/types.h> 14 + 15 + #include "xe_gt_types.h" 16 + #include "xe_lrc.h" 17 + #include "xe_lrc_types.h" 18 + 19 + #define __dev_name_lrc(lrc) dev_name(gt_to_xe((lrc)->fence_ctx.gt)->drm.dev) 20 + 21 + TRACE_EVENT(xe_lrc_update_timestamp, 22 + TP_PROTO(struct xe_lrc *lrc, uint32_t old), 23 + TP_ARGS(lrc, old), 24 + TP_STRUCT__entry( 25 + __field(struct xe_lrc *, lrc) 26 + __field(u32, old) 27 + __field(u32, new) 28 + __string(name, lrc->fence_ctx.name) 29 + __string(device_id, __dev_name_lrc(lrc)) 30 + ), 31 + 32 + TP_fast_assign( 33 + __entry->lrc = lrc; 34 + __entry->old = old; 35 + __entry->new = lrc->ctx_timestamp; 36 + __assign_str(name); 37 + __assign_str(device_id); 38 + ), 39 + TP_printk("lrc=:%p lrc->name=%s old=%u new=%u device_id:%s", 40 + __entry->lrc, __get_str(name), 41 + __entry->old, __entry->new, 42 + __get_str(device_id)) 43 + ); 44 + 45 + #endif 46 + 47 + /* This part must be outside protection */ 48 + #undef TRACE_INCLUDE_PATH 49 + #undef TRACE_INCLUDE_FILE 50 + #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/xe 51 + #define TRACE_INCLUDE_FILE xe_trace_lrc 52 + #include <trace/define_trace.h>