All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeremy Fitzhardinge <jeremy@goop.org>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	linux-usb <linux-usb@vger.kernel.org>,
	Ian Jackson <Ian.Jackson@eu.citrix.com>
Subject: Re: Oops in UHCI when encountering "host controller process error"
Date: Mon, 08 Dec 2008 17:04:38 -0800	[thread overview]
Message-ID: <493DC426.8010307@goop.org> (raw)
In-Reply-To: <493DB61F.70403@goop.org>

Jeremy Fitzhardinge wrote:
> Alan Stern wrote:
>> On Thu, 16 Oct 2008, Jeremy Fitzhardinge wrote:
>>
>>  
>>> Looks like this is the relevent detail: "uhci->skelqh[1]->node.next 
>>> is NULL" for all the queues.  Haven't looked into it yet.
>>>     
>>
>> Any news?
>
> The problem went away for a while, but then came back.  I still have 
> no idea why, but I'm back to debugging it.
>
> The most strange thing I'm seeing is this:
>
> uhci_hcd 0000:00:1d.0: irq 29, io base 0x0000bce0
> uhci_alloc_td uhci ffff88002e1a3d58 td ffff88002e105000 dma_handle 
> 4ce2f000
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e106000 handle=4ce36000
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e106080 handle=4ce36080
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e106000 handle=4ce36000
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e106001 
> handle=4ce36001 <<<
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e107000 handle=7e546000
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e107080 handle=7e546080
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e107000 handle=7e546000
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e107001 
> handle=7e546001 <<<
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e108000 handle=7e22d000
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e108080 handle=7e22d080
> uhci_alloc_qh: uhci=ffff88002e1a3d58 qh=ffff88002e108000 handle=7e22d000
> usb usb1: configuration #1 chosen from 1 choice
> uhci_hcd 0000:00:1d.0: host controller process error, something bad 
> happened!
> uhci_hcd 0000:00:1d.0: host controller halted, very bad!
> general protection fault: 0000 [#1] SMP DEBUG_PAGEALLOC
>
>
> For some reason dma_pool_alloc() is returning unaligned, overlapping 
> memory chunks.  That that point everything else is no surprise...
>
> So I'm trying to figure out how the dma pool stuff is malfunctioning, 
> and whether anything we've done is causing it. 

On other runs the allocations turn out OK:

uhci_alloc_td: uhci ffff88002e631b08 td ffff88002e621000 dma_handle 4ce2f000
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622000 handle=4ce36000
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622080 handle=4ce36080
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622100 handle=4ce36100
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622180 handle=4ce36180
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622200 handle=4ce36200
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622280 handle=4ce36280
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622300 handle=4ce36300
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622380 handle=4ce36380
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622400 handle=4ce36400
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622000 handle=4ce36000
uhci_alloc_qh: uhci=ffff88002e631b08 qh=ffff88002e622000 handle=4ce36000


but the controller crashes and the structures seem to have been corrupted:

uhci_hcd 0000:00:1d.0: host controller process error, something bad happened!
uhci_hcd 0000:00:1d.0: host controller halted, very bad!
[lots of WARN_ONs I added about NULL qh->queue.nexts omitted ]
Root-hub state: running   FSBR: 0
HC status
  usbcmd    =     00c0   Maxp64 CF 
  usbstat   =     0020   HCHalted 
  usbint    =     000f
  usbfrnum  =   (0)000
  flbaseadd = 7dd2b000
  sof       =       40
  stat1     =     0080  
  stat2     =     0080  
Most recent frame: 0 (0)   Last ISO frame: 0 (0)
Periodic load table
        0       0       0       0       0       0       0       0
        0       0       0       0       0       0       0       0
        0       0       0       0       0       0       0       0
        0       0       0       0       0       0       0       0
Total: 0, #INT: 0, #ISO: 0
Frame List
Skeleton QHs
- skel_unlink_qh
    [ffff88002e622000] Skel QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
      queue is empty
[ffff88002e621000] link (00000001) e0 Length=0 MaxLen=7ff DT0 EndPt=0 Dev=7f, PI
    last QH not linked to next skeleton!
- skel_iso_qh
    [ffff88002e622080] CTL QH link (00000000) element (00000000)
      Element is NULL (bug?)
qh->queue.next == NULL
    last QH not linked to next skeleton!
- skel_int128_qh
    [ffff88002e622100] CTL QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
qh->queue.next == NULL
- skel_int64_qh
    [ffff88002e622180] CTL QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
qh->queue.next == NULL
- skel_int32_qh
    [ffff88002e622200] CTL QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
qh->queue.next == NULL
- skel_int16_qh
    [ffff88002e622280] CTL QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
qh->queue.next == NULL
- skel_int8_qh
    [ffff88002e622300] CTL QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
qh->queue.next == NULL
- skel_int4_qh
    [ffff88002e622380] Skel QH link (4ce36002) element (00000001)
      queue is empty
- skel_int2_qh
    [ffff88002e622400] Skel QH link (4ce36002) element (00000001)
      queue is empty
- skel_async_qh
    [ffff88002e622000] Skel QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
      queue is empty
[ffff88002e621000] link (00000001) e0 Length=0 MaxLen=7ff DT0 EndPt=0 Dev=7f, PI
    last QH not linked to next skeleton!
- skel_term_qh
    [ffff88002e622000] Skel QH link (4ce36002) element (00000000)
      Element is NULL (bug?)
      queue is empty
[ffff88002e621000] link (00000001) e0 Length=0 MaxLen=7ff DT0 EndPt=0 Dev=7f, PI


Any clues about what this means?  Also, where's the best place to dump 
all the structures before kicking off the hardware to make sure they're 
correct from the outset?

Thanks,
    J

  reply	other threads:[~2008-12-09  1:04 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-10-15 23:42 Oops in UHCI when encountering "host controller process error" Jeremy Fitzhardinge
2008-10-16 14:03 ` Alan Stern
2008-10-16 22:02   ` Jeremy Fitzhardinge
2008-10-16 23:34     ` Alan Stern
2008-10-17  1:00       ` Jeremy Fitzhardinge
2008-10-17 14:58         ` Alan Stern
2008-10-17 15:20           ` Jeremy Fitzhardinge
2008-10-21 20:02         ` Alan Stern
2008-10-21 20:41           ` Jeremy Fitzhardinge
2008-12-09  0:04           ` Jeremy Fitzhardinge
2008-12-09  1:04             ` Jeremy Fitzhardinge [this message]
2008-12-09  2:13               ` Alan Stern
2008-12-09 18:24                 ` Jeremy Fitzhardinge
2008-12-09 18:43                   ` Alan Stern
2008-12-09 22:49                     ` Jeremy Fitzhardinge
2008-12-10 15:10                       ` Alan Stern
2008-12-10 19:15                         ` Jeremy Fitzhardinge

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=493DC426.8010307@goop.org \
    --to=jeremy@goop.org \
    --cc=Ian.Jackson@eu.citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.