@@ -133,7 +133,14 @@ extern uint8_t qemu_extra_params_fw[2];
extern QEMUClockType rtc_clock;
#define MAX_NODES 64
-#define MAX_CPUMASK_BITS 255
+
+/* The following should be true for all CPUs:
+ * cpu->cpu_index < max_cpus <= MAX_CPUS
+ *
+ * Note that cpu->get_arch_id() may be larger than MAX_CPUS.
+ */
+#define MAX_CPUS 255
+
extern int nb_numa_nodes;
extern uint64_t node_mem[MAX_NODES];
extern unsigned long *node_cpumask[MAX_NODES];
@@ -1278,11 +1278,11 @@ static void numa_node_parse_cpus(int nodenr, const char *cpus)
goto error;
}
- if (endvalue >= MAX_CPUMASK_BITS) {
- endvalue = MAX_CPUMASK_BITS - 1;
+ if (endvalue >= MAX_CPUS) {
+ endvalue = MAX_CPUS - 1;
fprintf(stderr,
"qemu: NUMA: A max of %d VCPUs are supported\n",
- MAX_CPUMASK_BITS);
+ MAX_CPUS);
}
if (endvalue < value) {
@@ -2954,7 +2954,7 @@ int main(int argc, char **argv, char **envp)
for (i = 0; i < MAX_NODES; i++) {
node_mem[i] = 0;
- node_cpumask[i] = bitmap_new(MAX_CPUMASK_BITS);
+ node_cpumask[i] = bitmap_new(MAX_CPUS);
}
nb_numa_nodes = 0;
@@ -4245,7 +4245,7 @@ int main(int argc, char **argv, char **envp)
}
for (i = 0; i < nb_numa_nodes; i++) {
- if (!bitmap_empty(node_cpumask[i], MAX_CPUMASK_BITS)) {
+ if (!bitmap_empty(node_cpumask[i], MAX_CPUS)) {
break;
}
}
Also, document what the macro is really useful for. Signed-off-by: Eduardo Habkost <ehabkost@redhat.com> --- include/sysemu/sysemu.h | 9 ++++++++- vl.c | 10 +++++----- 2 files changed, 13 insertions(+), 6 deletions(-)