• Ingo Molnar's avatar
    [PATCH] generic irq subsystem: core · 653853bc
    Ingo Molnar authored
    The main goal of this patch is to consolidate all the different but still
    fundamentally similar arch/*/kernel/irq.c code into the kernel/irq/ subsystem.
    
    There are 4 new files in the kernel/irq/ directory:
    
     - handle.c: core bits: __do_IRQ() and handle_IRQ_event(),
       callable from arch-specific irq.c code.
    
     - manage.c: the main driver apis
    
     - spurious.c: the handling of buggy interrupt sources.
    
     - autoprobe.c: probing of interrupts - older code but still in use.
    
     - proc.c: /proc/irq/ code.
    
     - internals.h for irq-core-internal interfaces not visible to drivers
       nor arch PIC code.
    
    An architecture enables the generic hardirq code by defining
    CONFIG_GENERIC_HARDIRQS in its arch Kconfig.  People doing this conversion
    should check out the x86/x64/ppc/ppc64 patches for details - the conversion is
    quite straightforward but every converted function (i.e.  every function
    removed from the arch irq.c) _must_ be matched to the generic version and if
    there is any detail that the generic code should do it has to be added to the
    generic code.  All of the currently converted 4 architectures were converted
    like that, and the generic code was extended/fixed along the way.
    
    Other changes related to this patchset:
    
     - clean up the irq include files (linux/irq.h, linux/interrupt.h,
       linux/hardirq.h) and consolidate asm-*/[hard]irq.h. Note, to keep all
       non-touched architectures in an untouched state this consolidation is
       done carefully and strictly under CONFIG_GENERIC_HARDIRQS.
    
       Once the consolidation is done we can do a couple of final cleanups
       to reach the following logical splitup of 3 include files:
    
         linux/interrupt.h: driver-visible APIs and details
         linux/irq.h:       core irq and arch-PIC code, internals
         asm-*/irq.h:       arch PIC and irq delivery details
    
       the following include files will likely vanish:
    
         linux/hardirq.h    merges into linux/irq.h
         asm-*/hardirq.h:   merges into asm-*/irq.h
         asm-*/hw_irq.h:    merges into asm-*/irq.h
    
       Christoph would like to do these once the current wave of
       cleanups gets in.
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    653853bc
internals.h 581 Bytes