Re: [RFC PATCH 2/4] vfio-ccw: Trace the FSM jumptable

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/15/19 3:53 PM, Cornelia Huck wrote:
On Tue, 15 Oct 2019 12:01:12 +0200
Steffen Maier <maier@xxxxxxxxxxxxx> wrote:

On 10/14/19 8:08 PM, Eric Farman wrote:
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@xxxxxxxxxxxxx>
---
   drivers/s390/cio/vfio_ccw_private.h |  1 +
   drivers/s390/cio/vfio_ccw_trace.c   |  1 +
   drivers/s390/cio/vfio_ccw_trace.h   | 26 ++++++++++++++++++++++++++
   3 files changed, 28 insertions(+)

(...)

diff --git a/drivers/s390/cio/vfio_ccw_trace.h b/drivers/s390/cio/vfio_ccw_trace.h
index 2a2937a40124..24a8152acfdf 100644
--- a/drivers/s390/cio/vfio_ccw_trace.h
+++ b/drivers/s390/cio/vfio_ccw_trace.h
@@ -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=%x event=%x",

/sys/kernel/debug/tracing/events](0)# grep -R '%[^%]*x'

Many existing TPs often seem to format hex output with a 0x prefix (either
explicit with 0x%x or implicit with %#x). Since some of your other TPs also
output decimal integer values, I wonder if a distinction would help
unexperienced TP readers.

I generally agree. However, we explicitly don't want to do that for
schid formatting (as it should match the bus id). For event, it might
become relevant should we want to introduce a high number of new events
in the future (currently, there's a grand total of four events.)

Yeah, thanks for clarifying. I meant just state and event, not schid.



+		__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),





--
Mit freundlichen Gruessen / Kind regards
Steffen Maier

Linux on IBM Z Development

https://www.ibm.com/privacy/us/en/
IBM Deutschland Research & Development GmbH
Vorsitzender des Aufsichtsrats: Matthias Hartmann
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux