132c28f7eSJesper Dangaard Brouer /* SPDX-License-Identifier: GPL-2.0 */ 232c28f7eSJesper Dangaard Brouer #undef TRACE_SYSTEM 332c28f7eSJesper Dangaard Brouer #define TRACE_SYSTEM page_pool 432c28f7eSJesper Dangaard Brouer 532c28f7eSJesper Dangaard Brouer #if !defined(_TRACE_PAGE_POOL_H) || defined(TRACE_HEADER_MULTI_READ) 632c28f7eSJesper Dangaard Brouer #define _TRACE_PAGE_POOL_H 732c28f7eSJesper Dangaard Brouer 832c28f7eSJesper Dangaard Brouer #include <linux/types.h> 932c28f7eSJesper Dangaard Brouer #include <linux/tracepoint.h> 1032c28f7eSJesper Dangaard Brouer 11832ccf6fSJesper Dangaard Brouer #include <trace/events/mmflags.h> 12*a9ca9f9cSYunsheng Lin #include <net/page_pool/types.h> 1332c28f7eSJesper Dangaard Brouer 147c9e6942SJesper Dangaard Brouer TRACE_EVENT(page_pool_release, 1532c28f7eSJesper Dangaard Brouer 1632c28f7eSJesper Dangaard Brouer TP_PROTO(const struct page_pool *pool, 1732c28f7eSJesper Dangaard Brouer s32 inflight, u32 hold, u32 release), 1832c28f7eSJesper Dangaard Brouer 1932c28f7eSJesper Dangaard Brouer TP_ARGS(pool, inflight, hold, release), 2032c28f7eSJesper Dangaard Brouer 2132c28f7eSJesper Dangaard Brouer TP_STRUCT__entry( 2232c28f7eSJesper Dangaard Brouer __field(const struct page_pool *, pool) 2332c28f7eSJesper Dangaard Brouer __field(s32, inflight) 2432c28f7eSJesper Dangaard Brouer __field(u32, hold) 2532c28f7eSJesper Dangaard Brouer __field(u32, release) 267c9e6942SJesper Dangaard Brouer __field(u64, cnt) 2732c28f7eSJesper Dangaard Brouer ), 2832c28f7eSJesper Dangaard Brouer 2932c28f7eSJesper Dangaard Brouer TP_fast_assign( 3032c28f7eSJesper Dangaard Brouer __entry->pool = pool; 3132c28f7eSJesper Dangaard Brouer __entry->inflight = inflight; 3232c28f7eSJesper Dangaard Brouer __entry->hold = hold; 3332c28f7eSJesper Dangaard Brouer __entry->release = release; 347c9e6942SJesper Dangaard Brouer __entry->cnt = pool->destroy_cnt; 3532c28f7eSJesper Dangaard Brouer ), 3632c28f7eSJesper Dangaard Brouer 377c9e6942SJesper Dangaard Brouer TP_printk("page_pool=%p inflight=%d hold=%u release=%u cnt=%llu", 387c9e6942SJesper Dangaard Brouer __entry->pool, __entry->inflight, __entry->hold, 397c9e6942SJesper Dangaard Brouer __entry->release, __entry->cnt) 4032c28f7eSJesper Dangaard Brouer ); 4132c28f7eSJesper Dangaard Brouer 4232c28f7eSJesper Dangaard Brouer TRACE_EVENT(page_pool_state_release, 4332c28f7eSJesper Dangaard Brouer 4432c28f7eSJesper Dangaard Brouer TP_PROTO(const struct page_pool *pool, 4532c28f7eSJesper Dangaard Brouer const struct page *page, u32 release), 4632c28f7eSJesper Dangaard Brouer 4732c28f7eSJesper Dangaard Brouer TP_ARGS(pool, page, release), 4832c28f7eSJesper Dangaard Brouer 4932c28f7eSJesper Dangaard Brouer TP_STRUCT__entry( 5032c28f7eSJesper Dangaard Brouer __field(const struct page_pool *, pool) 5132c28f7eSJesper Dangaard Brouer __field(const struct page *, page) 5232c28f7eSJesper Dangaard Brouer __field(u32, release) 53832ccf6fSJesper Dangaard Brouer __field(unsigned long, pfn) 5432c28f7eSJesper Dangaard Brouer ), 5532c28f7eSJesper Dangaard Brouer 5632c28f7eSJesper Dangaard Brouer TP_fast_assign( 5732c28f7eSJesper Dangaard Brouer __entry->pool = pool; 5832c28f7eSJesper Dangaard Brouer __entry->page = page; 5932c28f7eSJesper Dangaard Brouer __entry->release = release; 60832ccf6fSJesper Dangaard Brouer __entry->pfn = page_to_pfn(page); 6132c28f7eSJesper Dangaard Brouer ), 6232c28f7eSJesper Dangaard Brouer 6353d884a6SVincent Whitchurch TP_printk("page_pool=%p page=%p pfn=0x%lx release=%u", 64832ccf6fSJesper Dangaard Brouer __entry->pool, __entry->page, __entry->pfn, __entry->release) 6532c28f7eSJesper Dangaard Brouer ); 6632c28f7eSJesper Dangaard Brouer 6732c28f7eSJesper Dangaard Brouer TRACE_EVENT(page_pool_state_hold, 6832c28f7eSJesper Dangaard Brouer 6932c28f7eSJesper Dangaard Brouer TP_PROTO(const struct page_pool *pool, 7032c28f7eSJesper Dangaard Brouer const struct page *page, u32 hold), 7132c28f7eSJesper Dangaard Brouer 7232c28f7eSJesper Dangaard Brouer TP_ARGS(pool, page, hold), 7332c28f7eSJesper Dangaard Brouer 7432c28f7eSJesper Dangaard Brouer TP_STRUCT__entry( 7532c28f7eSJesper Dangaard Brouer __field(const struct page_pool *, pool) 7632c28f7eSJesper Dangaard Brouer __field(const struct page *, page) 7732c28f7eSJesper Dangaard Brouer __field(u32, hold) 78832ccf6fSJesper Dangaard Brouer __field(unsigned long, pfn) 7932c28f7eSJesper Dangaard Brouer ), 8032c28f7eSJesper Dangaard Brouer 8132c28f7eSJesper Dangaard Brouer TP_fast_assign( 8232c28f7eSJesper Dangaard Brouer __entry->pool = pool; 8332c28f7eSJesper Dangaard Brouer __entry->page = page; 8432c28f7eSJesper Dangaard Brouer __entry->hold = hold; 85832ccf6fSJesper Dangaard Brouer __entry->pfn = page_to_pfn(page); 8632c28f7eSJesper Dangaard Brouer ), 8732c28f7eSJesper Dangaard Brouer 8853d884a6SVincent Whitchurch TP_printk("page_pool=%p page=%p pfn=0x%lx hold=%u", 89832ccf6fSJesper Dangaard Brouer __entry->pool, __entry->page, __entry->pfn, __entry->hold) 9032c28f7eSJesper Dangaard Brouer ); 9132c28f7eSJesper Dangaard Brouer 92bc836748SSaeed Mahameed TRACE_EVENT(page_pool_update_nid, 93bc836748SSaeed Mahameed 94bc836748SSaeed Mahameed TP_PROTO(const struct page_pool *pool, int new_nid), 95bc836748SSaeed Mahameed 96bc836748SSaeed Mahameed TP_ARGS(pool, new_nid), 97bc836748SSaeed Mahameed 98bc836748SSaeed Mahameed TP_STRUCT__entry( 99bc836748SSaeed Mahameed __field(const struct page_pool *, pool) 100bc836748SSaeed Mahameed __field(int, pool_nid) 101bc836748SSaeed Mahameed __field(int, new_nid) 102bc836748SSaeed Mahameed ), 103bc836748SSaeed Mahameed 104bc836748SSaeed Mahameed TP_fast_assign( 105bc836748SSaeed Mahameed __entry->pool = pool; 106bc836748SSaeed Mahameed __entry->pool_nid = pool->p.nid; 107bc836748SSaeed Mahameed __entry->new_nid = new_nid; 108bc836748SSaeed Mahameed ), 109bc836748SSaeed Mahameed 110bc836748SSaeed Mahameed TP_printk("page_pool=%p pool_nid=%d new_nid=%d", 111bc836748SSaeed Mahameed __entry->pool, __entry->pool_nid, __entry->new_nid) 112bc836748SSaeed Mahameed ); 113bc836748SSaeed Mahameed 11432c28f7eSJesper Dangaard Brouer #endif /* _TRACE_PAGE_POOL_H */ 11532c28f7eSJesper Dangaard Brouer 11632c28f7eSJesper Dangaard Brouer /* This part must be outside protection */ 11732c28f7eSJesper Dangaard Brouer #include <trace/define_trace.h> 118