1282a8e03SRoss Zwisler #undef TRACE_SYSTEM 2282a8e03SRoss Zwisler #define TRACE_SYSTEM fs_dax 3282a8e03SRoss Zwisler 4282a8e03SRoss Zwisler #if !defined(_TRACE_FS_DAX_H) || defined(TRACE_HEADER_MULTI_READ) 5282a8e03SRoss Zwisler #define _TRACE_FS_DAX_H 6282a8e03SRoss Zwisler 7282a8e03SRoss Zwisler #include <linux/tracepoint.h> 8282a8e03SRoss Zwisler 9282a8e03SRoss Zwisler DECLARE_EVENT_CLASS(dax_pmd_fault_class, 10282a8e03SRoss Zwisler TP_PROTO(struct inode *inode, struct vm_area_struct *vma, 11282a8e03SRoss Zwisler unsigned long address, unsigned int flags, pgoff_t pgoff, 12282a8e03SRoss Zwisler pgoff_t max_pgoff, int result), 13282a8e03SRoss Zwisler TP_ARGS(inode, vma, address, flags, pgoff, max_pgoff, result), 14282a8e03SRoss Zwisler TP_STRUCT__entry( 15282a8e03SRoss Zwisler __field(unsigned long, ino) 16282a8e03SRoss Zwisler __field(unsigned long, vm_start) 17282a8e03SRoss Zwisler __field(unsigned long, vm_end) 18282a8e03SRoss Zwisler __field(unsigned long, vm_flags) 19282a8e03SRoss Zwisler __field(unsigned long, address) 20282a8e03SRoss Zwisler __field(pgoff_t, pgoff) 21282a8e03SRoss Zwisler __field(pgoff_t, max_pgoff) 22282a8e03SRoss Zwisler __field(dev_t, dev) 23282a8e03SRoss Zwisler __field(unsigned int, flags) 24282a8e03SRoss Zwisler __field(int, result) 25282a8e03SRoss Zwisler ), 26282a8e03SRoss Zwisler TP_fast_assign( 27282a8e03SRoss Zwisler __entry->dev = inode->i_sb->s_dev; 28282a8e03SRoss Zwisler __entry->ino = inode->i_ino; 29282a8e03SRoss Zwisler __entry->vm_start = vma->vm_start; 30282a8e03SRoss Zwisler __entry->vm_end = vma->vm_end; 31282a8e03SRoss Zwisler __entry->vm_flags = vma->vm_flags; 32282a8e03SRoss Zwisler __entry->address = address; 33282a8e03SRoss Zwisler __entry->flags = flags; 34282a8e03SRoss Zwisler __entry->pgoff = pgoff; 35282a8e03SRoss Zwisler __entry->max_pgoff = max_pgoff; 36282a8e03SRoss Zwisler __entry->result = result; 37282a8e03SRoss Zwisler ), 38282a8e03SRoss Zwisler TP_printk("dev %d:%d ino %#lx %s %s address %#lx vm_start " 39282a8e03SRoss Zwisler "%#lx vm_end %#lx pgoff %#lx max_pgoff %#lx %s", 40282a8e03SRoss Zwisler MAJOR(__entry->dev), 41282a8e03SRoss Zwisler MINOR(__entry->dev), 42282a8e03SRoss Zwisler __entry->ino, 43282a8e03SRoss Zwisler __entry->vm_flags & VM_SHARED ? "shared" : "private", 44282a8e03SRoss Zwisler __print_flags(__entry->flags, "|", FAULT_FLAG_TRACE), 45282a8e03SRoss Zwisler __entry->address, 46282a8e03SRoss Zwisler __entry->vm_start, 47282a8e03SRoss Zwisler __entry->vm_end, 48282a8e03SRoss Zwisler __entry->pgoff, 49282a8e03SRoss Zwisler __entry->max_pgoff, 50282a8e03SRoss Zwisler __print_flags(__entry->result, "|", VM_FAULT_RESULT_TRACE) 51282a8e03SRoss Zwisler ) 52282a8e03SRoss Zwisler ) 53282a8e03SRoss Zwisler 54282a8e03SRoss Zwisler #define DEFINE_PMD_FAULT_EVENT(name) \ 55282a8e03SRoss Zwisler DEFINE_EVENT(dax_pmd_fault_class, name, \ 56282a8e03SRoss Zwisler TP_PROTO(struct inode *inode, struct vm_area_struct *vma, \ 57282a8e03SRoss Zwisler unsigned long address, unsigned int flags, pgoff_t pgoff, \ 58282a8e03SRoss Zwisler pgoff_t max_pgoff, int result), \ 59282a8e03SRoss Zwisler TP_ARGS(inode, vma, address, flags, pgoff, max_pgoff, result)) 60282a8e03SRoss Zwisler 61282a8e03SRoss Zwisler DEFINE_PMD_FAULT_EVENT(dax_pmd_fault); 62282a8e03SRoss Zwisler DEFINE_PMD_FAULT_EVENT(dax_pmd_fault_done); 63282a8e03SRoss Zwisler 64653b2ea3SRoss Zwisler DECLARE_EVENT_CLASS(dax_pmd_load_hole_class, 65653b2ea3SRoss Zwisler TP_PROTO(struct inode *inode, struct vm_area_struct *vma, 66653b2ea3SRoss Zwisler unsigned long address, struct page *zero_page, 67653b2ea3SRoss Zwisler void *radix_entry), 68653b2ea3SRoss Zwisler TP_ARGS(inode, vma, address, zero_page, radix_entry), 69653b2ea3SRoss Zwisler TP_STRUCT__entry( 70653b2ea3SRoss Zwisler __field(unsigned long, ino) 71653b2ea3SRoss Zwisler __field(unsigned long, vm_flags) 72653b2ea3SRoss Zwisler __field(unsigned long, address) 73653b2ea3SRoss Zwisler __field(struct page *, zero_page) 74653b2ea3SRoss Zwisler __field(void *, radix_entry) 75653b2ea3SRoss Zwisler __field(dev_t, dev) 76653b2ea3SRoss Zwisler ), 77653b2ea3SRoss Zwisler TP_fast_assign( 78653b2ea3SRoss Zwisler __entry->dev = inode->i_sb->s_dev; 79653b2ea3SRoss Zwisler __entry->ino = inode->i_ino; 80653b2ea3SRoss Zwisler __entry->vm_flags = vma->vm_flags; 81653b2ea3SRoss Zwisler __entry->address = address; 82653b2ea3SRoss Zwisler __entry->zero_page = zero_page; 83653b2ea3SRoss Zwisler __entry->radix_entry = radix_entry; 84653b2ea3SRoss Zwisler ), 85653b2ea3SRoss Zwisler TP_printk("dev %d:%d ino %#lx %s address %#lx zero_page %p " 86653b2ea3SRoss Zwisler "radix_entry %#lx", 87653b2ea3SRoss Zwisler MAJOR(__entry->dev), 88653b2ea3SRoss Zwisler MINOR(__entry->dev), 89653b2ea3SRoss Zwisler __entry->ino, 90653b2ea3SRoss Zwisler __entry->vm_flags & VM_SHARED ? "shared" : "private", 91653b2ea3SRoss Zwisler __entry->address, 92653b2ea3SRoss Zwisler __entry->zero_page, 93653b2ea3SRoss Zwisler (unsigned long)__entry->radix_entry 94653b2ea3SRoss Zwisler ) 95653b2ea3SRoss Zwisler ) 96653b2ea3SRoss Zwisler 97653b2ea3SRoss Zwisler #define DEFINE_PMD_LOAD_HOLE_EVENT(name) \ 98653b2ea3SRoss Zwisler DEFINE_EVENT(dax_pmd_load_hole_class, name, \ 99653b2ea3SRoss Zwisler TP_PROTO(struct inode *inode, struct vm_area_struct *vma, \ 100653b2ea3SRoss Zwisler unsigned long address, struct page *zero_page, \ 101653b2ea3SRoss Zwisler void *radix_entry), \ 102653b2ea3SRoss Zwisler TP_ARGS(inode, vma, address, zero_page, radix_entry)) 103653b2ea3SRoss Zwisler 104653b2ea3SRoss Zwisler DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole); 105653b2ea3SRoss Zwisler DEFINE_PMD_LOAD_HOLE_EVENT(dax_pmd_load_hole_fallback); 106282a8e03SRoss Zwisler 107282a8e03SRoss Zwisler #endif /* _TRACE_FS_DAX_H */ 108282a8e03SRoss Zwisler 109282a8e03SRoss Zwisler /* This part must be outside protection */ 110282a8e03SRoss Zwisler #include <trace/define_trace.h> 111