From: David Brownell <david-b@pacbell.net>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Andrew Morton <akpm@linux-foundation.org>,
me@felipebalbi.com, linux-kernel@vger.kernel.org,
linux-input@vger.kernel.org, felipe.balbi@nokia.com,
dmitry.torokhov@gmail.com, sameo@openedhand.com,
tglx@linutronix.de
Subject: Re: lockdep and threaded IRQs (was: ...)
Date: Mon, 2 Mar 2009 15:20:30 -0800 [thread overview]
Message-ID: <200903021520.30826.david-b@pacbell.net> (raw)
In-Reply-To: <1236032722.5330.1675.camel@laptop>
On Monday 02 March 2009, Peter Zijlstra wrote:
> On Mon, 2009-03-02 at 14:10 -0800, David Brownell wrote:
>
> > What's unfortunate is that you prefer not to fix that
> > IRQF_DISABLED bug in lockdep, which you co-"maintain".
> > When running with lockdep, that bug (a) introduces bugs
> > in some drivers and (b) hides bugs in others. You've
> > rejected even a minimal warning fix, to help minimize
> > the amount of time developers waste on (a) and (b).
>
> I've come to the conclusion that the only technically sound solution is
> to do as I proposed today, utterly eliminate !IRQF_DISABLED handlers.
As you announced today. If you truly believe that, then
you should at least submit a warning patch for 2.6.29-rc
("driver X isn't setting IRQF_DISABLED, reimplement!")
with a Documentation/feature-removal-schedule.txt plan
for removing that mechanism. And maybe updating the
handling of IRQF_SHARED at the same time... most shared
IRQs don't want IRQF_DISABLED. And ... surely more,
even just to start phasing out such a longstanding
mechanism.
(Or more likely, start a real LKML discussion on that
specific topic. I suspect it won't complete in time
to merge such a patch with any sort of consensus.)
> Apparently you had enough time to come up with the creative genirq abuse
> of twl4030, I think that with a similar effort you could have
> implemented generic threaded irq stuff like proposed by Thomas.
Actually, I made time to clean that code up a lot;
I didn't come up with that original stuff at all.
Why would you think otherwise, after reading the
copyrights at the top of twl4030-irq.c ??
And when I was doing that cleanup, the Official Plan
was that Thomas' code would be ready for merge into
at least the -next tree soon. I don't know about
you, but stepping all over his work didn't seem like
it would be at all constructive. Having a significant
driver be ready to try using it ... seemed like a
more productive approach.
> > Attacking folk for having to cope with such bugs escalates
> > things beyond "unfortunate". If lockdep is "maintained",
> > your response should be fixing that lockdep bug. Once
> > that's done, all workarounds for that bug can be removed.
>
> I state there is no lockdep bug in this respect. The bug is trying to
> enable interrupts from hardirq context and running code that assumes
> hardirq context from task context.
Well, I state that you're wrong about those points...
Regardless of what either of us states, the truth of
the matter is that there are drivers that don't work
with CONFIG_LOCKDEP and the *only* reason is the code
removed by the (untested) patchlet below: semantics
of irqs change when lockdep is enabled. (That is, your
characterization above is incorrect.) I call that a
lockdep bug; you don't want to accept that label.
Are those incorrect lockdep assumptions really so hard
to fix? Where do they surface? I scanned lockdep.c
briefly, and it talks about "hardirq" in several places.
Is it conflating that with "irqs disabled"? The two
concepts should be distinct.
- Dave
---
kernel/irq/manage.c | 6 ------
1 file changed, 6 deletions(-)
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -816,12 +816,6 @@ int request_irq_quickcheck(unsigned int
"guaranteed on shared IRQs\n",
irq, devname);
-#ifdef CONFIG_LOCKDEP
- /*
- * Lockdep wants atomic interrupt handlers:
- */
- irqflags |= IRQF_DISABLED;
-#endif
/*
* Sanity-check: shared interrupts must pass in a real dev-ID,
* otherwise we'll have trouble later trying to figure out
next prev parent reply other threads:[~2009-03-02 23:20 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-27 19:28 [PATCH 1/2] input: misc: add twl4030-pwrbutton driver Felipe Balbi
2009-02-27 19:28 ` [PATCH 2/2] mfd: twl4030: add twl4030-pwrbutton as our child Felipe Balbi
2009-02-27 20:36 ` Andrew Morton
2009-02-27 21:58 ` David Brownell
2009-02-27 22:09 ` Felipe Balbi
2009-02-27 22:09 ` Felipe Balbi
2009-02-27 22:12 ` Andrew Morton
2009-02-27 23:20 ` David Brownell
2009-02-27 23:20 ` David Brownell
2009-02-27 23:42 ` Andrew Morton
2009-07-22 19:27 ` Trilok Soni
2009-07-22 22:25 ` David Brownell
2009-07-22 22:25 ` David Brownell
2009-02-27 20:33 ` [PATCH 1/2] input: misc: add twl4030-pwrbutton driver Andrew Morton
2009-02-27 20:37 ` Felipe Balbi
2009-02-27 21:50 ` lockdep and threaded IRQs (was: [PATCH 1/2] input: misc: add twl4030-pwrbutton driver) David Brownell
2009-02-27 21:50 ` David Brownell
2009-02-27 22:09 ` Andrew Morton
2009-02-27 23:18 ` lockdep and threaded IRQs (was: ...) David Brownell
2009-02-27 23:18 ` David Brownell
2009-02-27 23:32 ` Andrew Morton
2009-02-28 0:01 ` Andrew Morton
2009-02-28 0:01 ` Andrew Morton
2009-02-28 2:30 ` David Brownell
2009-02-28 2:39 ` Andrew Morton
2009-02-28 4:46 ` David Brownell
2009-02-28 5:12 ` Andrew Morton
2009-02-28 6:17 ` David Brownell
2009-02-28 11:13 ` Thomas Gleixner
2009-02-28 12:16 ` David Brownell
2009-02-28 16:42 ` Thomas Gleixner
2009-02-28 20:02 ` David Brownell
2009-02-28 20:02 ` David Brownell
2009-02-28 20:55 ` Thomas Gleixner
2009-02-28 21:13 ` Thomas Gleixner
2009-02-28 22:37 ` David Brownell
2009-02-28 22:05 ` David Brownell
2009-03-01 9:43 ` Thomas Gleixner
2009-03-01 22:54 ` David Brownell
2009-03-02 13:16 ` Peter Zijlstra
2009-03-02 21:04 ` David Brownell
2009-03-02 21:16 ` Peter Zijlstra
2009-03-02 21:29 ` Andrew Morton
2009-03-02 21:37 ` David Brownell
2009-03-02 21:41 ` Peter Zijlstra
2009-03-02 22:09 ` David Brownell
2009-03-02 22:19 ` Peter Zijlstra
2009-03-02 22:40 ` David Brownell
2009-03-02 22:51 ` Peter Zijlstra
2009-03-02 23:29 ` David Brownell
2009-03-03 7:45 ` Peter Zijlstra
2009-03-02 22:46 ` lockdep and threaded IRQs David Miller
2009-03-02 22:57 ` Andrew Morton
2009-03-02 23:07 ` Peter Zijlstra
2009-03-02 23:02 ` Peter Zijlstra
2009-03-02 23:35 ` lockdep and threaded IRQs (was: ...) Alan Cox
2009-03-01 22:11 ` David Brownell
2009-02-28 11:48 ` lockdep and threaded IRQs Stefan Richter
2009-02-28 20:19 ` David Brownell
2009-02-28 21:10 ` Stefan Richter
2009-03-02 13:16 ` lockdep and threaded IRQs (was: ...) Peter Zijlstra
2009-03-02 22:10 ` David Brownell
2009-03-02 22:25 ` Peter Zijlstra
2009-03-02 23:20 ` David Brownell [this message]
2009-03-02 23:26 ` Ingo Molnar
2009-03-02 23:42 ` David Brownell
2009-03-02 23:53 ` Ingo Molnar
2009-03-03 0:33 ` David Brownell
2009-03-03 0:33 ` David Brownell
2009-03-03 0:44 ` Ingo Molnar
2009-03-03 0:44 ` Ingo Molnar
2009-03-03 2:37 ` David Brownell
2009-03-03 2:37 ` David Brownell
2009-03-03 9:27 ` Peter Zijlstra
2009-03-03 9:45 ` Ingo Molnar
2009-03-03 9:47 ` Alan Cox
2009-03-03 10:03 ` Ingo Molnar
2009-03-03 10:30 ` Alan Cox
2009-03-03 10:39 ` Peter Zijlstra
2009-03-03 10:48 ` Ingo Molnar
2009-03-03 11:13 ` Alan Cox
2009-03-03 11:33 ` Ingo Molnar
2009-03-03 11:19 ` Ingo Molnar
2009-03-18 1:04 ` David Brownell
2009-03-18 2:00 ` David Brownell
2009-03-18 2:14 ` [patch/rfc 0/2] handle_threaded_irq() David Brownell
2009-03-18 2:19 ` [patch/rfc 1/2] GENIRQ: add handle_threaded_irq() flow handler David Brownell
2009-03-18 12:00 ` Felipe Balbi
2009-03-18 18:31 ` David Brownell
2009-03-18 18:32 ` Felipe Balbi
2009-03-18 2:22 ` [patch/rfc 2/2] twl4030: use new " David Brownell
2009-03-03 11:53 ` lockdep and threaded IRQs (was: ...) Thomas Gleixner
2009-03-05 2:49 ` David Brownell
2009-03-05 2:49 ` David Brownell
2009-03-06 14:40 ` Thomas Gleixner
2009-03-18 3:06 ` David Brownell
2009-03-02 23:48 ` David Brownell
2009-03-02 23:48 ` David Brownell
2009-03-02 23:58 ` Ingo Molnar
2009-03-02 23:58 ` Ingo Molnar
2009-03-02 15:13 ` [PATCH] genirq: assert that irq handlers are indeed run in hardirq context Peter Zijlstra
2009-03-02 19:48 ` David Brownell
2009-03-02 22:01 ` [tip:irq/genirq] genirq: assert that irq handlers are indeed running " Peter Zijlstra
2009-03-02 23:15 ` Peter Zijlstra
2009-04-10 7:11 ` Eric Miao
2009-04-10 9:57 ` Thomas Gleixner
2009-02-28 11:20 ` lockdep and threaded IRQs Stefan Richter
2009-02-28 20:10 ` David Brownell
2009-02-28 5:51 ` [PATCH 1/2] input: misc: add twl4030-pwrbutton driver Trilok Soni
2009-02-28 12:05 ` [PATCH] mfd: twl4030: add twl4030-pwrbutton as our child Felipe Balbi
2009-02-28 22:23 ` [PATCH 1/2] input: misc: add twl4030-pwrbutton driver Dmitry Torokhov
2009-03-01 0:30 ` Felipe Balbi
2009-03-01 0:58 ` Dmitry Torokhov
2009-03-01 14:40 ` Felipe Balbi
2009-03-04 9:00 ` Dmitry Torokhov
2009-03-04 10:12 ` Felipe Balbi
2009-03-05 1:38 ` David Brownell
2009-03-05 23:54 ` David Brownell
2009-03-06 9:43 ` Dmitry Torokhov
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=200903021520.30826.david-b@pacbell.net \
--to=david-b@pacbell.net \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=dmitry.torokhov@gmail.com \
--cc=felipe.balbi@nokia.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=me@felipebalbi.com \
--cc=sameo@openedhand.com \
--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 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.