diff options
author | Jan Beulich <JBeulich@suse.com> | 2011-12-06 02:49:30 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-12-06 03:21:05 -0500 |
commit | b95a7bd700466c10fda84acbd33f70cf66ec91ce (patch) | |
tree | 970a1290c0ecd09944692d6428088d0bf5012092 /drivers/pci | |
parent | e4a02b4a951a7adf9d982b11c64686570c29fbe7 (diff) |
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>
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/Kconfig | 4 | ||||
-rw-r--r-- | drivers/pci/ioapic.c | 15 |
2 files changed, 9 insertions, 10 deletions
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig index f02b5235056d..37856f7c7781 100644 --- a/drivers/pci/Kconfig +++ b/drivers/pci/Kconfig | |||
@@ -98,11 +98,11 @@ config PCI_PASID | |||
98 | If unsure, say N. | 98 | If unsure, say N. |
99 | 99 | ||
100 | config PCI_IOAPIC | 100 | config PCI_IOAPIC |
101 | bool | 101 | tristate "PCI IO-APIC hotplug support" if X86 |
102 | depends on PCI | 102 | depends on PCI |
103 | depends on ACPI | 103 | depends on ACPI |
104 | depends on HOTPLUG | 104 | depends on HOTPLUG |
105 | default y | 105 | default !X86 |
106 | 106 | ||
107 | config PCI_LABEL | 107 | config PCI_LABEL |
108 | def_bool y if (DMI || ACPI) | 108 | def_bool y if (DMI || ACPI) |
diff --git a/drivers/pci/ioapic.c b/drivers/pci/ioapic.c index 5775638ac017..205af8dc83c2 100644 --- a/drivers/pci/ioapic.c +++ b/drivers/pci/ioapic.c | |||
@@ -17,7 +17,7 @@ | |||
17 | */ | 17 | */ |
18 | 18 | ||
19 | #include <linux/pci.h> | 19 | #include <linux/pci.h> |
20 | #include <linux/export.h> | 20 | #include <linux/module.h> |
21 | #include <linux/acpi.h> | 21 | #include <linux/acpi.h> |
22 | #include <linux/slab.h> | 22 | #include <linux/slab.h> |
23 | #include <acpi/acpi_bus.h> | 23 | #include <acpi/acpi_bus.h> |
@@ -27,7 +27,7 @@ struct ioapic { | |||
27 | u32 gsi_base; | 27 | u32 gsi_base; |
28 | }; | 28 | }; |
29 | 29 | ||
30 | static int ioapic_probe(struct pci_dev *dev, const struct pci_device_id *ent) | 30 | static int __devinit ioapic_probe(struct pci_dev *dev, const struct pci_device_id *ent) |
31 | { | 31 | { |
32 | acpi_handle handle; | 32 | acpi_handle handle; |
33 | acpi_status status; | 33 | acpi_status status; |
@@ -88,7 +88,7 @@ exit_free: | |||
88 | return -ENODEV; | 88 | return -ENODEV; |
89 | } | 89 | } |
90 | 90 | ||
91 | static void ioapic_remove(struct pci_dev *dev) | 91 | static void __devexit ioapic_remove(struct pci_dev *dev) |
92 | { | 92 | { |
93 | struct ioapic *ioapic = pci_get_drvdata(dev); | 93 | struct ioapic *ioapic = pci_get_drvdata(dev); |
94 | 94 | ||
@@ -99,13 +99,12 @@ static void ioapic_remove(struct pci_dev *dev) | |||
99 | } | 99 | } |
100 | 100 | ||
101 | 101 | ||
102 | static struct pci_device_id ioapic_devices[] = { | 102 | static DEFINE_PCI_DEVICE_TABLE(ioapic_devices) = { |
103 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | 103 | { PCI_DEVICE_CLASS(PCI_CLASS_SYSTEM_PIC_IOAPIC, ~0) }, |
104 | PCI_CLASS_SYSTEM_PIC_IOAPIC << 8, 0xffff00, }, | 104 | { PCI_DEVICE_CLASS(PCI_CLASS_SYSTEM_PIC_IOXAPIC, ~0) }, |
105 | { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, | ||
106 | PCI_CLASS_SYSTEM_PIC_IOXAPIC << 8, 0xffff00, }, | ||
107 | { } | 105 | { } |
108 | }; | 106 | }; |
107 | MODULE_DEVICE_TABLE(pci, ioapic_devices); | ||
109 | 108 | ||
110 | static struct pci_driver ioapic_driver = { | 109 | static struct pci_driver ioapic_driver = { |
111 | .name = "ioapic", | 110 | .name = "ioapic", |