From: Andrew Morton <akpm@linux-foundation.org>
To: james@albanarts.com
Cc: bugzilla-daemon@bugzilla.kernel.org,
bugme-daemon@bugzilla.kernel.org, netdev@vger.kernel.org,
Gary Zambrano <zambrano@broadcom.com>
Subject: Re: [Bugme-new] [Bug 19992] New: b44 + CONFIG_DEBUG_SHIRQ (=y on fedora) fails to resume
Date: Mon, 11 Oct 2010 13:15:39 -0700 [thread overview]
Message-ID: <20101011131539.bbb99afe.akpm@linux-foundation.org> (raw)
In-Reply-To: <bug-19992-10286@https.bugzilla.kernel.org/>
(switched to email. Please respond via emailed reply-to-all, not via the
bugzilla web interface).
On Sun, 10 Oct 2010 16:57:11 GMT
bugzilla-daemon@bugzilla.kernel.org wrote:
> https://bugzilla.kernel.org/show_bug.cgi?id=19992
>
> Summary: b44 + CONFIG_DEBUG_SHIRQ (=y on fedora) fails to
> resume
> Product: Drivers
> Version: 2.5
> Kernel Version: 2.6.36-rc7
> Platform: All
> OS/Version: Linux
> Tree: Mainline
> Status: NEW
> Severity: high
> Priority: P1
> Component: Network
> AssignedTo: drivers_network@kernel-bugs.osdl.org
> ReportedBy: james@albanarts.com
> Regression: Yes
>
>
> b44 network driver causes system to hang on resume when CONFIG_DEBUG_SHIRQ=y.
> I've done some TRACE_RESUME'ing and the following happens:
> * b44_resume() (drivers/net/b44.c) calls request_irq with IRQF_SHARED (after
> freeing it in the suspend function)
> * request_irq() (kernel/irq/manage.c) calls the interrupt handler directly if
> IRQF_SHARED and CONFIG_DEBUG_SHIRQ=y. It says "It's a shared IRQ -- the driver
> ought to be prepared for it to happen immediately, so let's make sure...."
> * b44_interrupt() gets as far as the first br32 and no further:
> istat = br32(bp, B44_ISTAT);
>
> I presume it hasn't yet woken the device up so reading a register somehow fails
> and hangs the system.
>
> If I comment out the code in request_irq() to test the shared irq handler all
> works fine.
>
> I'm guessing either the b44 driver shouldn't be freeing/requesting irqs in
> suspend/resume functions, or should be resetting the hardware first so that the
> test handler call doesn't fail, but I don't know enough about why it is freeing
> the irq across suspend to be confident fixing it.
>
> This has been like this for a while (2.6.34 at least). Suspend used to work on
> fedora with this hardware so I think this is a regression. I'm happy to test
> any patches.
Thanks. Yup, if the driver/device isn't ready to accept an IRQ when
request_irq() is called then there might be a problem should a real
interrupt happen very shortly after request_irq() is called.
The code looks OK to me so perhaps it is indeed some weird hardware
problem. Maybe a little delay after the ssb_bus_powerup() is needed?
next parent reply other threads:[~2010-10-11 20:16 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <bug-19992-10286@https.bugzilla.kernel.org/>
2010-10-11 20:15 ` Andrew Morton [this message]
2010-10-11 23:26 ` [Bugme-new] [Bug 19992] New: b44 + CONFIG_DEBUG_SHIRQ (=y on fedora) fails to resume James Hogan
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=20101011131539.bbb99afe.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=bugme-daemon@bugzilla.kernel.org \
--cc=bugzilla-daemon@bugzilla.kernel.org \
--cc=james@albanarts.com \
--cc=netdev@vger.kernel.org \
--cc=zambrano@broadcom.com \
/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.