aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numa.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/numa.c b/numa.c
index bd0d2b7b0f..e4033994cd 100644
--- a/numa.c
+++ b/numa.c
@@ -26,6 +26,8 @@
#include "exec/cpu-common.h"
#include "qemu/bitmap.h"
#include "qom/cpu.h"
+#include "qemu/error-report.h"
+#include "include/exec/cpu-common.h" /* for RAM_ADDR_FMT */
static void numa_node_parse_cpus(int nodenr, const char *cpus)
{
@@ -126,6 +128,7 @@ void numa_add(const char *optarg)
void set_numa_nodes(void)
{
if (nb_numa_nodes > 0) {
+ uint64_t numa_total;
int i;
if (nb_numa_nodes > MAX_NODES) {
@@ -153,6 +156,17 @@ void set_numa_nodes(void)
node_mem[i] = ram_size - usedmem;
}
+ numa_total = 0;
+ for (i = 0; i < nb_numa_nodes; i++) {
+ numa_total += node_mem[i];
+ }
+ if (numa_total != ram_size) {
+ error_report("total memory for NUMA nodes (%" PRIu64 ")"
+ " should equal RAM size (" RAM_ADDR_FMT ")",
+ numa_total, ram_size);
+ exit(1);
+ }
+
for (i = 0; i < nb_numa_nodes; i++) {
if (!bitmap_empty(node_cpumask[i], MAX_CPUMASK_BITS)) {
break;