张东旭 <xu910121@xxxxxxxx> reported a regression seen with CentOS when migrating from an old kernel to a new one. The problem was that QEMU rejected the migration since KVM_GET_REG_LIST reported a register was missing on the destination. Extra registers are OK on the destination, but not missing ones. The regression reproduces with upstream kernels when migrating from a 4.15 or later kernel, up to one with commit 73433762fcae ("KVM: arm64/sve: System register context switch and access support"), to a kernel that includes that commit, e.g. the latest mainline (5.10-rc2). The first patch of this series is the fix. The next two patches, which don't have any intended functional changes, allow ID_SANITISED to be used for registers that flip between exposing features and being RAZ, which allows some code to be removed. v3: - Improve commit messages [Dave] - Add new patch to consolidate REG_HIDDEN* flags [Dave] v2: - CC stable [Marc] - Only one RAZ flag is enough [Marc] - Move id_visibility() up by read_id_reg() since they'll likely be maintained together [drew] Andrew Jones (4): KVM: arm64: Don't hide ID registers from userspace KVM: arm64: Consolidate REG_HIDDEN_GUEST/USER KVM: arm64: Check RAZ visibility in ID register accessors KVM: arm64: Remove AA64ZFR0_EL1 accessors arch/arm64/kvm/sys_regs.c | 108 ++++++++++++-------------------------- arch/arm64/kvm/sys_regs.h | 16 +++--- 2 files changed, 41 insertions(+), 83 deletions(-) -- 2.26.2 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm