pci, x86/io-apic: Allow PCI_IOAPIC to be user configurable on x86
This adjusts PCI_IOAPIC to be user configurable (possibly as a module) on x86, since the base architecture code for adding IO-APICs dynamically isn't there yet (and hence having the code present everywhere is pretty pointless). To make this consistent, a MODULE_DEVICE_TABLE() declaration gets added, the class specifications get corrected (by properly using PCI_DEVICE_CLASS() intended for purposes like this), and the probe and remove functions get their sections adjusted. Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Bjorn Helgaas <bhelgaas@google.com> Link: http://lkml.kernel.org/r/4EDDD71A02000078000659F1@nat28.tlf.novell.com Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
e4a02b4a95
commit
b95a7bd700
@ -98,11 +98,11 @@ config PCI_PASID
|
|||||||
If unsure, say N.
|
If unsure, say N.
|
||||||
|
|
||||||
config PCI_IOAPIC
|
config PCI_IOAPIC
|
||||||
bool
|
tristate "PCI IO-APIC hotplug support" if X86
|
||||||
depends on PCI
|
depends on PCI
|
||||||
depends on ACPI
|
depends on ACPI
|
||||||
depends on HOTPLUG
|
depends on HOTPLUG
|
||||||
default y
|
default !X86
|
||||||
|
|
||||||
config PCI_LABEL
|
config PCI_LABEL
|
||||||
def_bool y if (DMI || ACPI)
|
def_bool y if (DMI || ACPI)
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/pci.h>
|
#include <linux/pci.h>
|
||||||
#include <linux/export.h>
|
#include <linux/module.h>
|
||||||
#include <linux/acpi.h>
|
#include <linux/acpi.h>
|
||||||
#include <linux/slab.h>
|
#include <linux/slab.h>
|
||||||
#include <acpi/acpi_bus.h>
|
#include <acpi/acpi_bus.h>
|
||||||
@ -27,7 +27,7 @@ struct ioapic {
|
|||||||
u32 gsi_base;
|
u32 gsi_base;
|
||||||
};
|
};
|
||||||
|
|
||||||
static int ioapic_probe(struct pci_dev *dev, const struct pci_device_id *ent)
|
static int __devinit ioapic_probe(struct pci_dev *dev, const struct pci_device_id *ent)
|
||||||
{
|
{
|
||||||
acpi_handle handle;
|
acpi_handle handle;
|
||||||
acpi_status status;
|
acpi_status status;
|
||||||
@ -88,7 +88,7 @@ exit_free:
|
|||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ioapic_remove(struct pci_dev *dev)
|
static void __devexit ioapic_remove(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
struct ioapic *ioapic = pci_get_drvdata(dev);
|
struct ioapic *ioapic = pci_get_drvdata(dev);
|
||||||
|
|
||||||
@ -99,13 +99,12 @@ static void ioapic_remove(struct pci_dev *dev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static struct pci_device_id ioapic_devices[] = {
|
static DEFINE_PCI_DEVICE_TABLE(ioapic_devices) = {
|
||||||
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
{ PCI_DEVICE_CLASS(PCI_CLASS_SYSTEM_PIC_IOAPIC, ~0) },
|
||||||
PCI_CLASS_SYSTEM_PIC_IOAPIC << 8, 0xffff00, },
|
{ PCI_DEVICE_CLASS(PCI_CLASS_SYSTEM_PIC_IOXAPIC, ~0) },
|
||||||
{ PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
|
|
||||||
PCI_CLASS_SYSTEM_PIC_IOXAPIC << 8, 0xffff00, },
|
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
MODULE_DEVICE_TABLE(pci, ioapic_devices);
|
||||||
|
|
||||||
static struct pci_driver ioapic_driver = {
|
static struct pci_driver ioapic_driver = {
|
||||||
.name = "ioapic",
|
.name = "ioapic",
|
||||||
|
Loading…
Reference in New Issue
Block a user