Re: mutex vs. local irqs (Was: 2.6.18 -mm merge plans)




* David Woodhouse <dwmw2@xxxxxxxxxxxxx> wrote:

On Thu, 2006-06-08 at 10:31 +1000, Benjamin Herrenschmidt wrote:
I still don't think where is the suckage in just not hard-enabling in
the mutex debug code...

If the mutex debugging code is hard-enabling interrupts before
init_IRQ() ever got called, that's just broken. Fixing that can hardly
be called 'suckage'.

to quote Andrew:

--------------->
Nonsense. mutex_lock() can sleep. Sleeping will enable interrupts.
Therefore, hence, ergo ipso facto mutex_lock() can enable interrupts. QED,
that's it.

But now, because some broken piece of hardware is coming out of
reset/firmware asserting an interrupt we need to change the rules to be
"mutex_lock() must preserve local interrupts if the lock is uncontended".
Ditto down(), down_read() and down_write().

And why does this bizarre restriction upon the implementation of our
locking primtives exist? Because of your broken PIC and because of our
inability to sort out the early boot code. And because the early boot code
has this implicit knowledge that the locks will be uncontended, else we're
toast.

We're doing mutex_lock(), down(), down_read() and down_write() with local
interrupts disabled, which is a bug. We have explicit code in there to
*disable* our runtime debugging checks because we know about this bug but
don't know how to fix it.

I call that sucky.

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



Relevant Pages

  • Re: Contiki developer needs help on mouse programming !
    ... this bug but it is not supposed to happen on a IIgs (well, ... posted so the bug shouldn't show up. ... The last line of Mouse Tech note #4 says, "The Apple IIgs does not have this ... increment $0402 on those interrupts. ...
    (comp.sys.apple2.programmer)
  • Re: Realtime Preemption, 2.6.12, Beginners Guide?
    ... > configuration, but it was a bug, and this patch fixes it. ... because timer interrupts should always occur ... but there's another side-effect of the ACPI-idle bug: ... send the line "unsubscribe linux-kernel" in ...
    (Linux-Kernel)
  • Re: [PATCH] USB: fix deadlock in HCD code
    ... OHCI irq routine was invoked with interrupts enabled, ... That bug has already been fixed in 2.6.25. ... containing this commit, ... in ohci-hcd and printing an error message if ...
    (Linux-Kernel)
  • Re: [PATCH] USB: fix deadlock in HCD code
    ... OHCI irq routine was invoked with interrupts enabled, ... That bug has already been fixed in 2.6.25. ... containing this commit, ... in ohci-hcd and printing an error message if ...
    (Linux-Kernel)
  • Re: mutex vs. local irqs (Was: 2.6.18 -mm merge plans)
    ... Therefore, hence, ergo ipso facto mutex_lockcan enable interrupts. ... inability to sort out the early boot code. ... declaring the disabling of __might_sleepwarnings to be sucky too, ...
    (Linux-Kernel)