vfio-ccw: Trace the FSM jumptable
It would be nice if we could track the sequence of events within vfio-ccw, based on the state of the device/FSM and our calling sequence within it. So let's add a simple trace here so we can watch the states change as things go, and allow it to be folded into the rest of the other cio traces. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <20191016142040.14132-3-farman@linux.ibm.com> Acked-by: Halil Pasic <pasic@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
parent
7af52cca6f
commit
970ebeb848
@ -135,6 +135,7 @@ extern fsm_func_t *vfio_ccw_jumptable[NR_VFIO_CCW_STATES][NR_VFIO_CCW_EVENTS];
|
||||
static inline void vfio_ccw_fsm_event(struct vfio_ccw_private *private,
|
||||
int event)
|
||||
{
|
||||
trace_vfio_ccw_fsm_event(private->sch->schid, private->state, event);
|
||||
vfio_ccw_jumptable[private->state][event](private, event);
|
||||
}
|
||||
|
||||
|
@ -9,4 +9,5 @@
|
||||
#define CREATE_TRACE_POINTS
|
||||
#include "vfio_ccw_trace.h"
|
||||
|
||||
EXPORT_TRACEPOINT_SYMBOL(vfio_ccw_fsm_event);
|
||||
EXPORT_TRACEPOINT_SYMBOL(vfio_ccw_io_fctl);
|
||||
|
@ -17,6 +17,32 @@
|
||||
|
||||
#include <linux/tracepoint.h>
|
||||
|
||||
TRACE_EVENT(vfio_ccw_fsm_event,
|
||||
TP_PROTO(struct subchannel_id schid, int state, int event),
|
||||
TP_ARGS(schid, state, event),
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(u8, cssid)
|
||||
__field(u8, ssid)
|
||||
__field(u16, schno)
|
||||
__field(int, state)
|
||||
__field(int, event)
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->cssid = schid.cssid;
|
||||
__entry->ssid = schid.ssid;
|
||||
__entry->schno = schid.sch_no;
|
||||
__entry->state = state;
|
||||
__entry->event = event;
|
||||
),
|
||||
|
||||
TP_printk("schid=%x.%x.%04x state=%d event=%d",
|
||||
__entry->cssid, __entry->ssid, __entry->schno,
|
||||
__entry->state,
|
||||
__entry->event)
|
||||
);
|
||||
|
||||
TRACE_EVENT(vfio_ccw_io_fctl,
|
||||
TP_PROTO(int fctl, struct subchannel_id schid, int errno, char *errstr),
|
||||
TP_ARGS(fctl, schid, errno, errstr),
|
||||
|
Loading…
Reference in New Issue
Block a user