From 44dd7b40b495c7511a4a3667295f8e2d643c9317 Mon Sep 17 00:00:00 2001 From: Yuan Lu Date: Wed, 14 Aug 2024 14:32:08 +0800 Subject: [PATCH] hv: hypercall: change condition for hcall_get_cpu_pm_state After rebooting guest, CPPC initialization failed because _CST and _CPC missed in DSDT table. When writing _CST and _CPC in DSDT table, it gets cx_cnt or px_cnt as condition. Getting cx_cnt or px_cnt triggers the hypercall hcall_get_cpu_pm_state. The hypercall hcall_get_cpu_pm_state uses VM_CREATED as VM state's condition. While, after rebooting guest, the VM state is VM_PAUSED when writing _CST and _CPC in DSDT table. Therefore, changing VM state's condition from VM_CREATED to VM_CREATED or VM_PAUSED for hcall_get_cpu_pm_state can solve the CPPC initialization failed issue after rebooting guest. Tracked-On: #8695 Signed-off-by: Yuan Lu Reviewed-by: Fei Li --- hypervisor/common/hypercall.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hypervisor/common/hypercall.c b/hypervisor/common/hypercall.c index 5d60cc5cfb..9fae4744b7 100644 --- a/hypervisor/common/hypercall.c +++ b/hypervisor/common/hypercall.c @@ -1102,7 +1102,7 @@ int32_t hcall_get_cpu_pm_state(struct acrn_vcpu *vcpu, struct acrn_vm *target_vm int32_t ret = -1; uint64_t cmd = param1; - if (is_created_vm(target_vm)) { + if (is_created_vm(target_vm) || is_paused_vm(target_vm)) { switch (cmd & PMCMD_TYPE_MASK) { case ACRN_PMCMD_GET_PX_CNT: { uint8_t px_cnt;