xhci: show usb device name in xhci urb tracing
authorMathias Nyman <mathias.nyman@linux.intel.com>
Wed, 26 Jun 2024 12:48:16 +0000 (15:48 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jun 2024 14:08:05 +0000 (16:08 +0200)
parsing xhci traces on systems with several xHCI controllers and connected
usb devices is difficult as entries are all interleaved.

showing usb devname in urb tracing reveals both which device, and which
bus/controller the entry is for.

old:
xhci_urb_enqueue: ep2in-bulk: urb 0000000039224498  ...

new:
xhci_urb_enqueue: 3-9.4 ep1in-bulk: urb 0000000013bf21e7 ...

Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20240626124835.1023046-3-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/host/xhci-trace.h

index 5762564b9d73375f6e65ccd05bc9b583f6abaa6f..24405315ffe6d9de943f6db88f1184702705442c 100644 (file)
@@ -250,6 +250,7 @@ DECLARE_EVENT_CLASS(xhci_log_urb,
        TP_PROTO(struct urb *urb),
        TP_ARGS(urb),
        TP_STRUCT__entry(
+               __string(devname, dev_name(&urb->dev->dev))
                __field(void *, urb)
                __field(unsigned int, pipe)
                __field(unsigned int, stream)
@@ -265,6 +266,7 @@ DECLARE_EVENT_CLASS(xhci_log_urb,
                __field(int, slot_id)
        ),
        TP_fast_assign(
+               __assign_str(devname);
                __entry->urb = urb;
                __entry->pipe = urb->pipe;
                __entry->stream = urb->stream_id;
@@ -279,7 +281,8 @@ DECLARE_EVENT_CLASS(xhci_log_urb,
                __entry->type = usb_endpoint_type(&urb->ep->desc);
                __entry->slot_id = urb->dev->slot_id;
        ),
-       TP_printk("ep%d%s-%s: urb %p pipe %u slot %d length %d/%d sgs %d/%d stream %d flags %08x",
+       TP_printk("%s ep%d%s-%s: urb %p pipe %u slot %d length %d/%d sgs %d/%d stream %d flags %08x",
+                       __get_str(devname),
                        __entry->epnum, __entry->dir_in ? "in" : "out",
                        __print_symbolic(__entry->type,
                                   { USB_ENDPOINT_XFER_INT,     "intr" },