[PATCH v2 00/19] KVM/arm64: Refactoring the vcpu flags

Marc Zyngier
2022-06-10T09:30:33Z

This is a iteration on [1], which aims at making the vcpu flags suck a
bit less.

* From v1 [1]:
- Rebased onto v5.19-rc1
- Took the first two patches into kvmarm-fixes, included here for
completeness
- Additional patch to move system_supports_fpsimd() outside of
the run path (Reiji)
- Expanded on comments (Reiji)
- New kvm_pend_exception() accessor (Fuad)
- Various bracketing fixups (Reiji)
- Some renaming (Reiji, Broonie)
- Collected RBs, with thanks

[1] https://lore.kernel.org/r/20220528113829.1043361-1-maz@kernel.org

Marc Zyngier (19):
KVM: arm64: Always start with clearing SVE flag on load
KVM: arm64: Always start with clearing SME flag on load
KVM: arm64: Drop FP_FOREIGN_STATE from the hypervisor code
KVM: arm64: Move FP state ownership from flag to a tristate
KVM: arm64: Add helpers to manipulate vcpu flags among a set
KVM: arm64: Add three sets of flags to the vcpu state
KVM: arm64: Move vcpu configuration flags into their own set
KVM: arm64: Move vcpu PC/Exception flags to the input flag set
KVM: arm64: Move vcpu debug/SPE/TRBE flags to the input flag set
KVM: arm64: Move vcpu SVE/SME flags to the state flag set
KVM: arm64: Move vcpu ON_UNSUPPORTED_CPU flag to the state flag set
KVM: arm64: Move vcpu WFIT flag to the state flag set
KVM: arm64: Kill unused vcpu flags field
KVM: arm64: Convert vcpu sysregs_loaded_on_cpu to a state flag
KVM: arm64: Warn when PENDING_EXCEPTION and INCREMENT_PC are set
together
KVM: arm64: Add build-time sanity checks for flags
KVM: arm64: Reduce the size of the vcpu flag members
KVM: arm64: Document why pause cannot be turned into a flag
KVM: arm64: Move the handling of !FP outside of the fast path

arch/arm64/include/asm/kvm_emulate.h | 11 +-
arch/arm64/include/asm/kvm_host.h | 203 +++++++++++++++------
arch/arm64/kvm/arch_timer.c | 2 +-
arch/arm64/kvm/arm.c | 12 +-
arch/arm64/kvm/debug.c | 25 ++-
arch/arm64/kvm/fpsimd.c | 37 ++--
arch/arm64/kvm/handle_exit.c | 2 +-
arch/arm64/kvm/hyp/exception.c | 23 ++-
arch/arm64/kvm/hyp/include/hyp/debug-sr.h | 6 +-
arch/arm64/kvm/hyp/include/hyp/switch.h | 24 +--
arch/arm64/kvm/hyp/include/hyp/sysreg-sr.h | 4 +-
arch/arm64/kvm/hyp/nvhe/debug-sr.c | 8 +-
arch/arm64/kvm/hyp/nvhe/switch.c | 6 +-
arch/arm64/kvm/hyp/nvhe/sys_regs.c | 4 +-
arch/arm64/kvm/hyp/vhe/switch.c | 4 +-
arch/arm64/kvm/hyp/vhe/sysreg-sr.c | 4 +-
arch/arm64/kvm/inject_fault.c | 17 +-
arch/arm64/kvm/reset.c | 6 +-
arch/arm64/kvm/sys_regs.c | 12 +-
19 files changed, 248 insertions(+), 162 deletions(-)

--
2.34.1