[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 062/106] NUMA: check if the total numa memory size
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 062/106] NUMA: check if the total numa memory size is equal to ram_size |
Date: |
Wed, 18 Jun 2014 19:19:34 +0300 |
From: Wanlong Gao <address@hidden>
If the total number of the assigned numa nodes memory is not
equal to the assigned ram size, it will write the wrong data
to ACPI table, then the guest will ignore the wrong ACPI table
and recognize all memory to one node. It's buggy, we should
check it to ensure that we write the right data to ACPI table.
Signed-off-by: Wanlong Gao <address@hidden>
Reviewed-by: Eduardo Habkost <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
Signed-off-by: Hu Tao <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
Acked-by: Michael S. Tsirkin <address@hidden>
MST: error message reworded
---
numa.c | 14 ++++++++++++++
1 file changed, 14 insertions(+)
diff --git a/numa.c b/numa.c
index bd0d2b7..e403399 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;
--
MST
- [Qemu-devel] [PULL v2 017/106] pc-dimm: add busy address check and address auto-allocation, (continued)
- [Qemu-devel] [PULL v2 017/106] pc-dimm: add busy address check and address auto-allocation, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 008/106] qdev: expose DeviceState.hotplugged field as a property, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 048/106] vhost: add vhost_get_features and vhost_ack_features, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 076/106] memory: move mem_path handling to memory_region_allocate_system_memory, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 037/106] virtio: Drop superfluous conditionals around g_strdup(), Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 072/106] configure: add Linux libnuma detection, Michael S. Tsirkin, 2014/06/18
- Re: [Qemu-devel] [PULL v2 000/106] pc, pci, virtio, hotplug fixes, enhancements, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 032/106] pc: ACPI BIOS: reserve SRAT entry for hotplug mem hole, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 013/106] pc: exit QEMU if number of slots more than supported 256, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 035/106] acpi-test: update expected tables, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 062/106] NUMA: check if the total numa memory size is equal to ram_size,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v2 041/106] migration: introduce self_announce_delay(), Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 038/106] ich: get rid of spaces in type name, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 028/106] pc: add acpi-device link to PCMachineState, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 031/106] pc: add "hotplug-memory-region-size" property to PC_MACHINE, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 049/106] vhost_net should call the poll callback only when it is set, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 050/106] Refactor virtio-net to use generic get_vhost_net, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 051/106] vhost_net_init will use VhostNetOptions to get all its arguments, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 015/106] pc: exit QEMU if compat machine doesn't support memory hotlpug, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 047/106] Add G_IO_HUP handler for socket chardev, Michael S. Tsirkin, 2014/06/18
- [Qemu-devel] [PULL v2 036/106] virtio: Drop superfluous conditionals around g_free(), Michael S. Tsirkin, 2014/06/18