Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1581137

Re: [PATCH 1/6] usb: xhci: add xhci_log_cmd trace events

From Felipe Balbi <felipe.balbi@linux.intel.com>
Newsgroups linux.kernel
Subject Re: [PATCH 1/6] usb: xhci: add xhci_log_cmd trace events
Date 2017-02-15 10:00 +0100
Message-ID <tb3Bn-678-17@gated-at.bofh.it> (permalink)
References <taXFD-1Hw-3@gated-at.bofh.it> <taXFE-1Hw-13@gated-at.bofh.it> <tb2Fk-5kr-11@gated-at.bofh.it> <tb38m-5Vs-19@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


[Multipart message — attachments visible in raw view] - view raw

Hi,

Lu Baolu <baolu.lu@linux.intel.com> writes:
>> Lu Baolu <baolu.lu@linux.intel.com> writes:
>>> diff --git a/drivers/usb/host/xhci-trace.h b/drivers/usb/host/xhci-trace.h
>>> index 1ac2cdf..c31eeaf 100644
>>> --- a/drivers/usb/host/xhci-trace.h
>>> +++ b/drivers/usb/host/xhci-trace.h
>>> @@ -285,6 +285,96 @@ DEFINE_EVENT(xhci_log_urb, xhci_urb_dequeue,
>>>  	TP_ARGS(urb)
>>>  );
>>>  
>>> +DECLARE_EVENT_CLASS(xhci_log_cmd,
>>> +	TP_PROTO(struct xhci_command *cmd),
>>> +	TP_ARGS(cmd),
>>> +	TP_STRUCT__entry(
>>> +		__field(struct xhci_command *, cmd)
>>> +		__field(struct xhci_container_ctx *, in_ctx)
>>> +		__field(union xhci_trb *, cmd_trb)
>>> +		__field(int, slot_id)
>>> +		__field(int, status)
>>> +		__field(int, type)
>>> +	),
>>> +	TP_fast_assign(
>>> +		__entry->cmd = cmd;
>>> +		__entry->in_ctx = cmd->in_ctx;
>>> +		__entry->cmd_trb = cmd->command_trb;
>>> +		__entry->slot_id = cmd->slot_id;
>>> +		__entry->status = cmd->status;
>>> +		__entry->type = TRB_FIELD_TO_TYPE(le32_to_cpu(cmd->command_trb->generic.field[3]))
>>> +	),
>>> +	TP_printk("cmd @%p: %s: in_ctx=@%p, slot_id=%d, cmd_trb=@%p, status=%d",
>>> +		__entry->cmd, xhci_trb_type_string(__entry->type),
>>> +		__entry->in_ctx, __entry->slot_id, __entry->cmd_trb,
>>> +		__entry->status
>>> +	)
>>> +);
>> we already have a generic TRB tracer that decodes every single TRB. What
>> is this bringing that the previous doesn't provide?
>
> This tracer traces the life cycle of a command. It gives,
>
> 1) Which function started an xhci command?
> 2) What was name of that command?
> 3) Did hardware respond to it, or timed out?
> 4) If hardware responded, what was the execution result?
> 5) If timed out, did 'abort command ring operation' abort it successfully?
> 6) Was the command structure freed at last?

We already have all that, AFAICT. Command is enqueued, then an event
triggers for command completion, then we look at results. The only thing
missing for completeness is slot/EP context tracers (which I've pointed
you to) so we can see what changes each command cause to the different
contexts.

Frankly, I don't think printing out context pointers brings
anything. What can you do with that address? :-p Same goes for cmd
pointer, it brings nothing; gives no insight into the problem
whatsoever.

We certainly need to know which command was enqueued, the slot, etc. But
addresses... not so sure.

>> BTW, I also have
>> ready Slot and EP context tracers, I didn't send before because I
>> already had quite a large series pending for Mathias :-p
>
> Sorry for the duplication.

no need to apologize, you didn't know :-)

-- 
balbi

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH 1/6] usb: xhci: add xhci_log_cmd trace events Lu Baolu <baolu.lu@linux.intel.com> - 2017-02-15 03:40 +0100
  Re: [PATCH 1/6] usb: xhci: add xhci_log_cmd trace events Felipe Balbi <felipe.balbi@linux.intel.com> - 2017-02-15 09:00 +0100
    Re: [PATCH 1/6] usb: xhci: add xhci_log_cmd trace events Lu Baolu <baolu.lu@linux.intel.com> - 2017-02-15 09:30 +0100
      Re: [PATCH 1/6] usb: xhci: add xhci_log_cmd trace events Felipe Balbi <felipe.balbi@linux.intel.com> - 2017-02-15 10:00 +0100
        Re: [PATCH 1/6] usb: xhci: add xhci_log_cmd trace events Lu Baolu <baolu.lu@linux.intel.com> - 2017-02-15 10:30 +0100

csiph-web