1
linux/drivers
Michael Ellerman 9c8313343c MSI: Give archs the option to allocate all MSI/Xs at once.
This patch introduces an optional function, arch_setup_msi_irqs(),
(note the plural) which gives an arch the opportunity to do per-device
setup for MSI/X and then allocate all the requested MSI/Xs at once.

If that's not required by the arch, the default version simply calls
arch_setup_msi_irq() for each MSI irq required.

arch_setup_msi_irqs() is passed a pdev, attached to the pdev is a list
of msi_descs with irq == 0, it is up to the arch to connect these up to
an irq (via set_irq_msi()) or return an error. For convenience the number
of vectors and the type are passed also.

All msi_descs with irq != 0 are considered allocated, and the arch
teardown routine will be called on them when necessary.

The existing semantics of pci_enable_msix() are that if the requested
number of irqs can not be allocated, the maximum number that _could_ be
allocated is returned. To support that, we define that in case of an
error from arch_setup_msi_irqs(), the number of msi_descs with irq != 0
are considered allocated, and are counted toward the "max that could be
allocated".


Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2007-05-02 19:02:38 -07:00
..
acorn
acpi power management: implement pm_ops.valid for everybody 2007-04-30 16:40:40 -07:00
amba
ata libata: honour host controllers that want just one host 2007-04-30 17:43:48 -07:00
atm PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
auxdisplay
base
block ub: Bind to first endpoint, not to last 2007-04-27 13:28:34 -07:00
bluetooth
cdrom
char PCI: Convert to alloc_pci_dev() 2007-05-02 19:02:37 -07:00
clocksource
connector
cpufreq
crypto
dio
dma
edac
eisa
fc4
firmware
hid Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid 2007-04-30 08:58:21 -07:00
hwmon Merge branch 'linux-2.6' into for-2.6.22 2007-04-30 12:38:01 +10:00
i2c PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
ide
ieee1394 PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
infiniband PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
input
isdn PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
kvm
leds
macintosh Merge branch 'linux-2.6' into for-2.6.22 2007-04-30 12:38:01 +10:00
mca
md [BLOCK] Don't pin lots of memory in mempools 2007-04-30 09:08:17 +02:00
media PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
message
mfd
misc PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
mmc
mtd PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
net PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
nubus
oprofile
parisc PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
parport
pci MSI: Give archs the option to allocate all MSI/Xs at once. 2007-05-02 19:02:38 -07:00
pcmcia PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
pnp
ps3 [POWERPC] Remove dev_dbg redefinition in drivers/ps3/vuart.c 2007-04-30 13:03:39 +10:00
rapidio
rtc
s390
sbus PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
scsi PCI: Convert to alloc_pci_dev() 2007-05-02 19:02:37 -07:00
serial Merge branch 'linux-2.6' into for-2.6.22 2007-04-30 12:38:01 +10:00
sh
sn
spi
tc
telephony
usb PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
video PCI: Cleanup the includes of <linux/pci.h> 2007-05-02 19:02:35 -07:00
w1
zorro
Kconfig
Makefile