• Thomas Gleixner's avatar
    powerpc: Eeh: Kill another abuse of irq_desc · b8a9a11b
    Thomas Gleixner authored
    commit 91150af3 (powerpc/eeh: Fix unbalanced enable for IRQ) is
    another brilliant example of trainwreck engineering.
    
    The patch "fixes" the issue of an unbalanced call to irq_enable()
    which causes a prominent warning by checking the disabled state of the
    interrupt line and call conditionally into the core code.
    
    This is wrong in two aspects:
    
    1) The warning is there to tell users, that they need to fix their
       asymetric enable/disable patterns by finding the root cause and
       solving it there.
    
       It's definitely not meant to work around it by conditionally
       calling into the core code depending on the random state of the irq
       line.
    
       Asymetric irq_disable/enable calls are a clear sign of wrong usage
       of the interfaces which have to be cured at the root and not by
       somehow hacking around it.
    
    2) The abuse of core internal data structure instead of using the
       proper interfaces for retrieving the information for the 'hack
       around'
    
       irq_desc is core internal and it's clear enough stated.
    
    Replace at least the irq_desc abuse with the proper functions and add
    a big fat comment why this is absurd and completely wrong.
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Gavin Shan <shangw@linux.vnet.ibm.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: ppc <linuxppc-dev@lists.ozlabs.org>
    Link: http://lkml.kernel.org/r/20140223212736.562906212@linutronix.deSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    b8a9a11b
eeh_driver.c 20.6 KB