mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-15 23:14:31 +08:00
8529888070
Using __field_struct for the schib is convenient, but it doesn't appear to let us filter based on any of the schib elements. Specifying the full schid or any element within it results in various errors by the parser. So, expand that out to its component elements, so we can limit the trace to a single device. While we are at it, rename this trace to the function name, so we remember what is being traced instead of an abstract reference to the function control bit of the SCSW. Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Message-Id: <20191016142040.14132-5-farman@linux.ibm.com> Acked-by: Halil Pasic <pasic@linux.ibm.com> Signed-off-by: Cornelia Huck <cohuck@redhat.com>
117 lines
2.4 KiB
C
117 lines
2.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0
|
|
* Tracepoints for vfio_ccw driver
|
|
*
|
|
* Copyright IBM Corp. 2018
|
|
*
|
|
* Author(s): Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
|
|
* Halil Pasic <pasic@linux.vnet.ibm.com>
|
|
*/
|
|
|
|
#include "cio.h"
|
|
|
|
#undef TRACE_SYSTEM
|
|
#define TRACE_SYSTEM vfio_ccw
|
|
|
|
#if !defined(_VFIO_CCW_TRACE_) || defined(TRACE_HEADER_MULTI_READ)
|
|
#define _VFIO_CCW_TRACE_
|
|
|
|
#include <linux/tracepoint.h>
|
|
|
|
TRACE_EVENT(vfio_ccw_fsm_async_request,
|
|
TP_PROTO(struct subchannel_id schid,
|
|
int command,
|
|
int errno),
|
|
TP_ARGS(schid, command, errno),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u8, cssid)
|
|
__field(u8, ssid)
|
|
__field(u16, sch_no)
|
|
__field(int, command)
|
|
__field(int, errno)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->cssid = schid.cssid;
|
|
__entry->ssid = schid.ssid;
|
|
__entry->sch_no = schid.sch_no;
|
|
__entry->command = command;
|
|
__entry->errno = errno;
|
|
),
|
|
|
|
TP_printk("schid=%x.%x.%04x command=0x%x errno=%d",
|
|
__entry->cssid,
|
|
__entry->ssid,
|
|
__entry->sch_no,
|
|
__entry->command,
|
|
__entry->errno)
|
|
);
|
|
|
|
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_fsm_io_request,
|
|
TP_PROTO(int fctl, struct subchannel_id schid, int errno, char *errstr),
|
|
TP_ARGS(fctl, schid, errno, errstr),
|
|
|
|
TP_STRUCT__entry(
|
|
__field(u8, cssid)
|
|
__field(u8, ssid)
|
|
__field(u16, sch_no)
|
|
__field(int, fctl)
|
|
__field(int, errno)
|
|
__field(char*, errstr)
|
|
),
|
|
|
|
TP_fast_assign(
|
|
__entry->cssid = schid.cssid;
|
|
__entry->ssid = schid.ssid;
|
|
__entry->sch_no = schid.sch_no;
|
|
__entry->fctl = fctl;
|
|
__entry->errno = errno;
|
|
__entry->errstr = errstr;
|
|
),
|
|
|
|
TP_printk("schid=%x.%x.%04x fctl=0x%x errno=%d info=%s",
|
|
__entry->cssid,
|
|
__entry->ssid,
|
|
__entry->sch_no,
|
|
__entry->fctl,
|
|
__entry->errno,
|
|
__entry->errstr)
|
|
);
|
|
|
|
#endif /* _VFIO_CCW_TRACE_ */
|
|
|
|
/* This part must be outside protection */
|
|
|
|
#undef TRACE_INCLUDE_PATH
|
|
#define TRACE_INCLUDE_PATH .
|
|
#undef TRACE_INCLUDE_FILE
|
|
#define TRACE_INCLUDE_FILE vfio_ccw_trace
|
|
|
|
#include <trace/define_trace.h>
|