linux/drivers/pci
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
..
hotplug PCI: Convert to alloc_pci_dev() 2007-05-02 19:02:37 -07:00
pcie PCI: Fix warning message in PCIE port driver 2007-03-26 14:13:08 -07:00
.gitignore Add some basic .gitignore files 2005-10-18 08:26:15 -07:00
access.c [PATCH] severing module.h->sched.h 2006-12-04 02:00:22 -05:00
bus.c pci: do not mark exported functions as __devinit 2007-05-02 19:02:35 -07:00
hotplug.c [PATCH] driver core: replace "hotplug" by "uevent" 2006-01-04 16:18:08 -08:00
htirq.c PCI: Use pci_find_ht_capability() in drivers/pci/htirq.c 2006-12-20 10:54:42 -08:00
Kconfig msi: introduce ARCH_SUPPORTS_MSI Kconfig option (rev2) 2007-05-02 19:02:37 -07:00
Makefile [PATCH] htirq: tidy up the htirq code 2006-10-04 07:55:30 -07:00
msi.c MSI: Give archs the option to allocate all MSI/Xs at once. 2007-05-02 19:02:38 -07:00
msi.h PCI: Make some MSI-X #defines generic 2006-12-01 14:36:56 -08:00
pci-acpi.c ACPI: Disable MSI on request of FADT 2007-04-25 01:13:47 -04:00
pci-driver.c PCI: Require vendor and device for new_id 2007-05-02 19:02:35 -07:00
pci-sysfs.c PCI: fix sysfs rom file creation for BIOS ROM shadows 2007-05-02 19:02:35 -07:00
pci.c pci: do not mark exported functions as __devinit 2007-05-02 19:02:35 -07:00
pci.h MSI: Use a list instead of the custom link structure 2007-05-02 19:02:37 -07:00
probe.c MSI: Use a list instead of the custom link structure 2007-05-02 19:02:37 -07:00
proc.c [PATCH] mark struct file_operations const 5 2007-02-12 09:48:45 -08:00
quirks.c libata/IDE: remove combined mode quirk 2007-04-28 14:15:59 -04:00
remove.c PCI: add pci_stop_bus_device 2006-09-26 17:43:54 -07:00
rom.c Altix: Initial ACPI support - ROM shadowing. 2006-12-01 14:36:58 -08:00
search.c pci: do not mark exported functions as __devinit 2007-05-02 19:02:35 -07:00
setup-bus.c pci: do not mark exported functions as __devinit 2007-05-02 19:02:35 -07:00
setup-irq.c PCI: PCI devices get assigned redundant IRQs 2007-02-16 15:30:10 -08:00
setup-res.c pci: do not mark exported functions as __devinit 2007-05-02 19:02:35 -07:00
syscall.c [PATCH] remove many unneeded #includes of sched.h 2007-02-14 08:09:54 -08:00