[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <1461014052-30788-12-git-send-email-ddaney.cavm@gmail.com>
Date: Mon, 18 Apr 2016 14:14:09 -0700
From: David Daney <ddaney.cavm@...il.com>
To: Will Deacon <will.deacon@....com>,
linux-arm-kernel@...ts.infradead.org,
Mark Rutland <mark.rutland@....com>,
Catalin Marinas <catalin.marinas@....com>,
Tony Luck <tony.luck@...el.com>,
Fenghua Yu <fenghua.yu@...el.com>,
Thomas Gleixner <tglx@...utronix.de>,
Ingo Molnar <mingo@...hat.com>,
"H. Peter Anvin" <hpa@...or.com>, x86@...nel.org,
"Rafael J. Wysocki" <rjw@...ysocki.net>,
Len Brown <lenb@...nel.org>, Rob Herring <robh+dt@...nel.org>,
Frank Rowand <frowand.list@...il.com>,
Grant Likely <grant.likely@...aro.org>,
Robert Moore <robert.moore@...el.com>,
Lv Zheng <lv.zheng@...el.com>,
Hanjun Guo <hanjun.guo@...aro.org>,
Marc Zyngier <Marc.Zyngier@....com>,
linux-ia64@...r.kernel.org, linux-acpi@...r.kernel.org,
devel@...ica.org
Cc: linux-kernel@...r.kernel.org, Robert Richter <rrichter@...ium.com>,
David Daney <david.daney@...ium.com>
Subject: [PATCH v4 11/14] acpi, numa, srat: Improve SRAT error detection and add messages.
From: David Daney <david.daney@...ium.com>
Loosely based on code from Robert Richter and Hanjun Guo.
Improve out of range node detection as well as allow for Larger SRAT
entities.
Add printing of nice messages.
Signed-off-by: David Daney <david.daney@...ium.com>
---
drivers/acpi/numa.c | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/drivers/acpi/numa.c b/drivers/acpi/numa.c
index c4ea877..6133eb1 100644
--- a/drivers/acpi/numa.c
+++ b/drivers/acpi/numa.c
@@ -240,8 +240,11 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
if (srat_disabled())
goto out_err;
- if (ma->header.length != sizeof(struct acpi_srat_mem_affinity))
+ if (ma->header.length < sizeof(struct acpi_srat_mem_affinity)) {
+ pr_err("SRAT: Unexpected header length: %d\n",
+ ma->header.length);
goto out_err_bad_srat;
+ }
if ((ma->flags & ACPI_SRAT_MEM_ENABLED) == 0)
goto out_err;
hotpluggable = ma->flags & ACPI_SRAT_MEM_HOT_PLUGGABLE;
@@ -255,13 +258,17 @@ acpi_numa_memory_affinity_init(struct acpi_srat_mem_affinity *ma)
pxm &= 0xff;
node = acpi_map_pxm_to_node(pxm);
- if (node < 0) {
- printk(KERN_ERR "SRAT: Too many proximity domains.\n");
+ if (node == NUMA_NO_NODE || node >= MAX_NUMNODES) {
+ pr_err("SRAT: Too many proximity domains.\n");
goto out_err_bad_srat;
}
- if (numa_add_memblk(node, start, end) < 0)
+ if (numa_add_memblk(node, start, end) < 0) {
+ pr_err("SRAT: Failed to add memblk to node %u [mem %#010Lx-%#010Lx]\n",
+ node, (unsigned long long) start,
+ (unsigned long long) end - 1);
goto out_err_bad_srat;
+ }
node_set(node, numa_nodes_parsed);
--
1.7.11.7
Powered by blists - more mailing lists