This is v2 of this series reworking the vcpu first run. KVM/arm64 relies heavily on a bunch of things to be done on the first run of the vcpu. We also do a bunch of things on PID change. It turns out that these two things are pretty similar (the first PID change is also the first run). This small series aims at simplifying all that, and to get rid of the vcpu->arch.has_run_once state. On top of being a decent cleanup, it also results in a minor performance improvement (my Debian installer on M1 consistently went from 2:23 down to 2:22, a ~0.6% reduction in execution time). * From v1 [1]: - Moved the kvm_vcpu_initialized() check into kvm_vcpu_first_run_init() - Reorganise the series so that the userspace irqchip static key change appears earlier - Collected Andrew's RBs [1] https://lore.kernel/org/r/20211015090822.2994920-1-maz@xxxxxxxxxx Marc Zyngier (5): KVM: arm64: Move SVE state mapping at HYP to finalize-time KVM: arm64: Move kvm_arch_vcpu_run_pid_change() out of line KVM: arm64: Restructure the point where has_run_once is advertised KVM: arm64: Merge kvm_arch_vcpu_run_pid_change() and kvm_vcpu_first_run_init() KVM: arm64: Drop vcpu->arch.has_run_once for vcpu->pid arch/arm64/include/asm/kvm_host.h | 12 ++----- arch/arm64/kvm/arm.c | 57 +++++++++++++++++-------------- arch/arm64/kvm/fpsimd.c | 11 ------ arch/arm64/kvm/reset.c | 11 +++++- arch/arm64/kvm/vgic/vgic-init.c | 2 +- 5 files changed, 46 insertions(+), 47 deletions(-) -- 2.30.2