Linux IA64 platform development
 help / color / mirror / Atom feed
* [PATCH 00/17] x86, ia64 NUMA cleanup
@ 2014-01-29 18:17 Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 01/17] x86/PCI: Drop pcibios_scan_root() check for bus already scanned Bjorn Helgaas
                   ` (18 more replies)
  0 siblings, 19 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:17 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

This is all cleanup: it adds no new functionality and should make no
functional difference at all except a printk change or two.

The main ideas are:

  - Clean up the x86 PCI bus scanning interfaces.  We had:
      struct pci_bus *pci_scan_bus_on_node(int bus, struct pci_ops *, int node)
      struct pci_bus *pcibios_scan_root(int bus)
      struct pci_bus *pci_scan_bus_with_sysdata(int bus)
      void pcibios_scan_specific_bus(int bus)
    These were all basically the same, so I kept only pcibios_scan_root().

  - Get rid of mp_bus_to_node[].  This was basically a way of passing node
    info from the AMD "native host bridg driver" (amd_bus.c) into the PCI
    core.  It was clunky and inconsistent between x86-64 and i386.  I
    replaced it with x86_pci_root_bus_node(), analogous to the existing
    x86_pci_root_bus_resources().

  - Remove _PXM knowledge from the PCI host bridge, IOMMU, and APIC code.
    They really only care about the NUMA node number, not the raw _PXM
    value.

---

Bjorn Helgaas (17):
      x86/PCI: Drop pcibios_scan_root() check for bus already scanned
      x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata()
      x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node()
      x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root()
      x86/PCI: Drop return value of pcibios_scan_root()
      x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus
      x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node()
      x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node()
      x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check
      x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node
      x86/PCI: Remove acpi_get_pxm() usage
      ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node
      ia64: Remove acpi_get_pxm() usage
      ACPI / numa: Fix acpi_get_node() prototype
      ACPI / numa: Simplify acpi_get_node() style
      ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static
      ACPI / numa: Use __weak, not the gcc-specific version


 arch/ia64/hp/common/sba_iommu.c |   32 +++-------
 arch/ia64/include/asm/pci.h     |    2 -
 arch/ia64/kernel/acpi.c         |   28 ++-------
 arch/ia64/pci/pci.c             |   10 +--
 arch/x86/include/asm/pci.h      |    7 --
 arch/x86/include/asm/topology.h |   14 ----
 arch/x86/pci/acpi.c             |   29 ++-------
 arch/x86/pci/amd_bus.c          |   10 ---
 arch/x86/pci/bus_numa.c         |   13 +++-
 arch/x86/pci/common.c           |  128 +++++----------------------------------
 arch/x86/pci/fixup.c            |    6 +-
 arch/x86/pci/irq.c              |    6 --
 arch/x86/pci/legacy.c           |    4 -
 arch/x86/pci/numaq_32.c         |    6 +-
 arch/x86/pci/visws.c            |    4 +
 drivers/acpi/numa.c             |   16 ++---
 include/acpi/acpi_numa.h        |    1 
 include/linux/acpi.h            |    9 +--
 18 files changed, 75 insertions(+), 250 deletions(-)

^ permalink raw reply	[flat|nested] 21+ messages in thread

* [PATCH 01/17] x86/PCI: Drop pcibios_scan_root() check for bus already scanned
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
@ 2014-01-29 18:17 ` Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 02/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata() Bjorn Helgaas
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:17 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

The PCI core checks to see whether we've already scanned a bus, so we don't
need to do it in pcibios_scan_root().  Here's where it happens in the core:

  pcibios_scan_root
    pci_scan_bus_on_node
      pci_scan_root_bus
        pci_create_root_bus
	  b2 = pci_find_bus(pci_domain_nr(b), bus)
	  if (b2)
	    goto err_out;    # already scanned this bus

This removes the check from pcibios_scan_root().

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/pci/common.c |    9 ---------
 1 file changed, 9 deletions(-)

diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 981c2dbd72cc..c47bb2288bb9 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -458,15 +458,6 @@ void __init dmi_check_pciprobe(void)
 
 struct pci_bus *pcibios_scan_root(int busnum)
 {
-	struct pci_bus *bus = NULL;
-
-	while ((bus = pci_find_next_bus(bus)) != NULL) {
-		if (bus->number = busnum) {
-			/* Already scanned */
-			return bus;
-		}
-	}
-
 	return pci_scan_bus_on_node(busnum, &pci_root_ops,
 					get_mp_bus_to_node(busnum));
 }


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 02/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata()
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 01/17] x86/PCI: Drop pcibios_scan_root() check for bus already scanned Bjorn Helgaas
@ 2014-01-29 18:17 ` Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 03/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node() Bjorn Helgaas
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:17 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

pci_scan_bus_with_sysdata() and pcibios_scan_root() are quite similar:

  pci_scan_bus_with_sysdata
    pci_scan_bus_on_node(..., &pci_root_ops, -1)

  pcibios_scan_root
    pci_scan_bus_on_node(..., &pci_root_ops, get_mp_bus_to_node(busnum))

get_mp_bus_to_node() returns -1 if it couldn't find the node number, so
this removes pci_scan_bus_with_sysdata() and uses pcibios_scan_root()
instead.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/include/asm/pci.h |    1 -
 arch/x86/pci/common.c      |    5 -----
 arch/x86/pci/fixup.c       |    6 +++---
 arch/x86/pci/numaq_32.c    |    6 +++---
 arch/x86/pci/visws.c       |    4 ++--
 5 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
index 1ac6114c9ea5..4e891abf8b48 100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@ -29,7 +29,6 @@ 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
 
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index c47bb2288bb9..f530c7e93250 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -697,11 +697,6 @@ struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops, int node)
 	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
  *
diff --git a/arch/x86/pci/fixup.c b/arch/x86/pci/fixup.c
index bca9e85daaa5..201833f5f1bc 100644
--- a/arch/x86/pci/fixup.c
+++ b/arch/x86/pci/fixup.c
@@ -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);
diff --git a/arch/x86/pci/numaq_32.c b/arch/x86/pci/numaq_32.c
index 72c229f9ebcf..080eb0374fff 100644
--- a/arch/x86/pci/numaq_32.c
+++ b/arch/x86/pci/numaq_32.c
@@ -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;
 }
diff --git a/arch/x86/pci/visws.c b/arch/x86/pci/visws.c
index 3e6d2a6db866..cd9d4d1681d2 100644
--- a/arch/x86/pci/visws.c
+++ b/arch/x86/pci/visws.c
@@ -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 */


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 03/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node()
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 01/17] x86/PCI: Drop pcibios_scan_root() check for bus already scanned Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 02/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata() Bjorn Helgaas
@ 2014-01-29 18:17 ` Bjorn Helgaas
  2014-01-29 18:17 ` [PATCH 04/17] x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root() Bjorn Helgaas
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:17 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

pcibios_scan_root() looks up the bus's NUMA node, then calls
pci_scan_bus_on_node().  This uses pcibios_scan_root() directly and drops
the node lookup in the callers.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/pci/irq.c    |    4 +---
 arch/x86/pci/legacy.c |    4 +---
 2 files changed, 2 insertions(+), 6 deletions(-)

diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 372e9b8989b3..8658874165c2 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -136,11 +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))
+		if (pcibios_scan_root(i))
 			printk(KERN_INFO "PCI: Discovered primary peer "
 			       "bus %02x [IRQ]\n", i);
 	}
diff --git a/arch/x86/pci/legacy.c b/arch/x86/pci/legacy.c
index 4db96fb1c232..5b662c0faf8c 100644
--- a/arch/x86/pci/legacy.c
+++ b/arch/x86/pci/legacy.c
@@ -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;
 		}
 	}


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 04/17] x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root()
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (2 preceding siblings ...)
  2014-01-29 18:17 ` [PATCH 03/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node() Bjorn Helgaas
@ 2014-01-29 18:17 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 05/17] x86/PCI: Drop return value of pcibios_scan_root() Bjorn Helgaas
                   ` (14 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:17 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

pci_scan_bus_on_node() is only called by pcibios_scan_root().
This merges pci_scan_bus_on_node() into pcibios_scan_root() and removes
pci_scan_bus_on_node().

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/include/asm/pci.h |    4 ----
 arch/x86/pci/common.c      |   49 +++++++++++++++++---------------------------
 2 files changed, 19 insertions(+), 34 deletions(-)

diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
index 4e891abf8b48..b52f9c0ec5fb 100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@ -26,10 +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);
-
 #ifdef CONFIG_PCI
 
 #ifdef CONFIG_PCI_DOMAINS
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index f530c7e93250..52ad00c2e198 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -458,8 +458,25 @@ void __init dmi_check_pciprobe(void)
 
 struct pci_bus *pcibios_scan_root(int busnum)
 {
-	return pci_scan_bus_on_node(busnum, &pci_root_ops,
-					get_mp_bus_to_node(busnum));
+	struct pci_bus *bus;
+	struct pci_sysdata *sd;
+	LIST_HEAD(resources);
+
+	sd = kzalloc(sizeof(*sd), GFP_KERNEL);
+	if (!sd) {
+		printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busnum);
+		return NULL;
+	}
+	sd->node = get_mp_bus_to_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 bus;
 }
 
 void __init pcibios_set_cache_line_size(void)
@@ -669,34 +686,6 @@ int pci_ext_cfg_avail(void)
 		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;
-}
-
 /*
  * NUMA info for PCI busses
  *


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 05/17] x86/PCI: Drop return value of pcibios_scan_root()
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (3 preceding siblings ...)
  2014-01-29 18:17 ` [PATCH 04/17] x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root() Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 06/17] x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus Bjorn Helgaas
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

Nobody really uses the return value of pcibios_scan_root() (one place uses
it to control a printk, but the printk is not very useful).  This converts
pcibios_scan_root() to a void function.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/include/asm/pci.h |    2 +-
 arch/x86/pci/common.c      |    6 ++----
 arch/x86/pci/irq.c         |    4 +---
 3 files changed, 4 insertions(+), 8 deletions(-)

diff --git a/arch/x86/include/asm/pci.h b/arch/x86/include/asm/pci.h
index b52f9c0ec5fb..96ae4f4040bb 100644
--- a/arch/x86/include/asm/pci.h
+++ b/arch/x86/include/asm/pci.h
@@ -65,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);
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 52ad00c2e198..600e5925f1a4 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -456,7 +456,7 @@ 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;
 	struct pci_sysdata *sd;
@@ -465,7 +465,7 @@ struct pci_bus *pcibios_scan_root(int busnum)
 	sd = kzalloc(sizeof(*sd), GFP_KERNEL);
 	if (!sd) {
 		printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busnum);
-		return NULL;
+		return;
 	}
 	sd->node = get_mp_bus_to_node(busnum);
 	x86_pci_root_bus_resources(busnum, &resources);
@@ -475,8 +475,6 @@ struct pci_bus *pcibios_scan_root(int busnum)
 		pci_free_resource_list(&resources);
 		kfree(sd);
 	}
-
-	return bus;
 }
 
 void __init pcibios_set_cache_line_size(void)
diff --git a/arch/x86/pci/irq.c b/arch/x86/pci/irq.c
index 8658874165c2..84112f55dd7a 100644
--- a/arch/x86/pci/irq.c
+++ b/arch/x86/pci/irq.c
@@ -138,9 +138,7 @@ static void __init pirq_peer_trick(void)
 	for (i = 1; i < 256; i++) {
 		if (!busmap[i] || pci_find_bus(0, i))
 			continue;
-		if (pcibios_scan_root(i))
-			printk(KERN_INFO "PCI: Discovered primary peer "
-			       "bus %02x [IRQ]\n", i);
+		pcibios_scan_root(i);
 	}
 	pcibios_last_bus = -1;
 }


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 06/17] x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (4 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 05/17] x86/PCI: Drop return value of pcibios_scan_root() Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 07/17] x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node() Bjorn Helgaas
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

The AMD early_fill_mp_bus_info() already allocates a struct pci_root_info
for each PCI host bridge it finds, and that structure contains the NUMA
node number.  We don't need to keep the same information in the
mp_bus_to_node[] table.

This adds x86_pci_root_bus_node(), which returns the NUMA node number, or
NUMA_NO_NODE if the node is unknown.

Note that unlike get_mp_bus_to_node(), x86_pci_root_bus_node() only works
for root buses.  For example, if amd_bus.c finds a host bridge on node 1 to
[bus 00-0f], get_mp_bus_to_node() returns 1 for any bus between 00 and 0f,
but x86_pci_root_bus_node() returns 1 for bus 00 and NUMA_NO_NODE for buses
01-0f.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/include/asm/topology.h |    1 +
 arch/x86/pci/bus_numa.c         |   10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index d35f24e231cd..09046a1a6c35 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -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
diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
index c2735feb2508..2e36a4469549 100644
--- a/arch/x86/pci/bus_numa.c
+++ b/arch/x86/pci/bus_numa.c
@@ -20,6 +20,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);


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 07/17] x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node()
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (5 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 06/17] x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 08/17] x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node() Bjorn Helgaas
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

This replaces all uses of get_mp_bus_to_node() with x86_pci_root_bus_node().

I think these uses are all on root buses, except possibly for blind
probing, where NUMA node information is unimportant.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/pci/acpi.c   |    2 +-
 arch/x86/pci/common.c |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 4f25ec077552..3f42c5c05bf6 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -503,7 +503,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 		set_mp_bus_to_node(busnum, node);
 	else
 #endif
-		node = get_mp_bus_to_node(busnum);
+		node = x86_pci_root_bus_node(busnum);
 
 	if (node != -1 && !node_online(node))
 		node = -1;
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index 600e5925f1a4..f7d6800f10d1 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -467,7 +467,7 @@ void pcibios_scan_root(int busnum)
 		printk(KERN_ERR "PCI: OOM, skipping PCI bus %02x\n", busnum);
 		return;
 	}
-	sd->node = get_mp_bus_to_node(busnum);
+	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);


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 08/17] x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node()
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (6 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 07/17] x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node() Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 09/17] x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check Bjorn Helgaas
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

There are no callers of get_mp_bus_to_node(), so we no longer need
mp_bus_to_node[], get_mp_bus_to_node(), or set_mp_bus_to_node().
This removes them.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/include/asm/topology.h |   13 -------
 arch/x86/pci/acpi.c             |    4 +-
 arch/x86/pci/amd_bus.c          |   10 ------
 arch/x86/pci/common.c           |   69 ---------------------------------------
 4 files changed, 1 insertion(+), 95 deletions(-)

diff --git a/arch/x86/include/asm/topology.h b/arch/x86/include/asm/topology.h
index 09046a1a6c35..c840571afa4e 100644
--- a/arch/x86/include/asm/topology.h
+++ b/arch/x86/include/asm/topology.h
@@ -140,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 */
diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 3f42c5c05bf6..78f27efa11e1 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -499,10 +499,8 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 	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
+	if (node = -1)
 		node = x86_pci_root_bus_node(busnum);
 
 	if (node != -1 && !node_online(node))
diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c
index a48be98e9ded..a313a7fb6b86 100644
--- a/arch/x86/pci/amd_bus.c
+++ b/arch/x86/pci/amd_bus.c
@@ -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);
diff --git a/arch/x86/pci/common.c b/arch/x86/pci/common.c
index f7d6800f10d1..d491deddebae 100644
--- a/arch/x86/pci/common.c
+++ b/arch/x86/pci/common.c
@@ -683,72 +683,3 @@ int pci_ext_cfg_avail(void)
 	else
 		return 0;
 }
-
-/*
- * 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 */


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 09/17] x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (7 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 08/17] x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node() Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 10/17] x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node Bjorn Helgaas
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

list_for_each_entry() handles empty lists, so there's no need to check
whether the list is empty first.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/pci/bus_numa.c |    3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c
index 2e36a4469549..f3a2cfc14125 100644
--- a/arch/x86/pci/bus_numa.c
+++ b/arch/x86/pci/bus_numa.c
@@ -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;


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 10/17] x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (8 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 09/17] x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 11/17] x86/PCI: Remove acpi_get_pxm() usage Bjorn Helgaas
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

NUMA_NO_NODE is the usual value for "we don't know what node this is on,"
e.g., it is the error return from acpi_get_node().  This changes uses of -1
to NUMA_NO_NODE.  NUMA_NO_NODE is #defined to be -1 already, so this is not
a functional change.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/pci/acpi.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 78f27efa11e1..6304ea0f426d 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -494,17 +494,17 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 		return NULL;
 	}
 
-	node = -1;
+	node = NUMA_NO_NODE;
 #ifdef CONFIG_ACPI_NUMA
 	pxm = acpi_get_pxm(device->handle);
 	if (pxm >= 0)
 		node = pxm_to_node(pxm);
 #endif
-	if (node = -1)
+	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) {
@@ -570,7 +570,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 			pcie_bus_configure_settings(child);
 	}
 
-	if (bus && node != -1) {
+	if (bus && node != NUMA_NO_NODE) {
 #ifdef CONFIG_ACPI_NUMA
 		if (pxm >= 0)
 			dev_printk(KERN_DEBUG, &bus->dev,


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 11/17] x86/PCI: Remove acpi_get_pxm() usage
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (9 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 10/17] x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:18 ` [PATCH 12/17] ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node Bjorn Helgaas
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

The PCI host bridge code doesn't care about _PXM values directly; it only
needs to know what NUMA node the hardware is on.

This uses acpi_get_node() directly and removes the _PXM stuff.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/x86/pci/acpi.c |   19 ++-----------------
 1 file changed, 2 insertions(+), 17 deletions(-)

diff --git a/arch/x86/pci/acpi.c b/arch/x86/pci/acpi.c
index 6304ea0f426d..f44a64c74e37 100644
--- a/arch/x86/pci/acpi.c
+++ b/arch/x86/pci/acpi.c
@@ -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,12 +491,7 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 		return NULL;
 	}
 
-	node = NUMA_NO_NODE;
-#ifdef CONFIG_ACPI_NUMA
-	pxm = acpi_get_pxm(device->handle);
-	if (pxm >= 0)
-		node = pxm_to_node(pxm);
-#endif
+	node = acpi_get_node(device->handle);
 	if (node = NUMA_NO_NODE)
 		node = x86_pci_root_bus_node(busnum);
 
@@ -570,15 +562,8 @@ struct pci_bus *pci_acpi_scan_root(struct acpi_pci_root *root)
 			pcie_bus_configure_settings(child);
 	}
 
-	if (bus && node != NUMA_NO_NODE) {
-#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;
 }


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 12/17] ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (10 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 11/17] x86/PCI: Remove acpi_get_pxm() usage Bjorn Helgaas
@ 2014-01-29 18:18 ` Bjorn Helgaas
  2014-01-29 18:19 ` [PATCH 13/17] ia64: Remove acpi_get_pxm() usage Bjorn Helgaas
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:18 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

MAX_NUMNODES is typically used for sizing arrays.  NUMA_NO_NODE is the
usual value for "we don't know what node this is on," e.g., it is the
error return from acpi_get_node().

This changes the ioc->node value for unknown nodes from MAX_NUMNODES to
NUMA_NO_NODE.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/ia64/hp/common/sba_iommu.c |   14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index 8e858b593e4f..a52d6b49b7ce 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -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));
@@ -2022,7 +2024,7 @@ sba_map_ioc_to_node(struct ioc *ioc, acpi_handle handle)
 	unsigned int node;
 	int pxm;
 
-	ioc->node = MAX_NUMNODES;
+	ioc->node = NUMA_NO_NODE;
 
 	pxm = acpi_get_pxm(handle);
 
@@ -2031,7 +2033,7 @@ sba_map_ioc_to_node(struct ioc *ioc, acpi_handle handle)
 
 	node = pxm_to_node(pxm);
 
-	if (node >= MAX_NUMNODES || !node_online(node))
+	if (node = NUMA_NO_NODE || !node_online(node))
 		return;
 
 	ioc->node = node;


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 13/17] ia64: Remove acpi_get_pxm() usage
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (11 preceding siblings ...)
  2014-01-29 18:18 ` [PATCH 12/17] ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node Bjorn Helgaas
@ 2014-01-29 18:19 ` Bjorn Helgaas
  2014-01-29 18:19 ` [PATCH 14/17] ACPI / numa: Fix acpi_get_node() prototype Bjorn Helgaas
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:19 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

The IOMMU, LSAPIC, IOSAPIC, and PCI host bridge code doesn't care about
_PXM values directly; it only needs to know what NUMA node the hardware is
on.

This uses acpi_get_node() directly and removes the _PXM stuff.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 arch/ia64/hp/common/sba_iommu.c |   22 +++++-----------------
 arch/ia64/include/asm/pci.h     |    2 +-
 arch/ia64/kernel/acpi.c         |   28 +++++++---------------------
 arch/ia64/pci/pci.c             |   10 ++--------
 4 files changed, 15 insertions(+), 47 deletions(-)

diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c
index a52d6b49b7ce..007361d59aa6 100644
--- a/arch/ia64/hp/common/sba_iommu.c
+++ b/arch/ia64/hp/common/sba_iommu.c
@@ -2017,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 = NUMA_NO_NODE;
-
-	pxm = acpi_get_pxm(handle);
-
-	if (pxm < 0)
-		return;
 
-	node = pxm_to_node(pxm);
-
-	if (node = NUMA_NO_NODE || !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,
diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h
index 71fbaaa495cc..7d41cc089822 100644
--- a/arch/ia64/include/asm/pci.h
+++ b/arch/ia64/include/asm/pci.h
@@ -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;
 };
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 07d209c9507f..5a585ebe9df3 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -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;
 
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c
index 9e4938d8ca4d..291a582777cf 100644
--- a/arch/ia64/pci/pci.c
+++ b/arch/ia64/pci/pci.c
@@ -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) {


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 14/17] ACPI / numa: Fix acpi_get_node() prototype
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (12 preceding siblings ...)
  2014-01-29 18:19 ` [PATCH 13/17] ia64: Remove acpi_get_pxm() usage Bjorn Helgaas
@ 2014-01-29 18:19 ` Bjorn Helgaas
  2014-01-29 18:19 ` [PATCH 15/17] ACPI / numa: Simplify acpi_get_node() style Bjorn Helgaas
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:19 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

acpi_get_node() takes an acpi_handle, not an "acpi_handle *".  This
fixes the prototype and the definitions.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/acpi/numa.c  |    2 +-
 include/linux/acpi.h |    4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index 9e6816ef280a..dab7dac6b1a8 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -331,7 +331,7 @@ 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;
 
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 1151a1dcfe41..17bee650a0cb 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -260,13 +260,13 @@ 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;
 }


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 15/17] ACPI / numa: Simplify acpi_get_node() style
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (13 preceding siblings ...)
  2014-01-29 18:19 ` [PATCH 14/17] ACPI / numa: Fix acpi_get_node() prototype Bjorn Helgaas
@ 2014-01-29 18:19 ` Bjorn Helgaas
  2014-01-29 18:19 ` [PATCH 16/17] ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static Bjorn Helgaas
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:19 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

Simplify control flow by removing local variable initialization and
returning a constant as soon as possible.  No functional change.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/acpi/numa.c |    8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index dab7dac6b1a8..a7e779bfa2f6 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -333,12 +333,12 @@ int acpi_get_pxm(acpi_handle h)
 
 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);


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 16/17] ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (14 preceding siblings ...)
  2014-01-29 18:19 ` [PATCH 15/17] ACPI / numa: Simplify acpi_get_node() style Bjorn Helgaas
@ 2014-01-29 18:19 ` Bjorn Helgaas
  2014-01-29 18:19 ` [PATCH 17/17] ACPI / numa: Use __weak, not the gcc-specific version Bjorn Helgaas
                   ` (2 subsequent siblings)
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:19 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

__acpi_map_pxm_to_node() and acpi_get_pxm() are only used within
drivers/acpi/numa.c.  This makes them static and removes their
declarations.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/acpi/numa.c      |    4 ++--
 include/acpi/acpi_numa.h |    1 -
 include/linux/acpi.h     |    5 -----
 3 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index a7e779bfa2f6..359a43bdd948 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -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;
@@ -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;
diff --git a/include/acpi/acpi_numa.h b/include/acpi/acpi_numa.h
index 451823cb8837..94a37cd7fbda 100644
--- a/include/acpi/acpi_numa.h
+++ b/include/acpi/acpi_numa.h
@@ -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;
 
diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 17bee650a0cb..6c29abbefd41 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -259,13 +259,8 @@ 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);
 #else
-static inline int acpi_get_pxm(acpi_handle handle)
-{
-	return 0;
-}
 static inline int acpi_get_node(acpi_handle handle)
 {
 	return 0;


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* [PATCH 17/17] ACPI / numa: Use __weak, not the gcc-specific version
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (15 preceding siblings ...)
  2014-01-29 18:19 ` [PATCH 16/17] ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static Bjorn Helgaas
@ 2014-01-29 18:19 ` Bjorn Helgaas
  2014-01-29 21:23 ` [PATCH 00/17] x86, ia64 NUMA cleanup Rafael J. Wysocki
  2014-02-03 19:23 ` Bjorn Helgaas
  18 siblings, 0 replies; 21+ messages in thread
From: Bjorn Helgaas @ 2014-01-29 18:19 UTC (permalink / raw)
  To: linux-pci; +Cc: linux-acpi, x86, linux-ia64, linux-kernel

Use "__weak" instead of the gcc-specific "__attribute__ ((weak))".

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
 drivers/acpi/numa.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index 359a43bdd948..24b5476449a1 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -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


^ permalink raw reply related	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/17] x86, ia64 NUMA cleanup
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (16 preceding siblings ...)
  2014-01-29 18:19 ` [PATCH 17/17] ACPI / numa: Use __weak, not the gcc-specific version Bjorn Helgaas
@ 2014-01-29 21:23 ` Rafael J. Wysocki
  2014-02-03 19:23 ` Bjorn Helgaas
  18 siblings, 0 replies; 21+ messages in thread
From: Rafael J. Wysocki @ 2014-01-29 21:23 UTC (permalink / raw)
  To: Bjorn Helgaas; +Cc: linux-pci, linux-acpi, x86, linux-ia64, linux-kernel

On Wednesday, January 29, 2014 11:17:25 AM Bjorn Helgaas wrote:
> This is all cleanup: it adds no new functionality and should make no
> functional difference at all except a printk change or two.
> 
> The main ideas are:
> 
>   - Clean up the x86 PCI bus scanning interfaces.  We had:
>       struct pci_bus *pci_scan_bus_on_node(int bus, struct pci_ops *, int node)
>       struct pci_bus *pcibios_scan_root(int bus)
>       struct pci_bus *pci_scan_bus_with_sysdata(int bus)
>       void pcibios_scan_specific_bus(int bus)
>     These were all basically the same, so I kept only pcibios_scan_root().
> 
>   - Get rid of mp_bus_to_node[].  This was basically a way of passing node
>     info from the AMD "native host bridg driver" (amd_bus.c) into the PCI
>     core.  It was clunky and inconsistent between x86-64 and i386.  I
>     replaced it with x86_pci_root_bus_node(), analogous to the existing
>     x86_pci_root_bus_resources().
> 
>   - Remove _PXM knowledge from the PCI host bridge, IOMMU, and APIC code.
>     They really only care about the NUMA node number, not the raw _PXM
>     value.
> 
> ---
> 
> Bjorn Helgaas (17):
>       x86/PCI: Drop pcibios_scan_root() check for bus already scanned
>       x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata()
>       x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node()
>       x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root()
>       x86/PCI: Drop return value of pcibios_scan_root()
>       x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus
>       x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node()
>       x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node()
>       x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check
>       x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node
>       x86/PCI: Remove acpi_get_pxm() usage
>       ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node
>       ia64: Remove acpi_get_pxm() usage
>       ACPI / numa: Fix acpi_get_node() prototype
>       ACPI / numa: Simplify acpi_get_node() style
>       ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static
>       ACPI / numa: Use __weak, not the gcc-specific version
> 
> 
>  arch/ia64/hp/common/sba_iommu.c |   32 +++-------
>  arch/ia64/include/asm/pci.h     |    2 -
>  arch/ia64/kernel/acpi.c         |   28 ++-------
>  arch/ia64/pci/pci.c             |   10 +--
>  arch/x86/include/asm/pci.h      |    7 --
>  arch/x86/include/asm/topology.h |   14 ----
>  arch/x86/pci/acpi.c             |   29 ++-------
>  arch/x86/pci/amd_bus.c          |   10 ---
>  arch/x86/pci/bus_numa.c         |   13 +++-
>  arch/x86/pci/common.c           |  128 +++++----------------------------------
>  arch/x86/pci/fixup.c            |    6 +-
>  arch/x86/pci/irq.c              |    6 --
>  arch/x86/pci/legacy.c           |    4 -
>  arch/x86/pci/numaq_32.c         |    6 +-
>  arch/x86/pci/visws.c            |    4 +
>  drivers/acpi/numa.c             |   16 ++---
>  include/acpi/acpi_numa.h        |    1 
>  include/linux/acpi.h            |    9 +--
>  18 files changed, 75 insertions(+), 250 deletions(-)

Acked-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>

for the whole series.

Thanks!

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: [PATCH 00/17] x86, ia64 NUMA cleanup
  2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
                   ` (17 preceding siblings ...)
  2014-01-29 21:23 ` [PATCH 00/17] x86, ia64 NUMA cleanup Rafael J. Wysocki
@ 2014-02-03 19:23 ` Bjorn Helgaas
  2014-02-04 18:32   ` Luck, Tony
  18 siblings, 1 reply; 21+ messages in thread
From: Bjorn Helgaas @ 2014-02-03 19:23 UTC (permalink / raw)
  To: linux-pci@vger.kernel.org
  Cc: linux-acpi@vger.kernel.org, x86@kernel.org,
	linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org,
	Tony Luck

[+cc Tony]

On Wed, Jan 29, 2014 at 11:17 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
> This is all cleanup: it adds no new functionality and should make no
> functional difference at all except a printk change or two.
>
> The main ideas are:
>
>   - Clean up the x86 PCI bus scanning interfaces.  We had:
>       struct pci_bus *pci_scan_bus_on_node(int bus, struct pci_ops *, int node)
>       struct pci_bus *pcibios_scan_root(int bus)
>       struct pci_bus *pci_scan_bus_with_sysdata(int bus)
>       void pcibios_scan_specific_bus(int bus)
>     These were all basically the same, so I kept only pcibios_scan_root().
>
>   - Get rid of mp_bus_to_node[].  This was basically a way of passing node
>     info from the AMD "native host bridg driver" (amd_bus.c) into the PCI
>     core.  It was clunky and inconsistent between x86-64 and i386.  I
>     replaced it with x86_pci_root_bus_node(), analogous to the existing
>     x86_pci_root_bus_resources().
>
>   - Remove _PXM knowledge from the PCI host bridge, IOMMU, and APIC code.
>     They really only care about the NUMA node number, not the raw _PXM
>     value.
>
> ---
>
> Bjorn Helgaas (17):
>       x86/PCI: Drop pcibios_scan_root() check for bus already scanned
>       x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata()
>       x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node()
>       x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root()
>       x86/PCI: Drop return value of pcibios_scan_root()
>       x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus
>       x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node()
>       x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node()
>       x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check
>       x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node
>       x86/PCI: Remove acpi_get_pxm() usage
>       ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node
>       ia64: Remove acpi_get_pxm() usage
>       ACPI / numa: Fix acpi_get_node() prototype
>       ACPI / numa: Simplify acpi_get_node() style
>       ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static
>       ACPI / numa: Use __weak, not the gcc-specific version
>
>
>  arch/ia64/hp/common/sba_iommu.c |   32 +++-------
>  arch/ia64/include/asm/pci.h     |    2 -
>  arch/ia64/kernel/acpi.c         |   28 ++-------
>  arch/ia64/pci/pci.c             |   10 +--
>  arch/x86/include/asm/pci.h      |    7 --
>  arch/x86/include/asm/topology.h |   14 ----
>  arch/x86/pci/acpi.c             |   29 ++-------
>  arch/x86/pci/amd_bus.c          |   10 ---
>  arch/x86/pci/bus_numa.c         |   13 +++-
>  arch/x86/pci/common.c           |  128 +++++----------------------------------
>  arch/x86/pci/fixup.c            |    6 +-
>  arch/x86/pci/irq.c              |    6 --
>  arch/x86/pci/legacy.c           |    4 -
>  arch/x86/pci/numaq_32.c         |    6 +-
>  arch/x86/pci/visws.c            |    4 +
>  drivers/acpi/numa.c             |   16 ++---
>  include/acpi/acpi_numa.h        |    1
>  include/linux/acpi.h            |    9 +--
>  18 files changed, 75 insertions(+), 250 deletions(-)

I added this series to my "next" branch for v3.14.  Tony, let me know
if you see any ia64 issues.

Bjorn

^ permalink raw reply	[flat|nested] 21+ messages in thread

* RE: [PATCH 00/17] x86, ia64 NUMA cleanup
  2014-02-03 19:23 ` Bjorn Helgaas
@ 2014-02-04 18:32   ` Luck, Tony
  0 siblings, 0 replies; 21+ messages in thread
From: Luck, Tony @ 2014-02-04 18:32 UTC (permalink / raw)
  To: Bjorn Helgaas, linux-pci@vger.kernel.org
  Cc: linux-acpi@vger.kernel.org, x86@kernel.org,
	linux-ia64@vger.kernel.org, linux-kernel@vger.kernel.org

PiBJIGFkZGVkIHRoaXMgc2VyaWVzIHRvIG15ICJuZXh0IiBicmFuY2ggZm9yIHYzLjE0LiAgVG9u
eSwgbGV0IG1lIGtub3cNCj4gaWYgeW91IHNlZSBhbnkgaWE2NCBpc3N1ZXMuDQoNCkl0IHNob3dl
ZCB1cCBpbiBuZXh0LTIwMTQwMjA0IC0gYW5kIGRvZXNuJ3Qgc2VlbSB0byBoYXZlIGNhdXNlZCBh
bnkgYnVpbGQgb3IgYm9vdA0KcHJvYmxlbXMgb24gbXkgdGVzdCBtYWNoaW5lcy4NCg0KLVRvbnkN
Cg=

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2014-02-04 18:32 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-29 18:17 [PATCH 00/17] x86, ia64 NUMA cleanup Bjorn Helgaas
2014-01-29 18:17 ` [PATCH 01/17] x86/PCI: Drop pcibios_scan_root() check for bus already scanned Bjorn Helgaas
2014-01-29 18:17 ` [PATCH 02/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_with_sysdata() Bjorn Helgaas
2014-01-29 18:17 ` [PATCH 03/17] x86/PCI: Use pcibios_scan_root() instead of pci_scan_bus_on_node() Bjorn Helgaas
2014-01-29 18:17 ` [PATCH 04/17] x86/PCI: Merge pci_scan_bus_on_node() into pcibios_scan_root() Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 05/17] x86/PCI: Drop return value of pcibios_scan_root() Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 06/17] x86/PCI: Add x86_pci_root_bus_node() to look up NUMA node from PCI bus Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 07/17] x86/PCI: Use x86_pci_root_bus_node() instead of get_mp_bus_to_node() Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 08/17] x86/PCI: Remove mp_bus_to_node[], set_mp_bus_to_node(), get_mp_bus_to_node() Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 09/17] x86/PCI: Remove unnecessary list_empty(&pci_root_infos) check Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 10/17] x86/PCI: Use NUMA_NO_NODE, not -1, for unknown node Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 11/17] x86/PCI: Remove acpi_get_pxm() usage Bjorn Helgaas
2014-01-29 18:18 ` [PATCH 12/17] ia64 / sba_iommu: Use NUMA_NO_NODE, not MAX_NUMNODES, for unknown node Bjorn Helgaas
2014-01-29 18:19 ` [PATCH 13/17] ia64: Remove acpi_get_pxm() usage Bjorn Helgaas
2014-01-29 18:19 ` [PATCH 14/17] ACPI / numa: Fix acpi_get_node() prototype Bjorn Helgaas
2014-01-29 18:19 ` [PATCH 15/17] ACPI / numa: Simplify acpi_get_node() style Bjorn Helgaas
2014-01-29 18:19 ` [PATCH 16/17] ACPI / numa: Make __acpi_map_pxm_to_node(), acpi_get_pxm() static Bjorn Helgaas
2014-01-29 18:19 ` [PATCH 17/17] ACPI / numa: Use __weak, not the gcc-specific version Bjorn Helgaas
2014-01-29 21:23 ` [PATCH 00/17] x86, ia64 NUMA cleanup Rafael J. Wysocki
2014-02-03 19:23 ` Bjorn Helgaas
2014-02-04 18:32   ` Luck, Tony

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox