• Jiri Slaby's avatar
    TTY: simserial, remove support of shared interrupts · 964105b5
    Jiri Slaby authored
    It never worked there. The ISR was never written for that kind of
    stuff. So remove all that crap with a hash of linked lists and pass
    the pointer directly to the ISR.
    
    BTW this answers the question there:
      * I don't know exactly why they don't use the dev_id opaque data
      * pointer instead of this extra lookup table
    
    -> Because they thought they will support more devices bound to a
    single interrupt w/o IRQF_SHARED. They would need exactly the hash
    there.
    
    What I don't understand is rebinding of the interrupt in the shutdown
    path. They perhaps meant to do just synchronize_irq? In any case, this
    is all gone and free_irq there properly.
    
    By removing the hash we save some bits (exactly NR_IRQS * 8 bytes of
    .bss and over a kilo of .text):
    before:
       text    data     bss     dec     hex filename
      19600     320    8227   28147    6df3 ../a/ia64/arch/ia64/hp/sim/simserial.o
    after:
       text    data     bss     dec     hex filename
      18568     320      28   18916    49e4 ../a/ia64/arch/ia64/hp/sim/simserial.o
    
    Note that a shared interrupt could not work too. request_irq requires
    data parameter to be non-NULL. So the whole IRQ_T exercise was
    pointless.
    
    Finally, this helps us remove another two members of async_struct :).
    Signed-off-by: default avatarJiri Slaby <jslaby@suse.cz>
    Cc: Tony Luck <tony.luck@intel.com>
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    964105b5
simserial.c 21.7 KB