mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 16:12:59 +02:00
selftests: KVM: Use KVM_SET_MP_STATE to power off vCPU in psci_test
Setting a vCPU's MP state to KVM_MP_STATE_STOPPED has the effect of powering off the vCPU. Rather than using the vCPU init feature flag, use the KVM_SET_MP_STATE ioctl to power off the target vCPU. Signed-off-by: Oliver Upton <oupton@google.com> Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20220504032446.4133305-11-oupton@google.com
This commit is contained in:
parent
694e3dcc47
commit
d135399a97
|
|
@ -60,6 +60,15 @@ static void guest_main(uint64_t target_cpu)
|
|||
GUEST_DONE();
|
||||
}
|
||||
|
||||
static void vcpu_power_off(struct kvm_vm *vm, uint32_t vcpuid)
|
||||
{
|
||||
struct kvm_mp_state mp_state = {
|
||||
.mp_state = KVM_MP_STATE_STOPPED,
|
||||
};
|
||||
|
||||
vcpu_set_mp_state(vm, vcpuid, &mp_state);
|
||||
}
|
||||
|
||||
int main(void)
|
||||
{
|
||||
uint64_t target_mpidr, obs_pc, obs_x0;
|
||||
|
|
@ -75,12 +84,12 @@ int main(void)
|
|||
init.features[0] |= (1 << KVM_ARM_VCPU_PSCI_0_2);
|
||||
|
||||
aarch64_vcpu_add_default(vm, VCPU_ID_SOURCE, &init, guest_main);
|
||||
aarch64_vcpu_add_default(vm, VCPU_ID_TARGET, &init, guest_main);
|
||||
|
||||
/*
|
||||
* make sure the target is already off when executing the test.
|
||||
*/
|
||||
init.features[0] |= (1 << KVM_ARM_VCPU_POWER_OFF);
|
||||
aarch64_vcpu_add_default(vm, VCPU_ID_TARGET, &init, guest_main);
|
||||
vcpu_power_off(vm, VCPU_ID_TARGET);
|
||||
|
||||
get_reg(vm, VCPU_ID_TARGET, KVM_ARM64_SYS_REG(SYS_MPIDR_EL1), &target_mpidr);
|
||||
vcpu_args_set(vm, VCPU_ID_SOURCE, 1, target_mpidr & MPIDR_HWID_BITMASK);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user