Hi, Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> writes: > Hi, > > On 12/29/2016 07:01 PM, Felipe Balbi wrote: >> These three new tracers will help us tie TRBs into URBs by *also* >> looking into URB lifetime. > > I didn't see anything related to TRBs in the patch. > Anything I missed? yes. Ordering of events. Seriously, you ought to compile my xhci-cleanup patches and run with tracers enabled. Here's what I'm talking about: before $subject, we would only see TRBs being queued to HW and completed, etc. After $subject, we see URBs being queued by class drivers, which in turn triggers xHCI driver to prepare TRBs which will be queued to HW. Once a completion IRQ fires, we see TRBs being "dequeued" from HW and URBs being given back. IOW, after $subject we know that a particular TRB (or a set of them) were queued because an URB was queued. We know the size of the URB, a pointer to it, etc. We can actually match urb->transfer_length to sum_of_trb_sizes(). >> Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> >> --- >> drivers/usb/host/xhci-ring.c | 1 + >> drivers/usb/host/xhci-trace.h | 70 +++++++++++++++++++++++++++++++++++++++++++ >> drivers/usb/host/xhci.c | 5 ++++ >> 3 files changed, 76 insertions(+) >> >> diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c >> index 0ee7d358b812..1431e0651e78 100644 >> --- a/drivers/usb/host/xhci-ring.c >> +++ b/drivers/usb/host/xhci-ring.c >> @@ -627,6 +627,7 @@ static void xhci_giveback_urb_in_irq(struct xhci_hcd *xhci, >> usb_hcd_unlink_urb_from_ep(hcd, urb); >> spin_unlock(&xhci->lock); >> usb_hcd_giveback_urb(hcd, urb, status); >> + trace_xhci_urb_giveback(urb); > > There is another trace point in xhci_urb_dequeue(). > > diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c > index b49588f..ee46877 100644 > --- a/drivers/usb/host/xhci.c > +++ b/drivers/usb/host/xhci.c > @@ -1535,6 +1535,7 @@ int xhci_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status) > > usb_hcd_unlink_urb_from_ep(hcd, urb); > spin_unlock_irqrestore(&xhci->lock, flags); > + trace_xhci_urb_giveback(urb); yes, so? I want to know that the URB *was* indeed given back. -- balbi
Attachment:
signature.asc
Description: PGP signature