numa: Reject configuration if not all node IDs are present

We don't support sparse NUMA node IDs yet, so this changes QEMU to
reject configs where not all nodes are present.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Eduardo Habkost 2014-06-26 18:33:20 -03:00 committed by Michael S. Tsirkin
parent 1945b9d8b0
commit 12d6e4640c

17
numa.c
View File

@ -160,9 +160,24 @@ error:
void set_numa_nodes(void) void set_numa_nodes(void)
{ {
int i;
assert(max_numa_nodeid <= MAX_NODES);
/* No support for sparse NUMA node IDs yet: */
for (i = max_numa_nodeid - 1; i >= 0; i--) {
/* Report large node IDs first, to make mistakes easier to spot */
if (!numa_info[i].present) {
error_report("numa: Node ID missing: %d", i);
exit(1);
}
}
/* This must be always true if all nodes are present: */
assert(nb_numa_nodes == max_numa_nodeid);
if (nb_numa_nodes > 0) { if (nb_numa_nodes > 0) {
uint64_t numa_total; uint64_t numa_total;
int i;
if (nb_numa_nodes > MAX_NODES) { if (nb_numa_nodes > MAX_NODES) {
nb_numa_nodes = MAX_NODES; nb_numa_nodes = MAX_NODES;