• Konrad Rzeszutek Wilk's avatar
    xen/pci: We don't do multiple MSI's. · 884ac297
    Konrad Rzeszutek Wilk authored
    There is no hypercall to setup multiple MSI per PCI device.
    As such with these two new commits:
    -  08261d87
       PCI/MSI: Enable multiple MSIs with pci_enable_msi_block_auto()
    - 5ca72c4f
       AHCI: Support multiple MSIs
    
    we would call the PHYSDEVOP_map_pirq 'nvec' times with the same
    contents of the PCI device. Sander discovered that we would get
    the same PIRQ value 'nvec' times and return said values to the
    caller. That of course meant that the device was configured only
    with one MSI and AHCI would fail with:
    
    ahci 0000:00:11.0: version 3.0
    xen: registering gsi 19 triggering 0 polarity 1
    xen: --> pirq=19 -> irq=19 (gsi=19)
    (XEN) [2013-02-27 19:43:07] IOAPIC[0]: Set PCI routing entry (6-19 -> 0x99 -> IRQ 19 Mode:1 Active:1)
    ahci 0000:00:11.0: AHCI 0001.0200 32 slots 4 ports 6 Gbps 0xf impl SATA mode
    ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part
    ahci: probe of 0000:00:11.0 failed with error -22
    
    That is b/c in ahci_host_activate the second call to
    devm_request_threaded_irq  would return -EINVAL as we passed in
    (on the second run) an IRQ that was never initialized.
    
    CC: stable@vger.kernel.org
    Reported-and-Tested-by: default avatarSander Eikelenboom <linux@eikelenboom.it>
    Signed-off-by: default avatarKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
    884ac297
xen.c 14.2 KB