@samitouri / QOSamiQemu / commits / 06fd39e426

target/arm/hvf: Stop pre-allocating cpreg_vmstate arrays

Commit ab2ddc7b66 ("target/arm/machine: Use VMSTATE_VARRAY_INT32_ALLOC for cpreg arrays") moved cpreg_vmstate_indexes / cpreg_vmstate_values to be allocated by VMSTATE_VARRAY_INT32_ALLOC and added an assertion in cpu_pre_load() that they are NULL on entry. The same commit dropped the redundant g_renew()/array_len assignments from the kvm, whpx and helper.c cpu init paths, but the hvf cpu init path still pre-allocates them. The result is that loading a snapshot or migration stream into an HVF guest immediately aborts: ERROR:target/arm/machine.c:1043:cpu_pre_load: assertion failed: (!cpu->cpreg_vmstate_indexes) Drop the leftover cpreg_vmstate_indexes / cpreg_vmstate_values allocations and the cpreg_vmstate_array_len assignment from hvf_arch_init_vcpu(), matching what was already done for the other arm accelerators. Signed-off-by: Scott J. Goldman <scottjgo@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Scott J. Goldman committed Apr 27, 2026 at 16:21 UTC 06fd39e426bbd3a68e50fc847892e7448174ce2f
1 file changed -7
target/arm/hvf/hvf.c
-7
@@ -1412,12 +1412,6 @@ int hvf_arch_init_vcpu(CPUState *cpu)
1412 sregs_match_len);
1413 arm_cpu->cpreg_values = g_renew(uint64_t, arm_cpu->cpreg_values,
1414 sregs_match_len);
1415 - arm_cpu->cpreg_vmstate_indexes = g_renew(uint64_t,
1416 - arm_cpu->cpreg_vmstate_indexes,
1417 - sregs_match_len);
1418 - arm_cpu->cpreg_vmstate_values = g_renew(uint64_t,
1419 - arm_cpu->cpreg_vmstate_values,
1420 - sregs_match_len);
1415
1416 memset(arm_cpu->cpreg_values, 0, sregs_match_len * sizeof(uint64_t));
1417
@@ -1462,7 +1456,6 @@ int hvf_arch_init_vcpu(CPUState *cpu)
1456 }
1457 }
1458 arm_cpu->cpreg_array_len = sregs_cnt;
1465 - arm_cpu->cpreg_vmstate_array_len = sregs_cnt;
1459
1460 /* cpreg tuples must be in strictly ascending order */
1461 qsort(arm_cpu->cpreg_indexes, sregs_cnt, sizeof(uint64_t), compare_u64);