* [PATCH] usb: ehci: report Data Buffer Error in debug mode
@ 2011-10-29 0:07 Vikram Pandita
2011-10-29 0:22 ` Marek Vasut
[not found] ` <1319846874-10106-1-git-send-email-vikram.pandita-l0cyMroinI0@public.gmane.org>
0 siblings, 2 replies; 3+ messages in thread
From: Vikram Pandita @ 2011-10-29 0:07 UTC (permalink / raw)
To: stern-nwvwT67g6+6dFdvTe/nMLpVzexx5G7lz
Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA,
linux-omap-u79uwXL29TY76Z2rM5mHXA, Vikram Pandita
From: Vikram Pandita <vikram.pandita-l0cyMroinI0@public.gmane.org>
Data Buffer Error as per spec section 4.15.1.1.2
results when there is Underrun or Overrun condition.
This error is considered non-fatal and never gets reported.
Its a very good indication on things going wrong at system level,
like running memory at much slower speed.
This is a good error to flag allowing system level corrections.
An issue was found with OMAP4460 board where DDR had to be run
at full speed and this logging helped.
Signed-off-by: Vikram Pandita <vikram.pandita-l0cyMroinI0@public.gmane.org>
---
drivers/usb/host/ehci-q.c | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index 4e4066c..2451361 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -373,6 +373,20 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
retry_xacterr:
if ((token & QTD_STS_ACTIVE) == 0) {
+ /* Report Data Buffer Error: non-fatal but useful */
+ if (token & QTD_STS_DBE) {
+
+ ehci_dbg(ehci,
+ "detected DataBufferErr %s for urb %p ep%d%s len %d, qtd %p [qh %p]\n",
+ (urb->ep->desc.bEndpointAddress & USB_DIR_IN) ?
+ "OVER-RUN" : "UNDER-RUN",
+ urb, urb->ep->desc.bEndpointAddress & 0x0f,
+ (urb->ep->desc.bEndpointAddress & USB_DIR_IN) ? "in" : "out",
+ urb->transfer_buffer_length,
+ qtd, urb->ep->hcpriv);
+
+ }
+
/* on STALL, error, and short reads this urb must
* complete and all its qtds must be recycled.
*/
--
1.7.5.4
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] usb: ehci: report Data Buffer Error in debug mode
2011-10-29 0:07 [PATCH] usb: ehci: report Data Buffer Error in debug mode Vikram Pandita
@ 2011-10-29 0:22 ` Marek Vasut
[not found] ` <1319846874-10106-1-git-send-email-vikram.pandita-l0cyMroinI0@public.gmane.org>
1 sibling, 0 replies; 3+ messages in thread
From: Marek Vasut @ 2011-10-29 0:22 UTC (permalink / raw)
To: Vikram Pandita; +Cc: stern, linux-usb, linux-omap
> From: Vikram Pandita <vikram.pandita@ti.com>
>
> Data Buffer Error as per spec section 4.15.1.1.2
> results when there is Underrun or Overrun condition.
>
> This error is considered non-fatal and never gets reported.
> Its a very good indication on things going wrong at system level,
> like running memory at much slower speed.
>
> This is a good error to flag allowing system level corrections.
>
> An issue was found with OMAP4460 board where DDR had to be run
> at full speed and this logging helped.
>
> Signed-off-by: Vikram Pandita <vikram.pandita@ti.com>
> ---
> drivers/usb/host/ehci-q.c | 14 ++++++++++++++
> 1 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
> index 4e4066c..2451361 100644
> --- a/drivers/usb/host/ehci-q.c
> +++ b/drivers/usb/host/ehci-q.c
> @@ -373,6 +373,20 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh
> *qh) retry_xacterr:
> if ((token & QTD_STS_ACTIVE) == 0) {
>
> + /* Report Data Buffer Error: non-fatal but useful */
> + if (token & QTD_STS_DBE) {
> +
> + ehci_dbg(ehci,
> + "detected DataBufferErr %s for urb %p ep%d%s len
%d, qtd %p [qh
> %p]\n", + (urb->ep->desc.bEndpointAddress &
USB_DIR_IN) ?
> + "OVER-RUN" : "UNDER-RUN",
> + urb, urb->ep->desc.bEndpointAddress & 0x0f,
> + (urb->ep->desc.bEndpointAddress & USB_DIR_IN) ?
"in" : "out",
> + urb->transfer_buffer_length,
> + qtd, urb->ep->hcpriv);
> +
> + }
> +
> /* on STALL, error, and short reads this urb must
> * complete and all its qtds must be recycled.
> */
Looks basically ok to me.
Reviewed-by: Marek Vasut <marek.vasut@gmail.com>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] usb: ehci: report Data Buffer Error in debug mode
[not found] ` <1319846874-10106-1-git-send-email-vikram.pandita-l0cyMroinI0@public.gmane.org>
@ 2011-10-29 17:00 ` Alan Stern
0 siblings, 0 replies; 3+ messages in thread
From: Alan Stern @ 2011-10-29 17:00 UTC (permalink / raw)
To: Vikram Pandita
Cc: linux-usb-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA
On Fri, 28 Oct 2011, Vikram Pandita wrote:
> From: Vikram Pandita <vikram.pandita-l0cyMroinI0@public.gmane.org>
>
> Data Buffer Error as per spec section 4.15.1.1.2
> results when there is Underrun or Overrun condition.
>
> This error is considered non-fatal and never gets reported.
> Its a very good indication on things going wrong at system level,
> like running memory at much slower speed.
>
> This is a good error to flag allowing system level corrections.
>
> An issue was found with OMAP4460 board where DDR had to be run
> at full speed and this logging helped.
Generally okay, but ...
> Signed-off-by: Vikram Pandita <vikram.pandita-l0cyMroinI0@public.gmane.org>
> ---
> drivers/usb/host/ehci-q.c | 14 ++++++++++++++
> 1 files changed, 14 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
> index 4e4066c..2451361 100644
> --- a/drivers/usb/host/ehci-q.c
> +++ b/drivers/usb/host/ehci-q.c
> @@ -373,6 +373,20 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
> retry_xacterr:
> if ((token & QTD_STS_ACTIVE) == 0) {
>
> + /* Report Data Buffer Error: non-fatal but useful */
> + if (token & QTD_STS_DBE) {
> +
> + ehci_dbg(ehci,
> + "detected DataBufferErr %s for urb %p ep%d%s len %d, qtd %p [qh %p]\n",
> + (urb->ep->desc.bEndpointAddress & USB_DIR_IN) ?
> + "OVER-RUN" : "UNDER-RUN",
> + urb, urb->ep->desc.bEndpointAddress & 0x0f,
> + (urb->ep->desc.bEndpointAddress & USB_DIR_IN) ? "in" : "out",
You should use the usb_endpoint_dir_in() routine instead of open-coding
it. (Or, if you prefer, use usb_pipein(urb->pipe).) Similarly, use
usb_endpoint_num().
Also, what point is there in checking the direction twice? Get rid of
the OVER-RUN/UNDER-RUN part of the message; it doesn't add any new
information.
> + urb->transfer_buffer_length,
> + qtd, urb->ep->hcpriv);
> +
Unnecessary blank line here and above.
> + }
> +
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-10-29 17:00 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-10-29 0:07 [PATCH] usb: ehci: report Data Buffer Error in debug mode Vikram Pandita
2011-10-29 0:22 ` Marek Vasut
[not found] ` <1319846874-10106-1-git-send-email-vikram.pandita-l0cyMroinI0@public.gmane.org>
2011-10-29 17:00 ` Alan Stern
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.