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