* [rebased-again][PATCH 0/4] acpi: do some changes for numa info
@ 2013-02-25 2:38 liguang
2013-02-25 2:38 ` [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c liguang
` (5 more replies)
0 siblings, 6 replies; 10+ messages in thread
From: liguang @ 2013-02-25 2:38 UTC (permalink / raw)
To: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
Cc: liguang
just do some trivial changes to make acpi's numa info
operation more cleaner.
ChangeLog
v3->v4
1.fix srat_disabled function
spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
v2->v3
1. rebase on linux-next
2. bring back lost Makefile changes
spotted by David Rientjes <rientjes@google.com>
spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
v1->v2
1. fix-up several coding issues
2. finish srat.c change
spotted by David Rientjes <rientjes@google.com>
Li Guang (4)
acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
numa: avoid export acpi_numa variable
acpi: add clock_domain field to acpi_srat_cpu_affinity
remove include asm/acpi.h in process_driver.c
arch/x86/include/asm/acpi.h | 2 +-
arch/x86/kernel/acpi/Makefile | 1 +
arch/x86/kernel/acpi/srat.c | 299 +++++++++++++++++++++++++++++++++++++++++
arch/x86/mm/Makefile | 1 -
arch/x86/mm/numa.c | 2 +-
arch/x86/mm/srat.c | 278 -----------------------------------------
arch/x86/xen/enlighten.c | 2 +-
drivers/acpi/processor_driver.c | 1 -
include/acpi/actbl1.h | 2 +-
9 files changed, 296 insertions(+), 292 deletions(-)
create mode 100644 arch/x86/kernel/acpi/srat.c
delete mode 100644 arch/x86/mm/srat.c
^ permalink raw reply [flat|nested] 10+ messages in thread
* [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
@ 2013-02-25 2:38 ` liguang
2013-02-25 22:51 ` David Rientjes
2013-02-25 2:38 ` [rebased-again][PATCH 2/4] numa: avoid export acpi_numa variable liguang
` (4 subsequent siblings)
5 siblings, 1 reply; 10+ messages in thread
From: liguang @ 2013-02-25 2:38 UTC (permalink / raw)
To: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
Cc: liguang
srat table should present only on acpi domain,
seems mm/ is not the right place for it.
Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
---
arch/x86/kernel/acpi/Makefile | 1 +
arch/x86/kernel/acpi/srat.c | 284 +++++++++++++++++++++++++++++++++++++++++
arch/x86/mm/Makefile | 1 -
arch/x86/mm/srat.c | 284 -----------------------------------------
4 files changed, 285 insertions(+), 285 deletions(-)
create mode 100644 arch/x86/kernel/acpi/srat.c
delete mode 100644 arch/x86/mm/srat.c
diff --git a/arch/x86/kernel/acpi/Makefile b/arch/x86/kernel/acpi/Makefile
index 163b225..98cea92 100644
--- a/arch/x86/kernel/acpi/Makefile
+++ b/arch/x86/kernel/acpi/Makefile
@@ -1,5 +1,6 @@
obj-$(CONFIG_ACPI) += boot.o
obj-$(CONFIG_ACPI_SLEEP) += sleep.o wakeup_$(BITS).o
+obj-$(CONFIG_ACPI_NUMA) += srat.o
ifneq ($(CONFIG_ACPI_PROCESSOR),)
obj-y += cstate.o
diff --git a/arch/x86/kernel/acpi/srat.c b/arch/x86/kernel/acpi/srat.c
new file mode 100644
index 0000000..459c391
--- /dev/null
+++ b/arch/x86/kernel/acpi/srat.c
@@ -0,0 +1,284 @@
+/*
+ * ACPI 3.0 based NUMA setup
+ * Copyright 2004 Andi Kleen, SuSE Labs.
+ *
+ * Reads the ACPI SRAT table to figure out what memory belongs to which CPUs.
+ *
+ * Called from acpi_numa_init while reading the SRAT and SLIT tables.
+ * Assumes all memory regions belonging to a single proximity domain
+ * are in one chunk. Holes between them will be included in the node.
+ */
+
+#include <linux/kernel.h>
+#include <linux/acpi.h>
+#include <linux/mmzone.h>
+#include <linux/bitmap.h>
+#include <linux/module.h>
+#include <linux/topology.h>
+#include <linux/bootmem.h>
+#include <linux/memblock.h>
+#include <linux/mm.h>
+#include <asm/proto.h>
+#include <asm/numa.h>
+#include <asm/e820.h>
+#include <asm/apic.h>
+#include <asm/uv/uv.h>
+
+int acpi_numa __initdata;
+
+static __init int setup_node(int pxm)
+{
+ return acpi_map_pxm_to_node(pxm);
+}
+
+static __init void bad_srat(void)
+{
+ printk(KERN_ERR "SRAT: SRAT not used.\n");
+ acpi_numa = -1;
+}
+
+static __init inline int srat_disabled(void)
+{
+ return acpi_numa < 0;
+}
+
+/* Callback for SLIT parsing */
+void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
+{
+ int i, j;
+
+ for (i = 0; i < slit->locality_count; i++)
+ for (j = 0; j < slit->locality_count; j++)
+ numa_set_distance(pxm_to_node(i), pxm_to_node(j),
+ slit->entry[slit->locality_count * i + j]);
+}
+
+/* Callback for Proximity Domain -> x2APIC mapping */
+void __init
+acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
+{
+ int pxm, node;
+ int apic_id;
+
+ if (srat_disabled())
+ return;
+ if (pa->header.length < sizeof(struct acpi_srat_x2apic_cpu_affinity)) {
+ bad_srat();
+ return;
+ }
+ if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
+ return;
+ pxm = pa->proximity_domain;
+ apic_id = pa->apic_id;
+ if (!apic->apic_id_valid(apic_id)) {
+ printk(KERN_INFO "SRAT: PXM %u -> X2APIC 0x%04x ignored\n",
+ pxm, apic_id);
+ return;
+ }
+ node = setup_node(pxm);
+ if (node < 0) {
+ printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
+ bad_srat();
+ return;
+ }
+
+ if (apic_id >= MAX_LOCAL_APIC) {
+ printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%04x -> Node %u skipped apicid that is too big\n", pxm, apic_id, node);
+ return;
+ }
+ set_apicid_to_node(apic_id, node);
+ node_set(node, numa_nodes_parsed);
+ acpi_numa = 1;
+ printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%04x -> Node %u\n",
+ pxm, apic_id, node);
+}
+
+/* Callback for Proximity Domain -> LAPIC mapping */
+void __init
+acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
+{
+ int pxm, node;
+ int apic_id;
+
+ if (srat_disabled())
+ return;
+ if (pa->header.length != sizeof(struct acpi_srat_cpu_affinity)) {
+ bad_srat();
+ return;
+ }
+ if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
+ return;
+ pxm = pa->proximity_domain_lo;
+ if (acpi_srat_revision >= 2)
+ pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8;
+ node = setup_node(pxm);
+ if (node < 0) {
+ printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
+ bad_srat();
+ return;
+ }
+
+ if (get_uv_system_type() >= UV_X2APIC)
+ apic_id = (pa->apic_id << 8) | pa->local_sapic_eid;
+ else
+ apic_id = pa->apic_id;
+
+ if (apic_id >= MAX_LOCAL_APIC) {
+ printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%02x -> Node %u skipped apicid that is too big\n", pxm, apic_id, node);
+ return;
+ }
+
+ set_apicid_to_node(apic_id, node);
+ node_set(node, numa_nodes_parsed);
+ acpi_numa = 1;
+ printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%02x -> Node %u\n",
+ pxm, apic_id, node);
+}
+
+#ifdef CONFIG_MEMORY_HOTPLUG
+static inline int save_add_info(void) {return 1;}
+#else
+static inline int save_add_info(void) {return 0;}
+#endif
+
+#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
+static void __init
+handle_movablemem(int node, u64 start, u64 end, u32 hotpluggable)
+{
+ int overlap;
+ unsigned long start_pfn, end_pfn;
+
+ start_pfn = PFN_DOWN(start);
+ end_pfn = PFN_UP(end);
+
+ /*
+ * For movablemem_map=acpi:
+ *
+ * SRAT: |_____| |_____| |_________| |_________| ......
+ * node id: 0 1 1 2
+ * hotpluggable: n y y n
+ * movablemem_map: |_____| |_________|
+ *
+ * Using movablemem_map, we can prevent memblock from allocating memory
+ * on ZONE_MOVABLE at boot time.
+ */
+ if (hotpluggable && movablemem_map.acpi) {
+ insert_movablemem_map(start_pfn, end_pfn);
+
+ /*
+ * numa_nodes_hotplug nodemask represents which nodes are put
+ * into movablemem_map.map[].
+ */
+ node_set(node, movablemem_map.numa_nodes_hotplug);
+ goto out;
+ }
+
+ /*
+ * For movablemem_map=nn[KMG]@ss[KMG]:
+ *
+ * SRAT: |_____| |_____| |_________| |_________| ......
+ * node id: 0 1 1 2
+ * user specified: |__| |___|
+ * movablemem_map: |___| |_________| |______| ......
+ *
+ * Using movablemem_map, we can prevent memblock from allocating memory
+ * on ZONE_MOVABLE at boot time.
+ *
+ * NOTE: In this case, SRAT info will be ingored.
+ */
+ overlap = movablemem_map_overlap(start_pfn, end_pfn);
+ if (overlap >= 0) {
+ /*
+ * If part of this range is in movablemem_map, we need to
+ * add the range after it to extend the range to the end
+ * of the node, because from the min address specified to
+ * the end of the node will be ZONE_MOVABLE.
+ */
+ start_pfn = max(start_pfn,
+ movablemem_map.map[overlap].start_pfn);
+ insert_movablemem_map(start_pfn, end_pfn);
+
+ /*
+ * Set the nodemask, so that if the address range on one node
+ * is not continuse, we can add the subsequent ranges on the
+ * same node into movablemem_map.
+ */
+ node_set(node, movablemem_map.numa_nodes_hotplug);
+ } else {
+ if (node_isset(node, movablemem_map.numa_nodes_hotplug))
+ /*
+ * Insert the range if we already have movable ranges
+ * on the same node.
+ */
+ insert_movablemem_map(start_pfn, end_pfn);
+ }
+out:
+ return;
+}
+#else /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
+static inline void
+handle_movablemem(int node, u64 start, u64 end, u32 hotpluggable)
+{
+}
+#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
+
+/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */
+int __init
+acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
+{
+ u64 start, end;
+ u32 hotpluggable;
+ int node, pxm;
+
+ if (srat_disabled())
+ goto out_err;
+ if (ma->header.length != sizeof(struct acpi_srat_mem_affinity))
+ goto out_err_bad_srat;
+ if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0)
+ goto out_err;
+ hotpluggable = ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE;
+ if (hotpluggable && !save_add_info())
+ goto out_err;
+
+ start = ma->base_address;
+ end = start + ma->length;
+ pxm = ma->proximity_domain;
+ if (acpi_srat_revision <= 1)
+ pxm &= 0xff;
+
+ node = setup_node(pxm);
+ if (node < 0) {
+ printk(KERN_ERR "SRAT: Too many proximity domains.\n");
+ goto out_err_bad_srat;
+ }
+
+ if (numa_add_memblk(node, start, end) < 0)
+ goto out_err_bad_srat;
+
+ node_set(node, numa_nodes_parsed);
+
+ printk(KERN_INFO "SRAT: Node %u PXM %u [mem %#010Lx-%#010Lx] %s\n",
+ node, pxm,
+ (unsigned long long) start, (unsigned long long) end - 1,
+ hotpluggable ? "Hot Pluggable": "");
+
+ handle_movablemem(node, start, end, hotpluggable);
+
+ return 0;
+out_err_bad_srat:
+ bad_srat();
+out_err:
+ return -1;
+}
+
+void __init acpi_numa_arch_fixup(void) {}
+
+int __init x86_acpi_numa_init(void)
+{
+ int ret;
+
+ ret = acpi_numa_init();
+ if (ret < 0)
+ return ret;
+ return srat_disabled() ? -EINVAL : 0;
+}
diff --git a/arch/x86/mm/Makefile b/arch/x86/mm/Makefile
index 23d8e5f..d6f3692 100644
--- a/arch/x86/mm/Makefile
+++ b/arch/x86/mm/Makefile
@@ -24,7 +24,6 @@ obj-$(CONFIG_MMIOTRACE_TEST) += testmmiotrace.o
obj-$(CONFIG_NUMA) += numa.o numa_$(BITS).o
obj-$(CONFIG_AMD_NUMA) += amdtopology.o
-obj-$(CONFIG_ACPI_NUMA) += srat.o
obj-$(CONFIG_NUMA_EMU) += numa_emulation.o
obj-$(CONFIG_MEMTEST) += memtest.o
diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c
deleted file mode 100644
index 459c391..0000000
--- a/arch/x86/mm/srat.c
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * ACPI 3.0 based NUMA setup
- * Copyright 2004 Andi Kleen, SuSE Labs.
- *
- * Reads the ACPI SRAT table to figure out what memory belongs to which CPUs.
- *
- * Called from acpi_numa_init while reading the SRAT and SLIT tables.
- * Assumes all memory regions belonging to a single proximity domain
- * are in one chunk. Holes between them will be included in the node.
- */
-
-#include <linux/kernel.h>
-#include <linux/acpi.h>
-#include <linux/mmzone.h>
-#include <linux/bitmap.h>
-#include <linux/module.h>
-#include <linux/topology.h>
-#include <linux/bootmem.h>
-#include <linux/memblock.h>
-#include <linux/mm.h>
-#include <asm/proto.h>
-#include <asm/numa.h>
-#include <asm/e820.h>
-#include <asm/apic.h>
-#include <asm/uv/uv.h>
-
-int acpi_numa __initdata;
-
-static __init int setup_node(int pxm)
-{
- return acpi_map_pxm_to_node(pxm);
-}
-
-static __init void bad_srat(void)
-{
- printk(KERN_ERR "SRAT: SRAT not used.\n");
- acpi_numa = -1;
-}
-
-static __init inline int srat_disabled(void)
-{
- return acpi_numa < 0;
-}
-
-/* Callback for SLIT parsing */
-void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
-{
- int i, j;
-
- for (i = 0; i < slit->locality_count; i++)
- for (j = 0; j < slit->locality_count; j++)
- numa_set_distance(pxm_to_node(i), pxm_to_node(j),
- slit->entry[slit->locality_count * i + j]);
-}
-
-/* Callback for Proximity Domain -> x2APIC mapping */
-void __init
-acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
-{
- int pxm, node;
- int apic_id;
-
- if (srat_disabled())
- return;
- if (pa->header.length < sizeof(struct acpi_srat_x2apic_cpu_affinity)) {
- bad_srat();
- return;
- }
- if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
- return;
- pxm = pa->proximity_domain;
- apic_id = pa->apic_id;
- if (!apic->apic_id_valid(apic_id)) {
- printk(KERN_INFO "SRAT: PXM %u -> X2APIC 0x%04x ignored\n",
- pxm, apic_id);
- return;
- }
- node = setup_node(pxm);
- if (node < 0) {
- printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
- bad_srat();
- return;
- }
-
- if (apic_id >= MAX_LOCAL_APIC) {
- printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%04x -> Node %u skipped apicid that is too big\n", pxm, apic_id, node);
- return;
- }
- set_apicid_to_node(apic_id, node);
- node_set(node, numa_nodes_parsed);
- acpi_numa = 1;
- printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%04x -> Node %u\n",
- pxm, apic_id, node);
-}
-
-/* Callback for Proximity Domain -> LAPIC mapping */
-void __init
-acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
-{
- int pxm, node;
- int apic_id;
-
- if (srat_disabled())
- return;
- if (pa->header.length != sizeof(struct acpi_srat_cpu_affinity)) {
- bad_srat();
- return;
- }
- if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
- return;
- pxm = pa->proximity_domain_lo;
- if (acpi_srat_revision >= 2)
- pxm |= *((unsigned int*)pa->proximity_domain_hi) << 8;
- node = setup_node(pxm);
- if (node < 0) {
- printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
- bad_srat();
- return;
- }
-
- if (get_uv_system_type() >= UV_X2APIC)
- apic_id = (pa->apic_id << 8) | pa->local_sapic_eid;
- else
- apic_id = pa->apic_id;
-
- if (apic_id >= MAX_LOCAL_APIC) {
- printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%02x -> Node %u skipped apicid that is too big\n", pxm, apic_id, node);
- return;
- }
-
- set_apicid_to_node(apic_id, node);
- node_set(node, numa_nodes_parsed);
- acpi_numa = 1;
- printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%02x -> Node %u\n",
- pxm, apic_id, node);
-}
-
-#ifdef CONFIG_MEMORY_HOTPLUG
-static inline int save_add_info(void) {return 1;}
-#else
-static inline int save_add_info(void) {return 0;}
-#endif
-
-#ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP
-static void __init
-handle_movablemem(int node, u64 start, u64 end, u32 hotpluggable)
-{
- int overlap;
- unsigned long start_pfn, end_pfn;
-
- start_pfn = PFN_DOWN(start);
- end_pfn = PFN_UP(end);
-
- /*
- * For movablemem_map=acpi:
- *
- * SRAT: |_____| |_____| |_________| |_________| ......
- * node id: 0 1 1 2
- * hotpluggable: n y y n
- * movablemem_map: |_____| |_________|
- *
- * Using movablemem_map, we can prevent memblock from allocating memory
- * on ZONE_MOVABLE at boot time.
- */
- if (hotpluggable && movablemem_map.acpi) {
- insert_movablemem_map(start_pfn, end_pfn);
-
- /*
- * numa_nodes_hotplug nodemask represents which nodes are put
- * into movablemem_map.map[].
- */
- node_set(node, movablemem_map.numa_nodes_hotplug);
- goto out;
- }
-
- /*
- * For movablemem_map=nn[KMG]@ss[KMG]:
- *
- * SRAT: |_____| |_____| |_________| |_________| ......
- * node id: 0 1 1 2
- * user specified: |__| |___|
- * movablemem_map: |___| |_________| |______| ......
- *
- * Using movablemem_map, we can prevent memblock from allocating memory
- * on ZONE_MOVABLE at boot time.
- *
- * NOTE: In this case, SRAT info will be ingored.
- */
- overlap = movablemem_map_overlap(start_pfn, end_pfn);
- if (overlap >= 0) {
- /*
- * If part of this range is in movablemem_map, we need to
- * add the range after it to extend the range to the end
- * of the node, because from the min address specified to
- * the end of the node will be ZONE_MOVABLE.
- */
- start_pfn = max(start_pfn,
- movablemem_map.map[overlap].start_pfn);
- insert_movablemem_map(start_pfn, end_pfn);
-
- /*
- * Set the nodemask, so that if the address range on one node
- * is not continuse, we can add the subsequent ranges on the
- * same node into movablemem_map.
- */
- node_set(node, movablemem_map.numa_nodes_hotplug);
- } else {
- if (node_isset(node, movablemem_map.numa_nodes_hotplug))
- /*
- * Insert the range if we already have movable ranges
- * on the same node.
- */
- insert_movablemem_map(start_pfn, end_pfn);
- }
-out:
- return;
-}
-#else /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
-static inline void
-handle_movablemem(int node, u64 start, u64 end, u32 hotpluggable)
-{
-}
-#endif /* CONFIG_HAVE_MEMBLOCK_NODE_MAP */
-
-/* Callback for parsing of the Proximity Domain <-> Memory Area mappings */
-int __init
-acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
-{
- u64 start, end;
- u32 hotpluggable;
- int node, pxm;
-
- if (srat_disabled())
- goto out_err;
- if (ma->header.length != sizeof(struct acpi_srat_mem_affinity))
- goto out_err_bad_srat;
- if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0)
- goto out_err;
- hotpluggable = ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE;
- if (hotpluggable && !save_add_info())
- goto out_err;
-
- start = ma->base_address;
- end = start + ma->length;
- pxm = ma->proximity_domain;
- if (acpi_srat_revision <= 1)
- pxm &= 0xff;
-
- node = setup_node(pxm);
- if (node < 0) {
- printk(KERN_ERR "SRAT: Too many proximity domains.\n");
- goto out_err_bad_srat;
- }
-
- if (numa_add_memblk(node, start, end) < 0)
- goto out_err_bad_srat;
-
- node_set(node, numa_nodes_parsed);
-
- printk(KERN_INFO "SRAT: Node %u PXM %u [mem %#010Lx-%#010Lx] %s\n",
- node, pxm,
- (unsigned long long) start, (unsigned long long) end - 1,
- hotpluggable ? "Hot Pluggable": "");
-
- handle_movablemem(node, start, end, hotpluggable);
-
- return 0;
-out_err_bad_srat:
- bad_srat();
-out_err:
- return -1;
-}
-
-void __init acpi_numa_arch_fixup(void) {}
-
-int __init x86_acpi_numa_init(void)
-{
- int ret;
-
- ret = acpi_numa_init();
- if (ret < 0)
- return ret;
- return srat_disabled() ? -EINVAL : 0;
-}
--
1.7.2.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [rebased-again][PATCH 2/4] numa: avoid export acpi_numa variable
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
2013-02-25 2:38 ` [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c liguang
@ 2013-02-25 2:38 ` liguang
2013-02-25 2:38 ` [rebased-again][PATCH 3/4] acpi: add clock_domain field to acpi_srat_cpu_affinity liguang
` (3 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: liguang @ 2013-02-25 2:38 UTC (permalink / raw)
To: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
Cc: liguang
acpi_numa is used to prevent srat table
being parsed, seems a little miss-named,
if 'noacpi' was specified by cmdline and
CONFIG_ACPI_NUMA was enabled, acpi_numa
will be operated directly from everywhere
it needed to disable/enable numa in acpi
mode which was a bad thing, so, try to
export a fuction to get srat table
enable/disable info.
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
---
arch/x86/include/asm/acpi.h | 2 +-
arch/x86/kernel/acpi/srat.c | 21 +++++++++++++--------
arch/x86/mm/numa.c | 2 +-
arch/x86/xen/enlighten.c | 2 +-
4 files changed, 16 insertions(+), 11 deletions(-)
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index b31bf97..449e12a 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -177,7 +177,7 @@ static inline void disable_acpi(void) { }
#define ARCH_HAS_POWER_INIT 1
#ifdef CONFIG_ACPI_NUMA
-extern int acpi_numa;
+extern void disable_acpi_numa(void);
extern int x86_acpi_numa_init(void);
#endif /* CONFIG_ACPI_NUMA */
diff --git a/arch/x86/kernel/acpi/srat.c b/arch/x86/kernel/acpi/srat.c
index 459c391..e20baad 100644
--- a/arch/x86/kernel/acpi/srat.c
+++ b/arch/x86/kernel/acpi/srat.c
@@ -24,22 +24,27 @@
#include <asm/apic.h>
#include <asm/uv/uv.h>
-int acpi_numa __initdata;
+static bool acpi_numa __initdata;
static __init int setup_node(int pxm)
{
return acpi_map_pxm_to_node(pxm);
}
-static __init void bad_srat(void)
+void __init disable_acpi_numa(void)
{
- printk(KERN_ERR "SRAT: SRAT not used.\n");
- acpi_numa = -1;
+ acpi_numa = false;
}
-static __init inline int srat_disabled(void)
+static void __init bad_srat(void)
{
- return acpi_numa < 0;
+ disable_acpi_numa();
+ printk(KERN_ERR "SRAT: SRAT will not be used.\n");
+}
+
+static bool __init srat_disabled(void)
+{
+ return acpi_numa == false;
}
/* Callback for SLIT parsing */
@@ -88,7 +93,7 @@ acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
}
set_apicid_to_node(apic_id, node);
node_set(node, numa_nodes_parsed);
- acpi_numa = 1;
+ acpi_numa = true;
printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%04x -> Node %u\n",
pxm, apic_id, node);
}
@@ -130,7 +135,7 @@ acpi_numa_processor_affinity_init(struct acpi_srat_cpu_affinity *pa)
set_apicid_to_node(apic_id, node);
node_set(node, numa_nodes_parsed);
- acpi_numa = 1;
+ acpi_numa = true;
printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%02x -> Node %u\n",
pxm, apic_id, node);
}
diff --git a/arch/x86/mm/numa.c b/arch/x86/mm/numa.c
index 3545585..62e3b2a 100644
--- a/arch/x86/mm/numa.c
+++ b/arch/x86/mm/numa.c
@@ -47,7 +47,7 @@ static __init int numa_setup(char *opt)
#endif
#ifdef CONFIG_ACPI_NUMA
if (!strncmp(opt, "noacpi", 6))
- acpi_numa = -1;
+ disable_acpi_numa();
#endif
return 0;
}
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index bd4c134..724ac84 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1447,7 +1447,7 @@ asmlinkage void __init xen_start_kernel(void)
* any NUMA information the kernel tries to get from ACPI will
* be meaningless. Prevent it from trying.
*/
- acpi_numa = -1;
+ disable_acpi_numa();
#endif
/* Don't do the full vcpu_info placement stuff until we have a
--
1.7.2.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [rebased-again][PATCH 3/4] acpi: add clock_domain field to acpi_srat_cpu_affinity
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
2013-02-25 2:38 ` [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c liguang
2013-02-25 2:38 ` [rebased-again][PATCH 2/4] numa: avoid export acpi_numa variable liguang
@ 2013-02-25 2:38 ` liguang
2013-02-25 2:38 ` [rebased-again][PATCH 4/4] remove include asm/acpi.h in process_driver.c liguang
` (2 subsequent siblings)
5 siblings, 0 replies; 10+ messages in thread
From: liguang @ 2013-02-25 2:38 UTC (permalink / raw)
To: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
Cc: liguang
according to ACPI SPEC v5.0, page 152,
5.2.16.1 Processor Local APIC/SAPIC Affinity Structure,
the last member of it is clock_domain.
Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
---
include/acpi/actbl1.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/acpi/actbl1.h b/include/acpi/actbl1.h
index 0bd750e..e21d22b 100644
--- a/include/acpi/actbl1.h
+++ b/include/acpi/actbl1.h
@@ -922,7 +922,7 @@ struct acpi_srat_cpu_affinity {
u32 flags;
u8 local_sapic_eid;
u8 proximity_domain_hi[3];
- u32 reserved; /* Reserved, must be zero */
+ u32 clock_domain;
};
/* Flags */
--
1.7.2.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* [rebased-again][PATCH 4/4] remove include asm/acpi.h in process_driver.c
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
` (2 preceding siblings ...)
2013-02-25 2:38 ` [rebased-again][PATCH 3/4] acpi: add clock_domain field to acpi_srat_cpu_affinity liguang
@ 2013-02-25 2:38 ` liguang
2013-03-04 1:21 ` [rebased-again][PATCH 0/4] acpi: do some changes for numa info li guang
2013-05-23 0:25 ` li guang
5 siblings, 0 replies; 10+ messages in thread
From: liguang @ 2013-02-25 2:38 UTC (permalink / raw)
To: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
Cc: liguang
process_driver.c include linux/acpi.h which already
include asm/acpi.h, so remove it.
Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
Acked-by: David Rientjes <rientjes@google.com>
Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
---
drivers/acpi/processor_driver.c | 1 -
1 files changed, 0 insertions(+), 1 deletions(-)
diff --git a/drivers/acpi/processor_driver.c b/drivers/acpi/processor_driver.c
index df34bd0..341258a 100644
--- a/drivers/acpi/processor_driver.c
+++ b/drivers/acpi/processor_driver.c
@@ -53,7 +53,6 @@
#include <asm/uaccess.h>
#include <asm/processor.h>
#include <asm/smp.h>
-#include <asm/acpi.h>
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>
--
1.7.2.5
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
2013-02-25 2:38 ` [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c liguang
@ 2013-02-25 22:51 ` David Rientjes
2013-02-26 1:01 ` li guang
0 siblings, 1 reply; 10+ messages in thread
From: David Rientjes @ 2013-02-25 22:51 UTC (permalink / raw)
To: liguang
Cc: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
On Mon, 25 Feb 2013, liguang wrote:
> srat table should present only on acpi domain,
> seems mm/ is not the right place for it.
>
> Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
You're still missing 01a178a94e8e ("acpi, memory-hotplug: support getting
hotplug info from SRAT") that was merged at the end of last week. Instead
of continuing to rebase perhaps it would be better at this point to ask
the x86 maintainers to just do the patch for you?
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
2013-02-25 22:51 ` David Rientjes
@ 2013-02-26 1:01 ` li guang
0 siblings, 0 replies; 10+ messages in thread
From: li guang @ 2013-02-26 1:01 UTC (permalink / raw)
To: David Rientjes
Cc: tglx, hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave,
linux-kernel, linux-acpi, x86
在 2013-02-25一的 14:51 -0800,David Rientjes写道:
> On Mon, 25 Feb 2013, liguang wrote:
>
> > srat table should present only on acpi domain,
> > seems mm/ is not the right place for it.
> >
> > Reviewed-by: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> > Signed-off-by: liguang <lig.fnst@cn.fujitsu.com>
>
> You're still missing 01a178a94e8e ("acpi, memory-hotplug: support getting
> hotplug info from SRAT") that was merged at the end of last week. Instead
> of continuing to rebase perhaps it would be better at this point to ask
> the x86 maintainers to just do the patch for you?
maybe I have to ask them to help generate this patch,
I pulled latest since 25th, Feb, and re-generate this patch,
and it did have the commit you've pointed out.
Thanks!
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [rebased-again][PATCH 0/4] acpi: do some changes for numa info
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
` (3 preceding siblings ...)
2013-02-25 2:38 ` [rebased-again][PATCH 4/4] remove include asm/acpi.h in process_driver.c liguang
@ 2013-03-04 1:21 ` li guang
2013-04-09 0:23 ` li guang
2013-05-23 0:25 ` li guang
5 siblings, 1 reply; 10+ messages in thread
From: li guang @ 2013-03-04 1:21 UTC (permalink / raw)
To: tglx
Cc: hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave, linux-kernel,
linux-acpi, x86
Hi, Thomas, Peter, Ingo
can you help to merge these 4 patches?
or do you have any other comments?
在 2013-02-25一的 10:38 +0800,liguang写道:
> just do some trivial changes to make acpi's numa info
> operation more cleaner.
>
> ChangeLog
>
> v3->v4
> 1.fix srat_disabled function
> spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>
> v2->v3
> 1. rebase on linux-next
> 2. bring back lost Makefile changes
> spotted by David Rientjes <rientjes@google.com>
> spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>
> v1->v2
> 1. fix-up several coding issues
> 2. finish srat.c change
> spotted by David Rientjes <rientjes@google.com>
>
> Li Guang (4)
> acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
> numa: avoid export acpi_numa variable
> acpi: add clock_domain field to acpi_srat_cpu_affinity
> remove include asm/acpi.h in process_driver.c
>
> arch/x86/include/asm/acpi.h | 2 +-
> arch/x86/kernel/acpi/Makefile | 1 +
> arch/x86/kernel/acpi/srat.c | 299 +++++++++++++++++++++++++++++++++++++++++
> arch/x86/mm/Makefile | 1 -
> arch/x86/mm/numa.c | 2 +-
> arch/x86/mm/srat.c | 278 -----------------------------------------
> arch/x86/xen/enlighten.c | 2 +-
> drivers/acpi/processor_driver.c | 1 -
> include/acpi/actbl1.h | 2 +-
> 9 files changed, 296 insertions(+), 292 deletions(-)
> create mode 100644 arch/x86/kernel/acpi/srat.c
> delete mode 100644 arch/x86/mm/srat.c
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [rebased-again][PATCH 0/4] acpi: do some changes for numa info
2013-03-04 1:21 ` [rebased-again][PATCH 0/4] acpi: do some changes for numa info li guang
@ 2013-04-09 0:23 ` li guang
0 siblings, 0 replies; 10+ messages in thread
From: li guang @ 2013-04-09 0:23 UTC (permalink / raw)
To: tglx
Cc: hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave, linux-kernel,
linux-acpi, x86
ping ...
在 2013-03-04一的 09:21 +0800,li guang写道:
> Hi, Thomas, Peter, Ingo
>
> can you help to merge these 4 patches?
> or do you have any other comments?
>
>
> 在 2013-02-25一的 10:38 +0800,liguang写道:
> > just do some trivial changes to make acpi's numa info
> > operation more cleaner.
> >
> > ChangeLog
> >
> > v3->v4
> > 1.fix srat_disabled function
> > spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> >
> > v2->v3
> > 1. rebase on linux-next
> > 2. bring back lost Makefile changes
> > spotted by David Rientjes <rientjes@google.com>
> > spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
> >
> > v1->v2
> > 1. fix-up several coding issues
> > 2. finish srat.c change
> > spotted by David Rientjes <rientjes@google.com>
> >
> > Li Guang (4)
> > acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
> > numa: avoid export acpi_numa variable
> > acpi: add clock_domain field to acpi_srat_cpu_affinity
> > remove include asm/acpi.h in process_driver.c
> >
> > arch/x86/include/asm/acpi.h | 2 +-
> > arch/x86/kernel/acpi/Makefile | 1 +
> > arch/x86/kernel/acpi/srat.c | 299 +++++++++++++++++++++++++++++++++++++++++
> > arch/x86/mm/Makefile | 1 -
> > arch/x86/mm/numa.c | 2 +-
> > arch/x86/mm/srat.c | 278 -----------------------------------------
> > arch/x86/xen/enlighten.c | 2 +-
> > drivers/acpi/processor_driver.c | 1 -
> > include/acpi/actbl1.h | 2 +-
> > 9 files changed, 296 insertions(+), 292 deletions(-)
> > create mode 100644 arch/x86/kernel/acpi/srat.c
> > delete mode 100644 arch/x86/mm/srat.c
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at http://www.tux.org/lkml/
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [rebased-again][PATCH 0/4] acpi: do some changes for numa info
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
` (4 preceding siblings ...)
2013-03-04 1:21 ` [rebased-again][PATCH 0/4] acpi: do some changes for numa info li guang
@ 2013-05-23 0:25 ` li guang
5 siblings, 0 replies; 10+ messages in thread
From: li guang @ 2013-05-23 0:25 UTC (permalink / raw)
To: tglx
Cc: hpa, pavel, rjw, lv.zheng, jarkko.sakkinen, dave, linux-kernel,
linux-acpi, x86
ping ...
again.
在 2013-02-25一的 10:38 +0800,liguang写道:
> just do some trivial changes to make acpi's numa info
> operation more cleaner.
>
> ChangeLog
>
> v3->v4
> 1.fix srat_disabled function
> spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>
> v2->v3
> 1. rebase on linux-next
> 2. bring back lost Makefile changes
> spotted by David Rientjes <rientjes@google.com>
> spotted by Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
>
> v1->v2
> 1. fix-up several coding issues
> 2. finish srat.c change
> spotted by David Rientjes <rientjes@google.com>
>
> Li Guang (4)
> acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c
> numa: avoid export acpi_numa variable
> acpi: add clock_domain field to acpi_srat_cpu_affinity
> remove include asm/acpi.h in process_driver.c
>
> arch/x86/include/asm/acpi.h | 2 +-
> arch/x86/kernel/acpi/Makefile | 1 +
> arch/x86/kernel/acpi/srat.c | 299 +++++++++++++++++++++++++++++++++++++++++
> arch/x86/mm/Makefile | 1 -
> arch/x86/mm/numa.c | 2 +-
> arch/x86/mm/srat.c | 278 -----------------------------------------
> arch/x86/xen/enlighten.c | 2 +-
> drivers/acpi/processor_driver.c | 1 -
> include/acpi/actbl1.h | 2 +-
> 9 files changed, 296 insertions(+), 292 deletions(-)
> create mode 100644 arch/x86/kernel/acpi/srat.c
> delete mode 100644 arch/x86/mm/srat.c
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2013-05-23 0:25 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-02-25 2:38 [rebased-again][PATCH 0/4] acpi: do some changes for numa info liguang
2013-02-25 2:38 ` [rebased-again][PATCH 1/4] acpi: move x86/mm/srat.c to x86/kernel/acpi/srat.c liguang
2013-02-25 22:51 ` David Rientjes
2013-02-26 1:01 ` li guang
2013-02-25 2:38 ` [rebased-again][PATCH 2/4] numa: avoid export acpi_numa variable liguang
2013-02-25 2:38 ` [rebased-again][PATCH 3/4] acpi: add clock_domain field to acpi_srat_cpu_affinity liguang
2013-02-25 2:38 ` [rebased-again][PATCH 4/4] remove include asm/acpi.h in process_driver.c liguang
2013-03-04 1:21 ` [rebased-again][PATCH 0/4] acpi: do some changes for numa info li guang
2013-04-09 0:23 ` li guang
2013-05-23 0:25 ` li guang
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®