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/xe/trace: Extract bo, vm, vma traces

xe_trace.h is starting to get over crowded. Move the traces
related to bo, vm, vma's to its own file.

v2: Update year in License(Gustavo)

Reviewed-by: Gustavo Sousa <gustavo.sousa@intel.com>
Suggested-by: Jani Nikula <jani.nikula@intel.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Signed-off-by: Radhakrishna Sripada <radhakrishna.sripada@intel.com>
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20240607182943.3572524-2-radhakrishna.sripada@intel.com

authored by

Radhakrishna Sripada and committed by
Matt Roper
e46d3f81 89aa02ed

+250 -216
+1
drivers/gpu/drm/xe/Makefile
··· 112 112 xe_tile.o \ 113 113 xe_tile_sysfs.o \ 114 114 xe_trace.o \ 115 + xe_trace_bo.o \ 115 116 xe_ttm_sys_mgr.o \ 116 117 xe_ttm_stolen_mgr.o \ 117 118 xe_ttm_vram_mgr.o \
+1 -1
drivers/gpu/drm/xe/xe_bo.c
··· 25 25 #include "xe_pm.h" 26 26 #include "xe_preempt_fence.h" 27 27 #include "xe_res_cursor.h" 28 - #include "xe_trace.h" 28 + #include "xe_trace_bo.h" 29 29 #include "xe_ttm_stolen_mgr.h" 30 30 #include "xe_vm.h" 31 31
+1 -1
drivers/gpu/drm/xe/xe_gt_pagefault.c
··· 19 19 #include "xe_guc.h" 20 20 #include "xe_guc_ct.h" 21 21 #include "xe_migrate.h" 22 - #include "xe_trace.h" 22 + #include "xe_trace_bo.h" 23 23 #include "xe_vm.h" 24 24 25 25 struct pagefault {
+1 -1
drivers/gpu/drm/xe/xe_migrate.c
··· 32 32 #include "xe_res_cursor.h" 33 33 #include "xe_sched_job.h" 34 34 #include "xe_sync.h" 35 - #include "xe_trace.h" 35 + #include "xe_trace_bo.h" 36 36 #include "xe_vm.h" 37 37 38 38 /**
-212
drivers/gpu/drm/xe/xe_trace.h
··· 12 12 #include <linux/tracepoint.h> 13 13 #include <linux/types.h> 14 14 15 - #include "xe_bo.h" 16 - #include "xe_bo_types.h" 17 15 #include "xe_exec_queue_types.h" 18 16 #include "xe_gpu_scheduler_types.h" 19 17 #include "xe_gt_tlb_invalidation_types.h" ··· 72 74 DEFINE_EVENT(xe_gt_tlb_invalidation_fence, xe_gt_tlb_invalidation_fence_timeout, 73 75 TP_PROTO(struct xe_gt_tlb_invalidation_fence *fence), 74 76 TP_ARGS(fence) 75 - ); 76 - 77 - DECLARE_EVENT_CLASS(xe_bo, 78 - TP_PROTO(struct xe_bo *bo), 79 - TP_ARGS(bo), 80 - 81 - TP_STRUCT__entry( 82 - __field(size_t, size) 83 - __field(u32, flags) 84 - __field(struct xe_vm *, vm) 85 - ), 86 - 87 - TP_fast_assign( 88 - __entry->size = bo->size; 89 - __entry->flags = bo->flags; 90 - __entry->vm = bo->vm; 91 - ), 92 - 93 - TP_printk("size=%zu, flags=0x%02x, vm=%p", 94 - __entry->size, __entry->flags, __entry->vm) 95 - ); 96 - 97 - DEFINE_EVENT(xe_bo, xe_bo_cpu_fault, 98 - TP_PROTO(struct xe_bo *bo), 99 - TP_ARGS(bo) 100 - ); 101 - 102 - TRACE_EVENT(xe_bo_move, 103 - TP_PROTO(struct xe_bo *bo, uint32_t new_placement, uint32_t old_placement, 104 - bool move_lacks_source), 105 - TP_ARGS(bo, new_placement, old_placement, move_lacks_source), 106 - TP_STRUCT__entry( 107 - __field(struct xe_bo *, bo) 108 - __field(size_t, size) 109 - __field(u32, new_placement) 110 - __field(u32, old_placement) 111 - __array(char, device_id, 12) 112 - __field(bool, move_lacks_source) 113 - ), 114 - 115 - TP_fast_assign( 116 - __entry->bo = bo; 117 - __entry->size = bo->size; 118 - __entry->new_placement = new_placement; 119 - __entry->old_placement = old_placement; 120 - strscpy(__entry->device_id, dev_name(xe_bo_device(__entry->bo)->drm.dev), 12); 121 - __entry->move_lacks_source = move_lacks_source; 122 - ), 123 - TP_printk("move_lacks_source:%s, migrate object %p [size %zu] from %s to %s device_id:%s", 124 - __entry->move_lacks_source ? "yes" : "no", __entry->bo, __entry->size, 125 - xe_mem_type_to_name[__entry->old_placement], 126 - xe_mem_type_to_name[__entry->new_placement], __entry->device_id) 127 77 ); 128 78 129 79 DECLARE_EVENT_CLASS(xe_exec_queue, ··· 330 384 DEFINE_EVENT(xe_hw_fence, xe_hw_fence_free, 331 385 TP_PROTO(struct xe_hw_fence *fence), 332 386 TP_ARGS(fence) 333 - ); 334 - 335 - DECLARE_EVENT_CLASS(xe_vma, 336 - TP_PROTO(struct xe_vma *vma), 337 - TP_ARGS(vma), 338 - 339 - TP_STRUCT__entry( 340 - __field(struct xe_vma *, vma) 341 - __field(u32, asid) 342 - __field(u64, start) 343 - __field(u64, end) 344 - __field(u64, ptr) 345 - ), 346 - 347 - TP_fast_assign( 348 - __entry->vma = vma; 349 - __entry->asid = xe_vma_vm(vma)->usm.asid; 350 - __entry->start = xe_vma_start(vma); 351 - __entry->end = xe_vma_end(vma) - 1; 352 - __entry->ptr = xe_vma_userptr(vma); 353 - ), 354 - 355 - TP_printk("vma=%p, asid=0x%05x, start=0x%012llx, end=0x%012llx, userptr=0x%012llx,", 356 - __entry->vma, __entry->asid, __entry->start, 357 - __entry->end, __entry->ptr) 358 - ) 359 - 360 - DEFINE_EVENT(xe_vma, xe_vma_flush, 361 - TP_PROTO(struct xe_vma *vma), 362 - TP_ARGS(vma) 363 - ); 364 - 365 - DEFINE_EVENT(xe_vma, xe_vma_pagefault, 366 - TP_PROTO(struct xe_vma *vma), 367 - TP_ARGS(vma) 368 - ); 369 - 370 - DEFINE_EVENT(xe_vma, xe_vma_acc, 371 - TP_PROTO(struct xe_vma *vma), 372 - TP_ARGS(vma) 373 - ); 374 - 375 - DEFINE_EVENT(xe_vma, xe_vma_fail, 376 - TP_PROTO(struct xe_vma *vma), 377 - TP_ARGS(vma) 378 - ); 379 - 380 - DEFINE_EVENT(xe_vma, xe_vma_bind, 381 - TP_PROTO(struct xe_vma *vma), 382 - TP_ARGS(vma) 383 - ); 384 - 385 - DEFINE_EVENT(xe_vma, xe_vma_pf_bind, 386 - TP_PROTO(struct xe_vma *vma), 387 - TP_ARGS(vma) 388 - ); 389 - 390 - DEFINE_EVENT(xe_vma, xe_vma_unbind, 391 - TP_PROTO(struct xe_vma *vma), 392 - TP_ARGS(vma) 393 - ); 394 - 395 - DEFINE_EVENT(xe_vma, xe_vma_userptr_rebind_worker, 396 - TP_PROTO(struct xe_vma *vma), 397 - TP_ARGS(vma) 398 - ); 399 - 400 - DEFINE_EVENT(xe_vma, xe_vma_userptr_rebind_exec, 401 - TP_PROTO(struct xe_vma *vma), 402 - TP_ARGS(vma) 403 - ); 404 - 405 - DEFINE_EVENT(xe_vma, xe_vma_rebind_worker, 406 - TP_PROTO(struct xe_vma *vma), 407 - TP_ARGS(vma) 408 - ); 409 - 410 - DEFINE_EVENT(xe_vma, xe_vma_rebind_exec, 411 - TP_PROTO(struct xe_vma *vma), 412 - TP_ARGS(vma) 413 - ); 414 - 415 - DEFINE_EVENT(xe_vma, xe_vma_userptr_invalidate, 416 - TP_PROTO(struct xe_vma *vma), 417 - TP_ARGS(vma) 418 - ); 419 - 420 - DEFINE_EVENT(xe_vma, xe_vma_invalidate, 421 - TP_PROTO(struct xe_vma *vma), 422 - TP_ARGS(vma) 423 - ); 424 - 425 - DEFINE_EVENT(xe_vma, xe_vma_evict, 426 - TP_PROTO(struct xe_vma *vma), 427 - TP_ARGS(vma) 428 - ); 429 - 430 - DEFINE_EVENT(xe_vma, xe_vma_userptr_invalidate_complete, 431 - TP_PROTO(struct xe_vma *vma), 432 - TP_ARGS(vma) 433 - ); 434 - 435 - DECLARE_EVENT_CLASS(xe_vm, 436 - TP_PROTO(struct xe_vm *vm), 437 - TP_ARGS(vm), 438 - 439 - TP_STRUCT__entry( 440 - __field(struct xe_vm *, vm) 441 - __field(u32, asid) 442 - ), 443 - 444 - TP_fast_assign( 445 - __entry->vm = vm; 446 - __entry->asid = vm->usm.asid; 447 - ), 448 - 449 - TP_printk("vm=%p, asid=0x%05x", __entry->vm, 450 - __entry->asid) 451 - ); 452 - 453 - DEFINE_EVENT(xe_vm, xe_vm_kill, 454 - TP_PROTO(struct xe_vm *vm), 455 - TP_ARGS(vm) 456 - ); 457 - 458 - DEFINE_EVENT(xe_vm, xe_vm_create, 459 - TP_PROTO(struct xe_vm *vm), 460 - TP_ARGS(vm) 461 - ); 462 - 463 - DEFINE_EVENT(xe_vm, xe_vm_free, 464 - TP_PROTO(struct xe_vm *vm), 465 - TP_ARGS(vm) 466 - ); 467 - 468 - DEFINE_EVENT(xe_vm, xe_vm_cpu_bind, 469 - TP_PROTO(struct xe_vm *vm), 470 - TP_ARGS(vm) 471 - ); 472 - 473 - DEFINE_EVENT(xe_vm, xe_vm_restart, 474 - TP_PROTO(struct xe_vm *vm), 475 - TP_ARGS(vm) 476 - ); 477 - 478 - DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_enter, 479 - TP_PROTO(struct xe_vm *vm), 480 - TP_ARGS(vm) 481 - ); 482 - 483 - DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_retry, 484 - TP_PROTO(struct xe_vm *vm), 485 - TP_ARGS(vm) 486 - ); 487 - 488 - DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_exit, 489 - TP_PROTO(struct xe_vm *vm), 490 - TP_ARGS(vm) 491 387 ); 492 388 493 389 /* GuC */
+9
drivers/gpu/drm/xe/xe_trace_bo.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_bo.h" 9 + #endif
+236
drivers/gpu/drm/xe/xe_trace_bo.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_BO_H_) || defined(TRACE_HEADER_MULTI_READ) 10 + #define _XE_TRACE_BO_H_ 11 + 12 + #include <linux/tracepoint.h> 13 + #include <linux/types.h> 14 + 15 + #include "xe_bo.h" 16 + #include "xe_bo_types.h" 17 + #include "xe_vm.h" 18 + 19 + DECLARE_EVENT_CLASS(xe_bo, 20 + TP_PROTO(struct xe_bo *bo), 21 + TP_ARGS(bo), 22 + 23 + TP_STRUCT__entry( 24 + __field(size_t, size) 25 + __field(u32, flags) 26 + __field(struct xe_vm *, vm) 27 + ), 28 + 29 + TP_fast_assign( 30 + __entry->size = bo->size; 31 + __entry->flags = bo->flags; 32 + __entry->vm = bo->vm; 33 + ), 34 + 35 + TP_printk("size=%zu, flags=0x%02x, vm=%p", 36 + __entry->size, __entry->flags, __entry->vm) 37 + ); 38 + 39 + DEFINE_EVENT(xe_bo, xe_bo_cpu_fault, 40 + TP_PROTO(struct xe_bo *bo), 41 + TP_ARGS(bo) 42 + ); 43 + 44 + TRACE_EVENT(xe_bo_move, 45 + TP_PROTO(struct xe_bo *bo, uint32_t new_placement, uint32_t old_placement, 46 + bool move_lacks_source), 47 + TP_ARGS(bo, new_placement, old_placement, move_lacks_source), 48 + TP_STRUCT__entry( 49 + __field(struct xe_bo *, bo) 50 + __field(size_t, size) 51 + __field(u32, new_placement) 52 + __field(u32, old_placement) 53 + __array(char, device_id, 12) 54 + __field(bool, move_lacks_source) 55 + ), 56 + 57 + TP_fast_assign( 58 + __entry->bo = bo; 59 + __entry->size = bo->size; 60 + __entry->new_placement = new_placement; 61 + __entry->old_placement = old_placement; 62 + strscpy(__entry->device_id, dev_name(xe_bo_device(__entry->bo)->drm.dev), 12); 63 + __entry->move_lacks_source = move_lacks_source; 64 + ), 65 + TP_printk("move_lacks_source:%s, migrate object %p [size %zu] from %s to %s device_id:%s", 66 + __entry->move_lacks_source ? "yes" : "no", __entry->bo, __entry->size, 67 + xe_mem_type_to_name[__entry->old_placement], 68 + xe_mem_type_to_name[__entry->new_placement], __entry->device_id) 69 + ); 70 + 71 + DECLARE_EVENT_CLASS(xe_vma, 72 + TP_PROTO(struct xe_vma *vma), 73 + TP_ARGS(vma), 74 + 75 + TP_STRUCT__entry( 76 + __field(struct xe_vma *, vma) 77 + __field(u32, asid) 78 + __field(u64, start) 79 + __field(u64, end) 80 + __field(u64, ptr) 81 + ), 82 + 83 + TP_fast_assign( 84 + __entry->vma = vma; 85 + __entry->asid = xe_vma_vm(vma)->usm.asid; 86 + __entry->start = xe_vma_start(vma); 87 + __entry->end = xe_vma_end(vma) - 1; 88 + __entry->ptr = xe_vma_userptr(vma); 89 + ), 90 + 91 + TP_printk("vma=%p, asid=0x%05x, start=0x%012llx, end=0x%012llx, userptr=0x%012llx,", 92 + __entry->vma, __entry->asid, __entry->start, 93 + __entry->end, __entry->ptr) 94 + ) 95 + 96 + DEFINE_EVENT(xe_vma, xe_vma_flush, 97 + TP_PROTO(struct xe_vma *vma), 98 + TP_ARGS(vma) 99 + ); 100 + 101 + DEFINE_EVENT(xe_vma, xe_vma_pagefault, 102 + TP_PROTO(struct xe_vma *vma), 103 + TP_ARGS(vma) 104 + ); 105 + 106 + DEFINE_EVENT(xe_vma, xe_vma_acc, 107 + TP_PROTO(struct xe_vma *vma), 108 + TP_ARGS(vma) 109 + ); 110 + 111 + DEFINE_EVENT(xe_vma, xe_vma_fail, 112 + TP_PROTO(struct xe_vma *vma), 113 + TP_ARGS(vma) 114 + ); 115 + 116 + DEFINE_EVENT(xe_vma, xe_vma_bind, 117 + TP_PROTO(struct xe_vma *vma), 118 + TP_ARGS(vma) 119 + ); 120 + 121 + DEFINE_EVENT(xe_vma, xe_vma_pf_bind, 122 + TP_PROTO(struct xe_vma *vma), 123 + TP_ARGS(vma) 124 + ); 125 + 126 + DEFINE_EVENT(xe_vma, xe_vma_unbind, 127 + TP_PROTO(struct xe_vma *vma), 128 + TP_ARGS(vma) 129 + ); 130 + 131 + DEFINE_EVENT(xe_vma, xe_vma_userptr_rebind_worker, 132 + TP_PROTO(struct xe_vma *vma), 133 + TP_ARGS(vma) 134 + ); 135 + 136 + DEFINE_EVENT(xe_vma, xe_vma_userptr_rebind_exec, 137 + TP_PROTO(struct xe_vma *vma), 138 + TP_ARGS(vma) 139 + ); 140 + 141 + DEFINE_EVENT(xe_vma, xe_vma_rebind_worker, 142 + TP_PROTO(struct xe_vma *vma), 143 + TP_ARGS(vma) 144 + ); 145 + 146 + DEFINE_EVENT(xe_vma, xe_vma_rebind_exec, 147 + TP_PROTO(struct xe_vma *vma), 148 + TP_ARGS(vma) 149 + ); 150 + 151 + DEFINE_EVENT(xe_vma, xe_vma_userptr_invalidate, 152 + TP_PROTO(struct xe_vma *vma), 153 + TP_ARGS(vma) 154 + ); 155 + 156 + DEFINE_EVENT(xe_vma, xe_vma_invalidate, 157 + TP_PROTO(struct xe_vma *vma), 158 + TP_ARGS(vma) 159 + ); 160 + 161 + DEFINE_EVENT(xe_vma, xe_vma_evict, 162 + TP_PROTO(struct xe_vma *vma), 163 + TP_ARGS(vma) 164 + ); 165 + 166 + DEFINE_EVENT(xe_vma, xe_vma_userptr_invalidate_complete, 167 + TP_PROTO(struct xe_vma *vma), 168 + TP_ARGS(vma) 169 + ); 170 + 171 + DECLARE_EVENT_CLASS(xe_vm, 172 + TP_PROTO(struct xe_vm *vm), 173 + TP_ARGS(vm), 174 + 175 + TP_STRUCT__entry( 176 + __field(struct xe_vm *, vm) 177 + __field(u32, asid) 178 + ), 179 + 180 + TP_fast_assign( 181 + __entry->vm = vm; 182 + __entry->asid = vm->usm.asid; 183 + ), 184 + 185 + TP_printk("vm=%p, asid=0x%05x", __entry->vm, 186 + __entry->asid) 187 + ); 188 + 189 + DEFINE_EVENT(xe_vm, xe_vm_kill, 190 + TP_PROTO(struct xe_vm *vm), 191 + TP_ARGS(vm) 192 + ); 193 + 194 + DEFINE_EVENT(xe_vm, xe_vm_create, 195 + TP_PROTO(struct xe_vm *vm), 196 + TP_ARGS(vm) 197 + ); 198 + 199 + DEFINE_EVENT(xe_vm, xe_vm_free, 200 + TP_PROTO(struct xe_vm *vm), 201 + TP_ARGS(vm) 202 + ); 203 + 204 + DEFINE_EVENT(xe_vm, xe_vm_cpu_bind, 205 + TP_PROTO(struct xe_vm *vm), 206 + TP_ARGS(vm) 207 + ); 208 + 209 + DEFINE_EVENT(xe_vm, xe_vm_restart, 210 + TP_PROTO(struct xe_vm *vm), 211 + TP_ARGS(vm) 212 + ); 213 + 214 + DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_enter, 215 + TP_PROTO(struct xe_vm *vm), 216 + TP_ARGS(vm) 217 + ); 218 + 219 + DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_retry, 220 + TP_PROTO(struct xe_vm *vm), 221 + TP_ARGS(vm) 222 + ); 223 + 224 + DEFINE_EVENT(xe_vm, xe_vm_rebind_worker_exit, 225 + TP_PROTO(struct xe_vm *vm), 226 + TP_ARGS(vm) 227 + ); 228 + 229 + #endif 230 + 231 + /* This part must be outside protection */ 232 + #undef TRACE_INCLUDE_PATH 233 + #undef TRACE_INCLUDE_FILE 234 + #define TRACE_INCLUDE_PATH ../../drivers/gpu/drm/xe 235 + #define TRACE_INCLUDE_FILE xe_trace_bo 236 + #include <trace/define_trace.h>
+1 -1
drivers/gpu/drm/xe/xe_vm.c
··· 36 36 #include "xe_pt.h" 37 37 #include "xe_res_cursor.h" 38 38 #include "xe_sync.h" 39 - #include "xe_trace.h" 39 + #include "xe_trace_bo.h" 40 40 #include "xe_wa.h" 41 41 #include "xe_hmm.h" 42 42