18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
28c2ecf20Sopenharmony_ci/*
38c2ecf20Sopenharmony_ci * VFIO PCI mmap/mmap_fault tracepoints
48c2ecf20Sopenharmony_ci *
58c2ecf20Sopenharmony_ci * Copyright (C) 2018 IBM Corp.  All rights reserved.
68c2ecf20Sopenharmony_ci *     Author: Alexey Kardashevskiy <aik@ozlabs.ru>
78c2ecf20Sopenharmony_ci */
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_ci#undef TRACE_SYSTEM
108c2ecf20Sopenharmony_ci#define TRACE_SYSTEM vfio_pci
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci#if !defined(_TRACE_VFIO_PCI_H) || defined(TRACE_HEADER_MULTI_READ)
138c2ecf20Sopenharmony_ci#define _TRACE_VFIO_PCI_H
148c2ecf20Sopenharmony_ci
158c2ecf20Sopenharmony_ci#include <linux/tracepoint.h>
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciTRACE_EVENT(vfio_pci_nvgpu_mmap_fault,
188c2ecf20Sopenharmony_ci	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
198c2ecf20Sopenharmony_ci			vm_fault_t ret),
208c2ecf20Sopenharmony_ci	TP_ARGS(pdev, hpa, ua, ret),
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
238c2ecf20Sopenharmony_ci		__field(const char *, name)
248c2ecf20Sopenharmony_ci		__field(unsigned long, hpa)
258c2ecf20Sopenharmony_ci		__field(unsigned long, ua)
268c2ecf20Sopenharmony_ci		__field(int, ret)
278c2ecf20Sopenharmony_ci	),
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci	TP_fast_assign(
308c2ecf20Sopenharmony_ci		__entry->name = dev_name(&pdev->dev),
318c2ecf20Sopenharmony_ci		__entry->hpa = hpa;
328c2ecf20Sopenharmony_ci		__entry->ua = ua;
338c2ecf20Sopenharmony_ci		__entry->ret = ret;
348c2ecf20Sopenharmony_ci	),
358c2ecf20Sopenharmony_ci
368c2ecf20Sopenharmony_ci	TP_printk("%s: %lx -> %lx ret=%d", __entry->name, __entry->hpa,
378c2ecf20Sopenharmony_ci			__entry->ua, __entry->ret)
388c2ecf20Sopenharmony_ci);
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ciTRACE_EVENT(vfio_pci_nvgpu_mmap,
418c2ecf20Sopenharmony_ci	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
428c2ecf20Sopenharmony_ci			unsigned long size, int ret),
438c2ecf20Sopenharmony_ci	TP_ARGS(pdev, hpa, ua, size, ret),
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
468c2ecf20Sopenharmony_ci		__field(const char *, name)
478c2ecf20Sopenharmony_ci		__field(unsigned long, hpa)
488c2ecf20Sopenharmony_ci		__field(unsigned long, ua)
498c2ecf20Sopenharmony_ci		__field(unsigned long, size)
508c2ecf20Sopenharmony_ci		__field(int, ret)
518c2ecf20Sopenharmony_ci	),
528c2ecf20Sopenharmony_ci
538c2ecf20Sopenharmony_ci	TP_fast_assign(
548c2ecf20Sopenharmony_ci		__entry->name = dev_name(&pdev->dev),
558c2ecf20Sopenharmony_ci		__entry->hpa = hpa;
568c2ecf20Sopenharmony_ci		__entry->ua = ua;
578c2ecf20Sopenharmony_ci		__entry->size = size;
588c2ecf20Sopenharmony_ci		__entry->ret = ret;
598c2ecf20Sopenharmony_ci	),
608c2ecf20Sopenharmony_ci
618c2ecf20Sopenharmony_ci	TP_printk("%s: %lx -> %lx size=%lx ret=%d", __entry->name, __entry->hpa,
628c2ecf20Sopenharmony_ci			__entry->ua, __entry->size, __entry->ret)
638c2ecf20Sopenharmony_ci);
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ciTRACE_EVENT(vfio_pci_npu2_mmap,
668c2ecf20Sopenharmony_ci	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
678c2ecf20Sopenharmony_ci			unsigned long size, int ret),
688c2ecf20Sopenharmony_ci	TP_ARGS(pdev, hpa, ua, size, ret),
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ci	TP_STRUCT__entry(
718c2ecf20Sopenharmony_ci		__field(const char *, name)
728c2ecf20Sopenharmony_ci		__field(unsigned long, hpa)
738c2ecf20Sopenharmony_ci		__field(unsigned long, ua)
748c2ecf20Sopenharmony_ci		__field(unsigned long, size)
758c2ecf20Sopenharmony_ci		__field(int, ret)
768c2ecf20Sopenharmony_ci	),
778c2ecf20Sopenharmony_ci
788c2ecf20Sopenharmony_ci	TP_fast_assign(
798c2ecf20Sopenharmony_ci		__entry->name = dev_name(&pdev->dev),
808c2ecf20Sopenharmony_ci		__entry->hpa = hpa;
818c2ecf20Sopenharmony_ci		__entry->ua = ua;
828c2ecf20Sopenharmony_ci		__entry->size = size;
838c2ecf20Sopenharmony_ci		__entry->ret = ret;
848c2ecf20Sopenharmony_ci	),
858c2ecf20Sopenharmony_ci
868c2ecf20Sopenharmony_ci	TP_printk("%s: %lx -> %lx size=%lx ret=%d", __entry->name, __entry->hpa,
878c2ecf20Sopenharmony_ci			__entry->ua, __entry->size, __entry->ret)
888c2ecf20Sopenharmony_ci);
898c2ecf20Sopenharmony_ci
908c2ecf20Sopenharmony_ci#endif /* _TRACE_VFIO_PCI_H */
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_PATH
938c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_PATH ../../drivers/vfio/pci
948c2ecf20Sopenharmony_ci#undef TRACE_INCLUDE_FILE
958c2ecf20Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci/* This part must be outside protection */
988c2ecf20Sopenharmony_ci#include <trace/define_trace.h>
99