linux/arch
Konrad Rzeszutek Wilk f8ac697423 xen/pci: We don't do multiple MSI's.
commit 884ac2978a upstream.

There is no hypercall to setup multiple MSI per PCI device.
As such with these two new commits:
-  08261d87f7
   PCI/MSI: Enable multiple MSIs with pci_enable_msi_block_auto()
- 5ca72c4f7c
   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.

Reported-and-Tested-by: Sander Eikelenboom <linux@eikelenboom.it>
Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2013-03-14 11:29:41 -07:00
..
alpha alpha: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:54 +09:00
arm ARM: fix scheduling while atomic warning in alignment handling code 2013-03-14 11:29:41 -07:00
avr32 avr32: fix nop compile fails from system.h split up 2012-04-04 08:23:44 -07:00
blackfin blackfin: fix ifdef fustercluck in mach-bf538/boards/ezkit.c 2012-04-26 14:46:51 -04:00
c6x irq: Kill pointless irqd_to_hw export 2012-04-10 22:39:17 -06:00
cris CRIS: fix I/O macros 2013-01-11 09:07:17 -08:00
frv frv: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:54 +09:00
h8300 h8300: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:53 +09:00
hexagon hexagon: add missing cpu.h include 2012-04-23 12:57:24 -05:00
ia64 ia64: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:53 +09:00
m32r m32r: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:55 +09:00
m68k m68k: fix sigset_t accessor functions 2012-11-26 11:37:46 -08:00
microblaze microblaze: Do not select GENERIC_GPIO by default 2012-06-10 00:36:05 +09:00
mips MIPS: Fix poweroff failure when HOTPLUG_CPU configured. 2013-01-17 08:50:42 -08:00
mn10300 mn10300: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:54 +09:00
openrisc Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
parisc Purge existing TLB entries in set_pte_at and ptep_set_wrprotect 2013-02-28 06:59:05 -08:00
powerpc powerpc/kexec: Disable hard IRQ before kexec 2013-02-28 06:59:04 -08:00
s390 s390/kvm: Fix store status for ACRS/FPRS 2013-02-28 06:59:01 -08:00
score score: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:55 +09:00
sh sh: Fix FDPIC binary loader 2013-01-21 11:45:14 -08:00
sparc sparc: huge_ptep_set_* functions need to call set_huge_pte_at() 2013-01-11 09:06:59 -08:00
tile arch/tile: avoid generating .eh_frame information in modules 2012-10-28 10:14:12 -07:00
um um: Implement a custom pte_same() function 2012-06-01 15:18:18 +08:00
unicore32 Merge branch 'for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping 2012-04-04 17:13:43 -07:00
x86 xen/pci: We don't do multiple MSI's. 2013-03-14 11:29:41 -07:00
xtensa xtensa: Add missing RCU idle APIs on idle loop 2012-10-13 05:38:54 +09:00
.gitignore
Kconfig Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2012-03-29 14:49:45 -07:00