From: Sean <knife@toaster.net>
To: Alan Stern <stern@rowland.harvard.edu>
Cc: Andrew Morton <akpm@linux-foundation.org>,
bugzilla-daemon@bugzilla.kernel.org, linux-media@vger.kernel.org,
USB list <linux-usb@vger.kernel.org>, Ingo Molnar <mingo@elte.hu>,
Thomas Gleixner <tglx@linutronix.de>,
"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [Bugme-new] [Bug 14564] New: capture-example sleeping function called from invalid context at arch/x86/mm/fault.c
Date: Mon, 04 Jan 2010 14:24:15 -0800 [thread overview]
Message-ID: <4B426A8F.2030808@toaster.net> (raw)
In-Reply-To: <Pine.LNX.4.44L0.1001041538140.3180-100000@iolanthe.rowland.org>
Alan Stern wrote:
> ...
>
> All right. Let's try this patch in place of all the others, then.
>
> Alan Stern
>
>
> 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
> @@ -505,6 +505,7 @@ td_fill (struct ohci_hcd *ohci, u32 info
> struct urb_priv *urb_priv = urb->hcpriv;
> int is_iso = info & TD_ISO;
> int hash;
> + volatile struct td * volatile td1, * volatile td2;
>
> // ASSERT (index < urb_priv->length);
>
> @@ -558,11 +559,30 @@ td_fill (struct ohci_hcd *ohci, u32 info
>
> /* hash it for later reverse mapping */
> hash = TD_HASH_FUNC (td->td_dma);
> +
> + td1 = ohci->td_hash[hash];
> + td2 = NULL;
> + if (td1) {
> + td2 = td1->td_hash;
> + if (td2 == td1 || td2 == td) {
> + ohci_err(ohci, "Circular hash: %d %p %p %p\n",
> + hash, td1, td2, td);
> + td2 = td1->td_hash = NULL;
> + }
> + }
> +
> td->td_hash = ohci->td_hash [hash];
> ohci->td_hash [hash] = td;
>
> /* HC might read the TD (or cachelines) right away ... */
> wmb ();
> +
> + if (td1 && td1->td_hash != td2) {
> + ohci_err(ohci, "Hash value changed: %d %p %p %p\n",
> + hash, td1, td2, td);
> + td1->td_hash = (struct td *) td2;
> + }
> +
> td->ed->hwTailP = td->hwNextTD;
> }
>
>
>
Alan,
This last patch seems to do the job. Thanks so much for your help! Where
do I donate/send beer?
Sean
next prev parent reply other threads:[~2010-01-04 22:26 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bug-14564-10286@http.bugzilla.kernel.org/>
2009-11-11 23:21 ` [Bugme-new] [Bug 14564] New: capture-example sleeping function called from invalid context at arch/x86/mm/fault.c Andrew Morton
2009-11-12 16:20 ` Alan Stern
2009-12-03 5:48 ` Sean
2009-12-03 21:03 ` Alan Stern
2009-12-16 23:30 ` Sean
2009-12-17 15:22 ` Alan Stern
2009-12-29 9:19 ` Sean
2009-12-29 19:48 ` Sean
2009-12-29 21:23 ` Alan Stern
2009-12-30 0:37 ` Sean
2009-12-30 3:22 ` Alan Stern
2010-01-02 9:00 ` Sean
2010-01-02 20:43 ` Alan Stern
2010-01-03 1:56 ` Sean
2010-01-03 17:35 ` Alan Stern
2010-01-03 23:47 ` Sean
2010-01-04 16:06 ` Alan Stern
2010-01-04 20:02 ` Sean
2010-01-04 20:48 ` Alan Stern
2010-01-04 22:24 ` Sean [this message]
2010-01-05 2:40 ` Alan Stern
2010-01-05 3:32 ` Sean
2010-01-05 15:11 ` Alan Stern
2010-01-05 20:05 ` Sean
2010-01-05 21:06 ` Alan Stern
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=4B426A8F.2030808@toaster.net \
--to=knife@toaster.net \
--cc=akpm@linux-foundation.org \
--cc=bugzilla-daemon@bugzilla.kernel.org \
--cc=hpa@zytor.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=stern@rowland.harvard.edu \
--cc=tglx@linutronix.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox