ocxl: Add new kernel traces
Add specific kernel traces which provide information on mmu notifier and on pages range. Signed-off-by: Christophe Lombard <clombard@linux.vnet.ibm.com> Acked-by: Frederic Barrat <fbarrat@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20201125155013.39955-6-clombard@linux.vnet.ibm.com
This commit is contained in:
parent
5f686eea4b
commit
98f5559a43
|
@ -499,6 +499,7 @@ static void invalidate_range(struct mmu_notifier *mn,
|
|||
unsigned long addr, pid, page_size = PAGE_SIZE;
|
||||
|
||||
pid = mm->context.id;
|
||||
trace_ocxl_mmu_notifier_range(start, end, pid);
|
||||
|
||||
spin_lock(&link->atsd_lock);
|
||||
for (addr = start; addr < end; addr += page_size)
|
||||
|
@ -590,6 +591,7 @@ int ocxl_link_add_pe(void *link_handle, int pasid, u32 pidr, u32 tidr,
|
|||
/* Use MMIO registers for the TLB Invalidate
|
||||
* operations.
|
||||
*/
|
||||
trace_ocxl_init_mmu_notifier(pasid, mm->context.id);
|
||||
mmu_notifier_register(&pe_data->mmu_notifier, mm);
|
||||
}
|
||||
}
|
||||
|
@ -725,6 +727,8 @@ int ocxl_link_remove_pe(void *link_handle, int pasid)
|
|||
} else {
|
||||
if (pe_data->mm) {
|
||||
if (link->arva) {
|
||||
trace_ocxl_release_mmu_notifier(pasid,
|
||||
pe_data->mm->context.id);
|
||||
mmu_notifier_unregister(&pe_data->mmu_notifier,
|
||||
pe_data->mm);
|
||||
spin_lock(&link->atsd_lock);
|
||||
|
|
|
@ -8,6 +8,70 @@
|
|||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
|
||||
TRACE_EVENT(ocxl_mmu_notifier_range,
|
||||
TP_PROTO(unsigned long start, unsigned long end, unsigned long pidr),
|
||||
TP_ARGS(start, end, pidr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned long, start)
|
||||
__field(unsigned long, end)
|
||||
__field(unsigned long, pidr)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->start = start;
|
||||
__entry->end = end;
|
||||
__entry->pidr = pidr;
|
||||
),
|
||||
|
||||
TP_printk("start=0x%lx end=0x%lx pidr=0x%lx",
|
||||
__entry->start,
|
||||
__entry->end,
|
||||
__entry->pidr
|
||||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ocxl_init_mmu_notifier,
|
||||
TP_PROTO(int pasid, unsigned long pidr),
|
||||
TP_ARGS(pasid, pidr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(int, pasid)
|
||||
__field(unsigned long, pidr)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->pasid = pasid;
|
||||
__entry->pidr = pidr;
|
||||
),
|
||||
|
||||
TP_printk("pasid=%d, pidr=0x%lx",
|
||||
__entry->pasid,
|
||||
__entry->pidr
|
||||
)
|
||||
);
|
||||
|
||||
TRACE_EVENT(ocxl_release_mmu_notifier,
|
||||
TP_PROTO(int pasid, unsigned long pidr),
|
||||
TP_ARGS(pasid, pidr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(int, pasid)
|
||||
__field(unsigned long, pidr)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->pasid = pasid;
|
||||
__entry->pidr = pidr;
|
||||
),
|
||||
|
||||
TP_printk("pasid=%d, pidr=0x%lx",
|
||||
__entry->pasid,
|
||||
__entry->pidr
|
||||
)
|
||||
);
|
||||
|
||||
DECLARE_EVENT_CLASS(ocxl_context,
|
||||
TP_PROTO(pid_t pid, void *spa, int pasid, u32 pidr, u32 tidr),
|
||||
TP_ARGS(pid, spa, pasid, pidr, tidr),
|
||||
|
|
Loading…
Reference in New Issue