162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 or BSD-3-Clause */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Copyright(c) 2017 Intel Corporation.
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#if !defined(__HFI1_TRACE_MMU_H) || defined(TRACE_HEADER_MULTI_READ)
762306a36Sopenharmony_ci#define __HFI1_TRACE_MMU_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/tracepoint.h>
1062306a36Sopenharmony_ci#include <linux/trace_seq.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ci#include "hfi.h"
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#undef TRACE_SYSTEM
1562306a36Sopenharmony_ci#define TRACE_SYSTEM hfi1_mmu
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciDECLARE_EVENT_CLASS(hfi1_mmu_rb_template,
1862306a36Sopenharmony_ci		    TP_PROTO(struct mmu_rb_node *node),
1962306a36Sopenharmony_ci		    TP_ARGS(node),
2062306a36Sopenharmony_ci		    TP_STRUCT__entry(__field(unsigned long, addr)
2162306a36Sopenharmony_ci				     __field(unsigned long, len)
2262306a36Sopenharmony_ci				     __field(unsigned int, refcount)
2362306a36Sopenharmony_ci			    ),
2462306a36Sopenharmony_ci		    TP_fast_assign(__entry->addr = node->addr;
2562306a36Sopenharmony_ci				   __entry->len = node->len;
2662306a36Sopenharmony_ci				   __entry->refcount = kref_read(&node->refcount);
2762306a36Sopenharmony_ci			    ),
2862306a36Sopenharmony_ci		    TP_printk("MMU node addr 0x%lx, len %lu, refcount %u",
2962306a36Sopenharmony_ci			      __entry->addr,
3062306a36Sopenharmony_ci			      __entry->len,
3162306a36Sopenharmony_ci			      __entry->refcount
3262306a36Sopenharmony_ci			    )
3362306a36Sopenharmony_ci);
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ciDEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_rb_insert,
3662306a36Sopenharmony_ci	     TP_PROTO(struct mmu_rb_node *node),
3762306a36Sopenharmony_ci	     TP_ARGS(node));
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ciTRACE_EVENT(hfi1_mmu_rb_search,
4062306a36Sopenharmony_ci	    TP_PROTO(unsigned long addr, unsigned long len),
4162306a36Sopenharmony_ci	    TP_ARGS(addr, len),
4262306a36Sopenharmony_ci	    TP_STRUCT__entry(__field(unsigned long, addr)
4362306a36Sopenharmony_ci			     __field(unsigned long, len)
4462306a36Sopenharmony_ci		    ),
4562306a36Sopenharmony_ci	    TP_fast_assign(__entry->addr = addr;
4662306a36Sopenharmony_ci			   __entry->len = len;
4762306a36Sopenharmony_ci		    ),
4862306a36Sopenharmony_ci	    TP_printk("MMU node addr 0x%lx, len %lu",
4962306a36Sopenharmony_ci		      __entry->addr,
5062306a36Sopenharmony_ci		      __entry->len
5162306a36Sopenharmony_ci		    )
5262306a36Sopenharmony_ci);
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ciDEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_mem_invalidate,
5562306a36Sopenharmony_ci	     TP_PROTO(struct mmu_rb_node *node),
5662306a36Sopenharmony_ci	     TP_ARGS(node));
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ciDEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_rb_evict,
5962306a36Sopenharmony_ci	     TP_PROTO(struct mmu_rb_node *node),
6062306a36Sopenharmony_ci	     TP_ARGS(node));
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ciDEFINE_EVENT(hfi1_mmu_rb_template, hfi1_mmu_release_node,
6362306a36Sopenharmony_ci	     TP_PROTO(struct mmu_rb_node *node),
6462306a36Sopenharmony_ci	     TP_ARGS(node));
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci#endif /* __HFI1_TRACE_RC_H */
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_ci#undef TRACE_INCLUDE_PATH
6962306a36Sopenharmony_ci#undef TRACE_INCLUDE_FILE
7062306a36Sopenharmony_ci#define TRACE_INCLUDE_PATH .
7162306a36Sopenharmony_ci#define TRACE_INCLUDE_FILE trace_mmu
7262306a36Sopenharmony_ci#include <trace/define_trace.h>
73