162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * VFIO PCI mmap/mmap_fault tracepoints
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2018 IBM Corp.  All rights reserved.
662306a36Sopenharmony_ci *     Author: Alexey Kardashevskiy <aik@ozlabs.ru>
762306a36Sopenharmony_ci */
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#undef TRACE_SYSTEM
1062306a36Sopenharmony_ci#define TRACE_SYSTEM vfio_pci
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#if !defined(_TRACE_VFIO_PCI_H) || defined(TRACE_HEADER_MULTI_READ)
1362306a36Sopenharmony_ci#define _TRACE_VFIO_PCI_H
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#include <linux/tracepoint.h>
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciTRACE_EVENT(vfio_pci_nvgpu_mmap_fault,
1862306a36Sopenharmony_ci	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
1962306a36Sopenharmony_ci			vm_fault_t ret),
2062306a36Sopenharmony_ci	TP_ARGS(pdev, hpa, ua, ret),
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ci	TP_STRUCT__entry(
2362306a36Sopenharmony_ci		__field(const char *, name)
2462306a36Sopenharmony_ci		__field(unsigned long, hpa)
2562306a36Sopenharmony_ci		__field(unsigned long, ua)
2662306a36Sopenharmony_ci		__field(int, ret)
2762306a36Sopenharmony_ci	),
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci	TP_fast_assign(
3062306a36Sopenharmony_ci		__entry->name = dev_name(&pdev->dev),
3162306a36Sopenharmony_ci		__entry->hpa = hpa;
3262306a36Sopenharmony_ci		__entry->ua = ua;
3362306a36Sopenharmony_ci		__entry->ret = ret;
3462306a36Sopenharmony_ci	),
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci	TP_printk("%s: %lx -> %lx ret=%d", __entry->name, __entry->hpa,
3762306a36Sopenharmony_ci			__entry->ua, __entry->ret)
3862306a36Sopenharmony_ci);
3962306a36Sopenharmony_ci
4062306a36Sopenharmony_ciTRACE_EVENT(vfio_pci_nvgpu_mmap,
4162306a36Sopenharmony_ci	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
4262306a36Sopenharmony_ci			unsigned long size, int ret),
4362306a36Sopenharmony_ci	TP_ARGS(pdev, hpa, ua, size, ret),
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci	TP_STRUCT__entry(
4662306a36Sopenharmony_ci		__field(const char *, name)
4762306a36Sopenharmony_ci		__field(unsigned long, hpa)
4862306a36Sopenharmony_ci		__field(unsigned long, ua)
4962306a36Sopenharmony_ci		__field(unsigned long, size)
5062306a36Sopenharmony_ci		__field(int, ret)
5162306a36Sopenharmony_ci	),
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ci	TP_fast_assign(
5462306a36Sopenharmony_ci		__entry->name = dev_name(&pdev->dev),
5562306a36Sopenharmony_ci		__entry->hpa = hpa;
5662306a36Sopenharmony_ci		__entry->ua = ua;
5762306a36Sopenharmony_ci		__entry->size = size;
5862306a36Sopenharmony_ci		__entry->ret = ret;
5962306a36Sopenharmony_ci	),
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci	TP_printk("%s: %lx -> %lx size=%lx ret=%d", __entry->name, __entry->hpa,
6262306a36Sopenharmony_ci			__entry->ua, __entry->size, __entry->ret)
6362306a36Sopenharmony_ci);
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ciTRACE_EVENT(vfio_pci_npu2_mmap,
6662306a36Sopenharmony_ci	TP_PROTO(struct pci_dev *pdev, unsigned long hpa, unsigned long ua,
6762306a36Sopenharmony_ci			unsigned long size, int ret),
6862306a36Sopenharmony_ci	TP_ARGS(pdev, hpa, ua, size, ret),
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci	TP_STRUCT__entry(
7162306a36Sopenharmony_ci		__field(const char *, name)
7262306a36Sopenharmony_ci		__field(unsigned long, hpa)
7362306a36Sopenharmony_ci		__field(unsigned long, ua)
7462306a36Sopenharmony_ci		__field(unsigned long, size)
7562306a36Sopenharmony_ci		__field(int, ret)
7662306a36Sopenharmony_ci	),
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci	TP_fast_assign(
7962306a36Sopenharmony_ci		__entry->name = dev_name(&pdev->dev),
8062306a36Sopenharmony_ci		__entry->hpa = hpa;
8162306a36Sopenharmony_ci		__entry->ua = ua;
8262306a36Sopenharmony_ci		__entry->size = size;
8362306a36Sopenharmony_ci		__entry->ret = ret;
8462306a36Sopenharmony_ci	),
8562306a36Sopenharmony_ci
8662306a36Sopenharmony_ci	TP_printk("%s: %lx -> %lx size=%lx ret=%d", __entry->name, __entry->hpa,
8762306a36Sopenharmony_ci			__entry->ua, __entry->size, __entry->ret)
8862306a36Sopenharmony_ci);
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci#endif /* _TRACE_VFIO_PCI_H */
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
9362306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH ../../drivers/vfio/pci
9462306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
9562306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci/* This part must be outside protection */
9862306a36Sopenharmony_ci#include <trace/define_trace.h>
99