From nobody Mon Mar 2 10:59:12 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1772315305; cv=none; d=zohomail.com; s=zohoarc; b=TNW9fu6k9+EQBA2ZOAXRC1bhlXxBZvKE4E1okUu54E556IPxY7aNFclmsR97vhB4/7mfduXHbDpfiHENLUJrhIDRTVh/yxAtYOXg3B5oa4igtGJS1PbC7CNSHJdCgYJNocqLsAQJbvsFO9ZmH6D425g8MD0XjRCrIs2v8hmFuAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1772315305; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=4n4xIy8i5xV9kHLwKpAQhwfVxRJH3sNm66Cv+vgl914=; b=hru6SkBMisjIy/FBkLcoWJWqTOHkXdc1D/QJH6k1U6L6PgsnyRxGix00L2RPdVd0VDp7Z48W4Jzdc48sI+mqFLMRk1J1KCugez6Q2EewnITLNDXc66Wsnixx6AIVYbPYm3FTy05XcAcTfcEtih1sM7fo3t7vcTFATqcuW/v09DU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1772315305714762.9923782064219; Sat, 28 Feb 2026 13:48:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vwS9h-0004C8-Aw; Sat, 28 Feb 2026 16:47:21 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vwS9d-0004Aj-J1 for qemu-devel@nongnu.org; Sat, 28 Feb 2026 16:47:18 -0500 Received: from qs-2005k-snip4-11.eps.apple.com ([57.103.86.241] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vwS9c-0002Tf-10 for qemu-devel@nongnu.org; Sat, 28 Feb 2026 16:47:17 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-20-percent-1 (Postfix) with ESMTPS id 51617180013D; Sat, 28 Feb 2026 21:47:10 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-20-percent-1 (Postfix) with ESMTPSA id 6D9B71800133; Sat, 28 Feb 2026 21:47:08 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1772315233; x=1774907233; bh=4n4xIy8i5xV9kHLwKpAQhwfVxRJH3sNm66Cv+vgl914=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=YuaT5ygCgean+2UWg47mKBfS0P+RAXSXsNNU8JNNaaIYPMQMw5ylfBKoULRlipESpDiqLXgRgFfBp5FrS+EbjJPkw9eIWw+P4CZhAGi0/EqO5Waa1Nvzna0ZjfJUdkBYBsy17cs6itEGCFKkCSVtJ/hsrnQwPtNAlO7FeJwtpO/dCVqIItuWdm6h9y66E0Hd/AfYlwhSyhUwUmNE3CEadWHJRX7nnDsbKGpNAUJN12XfKoNuAkYCHXJL1tt8cCLEKV95h/ODueEb/6q7ugWe0HTBc8m+3gTAx2R/AxpCpXFlfFAMKiagU8dyuLkKJiKGIue78K+/OoJOufWOi7E/FQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Wei Liu , Pedro Barbuda , Phil Dennis-Jordan , Roman Bolshakov , Mohamed Mediouni Subject: [PATCH v2 1/8] whpx: i386: move whpx_vcpu_kick_out_of_hlt() invocation to interrupt raise time Date: Sat, 28 Feb 2026 22:46:57 +0100 Message-ID: <20260228214704.19048-2-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260228214704.19048-1-mohamed@unpredictable.fr> References: <20260228214704.19048-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: foUfAYin6i1JFG5tPM5l9Ei3QA42NHFh X-Proofpoint-GUID: foUfAYin6i1JFG5tPM5l9Ei3QA42NHFh X-Authority-Info-Out: v=2.4 cv=NoDcssdJ c=1 sm=1 tr=0 ts=69a3625f cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=o8I7T96M5UCSVa1h564A:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjI4MDIwMyBTYWx0ZWRfXxnJjRW6IWaK5 JHFJEhuwnxLpMF67MRTiYR/P6oweJB7c8MBdHry2DjDgcL3+9nkIEamhk2PkEQerYomqvoPknVr +Zx8MqcG//WI+J7xeXndxONRo3n9VWEKxcoUrSida0HxVpMynUOHHFOxA6Bg5h/twajuxpW5tH/ wOgn9AbNX7pvn0bwA2EVOpu9m9YVgSZJj8XuAyNCNMDik+xh+8qKu98cObpeL4Z6spQ4oB+5dMn zcOxAU6UaRvdLWJ4YXlvb9chM3tyLE40zU6rKuZOKhzeii4rjuoEev3CIMs8dsEXPcT+9EtjAr1 h2cwObxaTeWmI3xbfAJtuz2miFifkWa+AuKkto5usMsz2UgN8BD6zf3lSw0unU= X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-28_07,2026-02-27_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 clxscore=1030 suspectscore=0 adultscore=0 lowpriorityscore=0 malwarescore=0 spamscore=0 mlxlogscore=999 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602280203 X-JNJ: AAAAAAABIlm5tePjv4X9vt2D+fTviVk+nmZ2x4HMaiXGPvkG1SpCGCnsYmI9uATfxPzc6aKotZQiBOnJKTgaUaqLTScmlFPpFc2pQNPv8sKBYqnjIUH5LBqtZBB/wx4QjB5oaUS5RNQdaeUnDC+B3A9U9GaNli581Qh/Cqugus1kyqIiRpTYSt8HDbQoGFZaVXAMuMthTYXS8Ge2JCpRp0tf26dGeJbHojPwYlkRdNeDIJAlawBUTzhl0ZgjSLaHb6DMwy0LADYJ0s+lFgwh45c1WNcV4/vA4IykgjpjAV3HIdtcza4Hn1PeRUrdcQawiFKHjQAU88i0Qnra0AzH+1cObMy+I4d4gWRlSB2E/02s46tNdAThOlieYJKq8+FDrh67O/GiAn+cDaA5+gvlRa6R/tDzPOlOSgE1v7WwOrpRE6eQnjPTa3VRhvhP4BDOAwpvZ7IdKyzvnODxBWUO02GWy9Pb3psUnGN03/VfNremlswZeFklsBtl46cz7217PLh0wBHf4rTNUfsVzFuqO/kA0LdE9TcGlp338QOcdiamlqWdWOxUdL2UVP2D7efA/bmK6OThrGklLJUA6QdzPoxK1BttB4J5GDmY5j+T6xjcQWUUP4aScoM0LLOTAHeNCvFWQDWVyH2uttYneIDt0eCJmObxAdXpj7rD6g7ZUTehD02NHWRpHlWsmdyDdz5tRSmOIs8S Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.241; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -10 X-Spam_score: -1.1 X-Spam_bar: - X-Spam_report: (-1.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.966, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.722, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1772315306933158500 Content-Type: text/plain; charset="utf-8" This fixes the sti followed by hlt kvm_unit_tests. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 49 ++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 6d2771a98a..90f51fc4dd 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1308,6 +1308,16 @@ static int whpx_handle_halt(CPUState *cpu) return ret; } =20 +static void whpx_vcpu_kick_out_of_hlt(CPUState *cpu)=20 +{ + WHV_REGISTER_VALUE reg; + whpx_get_reg(cpu, WHvRegisterInternalActivityState, ®); + if (reg.InternalActivity.HaltSuspend) { + reg.InternalActivity.HaltSuspend =3D 0; + whpx_set_reg(cpu, WHvRegisterInternalActivityState, reg); + } +} + static void whpx_vcpu_pre_run(CPUState *cpu) { HRESULT hr; @@ -1391,6 +1401,17 @@ static void whpx_vcpu_pre_run(CPUState *cpu) .Vector =3D irq, }; reg_count +=3D 1; + /*=20 + * When the Hyper-V APIC is enabled, to get out of HLT we + * either have to request an interrupt or manually get it away + * from HLT. + * + * We also manually do inject some interrupts via WHvRegisterP= endingEvent + * instead of WHVRequestInterrupt, which does not reset the HL= T state. + */ + if (whpx_irqchip_in_kernel()) { + whpx_vcpu_kick_out_of_hlt(cpu); + } } } =20 @@ -1453,15 +1474,6 @@ static void whpx_vcpu_post_run(CPUState *cpu) !vcpu->exit_ctx.VpContext.ExecutionState.InterruptShadow; } =20 -static void whpx_vcpu_kick_out_of_hlt(CPUState *cpu)=20 -{ - WHV_REGISTER_VALUE reg; - whpx_get_reg(cpu, WHvRegisterInternalActivityState, ®); - if (reg.InternalActivity.HaltSuspend) { - reg.InternalActivity.HaltSuspend =3D 0; - whpx_set_reg(cpu, WHvRegisterInternalActivityState, reg); - } -} =20 static void whpx_vcpu_process_async_events(CPUState *cpu) { @@ -1770,25 +1782,6 @@ int whpx_vcpu_run(CPUState *cpu) cpu->exception_index =3D EXCP_INTERRUPT; ret =3D 1; } - /*=20 - * When the Hyper-V APIC is enabled, to get out of HLT we - * either have to request an interrupt or manually get it away - * from HLT. - * - * We also manually do inject some interrupts via WHvRegisterP= endingEvent - * instead of WHVRequestInterrupt, which does not reset the HL= T state. - * - * However, even with this done, if the guest does an HLT with= out - * interrupts enabled (which the test_sti_inhibit KVM unit tes= t does) - * then the guest will stay in HLT forever. - * - * Keep it this way for now, with perhaps adding a heartbeat l= ater - * so that we get the CPU time savings from having Hyper-V han= dle HLT - * instead of going away from it as soon as possible. - */ - if (whpx_irqchip_in_kernel()) { - whpx_vcpu_kick_out_of_hlt(cpu); - } break; case WHvRunVpExitReasonX64MsrAccess: { WHV_REGISTER_VALUE reg_values[3] =3D {0}; --=20 2.50.1 (Apple Git-155)