1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * VFIO PCI mmap/mmap_fault tracepoints
4 *
5 * Copyright (C) 2018 IBM Corp.  All rights reserved.
6 *     Author: Alexey Kardashevskiy <aik@ozlabs.ru>
7 */
8
9#undef TRACE_SYSTEM
10#define TRACE_SYSTEM vfio_pci
11
12#if !defined(_TRACE_VFIO_PCI_H) || defined(TRACE_HEADER_MULTI_READ)
13#define _TRACE_VFIO_PCI_H
14
15#include <linux/tracepoint.h>
16
17TRACE_EVENT(vfio_pci_nvgpu_mmap_fault,
18	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
19			vm_fault_t ret),
20	TP_ARGS(pdev, hpa, ua, ret),
21
22	TP_STRUCT__entry(
23		__field(const char *, name)
24		__field(unsigned long, hpa)
25		__field(unsigned long, ua)
26		__field(int, ret)
27	),
28
29	TP_fast_assign(
30		__entry->name = dev_name(&pdev->dev),
31		__entry->hpa = hpa;
32		__entry->ua = ua;
33		__entry->ret = ret;
34	),
35
36	TP_printk("%s: %lx -> %lx ret=%d", __entry->name, __entry->hpa,
37			__entry->ua, __entry->ret)
38);
39
40TRACE_EVENT(vfio_pci_nvgpu_mmap,
41	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
42			unsigned long size, int ret),
43	TP_ARGS(pdev, hpa, ua, size, ret),
44
45	TP_STRUCT__entry(
46		__field(const char *, name)
47		__field(unsigned long, hpa)
48		__field(unsigned long, ua)
49		__field(unsigned long, size)
50		__field(int, ret)
51	),
52
53	TP_fast_assign(
54		__entry->name = dev_name(&pdev->dev),
55		__entry->hpa = hpa;
56		__entry->ua = ua;
57		__entry->size = size;
58		__entry->ret = ret;
59	),
60
61	TP_printk("%s: %lx -> %lx size=%lx ret=%d", __entry->name, __entry->hpa,
62			__entry->ua, __entry->size, __entry->ret)
63);
64
65TRACE_EVENT(vfio_pci_npu2_mmap,
66	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
67			unsigned long size, int ret),
68	TP_ARGS(pdev, hpa, ua, size, ret),
69
70	TP_STRUCT__entry(
71		__field(const char *, name)
72		__field(unsigned long, hpa)
73		__field(unsigned long, ua)
74		__field(unsigned long, size)
75		__field(int, ret)
76	),
77
78	TP_fast_assign(
79		__entry->name = dev_name(&pdev->dev),
80		__entry->hpa = hpa;
81		__entry->ua = ua;
82		__entry->size = size;
83		__entry->ret = ret;
84	),
85
86	TP_printk("%s: %lx -> %lx size=%lx ret=%d", __entry->name, __entry->hpa,
87			__entry->ua, __entry->size, __entry->ret)
88);
89
90#endif /* _TRACE_VFIO_PCI_H */
91
92#undef TRACE_INCLUDE_PATH
93#define TRACE_INCLUDE_PATH ../../drivers/vfio/pci
94#undef TRACE_INCLUDE_FILE
95#define TRACE_INCLUDE_FILE trace
96
97/* This part must be outside protection */
98#include <trace/define_trace.h>
99