|
@@ -117,6 +117,9 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
|
|
|
int ret = -EINVAL;
|
|
int ret = -EINVAL;
|
|
|
bool loaded;
|
|
bool loaded;
|
|
|
|
|
|
|
|
|
|
+ /* Reset PMU outside of the non-preemptible section */
|
|
|
|
|
+ kvm_pmu_vcpu_reset(vcpu);
|
|
|
|
|
+
|
|
|
preempt_disable();
|
|
preempt_disable();
|
|
|
loaded = (vcpu->cpu != -1);
|
|
loaded = (vcpu->cpu != -1);
|
|
|
if (loaded)
|
|
if (loaded)
|
|
@@ -164,9 +167,6 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
|
|
|
vcpu->arch.reset_state.reset = false;
|
|
vcpu->arch.reset_state.reset = false;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- /* Reset PMU */
|
|
|
|
|
- kvm_pmu_vcpu_reset(vcpu);
|
|
|
|
|
-
|
|
|
|
|
/* Default workaround setup is enabled (if supported) */
|
|
/* Default workaround setup is enabled (if supported) */
|
|
|
if (kvm_arm_have_ssbd() == KVM_SSBD_KERNEL)
|
|
if (kvm_arm_have_ssbd() == KVM_SSBD_KERNEL)
|
|
|
vcpu->arch.workaround_flags |= VCPU_WORKAROUND_2_FLAG;
|
|
vcpu->arch.workaround_flags |= VCPU_WORKAROUND_2_FLAG;
|