mirror of
https://github.com/torvalds/linux.git
synced 2024-11-16 17:12:06 +00:00
0df18ff366
this change:
| commit 08f1c192c3
| 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>
43 lines
912 B
C
43 lines
912 B
C
#include <linux/pci.h>
|
|
#include <linux/init.h>
|
|
#include "pci.h"
|
|
|
|
/* arch_initcall has too random ordering, so call the initializers
|
|
in the right sequence from here. */
|
|
static __init int pci_access_init(void)
|
|
{
|
|
#ifdef CONFIG_PCI_DIRECT
|
|
int type = 0;
|
|
|
|
type = pci_direct_probe();
|
|
#endif
|
|
|
|
pci_mmcfg_early_init();
|
|
|
|
#ifdef CONFIG_PCI_OLPC
|
|
pci_olpc_init();
|
|
#endif
|
|
#ifdef CONFIG_PCI_BIOS
|
|
pci_pcbios_init();
|
|
#endif
|
|
/*
|
|
* don't check for raw_pci_ops here because we want pcbios as last
|
|
* fallback, yet it's needed to run first to set pcibios_last_bus
|
|
* in case legacy PCI probing is used. otherwise detecting peer busses
|
|
* fails.
|
|
*/
|
|
#ifdef CONFIG_PCI_DIRECT
|
|
pci_direct_init(type);
|
|
#endif
|
|
if (!raw_pci_ops && !raw_pci_ext_ops)
|
|
printk(KERN_ERR
|
|
"PCI: Fatal: No config space access function found\n");
|
|
|
|
dmi_check_pciprobe();
|
|
|
|
dmi_check_skip_isa_align();
|
|
|
|
return 0;
|
|
}
|
|
arch_initcall(pci_access_init);
|