On Thu, 30 May 2024 20:16:05 +0000 Mina Almasry <almasrymina@xxxxxxxxxx> wrote: > @@ -42,51 +42,52 @@ TRACE_EVENT(page_pool_release, > TRACE_EVENT(page_pool_state_release, > > TP_PROTO(const struct page_pool *pool, > - const struct page *page, u32 release), > + netmem_ref netmem, u32 release), > > - TP_ARGS(pool, page, release), > + TP_ARGS(pool, netmem, release), > > TP_STRUCT__entry( > __field(const struct page_pool *, pool) > - __field(const struct page *, page) > + __field(netmem_ref, netmem) Why make this of type "netmem_ref" and not just "unsigned long"? > __field(u32, release) > __field(unsigned long, pfn) > ), > > TP_fast_assign( > __entry->pool = pool; > - __entry->page = page; > + __entry->netmem = netmem; You could have this be: __entry->netmem = (__force unsigned long)netmem; > __entry->release = release; > - __entry->pfn = page_to_pfn(page); > + __entry->pfn = netmem_to_pfn(netmem); > ), > > - TP_printk("page_pool=%p page=%p pfn=0x%lx release=%u", > - __entry->pool, __entry->page, __entry->pfn, __entry->release) > + TP_printk("page_pool=%p netmem=%lu pfn=0x%lx release=%u", > + __entry->pool, (__force unsigned long)__entry->netmem, And not have to expose the above text to user space (look at the format file it produces). It being of type "netmem_ref" in the ring buffer is useless. -- Steve > + __entry->pfn, __entry->release) > ); >