• B
    Add hard_irq_disable() · 2d3fbbb3
    Benjamin Herrenschmidt 提交于
    Some architectures, like powerpc, implement lazy disabling of interrupts.
    That means that on those, local_irq_disable() doesn't actually disable
    interrupts on the CPU, but only sets some per CPU flag which cause them to be
    disabled only if an interrupt actually occurs.
    
    However, in some cases, such as stop_machine, we really want interrupts to be
    fully disabled.  For example, I have code using stop machine to do ECC error
    injection, used to verify operations of the ECC hardware, that sort of thing.
    It really needs to make sure that nothing is actually writing to memory while
    the injection happens.  Similar examples can be found in other low level bits
    and pieces.
    
    This patch implements a generic hard_irq_disable() function which is meant to
    be called -after- local_irq_disable() and ensures that interrupts are fully
    disabled on that CPU.  The default implementation is a nop, though powerpc
    does already provide an appropriate one.
    Signed-off-by: NBenjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Rusty Russell <rusty@rustcorp.com.au>
    Cc: Paul Mackerras <paulus@samba.org>
    Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
    2d3fbbb3
interrupt.h 13.2 KB