diff options
author | Yinghai Lu <yhlu.kernel@gmail.com> | 2008-04-14 18:40:37 -0400 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2008-05-05 12:24:00 -0400 |
commit | 0df18ff366853cdf31e5238764ec5c63e6b5a398 (patch) | |
tree | c296a1e1213dac224ba40ef42dbaa56401a3da83 | |
parent | 13a6ddb08e58a1bd344da7898c4e2f13bdf18c2f (diff) |
x86 PCI: call dmi_check_pciprobe()
this change:
| commit 08f1c192c3c32797068bfe97738babb3295bbf42
| Author: Muli Ben-Yehuda <muli@il.ibm.com>
| Date: Sun Jul 22 00:23:39 2007 +0300
|
| x86-64: introduce struct pci_sysdata to facilitate sharing of ->sysdata
|
| This patch introduces struct pci_sysdata to x86 and x86-64, and
| converts the existing two users (NUMA, Calgary) to use it.
|
| This lays the groundwork for having other users of sysdata, such as
| the PCI domains work.
|
| The Calgary bits are tested, the NUMA bits just look ok.
replaces pcibios_scan_root with pci_scan_bus_parented...
but in pcibios_scan_root we have a DMI check:
dmi_check_system(pciprobe_dmi_table);
when when have several peer root buses this could be called multiple
times (which is bad), so move that call to pci_access_init().
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
-rw-r--r-- | arch/x86/pci/common.c | 7 | ||||
-rw-r--r-- | arch/x86/pci/init.c | 2 | ||||
-rw-r--r-- | arch/x86/pci/pci.h | 1 |
3 files changed, 8 insertions, 2 deletions
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c index a6d27797ef47..bfa72a9475b3 100644 --- a/arch/x86/pci/common.c +++ b/arch/x86/pci/common.c | |||
@@ -362,13 +362,16 @@ static struct dmi_system_id __devinitdata pciprobe_dmi_table[] = { | |||
362 | {} | 362 | {} |
363 | }; | 363 | }; |
364 | 364 | ||
365 | void __init dmi_check_pciprobe(void) | ||
366 | { | ||
367 | dmi_check_system(pciprobe_dmi_table); | ||
368 | } | ||
369 | |||
365 | struct pci_bus * __devinit pcibios_scan_root(int busnum) | 370 | struct pci_bus * __devinit pcibios_scan_root(int busnum) |
366 | { | 371 | { |
367 | struct pci_bus *bus = NULL; | 372 | struct pci_bus *bus = NULL; |
368 | struct pci_sysdata *sd; | 373 | struct pci_sysdata *sd; |
369 | 374 | ||
370 | dmi_check_system(pciprobe_dmi_table); | ||
371 | |||
372 | while ((bus = pci_find_next_bus(bus)) != NULL) { | 375 | while ((bus = pci_find_next_bus(bus)) != NULL) { |
373 | if (bus->number == busnum) { | 376 | if (bus->number == busnum) { |
374 | /* Already scanned */ | 377 | /* Already scanned */ |
diff --git a/arch/x86/pci/init.c b/arch/x86/pci/init.c index b394b2a4b912..e70b9c57b88e 100644 --- a/arch/x86/pci/init.c +++ b/arch/x86/pci/init.c | |||
@@ -33,6 +33,8 @@ static __init int pci_access_init(void) | |||
33 | printk(KERN_ERR | 33 | printk(KERN_ERR |
34 | "PCI: Fatal: No config space access function found\n"); | 34 | "PCI: Fatal: No config space access function found\n"); |
35 | 35 | ||
36 | dmi_check_pciprobe(); | ||
37 | |||
36 | dmi_check_skip_isa_align(); | 38 | dmi_check_skip_isa_align(); |
37 | 39 | ||
38 | return 0; | 40 | return 0; |
diff --git a/arch/x86/pci/pci.h b/arch/x86/pci/pci.h index 101982027881..f3972b12c60a 100644 --- a/arch/x86/pci/pci.h +++ b/arch/x86/pci/pci.h | |||
@@ -38,6 +38,7 @@ enum pci_bf_sort_state { | |||
38 | pci_dmi_bf, | 38 | pci_dmi_bf, |
39 | }; | 39 | }; |
40 | 40 | ||
41 | extern void __init dmi_check_pciprobe(void); | ||
41 | extern void __init dmi_check_skip_isa_align(void); | 42 | extern void __init dmi_check_skip_isa_align(void); |
42 | 43 | ||
43 | /* pci-i386.c */ | 44 | /* pci-i386.c */ |