ANDROID: KVM: arm64: Remove MP state tracking from EL2 Remove MP state tracking for VCPUs from EL2. MP state tracks PSCI state, and therefore is redundant. Signed-off-by: Fuad Tabba <tabba@google.com>
diff --git a/arch/arm64/kvm/hyp/nvhe/pkvm.c b/arch/arm64/kvm/hyp/nvhe/pkvm.c index dc5184b..e575188 100644 --- a/arch/arm64/kvm/hyp/nvhe/pkvm.c +++ b/arch/arm64/kvm/hyp/nvhe/pkvm.c
@@ -502,7 +502,7 @@ static void pkvm_vcpu_init_ptrauth(struct pkvm_hyp_vcpu *hyp_vcpu) } } -static void pkvm_vcpu_init_psci(struct pkvm_hyp_vcpu *hyp_vcpu) +static void pkvm_vcpu_init_psci(struct pkvm_hyp_vcpu *hyp_vcpu, u32 mp_state) { struct vcpu_reset_state *reset_state = &hyp_vcpu->vcpu.arch.reset_state; @@ -515,7 +515,7 @@ static void pkvm_vcpu_init_psci(struct pkvm_hyp_vcpu *hyp_vcpu) return; } - if (hyp_vcpu->vcpu.arch.mp_state.mp_state == KVM_MP_STATE_STOPPED) { + if (mp_state == KVM_MP_STATE_STOPPED) { reset_state->reset = false; hyp_vcpu->power_state = PSCI_0_2_AFFINITY_LEVEL_OFF; } else { @@ -644,7 +644,6 @@ static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu, hyp_vcpu->vcpu.arch.hw_mmu = &hyp_vm->kvm.arch.mmu; hyp_vcpu->vcpu.arch.cflags = READ_ONCE(host_vcpu->arch.cflags); - hyp_vcpu->vcpu.arch.mp_state.mp_state = mp_state; ret = pkvm_vcpu_init_sve(hyp_vcpu, host_vcpu); if (ret) @@ -653,7 +652,7 @@ static int init_pkvm_hyp_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu, pkvm_vcpu_init_ptrauth(hyp_vcpu); pkvm_vcpu_init_traps(hyp_vcpu); kvm_reset_pvm_sys_regs(&hyp_vcpu->vcpu); - pkvm_vcpu_init_psci(hyp_vcpu); + pkvm_vcpu_init_psci(hyp_vcpu, mp_state); done: if (ret) unpin_host_vcpu(host_vcpu); @@ -962,7 +961,6 @@ void pkvm_reset_vcpu(struct pkvm_hyp_vcpu *hyp_vcpu) hyp_vcpu->exit_code = 0; WARN_ON(hyp_vcpu->power_state != PSCI_0_2_AFFINITY_LEVEL_ON_PENDING); - WRITE_ONCE(hyp_vcpu->vcpu.arch.mp_state.mp_state, KVM_MP_STATE_RUNNABLE); WRITE_ONCE(hyp_vcpu->power_state, PSCI_0_2_AFFINITY_LEVEL_ON); } @@ -1127,12 +1125,7 @@ static bool pvm_psci_vcpu_affinity_info(struct pkvm_hyp_vcpu *hyp_vcpu) */ static bool pvm_psci_vcpu_off(struct pkvm_hyp_vcpu *hyp_vcpu) { - struct kvm_vcpu *vcpu = &hyp_vcpu->vcpu; - - WARN_ON(vcpu->arch.mp_state.mp_state == KVM_MP_STATE_STOPPED); WARN_ON(hyp_vcpu->power_state != PSCI_0_2_AFFINITY_LEVEL_ON); - - WRITE_ONCE(vcpu->arch.mp_state.mp_state, KVM_MP_STATE_STOPPED); WRITE_ONCE(hyp_vcpu->power_state, PSCI_0_2_AFFINITY_LEVEL_OFF); /* Return to the host so that it can finish powering off the vcpu. */