From: Michael Buesch <mb@bu3sch.de>
To: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Threaded interrupt handlers broken?
Date: Mon, 17 Aug 2009 12:23:57 +0200 [thread overview]
Message-ID: <200908171223.57412.mb@bu3sch.de> (raw)
In-Reply-To: <alpine.LFD.2.00.0908162316150.2782@localhost.localdomain>
On Sunday 16 August 2009 23:28:37 Thomas Gleixner wrote:
> On Sun, 16 Aug 2009, Michael Buesch wrote:
> > On Sunday 16 August 2009 22:05:59 Thomas Gleixner wrote:
> > > Hmm. Nothing interesting AFAICT, but it would be really interesting to
> > > find out why the IRQ_DISABLED flag is set.
> > >
> > > Can you add some debug into disable_irq() e.g. WARN_ON(irq ==
> > > BC43_IRQ_NR); so we can see what disables that interrupt.
> >
> > I do not see a warning, if I put this into __disable_irq():
> > WARN_ON(irq == 52);
> > /proc/interrupts shows 52 as IRQ number for b43.
> > And dmesg shows "... irq 52 on host ... mapped to virtual irq 52".
> > So I guess the test is OK and the flag is added by some other means.
> > Maybe by some weird powerpc architecture code?
> >
> > It seems a little bit weird, however, that the WARN_ON does not even trigger
> > on module unload, which as far as I can tell should disable the IRQ line
> > in the free_irq() call (no other shared devices on this IRQ).
>
> free_irq does not call disable_irq().
>
> There are only a few places which set that flag.
>
> dynamic_irq_init() which should not be called in your system
>
> __set_irq_handler() only if a handler gets uninstalled and replaced by
> handle_bad_irq
>
> __disable_irq() which you already excluded
>
> __freq_irq() which should not be called
>
> note_interrupt() which should be visible in dmesg, but we do not see
> such a thing.
>
> IRQ_DISABLED is cleared at even less places:
>
> request_irq() and __enable_irq()
>
> I'm really confused. Can you please add debug into those places and
> provide the output. Also please print desc->status of irq 52 before
> and after calling request_threaded_irq().
>
> Thanks,
>
> tglx
Ok, I added some more debugging code:
http://bu3sch.de/patches/wireless-testing/20090817-1219/patches/001-hack-threaded-irqs.patch
Here's the result:
http://bu3sch.de/misc/dmesg2
Is it possible that the irq_to_desc() in irq_thread() fails and the resulting desc
pointer points to something random? That could probably explain why the bit is set
and why the spinlock is uninitialized. But it would not explain why desc->lock would
still work... Maybe irq_to_desc() returns a descriptor to another irq (!= 52)?
--
Greetings, Michael.
next prev parent reply other threads:[~2009-08-17 10:23 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-16 9:53 Threaded interrupt handlers broken? Michael Buesch
2009-08-16 10:14 ` Michael Buesch
2009-08-16 12:45 ` Michael Buesch
2009-08-16 13:22 ` Thomas Gleixner
2009-08-16 13:46 ` Michael Buesch
2009-08-16 14:25 ` Thomas Gleixner
2009-08-16 17:51 ` Michael Buesch
2009-08-16 20:05 ` Thomas Gleixner
2009-08-16 21:01 ` Michael Buesch
2009-08-16 21:28 ` Thomas Gleixner
2009-08-17 10:23 ` Michael Buesch [this message]
2009-08-17 10:56 ` Thomas Gleixner
2009-08-17 11:03 ` Thomas Gleixner
2009-08-17 11:12 ` Thomas Gleixner
2009-08-17 11:37 ` Michael Buesch
2009-08-17 12:14 ` Thomas Gleixner
2009-08-17 12:30 ` Michael Buesch
2009-09-04 18:55 ` Michael Buesch
2009-09-04 19:05 ` Michael Buesch
2009-09-04 19:35 ` Michael Buesch
2009-09-04 19:37 ` Sebastian Andrzej Siewior
2009-08-16 13:19 ` Thomas Gleixner
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=200908171223.57412.mb@bu3sch.de \
--to=mb@bu3sch.de \
--cc=linux-kernel@vger.kernel.org \
--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