OSDN Git Service

vfio-ccw: Rework the io_fctl trace
authorEric Farman <farman@linux.ibm.com>
Wed, 16 Oct 2019 14:20:40 +0000 (16:20 +0200)
committerCornelia Huck <cohuck@redhat.com>
Thu, 17 Oct 2019 09:37:24 +0000 (11:37 +0200)
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>
drivers/s390/cio/vfio_ccw_fsm.c
drivers/s390/cio/vfio_ccw_trace.c
drivers/s390/cio/vfio_ccw_trace.h

index 23648a9..23e61aa 100644 (file)
@@ -318,8 +318,8 @@ static void fsm_io_request(struct vfio_ccw_private *private,
        }
 
 err_out:
-       trace_vfio_ccw_io_fctl(scsw->cmd.fctl, schid,
-                              io_region->ret_code, errstr);
+       trace_vfio_ccw_fsm_io_request(scsw->cmd.fctl, schid,
+                                     io_region->ret_code, errstr);
 }
 
 /*
index 37ecbf8..8c671d2 100644 (file)
@@ -11,4 +11,4 @@
 
 EXPORT_TRACEPOINT_SYMBOL(vfio_ccw_fsm_async_request);
 EXPORT_TRACEPOINT_SYMBOL(vfio_ccw_fsm_event);
-EXPORT_TRACEPOINT_SYMBOL(vfio_ccw_io_fctl);
+EXPORT_TRACEPOINT_SYMBOL(vfio_ccw_fsm_io_request);
index 5f57cef..30162a3 100644 (file)
@@ -73,28 +73,32 @@ TRACE_EVENT(vfio_ccw_fsm_event,
                __entry->event)
 );
 
-TRACE_EVENT(vfio_ccw_io_fctl,
+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_struct(struct subchannel_id, schid)
                __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->schid = schid;
                __entry->errno = errno;
                __entry->errstr = errstr;
        ),
 
-       TP_printk("schid=%x.%x.%04x fctl=%x errno=%d info=%s",
-                 __entry->schid.cssid,
-                 __entry->schid.ssid,
-                 __entry->schid.sch_no,
+       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)