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


Reply via email to