mirror of https://gitee.com/openkylin/linux.git
Merge branch 'pci/numa-cleanup' into next
* pci/numa-cleanup: ACPI / numa: Use __weak, not the gcc-specific version ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static ACPI / numa: Simplify acpi_get_node() style ACPI / numa: Fix acpi_get_node() prototype ia64: Remove acpi_get_pxm() usage ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node x86/PCI: Remove acpi_get_pxm() usage x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node() x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node() x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus x86/PCI: Drop return value of pcibios_scan_root() x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root() x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node() x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata() x86/PCI: Drop pcibios_scan_root() check for bus already scanned
This commit is contained in:
commit
17f2d86f5d
|
@ -1140,11 +1140,13 @@ sba_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle,
|
|||
|
||||
#ifdef CONFIG_NUMA
|
||||
{
|
||||
int node = ioc->node;
|
||||
struct page *page;
|
||||
page = alloc_pages_exact_node(ioc->node == MAX_NUMNODES ?
|
||||
numa_node_id() : ioc->node, flags,
|
||||
get_order(size));
|
||||
|
||||
if (node == NUMA_NO_NODE)
|
||||
node = numa_node_id();
|
||||
|
||||
page = alloc_pages_exact_node(node, flags, get_order(size));
|
||||
if (unlikely(!page))
|
||||
return NULL;
|
||||
|
||||
|
@ -1914,7 +1916,7 @@ ioc_show(struct seq_file *s, void *v)
|
|||
seq_printf(s, "Hewlett Packard %s IOC rev %d.%d\n",
|
||||
ioc->name, ((ioc->rev >> 4) & 0xF), (ioc->rev & 0xF));
|
||||
#ifdef CONFIG_NUMA
|
||||
if (ioc->node != MAX_NUMNODES)
|
||||
if (ioc->node != NUMA_NO_NODE)
|
||||
seq_printf(s, "NUMA node : %d\n", ioc->node);
|
||||
#endif
|
||||
seq_printf(s, "IOVA size : %ld MB\n", ((ioc->pdir_size >> 3) * iovp_size)/(1024*1024));
|
||||
|
@ -2015,31 +2017,19 @@ sba_connect_bus(struct pci_bus *bus)
|
|||
printk(KERN_WARNING "No IOC for PCI Bus %04x:%02x in ACPI\n", pci_domain_nr(bus), bus->number);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
static void __init
|
||||
sba_map_ioc_to_node(struct ioc *ioc, acpi_handle handle)
|
||||
{
|
||||
#ifdef CONFIG_NUMA
|
||||
unsigned int node;
|
||||
int pxm;
|
||||
|
||||
ioc->node = MAX_NUMNODES;
|
||||
|
||||
pxm = acpi_get_pxm(handle);
|
||||
|
||||
if (pxm < 0)
|
||||
return;
|
||||
|
||||
node = pxm_to_node(pxm);
|
||||
|
||||
if (node >= MAX_NUMNODES || !node_online(node))
|
||||
return;
|
||||
node = acpi_get_node(handle);
|
||||
if (node != NUMA_NO_NODE && !node_online(node))
|
||||
node = NUMA_NO_NODE;
|
||||
|
||||
ioc->node = node;
|
||||
return;
|
||||
}
|
||||
#else
|
||||
#define sba_map_ioc_to_node(ioc, handle)
|
||||
#endif
|
||||
}
|
||||
|
||||
static int __init
|
||||
acpi_sba_ioc_add(struct acpi_device *device,
|
||||
|
|
|
@ -98,7 +98,7 @@ struct pci_controller {
|
|||
struct acpi_device *companion;
|
||||
void *iommu;
|
||||
int segment;
|
||||
int node; /* nearest node with memory or -1 for global allocation */
|
||||
int node; /* nearest node with memory or NUMA_NO_NODE for global allocation */
|
||||
|
||||
void *platform_data;
|
||||
};
|
||||
|
|
|
@ -803,14 +803,9 @@ int acpi_isa_irq_to_gsi(unsigned isa_irq, u32 *gsi)
|
|||
* ACPI based hotplug CPU support
|
||||
*/
|
||||
#ifdef CONFIG_ACPI_HOTPLUG_CPU
|
||||
static
|
||||
int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
|
||||
static int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
|
||||
{
|
||||
#ifdef CONFIG_ACPI_NUMA
|
||||
int pxm_id;
|
||||
int nid;
|
||||
|
||||
pxm_id = acpi_get_pxm(handle);
|
||||
/*
|
||||
* We don't have cpu-only-node hotadd. But if the system equips
|
||||
* SRAT table, pxm is already found and node is ready.
|
||||
|
@ -818,11 +813,10 @@ int acpi_map_cpu2node(acpi_handle handle, int cpu, int physid)
|
|||
* This code here is for the system which doesn't have full SRAT
|
||||
* table for possible cpus.
|
||||
*/
|
||||
nid = acpi_map_pxm_to_node(pxm_id);
|
||||
node_cpuid[cpu].phys_id = physid;
|
||||
node_cpuid[cpu].nid = nid;
|
||||
node_cpuid[cpu].nid = acpi_get_node(handle);
|
||||
#endif
|
||||
return (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int additional_cpus __initdata = -1;
|
||||
|
@ -929,7 +923,7 @@ static acpi_status acpi_map_iosapic(acpi_handle handle, u32 depth,
|
|||
union acpi_object *obj;
|
||||
struct acpi_madt_io_sapic *iosapic;
|
||||
unsigned int gsi_base;
|
||||
int pxm, node;
|
||||
int node;
|
||||
|
||||
/* Only care about objects w/ a method that returns the MADT */
|
||||
if (ACPI_FAILURE(acpi_evaluate_object(handle, "_MAT", NULL, &buffer)))
|
||||
|
@ -956,17 +950,9 @@ static acpi_status acpi_map_iosapic(acpi_handle handle, u32 depth,
|
|||
|
||||
kfree(buffer.pointer);
|
||||
|
||||
/*
|
||||
* OK, it's an IOSAPIC MADT entry, look for a _PXM value to tell
|
||||
* us which node to associate this with.
|
||||
*/
|
||||
pxm = acpi_get_pxm(handle);
|
||||
if (pxm < 0)
|
||||
return AE_OK;
|
||||
|
||||
node = pxm_to_node(pxm);
|
||||
|
||||
if (node >= MAX_NUMNODES || !node_online(node) ||
|
||||
/* OK, it's an IOSAPIC MADT entry; associate it with a node */
|
||||
node = acpi_get_node(handle);
|
||||
if (node == NUMA_NO_NODE || !node_online(node) ||
|
||||
cpumask_empty(cpumask_of_node(node)))
|
||||
return AE_OK;
|
||||
|
||||
|
|
|
@ -126,7 +126,6 @@ static struct pci_controller *alloc_pci_controller(int seg)
|
|||
return NULL;
|
||||
|
||||
controller->segment = seg;
|
||||
controller->node = -1;
|
||||
return controller;
|
||||
}
|
||||
|
||||
|
@ -430,19 +429,14 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
|
|||
struct pci_root_info *info = NULL;
|
||||
int busnum = root->secondary.start;
|
||||
struct pci_bus *pbus;
|
||||
int pxm, ret;
|
||||
int ret;
|
||||
|
||||
controller = alloc_pci_controller(domain);
|
||||
if (!controller)
|
||||
return NULL;
|
||||
|
||||
controller->companion = device;
|
||||
|
||||
pxm = acpi_get_pxm(device->handle);
|
||||
#ifdef CONFIG_NUMA
|
||||
if (pxm >= 0)
|
||||
controller->node = pxm_to_node(pxm);
|
||||
#endif
|
||||
controller->node = acpi_get_node(device->handle);
|
||||
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
if (!info) {
|
||||
|
|
|
@ -26,11 +26,6 @@ extern int pci_routeirq;
|
|||
extern int noioapicquirk;
|
||||
extern int noioapicreroute;
|
||||
|
||||
/* scan a bus after allocating a pci_sysdata for it */
|
||||
extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,
|
||||
int node);
|
||||
extern struct pci_bus *pci_scan_bus_with_sysdata(int busno);
|
||||
|
||||
#ifdef CONFIG_PCI
|
||||
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
|
@ -70,7 +65,7 @@ extern unsigned long pci_mem_start;
|
|||
|
||||
extern int pcibios_enabled;
|
||||
void pcibios_config_init(void);
|
||||
struct pci_bus *pcibios_scan_root(int bus);
|
||||
void pcibios_scan_root(int bus);
|
||||
|
||||
void pcibios_set_master(struct pci_dev *dev);
|
||||
void pcibios_penalize_isa_irq(int irq, int active);
|
||||
|
|
|
@ -131,6 +131,7 @@ static inline void arch_fix_phys_package_id(int num, u32 slot)
|
|||
}
|
||||
|
||||
struct pci_bus;
|
||||
int x86_pci_root_bus_node(int bus);
|
||||
void x86_pci_root_bus_resources(int bus, struct list_head *resources);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
|
@ -139,17 +140,4 @@ void x86_pci_root_bus_resources(int bus, struct list_head *resources);
|
|||
#define smt_capable() (smp_num_siblings > 1)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_NUMA
|
||||
extern int get_mp_bus_to_node(int busnum);
|
||||
extern void set_mp_bus_to_node(int busnum, int node);
|
||||
#else
|
||||
static inline int get_mp_bus_to_node(int busnum)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline void set_mp_bus_to_node(int busnum, int node)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _ASM_X86_TOPOLOGY_H */
|
||||
|
|
|
@ -480,9 +480,6 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
|
|||
struct pci_bus *bus = NULL;
|
||||
struct pci_sysdata *sd;
|
||||
int node;
|
||||
#ifdef CONFIG_ACPI_NUMA
|
||||
int pxm;
|
||||
#endif
|
||||
|
||||
if (pci_ignore_seg)
|
||||
domain = 0;
|
||||
|
@ -494,19 +491,12 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
node = -1;
|
||||
#ifdef CONFIG_ACPI_NUMA
|
||||
pxm = acpi_get_pxm(device->handle);
|
||||
if (pxm >= 0)
|
||||
node = pxm_to_node(pxm);
|
||||
if (node != -1)
|
||||
set_mp_bus_to_node(busnum, node);
|
||||
else
|
||||
#endif
|
||||
node = get_mp_bus_to_node(busnum);
|
||||
node = acpi_get_node(device->handle);
|
||||
if (node == NUMA_NO_NODE)
|
||||
node = x86_pci_root_bus_node(busnum);
|
||||
|
||||
if (node != -1 && !node_online(node))
|
||||
node = -1;
|
||||
if (node != NUMA_NO_NODE && !node_online(node))
|
||||
node = NUMA_NO_NODE;
|
||||
|
||||
info = kzalloc(sizeof(*info), GFP_KERNEL);
|
||||
if (!info) {
|
||||
|
@ -572,15 +562,8 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
|
|||
pcie_bus_configure_settings(child);
|
||||
}
|
||||
|
||||
if (bus && node != -1) {
|
||||
#ifdef CONFIG_ACPI_NUMA
|
||||
if (pxm >= 0)
|
||||
dev_printk(KERN_DEBUG, &bus->dev,
|
||||
"on NUMA node %d (pxm %d)\n", node, pxm);
|
||||
#else
|
||||
if (bus && node != NUMA_NO_NODE)
|
||||
dev_printk(KERN_DEBUG, &bus->dev, "on NUMA node %d\n", node);
|
||||
#endif
|
||||
}
|
||||
|
||||
return bus;
|
||||
}
|
||||
|
|
|
@ -44,15 +44,6 @@ static struct pci_root_info __init *find_pci_root_info(int node, int link)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
static void __init set_mp_bus_range_to_node(int min_bus, int max_bus, int node)
|
||||
{
|
||||
#ifdef CONFIG_NUMA
|
||||
int j;
|
||||
|
||||
for (j = min_bus; j <= max_bus; j++)
|
||||
set_mp_bus_to_node(j, node);
|
||||
#endif
|
||||
}
|
||||
/**
|
||||
* early_fill_mp_bus_to_node()
|
||||
* called before pcibios_scan_root and pci_scan_bus
|
||||
|
@ -117,7 +108,6 @@ static int __init early_fill_mp_bus_info(void)
|
|||
min_bus = (reg >> 16) & 0xff;
|
||||
max_bus = (reg >> 24) & 0xff;
|
||||
node = (reg >> 4) & 0x07;
|
||||
set_mp_bus_range_to_node(min_bus, max_bus, node);
|
||||
link = (reg >> 8) & 0x03;
|
||||
|
||||
info = alloc_pci_root_info(min_bus, max_bus, node, link);
|
||||
|
|
|
@ -10,9 +10,6 @@ static struct pci_root_info *x86_find_pci_root_info(int bus)
|
|||
{
|
||||
struct pci_root_info *info;
|
||||
|
||||
if (list_empty(&pci_root_infos))
|
||||
return NULL;
|
||||
|
||||
list_for_each_entry(info, &pci_root_infos, list)
|
||||
if (info->busn.start == bus)
|
||||
return info;
|
||||
|
@ -20,6 +17,16 @@ static struct pci_root_info *x86_find_pci_root_info(int bus)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
int x86_pci_root_bus_node(int bus)
|
||||
{
|
||||
struct pci_root_info *info = x86_find_pci_root_info(bus);
|
||||
|
||||
if (!info)
|
||||
return NUMA_NO_NODE;
|
||||
|
||||
return info->node;
|
||||
}
|
||||
|
||||
void x86_pci_root_bus_resources(int bus, struct list_head *resources)
|
||||
{
|
||||
struct pci_root_info *info = x86_find_pci_root_info(bus);
|
||||
|
|
|
@ -456,19 +456,25 @@ void __init dmi_check_pciprobe(void)
|
|||
dmi_check_system(pciprobe_dmi_table);
|
||||
}
|
||||
|
||||
struct pci_bus *pcibios_scan_root(int busnum)
|
||||
void pcibios_scan_root(int busnum)
|
||||
{
|
||||
struct pci_bus *bus = NULL;
|
||||
struct pci_bus *bus;
|
||||
struct pci_sysdata *sd;
|
||||
LIST_HEAD(resources);
|
||||
|
||||
while ((bus = pci_find_next_bus(bus)) != NULL) {
|
||||
if (bus->number == busnum) {
|
||||
/* Already scanned */
|
||||
return bus;
|
||||
}
|
||||
sd = kzalloc(sizeof(*sd), GFP_KERNEL);
|
||||
if (!sd) {
|
||||
printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busnum);
|
||||
return;
|
||||
}
|
||||
sd->node = x86_pci_root_bus_node(busnum);
|
||||
x86_pci_root_bus_resources(busnum, &resources);
|
||||
printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busnum);
|
||||
bus = pci_scan_root_bus(NULL, busnum, &pci_root_ops, sd, &resources);
|
||||
if (!bus) {
|
||||
pci_free_resource_list(&resources);
|
||||
kfree(sd);
|
||||
}
|
||||
|
||||
return pci_scan_bus_on_node(busnum, &pci_root_ops,
|
||||
get_mp_bus_to_node(busnum));
|
||||
}
|
||||
|
||||
void __init pcibios_set_cache_line_size(void)
|
||||
|
@ -677,105 +683,3 @@ int pci_ext_cfg_avail(void)
|
|||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node)
|
||||
{
|
||||
LIST_HEAD(resources);
|
||||
struct pci_bus *bus = NULL;
|
||||
struct pci_sysdata *sd;
|
||||
|
||||
/*
|
||||
* Allocate per-root-bus (not per bus) arch-specific data.
|
||||
* TODO: leak; this memory is never freed.
|
||||
* It's arguable whether it's worth the trouble to care.
|
||||
*/
|
||||
sd = kzalloc(sizeof(*sd), GFP_KERNEL);
|
||||
if (!sd) {
|
||||
printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busno);
|
||||
return NULL;
|
||||
}
|
||||
sd->node = node;
|
||||
x86_pci_root_bus_resources(busno, &resources);
|
||||
printk(KERN_DEBUG "PCI: Probing PCI hardware (bus %02x)\n", busno);
|
||||
bus = pci_scan_root_bus(NULL, busno, ops, sd, &resources);
|
||||
if (!bus) {
|
||||
pci_free_resource_list(&resources);
|
||||
kfree(sd);
|
||||
}
|
||||
|
||||
return bus;
|
||||
}
|
||||
|
||||
struct pci_bus *pci_scan_bus_with_sysdata(int busno)
|
||||
{
|
||||
return pci_scan_bus_on_node(busno, &pci_root_ops, -1);
|
||||
}
|
||||
|
||||
/*
|
||||
* NUMA info for PCI busses
|
||||
*
|
||||
* Early arch code is responsible for filling in reasonable values here.
|
||||
* A node id of "-1" means "use current node". In other words, if a bus
|
||||
* has a -1 node id, it's not tightly coupled to any particular chunk
|
||||
* of memory (as is the case on some Nehalem systems).
|
||||
*/
|
||||
#ifdef CONFIG_NUMA
|
||||
|
||||
#define BUS_NR 256
|
||||
|
||||
#ifdef CONFIG_X86_64
|
||||
|
||||
static int mp_bus_to_node[BUS_NR] = {
|
||||
[0 ... BUS_NR - 1] = -1
|
||||
};
|
||||
|
||||
void set_mp_bus_to_node(int busnum, int node)
|
||||
{
|
||||
if (busnum >= 0 && busnum < BUS_NR)
|
||||
mp_bus_to_node[busnum] = node;
|
||||
}
|
||||
|
||||
int get_mp_bus_to_node(int busnum)
|
||||
{
|
||||
int node = -1;
|
||||
|
||||
if (busnum < 0 || busnum > (BUS_NR - 1))
|
||||
return node;
|
||||
|
||||
node = mp_bus_to_node[busnum];
|
||||
|
||||
/*
|
||||
* let numa_node_id to decide it later in dma_alloc_pages
|
||||
* if there is no ram on that node
|
||||
*/
|
||||
if (node != -1 && !node_online(node))
|
||||
node = -1;
|
||||
|
||||
return node;
|
||||
}
|
||||
|
||||
#else /* CONFIG_X86_32 */
|
||||
|
||||
static int mp_bus_to_node[BUS_NR] = {
|
||||
[0 ... BUS_NR - 1] = -1
|
||||
};
|
||||
|
||||
void set_mp_bus_to_node(int busnum, int node)
|
||||
{
|
||||
if (busnum >= 0 && busnum < BUS_NR)
|
||||
mp_bus_to_node[busnum] = (unsigned char) node;
|
||||
}
|
||||
|
||||
int get_mp_bus_to_node(int busnum)
|
||||
{
|
||||
int node;
|
||||
|
||||
if (busnum < 0 || busnum > (BUS_NR - 1))
|
||||
return 0;
|
||||
node = mp_bus_to_node[busnum];
|
||||
return node;
|
||||
}
|
||||
|
||||
#endif /* CONFIG_X86_32 */
|
||||
|
||||
#endif /* CONFIG_NUMA */
|
||||
|
|
|
@ -25,9 +25,9 @@ static void pci_fixup_i450nx(struct pci_dev *d)
|
|||
dev_dbg(&d->dev, "i450NX PXB %d: %02x/%02x/%02x\n", pxb, busno,
|
||||
suba, subb);
|
||||
if (busno)
|
||||
pci_scan_bus_with_sysdata(busno); /* Bus A */
|
||||
pcibios_scan_root(busno); /* Bus A */
|
||||
if (suba < subb)
|
||||
pci_scan_bus_with_sysdata(suba+1); /* Bus B */
|
||||
pcibios_scan_root(suba+1); /* Bus B */
|
||||
}
|
||||
pcibios_last_bus = -1;
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ static void pci_fixup_i450gx(struct pci_dev *d)
|
|||
u8 busno;
|
||||
pci_read_config_byte(d, 0x4a, &busno);
|
||||
dev_info(&d->dev, "i440KX/GX host bridge; secondary bus %02x\n", busno);
|
||||
pci_scan_bus_with_sysdata(busno);
|
||||
pcibios_scan_root(busno);
|
||||
pcibios_last_bus = -1;
|
||||
}
|
||||
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82454GX, pci_fixup_i450gx);
|
||||
|
|
|
@ -136,13 +136,9 @@ static void __init pirq_peer_trick(void)
|
|||
busmap[e->bus] = 1;
|
||||
}
|
||||
for (i = 1; i < 256; i++) {
|
||||
int node;
|
||||
if (!busmap[i] || pci_find_bus(0, i))
|
||||
continue;
|
||||
node = get_mp_bus_to_node(i);
|
||||
if (pci_scan_bus_on_node(i, &pci_root_ops, node))
|
||||
printk(KERN_INFO "PCI: Discovered primary peer "
|
||||
"bus %02x [IRQ]\n", i);
|
||||
pcibios_scan_root(i);
|
||||
}
|
||||
pcibios_last_bus = -1;
|
||||
}
|
||||
|
|
|
@ -37,19 +37,17 @@ int __init pci_legacy_init(void)
|
|||
void pcibios_scan_specific_bus(int busn)
|
||||
{
|
||||
int devfn;
|
||||
long node;
|
||||
u32 l;
|
||||
|
||||
if (pci_find_bus(0, busn))
|
||||
return;
|
||||
|
||||
node = get_mp_bus_to_node(busn);
|
||||
for (devfn = 0; devfn < 256; devfn += 8) {
|
||||
if (!raw_pci_read(0, busn, devfn, PCI_VENDOR_ID, 2, &l) &&
|
||||
l != 0x0000 && l != 0xffff) {
|
||||
DBG("Found device at %02x:%02x [%04x]\n", busn, devfn, l);
|
||||
printk(KERN_INFO "PCI: Discovered peer bus %02x\n", busn);
|
||||
pci_scan_bus_on_node(busn, &pci_root_ops, node);
|
||||
pcibios_scan_root(busn);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -135,11 +135,11 @@ static void pci_fixup_i450nx(struct pci_dev *d)
|
|||
pxb, busno, suba, subb);
|
||||
if (busno) {
|
||||
/* Bus A */
|
||||
pci_scan_bus_with_sysdata(QUADLOCAL2BUS(quad, busno));
|
||||
pcibios_scan_root(QUADLOCAL2BUS(quad, busno));
|
||||
}
|
||||
if (suba < subb) {
|
||||
/* Bus B */
|
||||
pci_scan_bus_with_sysdata(QUADLOCAL2BUS(quad, suba+1));
|
||||
pcibios_scan_root(QUADLOCAL2BUS(quad, suba+1));
|
||||
}
|
||||
}
|
||||
pcibios_last_bus = -1;
|
||||
|
@ -159,7 +159,7 @@ int __init pci_numaq_init(void)
|
|||
continue;
|
||||
printk("Scanning PCI bus %d for quad %d\n",
|
||||
QUADLOCAL2BUS(quad,0), quad);
|
||||
pci_scan_bus_with_sysdata(QUADLOCAL2BUS(quad, 0));
|
||||
pcibios_scan_root(QUADLOCAL2BUS(quad, 0));
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -78,8 +78,8 @@ int __init pci_visws_init(void)
|
|||
"bridge B (PIIX4) bus: %u\n", pci_bus1, pci_bus0);
|
||||
|
||||
raw_pci_ops = &pci_direct_conf1;
|
||||
pci_scan_bus_with_sysdata(pci_bus0);
|
||||
pci_scan_bus_with_sysdata(pci_bus1);
|
||||
pcibios_scan_root(pci_bus0);
|
||||
pcibios_scan_root(pci_bus1);
|
||||
pci_fixup_irqs(pci_common_swizzle, visws_map_irq);
|
||||
pcibios_resource_survey();
|
||||
/* Request bus scan */
|
||||
|
|
|
@ -60,7 +60,7 @@ int node_to_pxm(int node)
|
|||
return node_to_pxm_map[node];
|
||||
}
|
||||
|
||||
void __acpi_map_pxm_to_node(int pxm, int node)
|
||||
static void __acpi_map_pxm_to_node(int pxm, int node)
|
||||
{
|
||||
if (pxm_to_node_map[pxm] == NUMA_NO_NODE || node < pxm_to_node_map[pxm])
|
||||
pxm_to_node_map[pxm] = node;
|
||||
|
@ -193,7 +193,7 @@ static int __init acpi_parse_slit(struct acpi_table_header *table)
|
|||
return 0;
|
||||
}
|
||||
|
||||
void __init __attribute__ ((weak))
|
||||
void __init __weak
|
||||
acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
|
||||
{
|
||||
printk(KERN_WARNING PREFIX
|
||||
|
@ -314,7 +314,7 @@ int __init acpi_numa_init(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int acpi_get_pxm(acpi_handle h)
|
||||
static int acpi_get_pxm(acpi_handle h)
|
||||
{
|
||||
unsigned long long pxm;
|
||||
acpi_status status;
|
||||
|
@ -331,14 +331,14 @@ int acpi_get_pxm(acpi_handle h)
|
|||
return -1;
|
||||
}
|
||||
|
||||
int acpi_get_node(acpi_handle *handle)
|
||||
int acpi_get_node(acpi_handle handle)
|
||||
{
|
||||
int pxm, node = NUMA_NO_NODE;
|
||||
int pxm;
|
||||
|
||||
pxm = acpi_get_pxm(handle);
|
||||
if (pxm >= 0 && pxm < MAX_PXM_DOMAINS)
|
||||
node = acpi_map_pxm_to_node(pxm);
|
||||
if (pxm < 0 || pxm >= MAX_PXM_DOMAINS)
|
||||
return NUMA_NO_NODE;
|
||||
|
||||
return node;
|
||||
return acpi_map_pxm_to_node(pxm);
|
||||
}
|
||||
EXPORT_SYMBOL(acpi_get_node);
|
||||
|
|
|
@ -13,7 +13,6 @@
|
|||
|
||||
extern int pxm_to_node(int);
|
||||
extern int node_to_pxm(int);
|
||||
extern void __acpi_map_pxm_to_node(int, int);
|
||||
extern int acpi_map_pxm_to_node(int);
|
||||
extern unsigned char acpi_srat_revision;
|
||||
|
||||
|
|
|
@ -259,14 +259,9 @@ extern void acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d);
|
|||
extern void acpi_osi_setup(char *str);
|
||||
|
||||
#ifdef CONFIG_ACPI_NUMA
|
||||
int acpi_get_pxm(acpi_handle handle);
|
||||
int acpi_get_node(acpi_handle *handle);
|
||||
int acpi_get_node(acpi_handle handle);
|
||||
#else
|
||||
static inline int acpi_get_pxm(acpi_handle handle)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
static inline int acpi_get_node(acpi_handle *handle)
|
||||
static inline int acpi_get_node(acpi_handle handle)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue