From: Justin Piszcz on


On Mon, 29 Mar 2010, Justin Piszcz wrote:

>
>
> On Mon, 29 Mar 2010, Alan Stern wrote:

> For your patch, what does this patch against? It does not apply cleanly
> for 2.6.33.
It also fails against 2.6.34-rc2, can you diff -u and show the patch so
I can patch manually or include a patch against 2.6.33 or 2.6.34-rc2?
Thanks.

>
>>
>> Alan Stern
>>
>>
>> Index: usb-2.6/drivers/usb/host/ohci-hcd.c
>> ===================================================================
>> --- usb-2.6.orig/drivers/usb/host/ohci-hcd.c
>> +++ usb-2.6/drivers/usb/host/ohci-hcd.c
>> @@ -290,6 +290,8 @@ static int ohci_urb_dequeue(struct usb_h
>> */
>> urb_priv = urb->hcpriv;
>> if (urb_priv) {
>> + ohci_info(ohci, "start unlink urb %p, ed %p\n",
>> + urb, urb_priv->ed);
>> if (urb_priv->ed->state == ED_OPER)
>> start_ed_unlink (ohci, urb_priv->ed);
>> }
>> @@ -324,6 +326,9 @@ ohci_endpoint_disable (struct usb_hcd *h
>>
>> if (!ed)
>> return;
>> + ohci_info(ohci, "disable ed %p (#%02x) state %d%s\n",
>> + ed, ep->desc.bEndpointAddress, ed->state,
>> + list_empty(&ed->td_list) ? "" : " (has tds)");
>>
>> rescan:
>> spin_lock_irqsave (&ohci->lock, flags);
>> @@ -770,6 +775,10 @@ static irqreturn_t ohci_irq (struct usb_
>> return IRQ_HANDLED;
>> }
>>
>> + ohci_info(ohci, "int %x enable %x rm_list %p\n", ints,
>> + ohci_readl(ohci, &regs->intrenable),
>> + ohci->ed_rm_list);
>> +
>> /* We only care about interrupts that are enabled */
>> ints &= ohci_readl(ohci, &regs->intrenable);
>>
>>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Alan Stern on
On Mon, 29 Mar 2010, Justin Piszcz wrote:

> bus pci, device 0000:00:0b.0
> OHCI Host Controller
> ohci_hcd
> OHCI 1.0, NO legacy support registers
> control 0x68f RWE RWC HCFS=operational IE PLE CBSR=3
> cmdstatus 0x00000 SOC=0
> intrstatus 0x00000020 FNO
> intrenable 0x8000004e MIE RHSC RD SF WDH
> ed_controlhead 7bef1b90
> hcca frame 0x4657
> fmintvl 0xa7782edf FIT FSMPS=0xa778 FI=0x2edf
> fmremaining 0x80002b76 FRT FR=0x2b76
> periodicstart 0x2a2f
> lsthresh 0x0628
> hub poll timer off
> roothub.a 01000208 POTPGT=1 NPS NDP=8(8)
> roothub.b 00000000 PPCM=0000 DR=0000
> roothub.status 00008000 DRWE
> roothub.portstatus [0] 0x00000100 PPS
> roothub.portstatus [1] 0x00000100 PPS
> roothub.portstatus [2] 0x00000100 PPS
> roothub.portstatus [3] 0x00000100 PPS
> roothub.portstatus [4] 0x00000303 LSDA PPS PES CCS
> roothub.portstatus [5] 0x00000303 LSDA PPS PES CCS
> roothub.portstatus [6] 0x00000100 PPS
> roothub.portstatus [7] 0x00000100 PPS

I don't notice anything suspicious there.

> > At the same time, just to be increase my level of certainty, you should
> > apply the following debugging patch for ohci-hcd. Let's see both the
> > usbmon trace and the dmesg log for the same event. The trace and the
> > debugging patch will generate plenty of output during normal operation,
> > but don't worry about that. Only the part starting from shortly before
> > the mouse quits really matters.
> Yes, I've done this before for a bug in the Intel USB controller (P55) on
> another motherboard.. Should be doable, always funny though how it does not
> happen when you are trying to make it happen.
>
> For your patch, what does this patch against? It does not apply cleanly
> for 2.6.33.

Yes it does. Maybe there's something wrong with the way your email
client extracted the patch from the message.

> It also fails against 2.6.34-rc2, can you diff -u and show the patch so
> I can patch manually or include a patch against 2.6.33 or 2.6.34-rc2?

That _was_ a "diff -u"-style patch.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Justin Piszcz on


On Mon, 29 Mar 2010, Alan Stern wrote:

> On Mon, 29 Mar 2010, Justin Piszcz wrote:
>
> Yes it does. Maybe there's something wrong with the way your email
> client extracted the patch from the message.
You're correct, sorry about that, when it recurs and I have the usbmon
trace output I will send it along.

>
>> It also fails against 2.6.34-rc2, can you diff -u and show the patch so
>> I can patch manually or include a patch against 2.6.33 or 2.6.34-rc2?
>
> That _was_ a "diff -u"-style patch.
>
> Alan Stern
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Justin Piszcz on


On Mon, 29 Mar 2010, Justin Piszcz wrote:

>
>
> On Mon, 29 Mar 2010, Alan Stern wrote:
>
>> On Mon, 29 Mar 2010, Justin Piszcz wrote:
>>
>> Yes it does. Maybe there's something wrong with the way your email
>> client extracted the patch from the message.
> You're correct, sorry about that, when it recurs and I have the usbmon
> trace output I will send it along.
>
>>
>>> It also fails against 2.6.34-rc2, can you diff -u and show the patch so
>>> I can patch manually or include a patch against 2.6.33 or 2.6.34-rc2?
>>
>> That _was_ a "diff -u"-style patch.
>>
>> Alan Stern
>>
>

Hello!

I have all the data you asked for:

1. # cat 0u > /tmp/0u.mon.out
2. The kernel log file.

Also 3.
# date; cat 0u > /tmp/0u_after_disconnect_usb.mon.out
Tue Mar 30 08:50:45 EDT 2010

Here, I ran this, disconnected the mouse and re-connected it.

All files are here:

http://home.comcast.net/~jpiszcz/20100330/0u.mon.out.bz2
http://home.comcast.net/~jpiszcz/20100330/0u_after_disconnect_usb.mon.out.bz2
http://home.comcast.net/~jpiszcz/20100330/kern.log.bz2

Hopefully something can be found!

It has happened again, in addition, this is a LONG outstanding bug since
2006 or 2007, see below research:

URL:
http://forums.linuxmint.com/viewtopic.php?f=55&t=44951&p=259375
DESCRIPTION:
Screen Randomly Freezes
Sometimes the screen just freezes and the cursor will not move, and nothing responds at all. The only way (I have found so far) is to hold down the power button until the whole laptop powers off.
CHIPSET:
00:0b.0 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)
00:0b.1 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)

URL:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=476633
DESCRIPTION:
Debian Bug report logs - #476633
linux-image-2.6.24-1-686: USB mouse hangs system
CHIPSET:
00:0b.0 USB Controller [0c03]: nVidia Corporation MCP51 USB Controller [10de:026d] (rev a2) (prog-if 10 [OHCI])

URL:
https://bugzilla.redhat.com/show_bug.cgi?id=215539
DESCRIPTION:
https://bugzilla.redhat.com/show_bug.cgi?id=215539
CHIPSET:
Bug 215539 - Unpredictable freeze of mouse and/or keyboard on amd64 x2 nvidia chipset (Dell E521)
Aliases:
Summary: Unpredictable freeze of mouse and/or keyboard on amd64 x2 nvidia chipset (Del...
00:0b.0 USB Controller: nVidia Corporation MCP51 USB Controller (rev a3)

A good post here:
Luis Felipe Marzagao 2006-12-04 21:57:16 EST

Hello. This bug is *serious* because it happens with all nforce 430 chipsets.
The problem seems to be with that specifc chipset.

This bug is a duplicate of:
https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=201445

Here is a lot of info about this issue:
http://forums.fedoraforum.org/showthread.php?t=136879&page=1&pp=15
https://launchpad.net/distros/ubuntu/+source/linux-source-2.6.17/+bug/67734
http://forums.us.dell.com/supportforums/board/message?board.id=sw_other&message.id=54328&view=by_date_ascending&page=1



Justin.

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Alan Stern on
On Tue, 30 Mar 2010, Justin Piszcz wrote:

> Hello!
>
> I have all the data you asked for:
>
> 1. # cat 0u > /tmp/0u.mon.out
> 2. The kernel log file.

I prefer to get dmesg output rather than log files. Logging programs
sometimes drop or skip lines. But this was okay.

Also, I'd like to see the contents of your /proc/interrupts. It looks
like the OHCI controller shares an IRQ line with some other device.

> Also 3.
> # date; cat 0u > /tmp/0u_after_disconnect_usb.mon.out
> Tue Mar 30 08:50:45 EDT 2010
>
> Here, I ran this, disconnected the mouse and re-connected it.
>
> All files are here:
>
> http://home.comcast.net/~jpiszcz/20100330/0u.mon.out.bz2
> http://home.comcast.net/~jpiszcz/20100330/0u_after_disconnect_usb.mon.out.bz2
> http://home.comcast.net/~jpiszcz/20100330/kern.log.bz2
>
> Hopefully something can be found!

Well, I'm making progress. Below is a new debugging patch to try in
place of the first one. This time the dmesg log alone will be
sufficient, no need for a usbmon trace. And the output should be a lot
smaller, since the new patch doesn't print something every time an
interrupt occurs, but rather only when you unplug the mouse.

In fact, you might try unplugging the mouse while it still works and
then plugging it back in. The difference between the debugging
messages while everything is working and the same thing after the mouse
fails should be informative.

(By the way, these tests are meant to find out why your Xorg and khubd
processes hang when the mouse fails, not for finding the original cause
behind the mouse failure. That can be addressed later.)

> It has happened again, in addition, this is a LONG outstanding bug since
> 2006 or 2007, see below research:
....

Some of those reports indicate that a BIOS update could fix the
problem. Have you checked your BIOS version?

Alan Stern



Index: usb-2.6/drivers/usb/host/ohci-hcd.c
===================================================================
--- usb-2.6.orig/drivers/usb/host/ohci-hcd.c
+++ usb-2.6/drivers/usb/host/ohci-hcd.c
@@ -292,6 +292,8 @@ static int ohci_urb_dequeue(struct usb_h
if (urb_priv) {
if (urb_priv->ed->state == ED_OPER)
start_ed_unlink (ohci, urb_priv->ed);
+ ohci_info(ohci, "start unlink urb %p, ed %p tick %u\n",
+ urb, urb_priv->ed, urb_priv->ed->tick);
}
} else {
/*
@@ -324,6 +326,9 @@ ohci_endpoint_disable (struct usb_hcd *h

if (!ed)
return;
+ ohci_info(ohci, "disable ed %p (#%02x) state %d%s\n",
+ ed, ep->desc.bEndpointAddress, ed->state,
+ list_empty(&ed->td_list) ? "" : " (has tds)");

rescan:
spin_lock_irqsave (&ohci->lock, flags);
Index: usb-2.6/drivers/usb/host/ohci-q.c
===================================================================
--- usb-2.6.orig/drivers/usb/host/ohci-q.c
+++ usb-2.6/drivers/usb/host/ohci-q.c
@@ -912,6 +912,9 @@ rescan_all:
* frame counter wraps and EDs with partially retired TDs
*/
if (likely (HC_IS_RUNNING(ohci_to_hcd(ohci)->state))) {
+ ohci_info(ohci, "finish_unlinks: tick %u, ed %p %u, %d\n",
+ tick, ed, ed->tick,
+ tick_before(tick, ed->tick));
if (tick_before (tick, ed->tick)) {
skip_ed:
last = &ed->ed_next;
@@ -928,6 +931,8 @@ skip_ed:
TD_MASK;

/* INTR_WDH may need to clean up first */
+ ohci_info(ohci, "dma %llx head %x\n",
+ (unsigned long long) td->td_dma, head);
if (td->td_dma != head) {
if (ed == ohci->ed_to_check)
ohci->ed_to_check = NULL;
@@ -990,6 +995,8 @@ rescan_this:
/* HC may have partly processed this TD */
td_done (ohci, urb, td);
urb_priv->td_cnt++;
+ ohci_info(ohci, "td_cnt %d length %d\n",
+ urb_priv->td_cnt, urb_priv->length);

/* if URB is done, clean up */
if (urb_priv->td_cnt == urb_priv->length) {

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/