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:
Sukadev Bhattiprolu 2018-02-09 19:49:27 -08:00 committed by Michael Ellerman
parent 45ddea8a73
commit 007bb7d6c7
2 changed files with 122 additions and 0 deletions

View File

@ -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>

View File

@ -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