1. 19 Sep, 2022 1 commit
    • Reiji Watanabe's avatar
      KVM: arm64: Preserve PSTATE.SS for the guest while single-step is enabled · 34fbdee0
      Reiji Watanabe authored
      Preserve the PSTATE.SS value for the guest while userspace enables
      single-step (i.e. while KVM manipulates the PSTATE.SS) for the vCPU.
      
      Currently, while userspace enables single-step for the vCPU
      (with KVM_GUESTDBG_SINGLESTEP), KVM sets PSTATE.SS to 1 on every
      guest entry, not saving its original value.
      When userspace disables single-step, KVM doesn't restore the original
      value for the subsequent guest entry (use the current value instead).
      Exception return instructions copy PSTATE.SS from SPSR_ELx.SS
      only in certain cases when single-step is enabled (and set it to 0
      in other cases). So, the value matters only when the guest enables
      single-step (and when the guest's Software step state isn't affected
      by single-step enabled by userspace, practically), though.
      
      Fix this by preserving the original PSTATE.SS value while userspace
      enables single-step, and restoring the value once it is disabled.
      
      This fix modifies the behavior of GET_ONE_REG/SET_ONE_REG for the
      PSTATE.SS while single-step is enabled by userspace.
      Presently, GET_ONE_REG/SET_ONE_REG gets/sets the current PSTATE.SS
      value, which KVM will override on the next guest entry (i.e. the
      value userspace gets/sets is not used for the next guest entry).
      With this patch, GET_ONE_REG/SET_ONE_REG will get/set the guest's
      preserved value, which KVM will preserve and try to restore after
      single-step is disabled.
      
      Fixes: 337b99bf ("KVM: arm64: guest debug, add support for single-step")
      Signed-off-by: default avatarReiji Watanabe <reijiw@google.com>
      Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
      Link: https://lore.kernel.org/r/20220917010600.532642-2-reijiw@google.com
      34fbdee0
  2. 28 Aug, 2022 25 commits
  3. 27 Aug, 2022 14 commits