• Marc Zyngier's avatar
    Merge branch kvm-arm64/mpidr-reset into kvmarm-master/next · eaa46a28
    Marc Zyngier authored
    * kvm-arm64/mpidr-reset:
      : .
      : Fixes for CLIDR_EL1 and MPIDR_EL1 being accidentally mutable across
      : a vcpu reset, courtesy of Oliver. From the cover letter:
      :
      : "For VM-wide feature ID registers we ensure they get initialized once for
      : the lifetime of a VM. On the other hand, vCPU-local feature ID registers
      : get re-initialized on every vCPU reset, potentially clobbering the
      : values userspace set up.
      :
      : MPIDR_EL1 and CLIDR_EL1 are the only registers in this space that we
      : allow userspace to modify for now. Clobbering the value of MPIDR_EL1 has
      : some disastrous side effects as the compressed index used by the
      : MPIDR-to-vCPU lookup table assumes MPIDR_EL1 is immutable after KVM_RUN.
      :
      : Series + reproducer test case to address the problem of KVM wiping out
      : userspace changes to these registers. Note that there are still some
      : differences between VM and vCPU scoped feature ID registers from the
      : perspective of userspace. We do not allow the value of VM-scope
      : registers to change after KVM_RUN, but vCPU registers remain mutable."
      : .
      KVM: selftests: arm64: Test vCPU-scoped feature ID registers
      KVM: selftests: arm64: Test that feature ID regs survive a reset
      KVM: selftests: arm64: Store expected register value in set_id_regs
      KVM: selftests: arm64: Rename helper in set_id_regs to imply VM scope
      KVM: arm64: Only reset vCPU-scoped feature ID regs once
      KVM: arm64: Reset VM feature ID regs from kvm_reset_sys_regs()
      KVM: arm64: Rename is_id_reg() to imply VM scope
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    eaa46a28
arm.c 66.4 KB