diff options
author | Jeff Garzik <jeff@garzik.org> | 2007-10-11 16:58:30 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2007-10-12 18:03:19 -0400 |
commit | a79e4198d1effbba040e9bf407a95fc9b3418789 (patch) | |
tree | bbfeed15db3a03c3e7f50ae36f18c017fb940b9e /arch/x86/pci/acpi.c | |
parent | 32a2eea795643929a43cbbba00d8c4a176b309bf (diff) |
PCI: X86: Introduce and enable PCI domain support
* fix bug in pci_read() and pci_write() which prevented PCI domain
support from working (hardcoded domain 0).
* unconditionally enable CONFIG_PCI_DOMAINS
* implement pci_domain_nr() and pci_proc_domain(), as required of
all arches when CONFIG_PCI_DOMAINS is enabled.
* store domain in struct pci_sysdata, as assigned by ACPI
* support "pci=nodomains"
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'arch/x86/pci/acpi.c')
-rw-r--r-- | arch/x86/pci/acpi.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c index c6fd3a6afa42..27a391da9a98 100644 --- a/arch/x86/pci/acpi.c +++ b/arch/x86/pci/acpi.c | |||
@@ -189,6 +189,12 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do | |||
189 | 189 | ||
190 | dmi_check_system(acpi_pciprobe_dmi_table); | 190 | dmi_check_system(acpi_pciprobe_dmi_table); |
191 | 191 | ||
192 | if (domain && !pci_domains_supported) { | ||
193 | printk(KERN_WARNING "PCI: Multiple domains not supported " | ||
194 | "(dom %d, bus %d)\n", domain, busnum); | ||
195 | return NULL; | ||
196 | } | ||
197 | |||
192 | /* Allocate per-root-bus (not per bus) arch-specific data. | 198 | /* Allocate per-root-bus (not per bus) arch-specific data. |
193 | * TODO: leak; this memory is never freed. | 199 | * TODO: leak; this memory is never freed. |
194 | * It's arguable whether it's worth the trouble to care. | 200 | * It's arguable whether it's worth the trouble to care. |
@@ -199,12 +205,7 @@ struct pci_bus * __devinit pci_acpi_scan_root(struct acpi_device *device, int do | |||
199 | return NULL; | 205 | return NULL; |
200 | } | 206 | } |
201 | 207 | ||
202 | if (domain != 0) { | 208 | sd->domain = domain; |
203 | printk(KERN_WARNING "PCI: Multiple domains not supported\n"); | ||
204 | kfree(sd); | ||
205 | return NULL; | ||
206 | } | ||
207 | |||
208 | sd->node = -1; | 209 | sd->node = -1; |
209 | 210 | ||
210 | pxm = acpi_get_pxm(device->handle); | 211 | pxm = acpi_get_pxm(device->handle); |