aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/pci/acpi.c
diff options
context:
space:
mode:
authorJeff Garzik <jeff@garzik.org>2007-10-11 16:58:30 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-10-12 18:03:19 -0400
commita79e4198d1effbba040e9bf407a95fc9b3418789 (patch)
treebbfeed15db3a03c3e7f50ae36f18c017fb940b9e /arch/x86/pci/acpi.c
parent32a2eea795643929a43cbbba00d8c4a176b309bf (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.c13
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);