Commit 655659a74a ("target/arm: Correct encoding of Debug Communications Channel registers") removed one register and added two more. This breaks TCG migration:
1) to 10.1 - older versions will have one unknown register { .name = "DBGDTRTX", .state = ARM_CP_STATE_AA32, .cp = 14, .crn = 0, .crm = 5, .opc1 = 3, .opc2 = 0 } kvmid: 0x40200000200e0298 2) from 10.1 - older versions will not accept more registers than their cpreg_vmstate_array_len (292 > 291). I'm proposing a (RFC) stop-gap fix for (1) so 10.1 can be used as a migration target until we figure out how to add some form of versioning of the cpregs_indexes list and keep track of what has been added/removed throughout the releases. Even with infrastructure in place to do compatibility of the cpregs list, there is still the need to avoid (or justify) guest-visible changes resulting from some registers not being migrated. Anyway, let's discuss. PS: the extra patches are to enable cross-version testing on aarch64, which would have flagged this early. My apologies as this is entirely my fault because enabling these tests for arm has been on my list for a long time. Fabiano Rosas (3): target/arm: Fix migration to QEMU 10.1 tests/qtest/migration: Only test aarch64 on TCG tests/qtest/migration: Change cpu for aarch64 target/arm/machine.c | 24 +++++++++++++++++++++++- tests/qtest/migration/framework.c | 19 ++++++++++++++----- 2 files changed, 37 insertions(+), 6 deletions(-) -- 2.35.3