|  | /* SPDX-License-Identifier: GPL-2.0 */ | 
|  | /* | 
|  | * GPU memory trace points | 
|  | * | 
|  | * Copyright (C) 2020 Google, Inc. | 
|  | */ | 
|  |  | 
|  | #undef TRACE_SYSTEM | 
|  | #define TRACE_SYSTEM gpu_mem | 
|  |  | 
|  | #if !defined(_TRACE_GPU_MEM_H) || defined(TRACE_HEADER_MULTI_READ) | 
|  | #define _TRACE_GPU_MEM_H | 
|  |  | 
|  | #include <linux/tracepoint.h> | 
|  |  | 
|  | /* | 
|  | * The gpu_memory_total event indicates that there's an update to either the | 
|  | * global or process total gpu memory counters. | 
|  | * | 
|  | * This event should be emitted whenever the kernel device driver allocates, | 
|  | * frees, imports, unimports memory in the GPU addressable space. | 
|  | * | 
|  | * @gpu_id: This is the gpu id. | 
|  | * | 
|  | * @pid: Put 0 for global total, while positive pid for process total. | 
|  | * | 
|  | * @size: Size of the allocation in bytes. | 
|  | * | 
|  | */ | 
|  | TRACE_EVENT(gpu_mem_total, | 
|  |  | 
|  | TP_PROTO(uint32_t gpu_id, uint32_t pid, uint64_t size), | 
|  |  | 
|  | TP_ARGS(gpu_id, pid, size), | 
|  |  | 
|  | TP_STRUCT__entry( | 
|  | __field(uint32_t, gpu_id) | 
|  | __field(uint32_t, pid) | 
|  | __field(uint64_t, size) | 
|  | ), | 
|  |  | 
|  | TP_fast_assign( | 
|  | __entry->gpu_id = gpu_id; | 
|  | __entry->pid = pid; | 
|  | __entry->size = size; | 
|  | ), | 
|  |  | 
|  | TP_printk("gpu_id=%u pid=%u size=%llu", | 
|  | __entry->gpu_id, | 
|  | __entry->pid, | 
|  | __entry->size) | 
|  | ); | 
|  |  | 
|  | #endif /* _TRACE_GPU_MEM_H */ | 
|  |  | 
|  | /* This part must be outside protection */ | 
|  | #include <trace/define_trace.h> |