ahci: multithreaded irq handling

When AHCI fails to activate multi-MSI mode, but does obtain an exclusive MSI
vector it can activate multithreaded mode.

               +--------+
               |  AHCI  |
               |ata_host|              ahci_multithread_hardirq(irq, host)
               +---+----+
                   |
       +-----------------------+
       |           |           |
  +----v----+ +----v----+ +----v----+
  |ata_port0| |ata_port1| |ata_portN|  ahci_multithread_thread_fn(irq, ap)
  +---------+ +---------+ +---------+

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
3 files changed