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@xxxxxxxxxx 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