• David S. Miller's avatar
    [SPARC64]: Add support for IRQ pre-handlers. · 088dd1f8
    David S. Miller authored
    This allows a PCI controller to shim into IRQ delivery
    so that DMA queues can be drained, if necessary.
    
    If some bus specific code needs to run before an IRQ
    handler is invoked, the bus driver simply needs to setup
    the function pointer in bucket->irq_info->pre_handler and
    the two args bucket->irq_info->pre_handler_arg[12].
    
    The Schizo PCI driver is converted over to use a pre-handler
    for the DMA write-sync processing it needs when a device
    is behind a PCI->PCI bus deeper than the top-level APB
    bridges.
    
    While we're here, clean up all of the action allocation
    and handling.  Now, we allocate the irqaction as part of
    the bucket->irq_info area.  There is an array of 4 irqaction
    (for PCI irq sharing) and a bitmask saying which entries
    are active.
    
    The bucket->irq_info is allocated at build_irq() time, not
    at request_irq() time.  This simplifies request_irq() and
    free_irq() tremendously.
    
    The SMP dynamic IRQ retargetting code got removed in this
    change too.  It was disabled for a few months now, and we
    can resurrect it in the future if we want.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    088dd1f8
pci_sabre.c 50.4 KB