• Mike Miller's avatar
    [PATCH] cciss: adds MSI and MSI-X support · fb86a35b
    Mike Miller authored
    This creates a new function, cciss_interrupt_mode called from
    cciss_pci_init.  This function determines what type of interrupt vector to
    use, i.e., MSI, MSI-X, or IO-APIC.
    
    One noticeable difference is changing the interrupt field of the controller
    struct to an array of 4 unsigned ints.  The Smart Array HW is capable of
    generating 4 distinct interrupts depending on the transport method in use
    during operation.  These are:
    
    #define DOORBELL_INT 0
    Used to notify the contoller of configuration updates. We only use
    this feature when in polling mode.
    
    #define PERF_MODE_INT 0
    Used when the controller is in Performant Mode.
    
    #define SIMPLE_MODE_INT 2
    Used when the controller is in Simple Mode (current Linux implementation).
    
    #define MEMQ_INT_MODE 3
    Not used.
    
    When using IO-APIC interrupts these 4 lines are OR'ed together so when any
    one fires an interrupt an is generated.  In MSI or MSI-X mode this hardware
    OR'ing is ignored.  We must register for our interrupt depending on what
    mode the controller is running.  For Linux we use SIMPLE_MODE_INT
    exclusively at this time.  Please consider this for inclusion.
    Signed-off-by: default avatarMike Miller <mike.miller@hp.com>
    Cc: Jens Axboe <axboe@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    fb86a35b
cciss_scsi.c 43.8 KB