powerpc/vas: Add a couple of trace points
Add a couple of trace points in the VAS driver Signed-off-by: Sukadev Bhattiprolu <sukadev@linux.vnet.ibm.com> [mpe: Add SPDX tag to new header] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
45ddea8a73
commit
007bb7d6c7
|
@ -0,0 +1,113 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
|
||||
#undef TRACE_SYSTEM
|
||||
#define TRACE_SYSTEM vas
|
||||
|
||||
#if !defined(_VAS_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||
|
||||
#define _VAS_TRACE_H
|
||||
#include <linux/tracepoint.h>
|
||||
#include <linux/sched.h>
|
||||
#include <asm/vas.h>
|
||||
|
||||
TRACE_EVENT( vas_rx_win_open,
|
||||
|
||||
TP_PROTO(struct task_struct *tsk,
|
||||
int vasid,
|
||||
int cop,
|
||||
struct vas_rx_win_attr *rxattr),
|
||||
|
||||
TP_ARGS(tsk, vasid, cop, rxattr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(struct task_struct *, tsk)
|
||||
__field(int, pid)
|
||||
__field(int, cop)
|
||||
__field(int, vasid)
|
||||
__field(struct vas_rx_win_attr *, rxattr)
|
||||
__field(int, lnotify_lpid)
|
||||
__field(int, lnotify_pid)
|
||||
__field(int, lnotify_tid)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->pid = tsk->pid;
|
||||
__entry->vasid = vasid;
|
||||
__entry->cop = cop;
|
||||
__entry->lnotify_lpid = rxattr->lnotify_lpid;
|
||||
__entry->lnotify_pid = rxattr->lnotify_pid;
|
||||
__entry->lnotify_tid = rxattr->lnotify_tid;
|
||||
),
|
||||
|
||||
TP_printk("pid=%d, vasid=%d, cop=%d, lpid=%d, pid=%d, tid=%d",
|
||||
__entry->pid, __entry->vasid, __entry->cop,
|
||||
__entry->lnotify_lpid, __entry->lnotify_pid,
|
||||
__entry->lnotify_tid)
|
||||
);
|
||||
|
||||
TRACE_EVENT( vas_tx_win_open,
|
||||
|
||||
TP_PROTO(struct task_struct *tsk,
|
||||
int vasid,
|
||||
int cop,
|
||||
struct vas_tx_win_attr *txattr),
|
||||
|
||||
TP_ARGS(tsk, vasid, cop, txattr),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(struct task_struct *, tsk)
|
||||
__field(int, pid)
|
||||
__field(int, cop)
|
||||
__field(int, vasid)
|
||||
__field(struct vas_tx_win_attr *, txattr)
|
||||
__field(int, lpid)
|
||||
__field(int, pidr)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->pid = tsk->pid;
|
||||
__entry->vasid = vasid;
|
||||
__entry->cop = cop;
|
||||
__entry->lpid = txattr->lpid;
|
||||
__entry->pidr = txattr->pidr;
|
||||
),
|
||||
|
||||
TP_printk("pid=%d, vasid=%d, cop=%d, lpid=%d, pidr=%d",
|
||||
__entry->pid, __entry->vasid, __entry->cop,
|
||||
__entry->lpid, __entry->pidr)
|
||||
);
|
||||
|
||||
TRACE_EVENT( vas_paste_crb,
|
||||
|
||||
TP_PROTO(struct task_struct *tsk,
|
||||
struct vas_window *win),
|
||||
|
||||
TP_ARGS(tsk, win),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(struct task_struct *, tsk)
|
||||
__field(struct vas_window *, win)
|
||||
__field(int, pid)
|
||||
__field(int, vasid)
|
||||
__field(int, winid)
|
||||
__field(unsigned long, paste_kaddr)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->pid = tsk->pid;
|
||||
__entry->vasid = win->vinst->vas_id;
|
||||
__entry->winid = win->winid;
|
||||
__entry->paste_kaddr = (unsigned long)win->paste_kaddr
|
||||
),
|
||||
|
||||
TP_printk("pid=%d, vasid=%d, winid=%d, paste_kaddr=0x%016lx\n",
|
||||
__entry->pid, __entry->vasid, __entry->winid,
|
||||
__entry->paste_kaddr)
|
||||
);
|
||||
|
||||
#endif /* _VAS_TRACE_H */
|
||||
|
||||
#undef TRACE_INCLUDE_PATH
|
||||
#define TRACE_INCLUDE_PATH ../../arch/powerpc/platforms/powernv
|
||||
#define TRACE_INCLUDE_FILE vas-trace
|
||||
#include <trace/define_trace.h>
|
|
@ -21,6 +21,9 @@
|
|||
#include "vas.h"
|
||||
#include "copy-paste.h"
|
||||
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "vas-trace.h"
|
||||
|
||||
/*
|
||||
* Compute the paste address region for the window @window using the
|
||||
* ->paste_base_addr and ->paste_win_id_shift we got from device tree.
|
||||
|
@ -880,6 +883,8 @@ struct vas_window *vas_rx_win_open(int vasid, enum vas_cop_type cop,
|
|||
struct vas_winctx winctx;
|
||||
struct vas_instance *vinst;
|
||||
|
||||
trace_vas_rx_win_open(current, vasid, cop, rxattr);
|
||||
|
||||
if (!rx_win_args_valid(cop, rxattr))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
|
@ -1008,6 +1013,8 @@ struct vas_window *vas_tx_win_open(int vasid, enum vas_cop_type cop,
|
|||
struct vas_winctx winctx;
|
||||
struct vas_instance *vinst;
|
||||
|
||||
trace_vas_tx_win_open(current, vasid, cop, attr);
|
||||
|
||||
if (!tx_win_args_valid(cop, attr))
|
||||
return ERR_PTR(-EINVAL);
|
||||
|
||||
|
@ -1100,6 +1107,8 @@ int vas_paste_crb(struct vas_window *txwin, int offset, bool re)
|
|||
void *addr;
|
||||
uint64_t val;
|
||||
|
||||
trace_vas_paste_crb(current, txwin);
|
||||
|
||||
/*
|
||||
* Only NX windows are supported for now and hardware assumes
|
||||
* report-enable flag is set for NX windows. Ensure software
|
||||
|
|
Loading…
Reference in New Issue