From nobody Sun Apr 12 00:55:08 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=1771836001; cv=none; d=zohomail.com; s=zohoarc; b=ZYMGavK7hJSEArmHuf3LFcLC1oHrP6DEWwkTGyXl1THCCp17e3N9N4H7JgDCXn9tyFuCox4+dvfuVHf9hM1ewFJv+4LJUvG6nbtYsxalu4Ja+S0F1Q3Cezv+r+G2m9rrjbQvPFnhYahZkbSkAREhaMMKbXAZX105E6o1AaMaNtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836001; 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=RBeGuU3g66EpifK7auesB/uat8+GKJ5tjIXtWZ1mj1k=; b=GYe8y63NTMl96JuEj0EoncYrduS+AdVwfZocmIeUVqd9e0Q2/auci7IuavBJOyRJxmsr1tJKJEWEmZP9fN/Fu0I6ynJC8RpMm0nbQjjJ7xk1o9kri+sMXAWVVxKS4pygAdxKkrrx6Yya9MVhrU7njpXLQ/w6ihqK9GjbctSr8qs= 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 1771836000948543.2349652759181; Mon, 23 Feb 2026 00:40:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRRv-0000Bh-1S; Mon, 23 Feb 2026 03:37:51 -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 1vuRRs-0000AV-QW for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:48 -0500 Received: from p-east2-cluster4-host4-snip4-10.eps.apple.com ([57.103.78.151] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRRq-0002B3-Td for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:48 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id E31BB18000A4; Mon, 23 Feb 2026 08:37:41 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id D199E180017E; Mon, 23 Feb 2026 08:37:38 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835866; x=1774427866; bh=RBeGuU3g66EpifK7auesB/uat8+GKJ5tjIXtWZ1mj1k=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Zojjf4RX8JvJwmLKbqoI+Ca3pFPPEeuMo/9rv0dsqsi2WdUEvdjtsQscmNQUqiS5NoJ/B8m3/96wjXJExaZO5m/d7NgmzIjuDL1/R4+HWdynfRqgxi52yA3Cv6OqTHoiOxhkACXa1DMoENAmkLXeB5c2footRBacJxkS4kaQ2lDa10V5KI2RECe/FrmUzjZq1igXQ+qOcsOUQOjI/RejJS2Spc4yGQfnr6osc1/3FKZMGRqiSgjLCM5m1tN4lBz1nDyP/WSvdxvDAv/F0g6OD7EEzWMkeGiS1BJPdVmybndSuFtk+b+D9UJ6pIAd+UPx6mIdq8RG3V3ED1wl6vyDgA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 01/27] target/i386/emulate/x86_decode: Fix compiler warning Date: Mon, 23 Feb 2026 09:37:07 +0100 Message-ID: <20260223083734.48533-2-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXxIKg5TO5sS+h HilzxcLRSU0dpqVACyUpSpBZUQT6uo2oaGLDaK4FTZHaOWVU9jqUQTXcn/RP8MateoKUBWIbTFP kvX0U/IOTwE3iiItDtVN6JxvPERpMmnOwTlBAwssOAhysktMkZgd7EfGFvqbX6nAuC5NfonhcKH 9YK6K2x8U8DKuxAqSq95aAvodo0XHd3EBII2Bkn87RAwU7fXCHe11vr/4GDywQP6DLhJkNVn9Vv R7borf9dxmVQ9izTFI0M+TpFfgxYF12XqgtoRXnVBUovrAI+p+/bDGR3fgozbruNJHOddE7g01w vjlZTNwsAyWVNM/svvzEMNuInkvFbQkL1l8SFWt6JOBmPGQU1PtTn5P8GBdyrI= X-Proofpoint-ORIG-GUID: 9N9p_tQU9AEHHmyZuCvX3s46rtZXLpwI X-Authority-Info-Out: v=2.4 cv=asC/yCZV c=1 sm=1 tr=0 ts=699c11d8 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=VwQbUJbxAAAA:8 a=1g1V9cNuhepT8r8r7IUA:9 X-Proofpoint-GUID: 9N9p_tQU9AEHHmyZuCvX3s46rtZXLpwI 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 lowpriorityscore=0 bulkscore=0 suspectscore=0 mlxlogscore=782 adultscore=0 malwarescore=0 spamscore=0 phishscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABi3XNyaDs4+j2tnP/elXxYzGTzC8exMmIU+RNdcgE3SSbZdVq0kn37RL6Z6MA+tdee/wfvjE+IndUeR/nG9beCXXuvVLkTECreIrcnQmo4FJ43tYhF4sy4d/P23mjEr9RbA8zjfqFyoux56ZQ85Old63vTl47hBpdAkdEMGyGMBn/RQ/JzOCc1ACTHxuFC8plJ5yguKD32/596iDNB2BwO2B2QReHS2asqymAPMdPNDjhjNXJPjEIy3EPWcE0H88JmECDd1LOLXJLHPtqZ+30DPs8A6f2wHBsEnb+BAFV+RLhxhPnSTZ/wAWKKxHDzvubOZF87ADPcYQqYeKzWShDNd9M46fFEBNGlKnK4oFpcrnpHVdx12zElJpB9Qjgq2esy3xnUb6Li+zRz4L/ODN0s/U50HDj5Bo28Ij+tWXEYGBn6UGaersSq5rUkKEKvjtr7a7Ms7ssJE50dtmJjLFF35v6mPjlWUs7NFPTedjcedffBC5dQopJxB/Y6+xcBdnszwN3XV1D52Cub6mM3LWzH1Dwuyi1LTcyBU1viKXvsFRVG5FJUeuE1mAM7Ygdd4Bvv0uaBmfdzmhCwlo27rluDceENuK2sTN/WhBnSnbRnYGNEt0/NqlPXD+C2Nh6pzfIVntVxcYInStJ7d8gcIDkyBqO/lTicJ6WAR32Lwxu8MiCY9da3IUrIiiiBSucpxqR4dAZGf3HptKO/UKrfB7wgI5y30LfUZ+DQLIRBpDE0/dj54+nXJ+wDm53CVJIAHtPgoECFosbYW9A3SXsNiTCGRPw0aIZUg886btUuiA0szpar+RMW3qYtd8qw86ev73P7DGAMUVsn/w2lHxP 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.78.151; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836003387154100 Content-Type: text/plain; charset="utf-8" From: Bernhard Beschow When compiling for i386-softmmu under MSYS2, GCC emits the following warnin= g: In function 'get_reg_val', inlined from 'calc_modrm_operand64' at ../src/target/i386/emulate/x86= _decode.c:1796:15: ../src/target/i386/emulate/x86_decode.c:1703:5: error: 'memcpy' forming o= ffset [4, 7] is out of the bounds [0, 4] of object 'val' with type 'target_= ulong' {aka 'unsigned int'} [-Werror=3Darray-bounds=3D] 1703 | memcpy(&val, | ^~~~~~~~~~~~ 1704 | get_reg_ref(env, reg, rex_present, is_extended, size), | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1705 | size); | ~~~~~ ../src/target/i386/emulate/x86_decode.c: In function 'calc_modrm_operand6= 4': ../src/target/i386/emulate/x86_decode.c:1702:18: note: 'val' declared here 1702 | target_ulong val =3D 0; | ^~~ In the calc_modrm_operand64() case the compiler sees size =3D=3D 8 to be me= m-copied to a target_ulong variable which is only 4 bytes wide in case of i386-softm= mu. Note that when size !=3D 1, get_reg_ref() always returns a pointer to an 8 = byte register, regardless of the target_ulong size. Fix the compiler warning by always providing 8 bytes of storage by means of uint64_t. Fixes: 77a2dba45cc9 ("target/i386/emulate: stop overloading decode->op[N].p= tr") cc: qemu-stable Signed-off-by: Bernhard Beschow Reviewed-by: Mohamed Mediouni Reviewed-by: Wei Liu (Microsoft) --- target/i386/emulate/x86_decode.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index d037ed1142..6ad03b71b0 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -1699,7 +1699,7 @@ void *get_reg_ref(CPUX86State *env, int reg, int rex_= present, target_ulong get_reg_val(CPUX86State *env, int reg, int rex_present, int is_extended, int size) { - target_ulong val =3D 0; + uint64_t val =3D 0; memcpy(&val, get_reg_ref(env, reg, rex_present, is_extended, size), size); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836035; cv=none; d=zohomail.com; s=zohoarc; b=BeZ3kBfiIBghLlKpQ/nwYiYob+CRvwR3A2ymXiC43N7UH0ekXuA8n48WVqVSIR0lMyEaOTjbiE+RBC91PHRqhWJsdY2Q/782+y3z+js5tF52tCQCskil+YJ5v9lW08o/bcWB1ExDumdjlwdv2+zAMSSpNa/b3X51caK42Q8D3o4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836035; h=Content-Type: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=eGBzMnvYi2plqRMYS3s+jPbPqZ3R3tScJhTlruf1lkA=; b=Txi9zsWTOF/XmsA6VAKNDtTjWvPKrxhH8lUEuY1+9KZmZxrBXNdz87KLDQIX3wR8iDk5pHdEb/+SI6ksjIgc2HFzgVLchxO1umEehsgrlsP2oRdGl1557fXEedNGgbTO+Rtc+zuXBkfMREAiYo9K8/qlladI9e9w/3ZG/AT5XFU= 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 1771836034991453.96427080126705; Mon, 23 Feb 2026 00:40:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRRx-0000CP-GX; Mon, 23 Feb 2026 03:37:53 -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 1vuRRv-0000Bq-W9 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:52 -0500 Received: from p-east2-cluster4-host3-snip4-10.eps.apple.com ([57.103.78.141] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRRt-0002BZ-D1 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:50 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 4AC27180020E; Mon, 23 Feb 2026 08:37:44 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 4411F1800173; Mon, 23 Feb 2026 08:37:41 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835868; x=1774427868; bh=eGBzMnvYi2plqRMYS3s+jPbPqZ3R3tScJhTlruf1lkA=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=WNmdZqvrA7DDIaW+cZlwptqG1RZvV2xBNUTWM2bIg7NWkswm/rz+cGqZFNU8Vti0/K860W/lR4SdXuWadwnR/GKMohkHUh3JrzQT+0efRhJt2JDa7ow4PpzxTyLLXmdHbnzEQhyLeLSILmkdoLVt/lSns1YWg4lf8e+sTdEiu/e5nFf+NvpZdkBjZBijVvAwnYHWed8lsVza7tzTpz89u6PewsN/m9CL7hi7Kp53DnXBc1xbZflmi416xDdtgRHph3Jnrn4IzjNSBEBMP/yHAaNryo1XrHhEVzOJnQTYGGeITv88j61TqK/ZJF0ddYFKV3KVaH209D9KyQyNutGDdg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 02/27] target/i386/hvf/x86_mmu: Fix compiler warning Date: Mon, 23 Feb 2026 09:37:08 +0100 Message-ID: <20260223083734.48533-3-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX6izIIEoSp/CE 0EI5E8ec5spsPrf4m/gey6gXw4bL/yTGLcsADkUmPUA7F6Mgb9HbQzN/Oa11e89ETOtC/MlqCPF B2gaE/mkvjDZUU2nPvpdU4RDss31Xu9DmT7T9CdsfHCdgLQAGKHp+ZLWokuWPDi82X7WzLvKqLZ I6TuwG/la016+dYs0yzaghBGFw1fh0WO0L6Y7sehpAjtgd2NhQbzBe73zo4iwpazgrt+rjlq5Eb /CrXGpErNJuyPij+GsDzGQnfPnHe0KsrQY8bwhkpDl8yXvrz9Jz5YiILqgqdU8JBvDhSxbYa5Zc aVOf4fjzKkwpWk2pq9UWyLPiSUyPh5VrdiEAaAG3kgE9dVauECJoZHPAxZmi48= X-Authority-Info-Out: v=2.4 cv=Lq2fC3dc c=1 sm=1 tr=0 ts=699c11da cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=KKAkSRfTAAAA:8 a=VwQbUJbxAAAA:8 a=VIwFDEqWtveBFbEZvHwA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: VJE0R0qLrOl7HCvPaBqG9EbgsSeLYacM X-Proofpoint-GUID: VJE0R0qLrOl7HCvPaBqG9EbgsSeLYacM 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 mlxscore=0 phishscore=0 adultscore=0 suspectscore=0 bulkscore=0 clxscore=1030 lowpriorityscore=0 mlxlogscore=938 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAAB9nhMTH2M4bLAGE37Al954JpEe++M/0ZMiJp6Any4Da94EU1065ck6oqgPpow0CTRv0WqlIqADm1H9XNvHbykYw8CU5EKt+A9rnqcjb50X2uyExZ3Rt476ujDwLJfJZdaXtp7iAwn/4TbreMLE9wmN2+wenECeWOp4aqOc26c/V6rxpxKoe29M2/Gqsh5VLd0a5cqvKup2vuYbcmUXutBHhkvB4aM4guUCqYX6mHjxvkpZiJxtFgRGgh1PNfzoced/KqEXiPpu1TfbHQZMPUg6PeLRR+yFs6KNpyfyYRmdVVHuNLOUhQ9aQPvO7JPP5VJMN/XTYvs6wSNlrmA+/RKrq/5UtRUEJ+nHShAwYu8cesRnJcXybMmEV1DkM/Ll3Zq/NsPUoKEY0xWatFMw7Lp9lMCJzUxclBwa3ZtnDsUnqJpad/wxOQIdDEV9Uz75gS9F5RvvYWeBBARBGABAp/B12+PfMbjSvWwSdsRhWjrCvEidfjFPsoBNJUi06YsBDOeohFCmZFiXsBNAl1epNPilgNDfWbvV9nf9+35geZDONp/keq5QOpjMMJvCmxDmAVL0J/roGLasT8Medn63jY2Fe2TiU7z6aaiLjBhQhCBOIe8Z3lRzanpd+WZmkaRuOV/Nut+BWrfPbB1B78GZ7WdJTb2KESp1gCBlTGO5SbJZX0+pQJiXK+b/xn7cdJWyulKm+KpPT5ROXmSH0K1O3d4MH8ibEntbNkRBSuB2lzXpRNf/9d2BURprNIUeHomYQL8wLWnFvAYcqEqQIJUKjKJywhM3lm0Ip2OEy1oDtw/QnD1RS480OgTwtO7M0mRbSOQU1AyCS3kLOMDSYzH 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.78.141; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836036305158500 From: Bernhard Beschow When reusing the code in WHPX, GCC emits the following warning when compili= ng for i386-softmmu under MSYS2: In file included from ../src/target/i386/emulate/x86_mmu.c:20: ../src/target/i386/emulate/x86_mmu.c: In function 'vmx_write_mem': ../src/target/i386/emulate/x86_mmu.c:251:25: error: format '%llx' expects= argument of type 'long long unsigned int', but argument 3 has type 'target= _ulong' {aka 'unsigned int'} [-Werror=3Dformat=3D] 251 | VM_PANIC_EX("%s: mmu_gva_to_gpa %llx failed\n", __fun= c__, gva); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ = ~~~ | = | | = target_ulong {aka unsigned int} ../src/target/i386/emulate/panic.h:34:12: note: in definition of macro 'V= M_PANIC_EX' 34 | printf(__VA_ARGS__); \ | ^~~~~~~~~~~ ../src/target/i386/emulate/x86_mmu.c:251:48: note: format string is defin= ed here 251 | VM_PANIC_EX("%s: mmu_gva_to_gpa %llx failed\n", __fun= c__, gva); | ~~~^ | | | long long unsigned= int | %x Fix the warning by reusing the target-specific macro TARGET_FMT_lx which ex= ists for this exact purpose. Fixes: c97d6d2cdf97 ("i386: hvf: add code base from Google's QEMU repositor= y") cc: qemu-stable Signed-off-by: Bernhard Beschow Reviewed-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 Reviewed-by: Wei Liu (Microsoft) --- target/i386/hvf/x86_mmu.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/target/i386/hvf/x86_mmu.c b/target/i386/hvf/x86_mmu.c index afc5c17d5d..fe44d2edf4 100644 --- a/target/i386/hvf/x86_mmu.c +++ b/target/i386/hvf/x86_mmu.c @@ -244,7 +244,8 @@ void vmx_write_mem(CPUState *cpu, target_ulong gva, voi= d *data, int bytes) int copy =3D MIN(bytes, 0x1000 - (gva & 0xfff)); =20 if (!mmu_gva_to_gpa(cpu, gva, &gpa)) { - VM_PANIC_EX("%s: mmu_gva_to_gpa %llx failed\n", __func__, gva); + VM_PANIC_EX("%s: mmu_gva_to_gpa " TARGET_FMT_lx " failed\n", + __func__, gva); } else { address_space_write(&address_space_memory, gpa, MEMTXATTRS_UNSPECIFIED, data, copy); @@ -265,7 +266,8 @@ void vmx_read_mem(CPUState *cpu, void *data, target_ulo= ng gva, int bytes) int copy =3D MIN(bytes, 0x1000 - (gva & 0xfff)); =20 if (!mmu_gva_to_gpa(cpu, gva, &gpa)) { - VM_PANIC_EX("%s: mmu_gva_to_gpa %llx failed\n", __func__, gva); + VM_PANIC_EX("%s: mmu_gva_to_gpa " TARGET_FMT_lx " failed\n", + __func__, gva); } address_space_read(&address_space_memory, gpa, MEMTXATTRS_UNSPECIF= IED, data, copy); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771835920; cv=none; d=zohomail.com; s=zohoarc; b=md+oRsKN3l2AQsw0p0iMsA89ysoRHlpuE3njKxCtfNEr/ClpCXCsFYKnn89KR3tZr9qLbymR74nZC+/ABTcAzyuMdFQr1LKe863/AnGsgyHXShi8hTlgCk8N/51oZt92zvP1NlZ/03zXpx/T17t3TwpEf3HGyzrNlLXXfVyJaJk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771835920; 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=Ajm5wvw79Vw9L0B+loVcxnLQ5Hp1DddrxTh1ozEZLIw=; b=R1rSACHS0AebXVAqG7XfxLrrZ9OqLGnbXaioS5XtH8ICyFAhjAbRaQ9+CueLVIl2nk4+B47dYEDY+WUTmIYM2ef+nPrNps9QrX2aypCp8sDOPo4JJS3sVofPCo6Gi5DtqQYF4yvBUrbkjsTDLPHiED3aPTxexOOgTImsy16bNa8= 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 1771835920650793.7564425108677; Mon, 23 Feb 2026 00:38:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRS3-0000EF-Ky; Mon, 23 Feb 2026 03:38:03 -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 1vuRRx-0000Cu-QL for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:53 -0500 Received: from p-east2-cluster4-host9-snip4-5.eps.apple.com ([57.103.78.216] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRRv-0002Bv-Ng for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:53 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id B0A011800201; Mon, 23 Feb 2026 08:37:46 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id A86CF1800204; Mon, 23 Feb 2026 08:37:43 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835871; x=1774427871; bh=Ajm5wvw79Vw9L0B+loVcxnLQ5Hp1DddrxTh1ozEZLIw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=A0IAW/dKIrEMacrVracfAlO2AKJLHlGsliuoNOSQtomI/KYTEwOEqdl1CtVI84rTfj6AB+bpAjGKVVgv4ZszHoubvzhi4SQKw/nIb7YCbXMqJYEcZ83mjPYOINl+8/h6s0pQXhcht6wPFYEh0vsC4crkkAdg5VlX9FnCTw1gUBKSKSHHFLvAI8b4ZNrsM8fTzpz+CG9/X/JrHfCacftsjuhSG06qBS1KwYt7ndSgabeWKVV7LnZkNREHVhXCawVu9PqcKVIuznbM7TKNqCzzOsLaaY1rMvoGB1SBywfgoKDp2tj5db6a76BLLkIsqEchbRnzMDv6AiaCgRq+WV4hCw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 03/27] target/i386/emulate/x86_decode: Actually use stream in decode_instruction_stream() Date: Mon, 23 Feb 2026 09:37:09 +0100 Message-ID: <20260223083734.48533-4-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: 7l0suOC8UDg1QYPT_sF6TPUMy2yclX8x X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXw7D8SeGzJtjz pVK/b+0SwIM1fc5MLvJ7JtqJ3gUNb0bIQD95JpcX/BglguoD1Q8mKUgVnhGCb2Wv2GBskXZYYUc +JDY69fXWYo9bcSATqVQ2Mxaqxe5AMA04N+bWEjLw0v4JTKGB0K6LmbZDeI2OXtAG73q1eVprry Xx+swJiF6O4S5XcedtF8T1dK7HqdzyulvTDmJvdBtjAYyhuembVIiC6ULgj09Xk7UNQIuxUVxf0 j7+Sd8/Km0f2VzzZoWRGSm1XXzsqdUNVH1wlA4hVgub2bvd0GZYvnyTlr9XiA0ZyrUiTumrBc2P eoiYAMN3w1T8oe+b/gmt2KhWmDLDrrLh/U8kmLdiB/5YuW8K+8UAdrFhbS2bp8= X-Authority-Info-Out: v=2.4 cv=WItyn3sR c=1 sm=1 tr=0 ts=699c11dd cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=VwQbUJbxAAAA:8 a=yMhMjlubAAAA:8 a=s2ha6HylF4ed1T9rlyMA:9 X-Proofpoint-ORIG-GUID: 7l0suOC8UDg1QYPT_sF6TPUMy2yclX8x 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 adultscore=0 suspectscore=0 lowpriorityscore=0 spamscore=0 mlxscore=0 malwarescore=0 bulkscore=0 mlxlogscore=857 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABG8YMpFYHGnBMqygvkW/3tlLgcPUjW93IlZmWqOE8kraR3r3P0EOgrB9t7ARGnYluwtrHZ4akEkBOx5EemuAdl5aiidQ1LF4DbwaTW9HVr3axRlMjT9D7i/6jiK/GA32VIMnp4d3zceGqH3TmR+ymAbOTFtSMSwqaOjQ8iw0wkjwyvKVS1ThSB3ZLSyM3L/WJLcW2ER/Mq/wLZkrmYJ0QVObVISSlGydzGCkoBdv98s6xkxdO1ZxXW1PMZXpG3TmEdjibNLGPKBv/aH61dn1HOQFgWcB9LPIuRxB8H5YEnRwob9WvrIQTiKaX4TnFp5tieElF3kFv8HLqb4osI088N6O0nk5ChaJ+8kEfv54kk+fnHouMyMsAsFCRG8mtARwGmdXJ1DC8U69+XJjVPt1Bb/XJ5myXF9gugB5bJtnxfQQtrmkDBFqSTMDQfXbgiAphsw7w2DEZWgS2IlnCy9sc1zcOTCh+aZvEIrZaJZRvMVpRDgkcJrw7dqWhYgSLazprEPMwhCkqg8SfoYKVYuKU8+L1RQT2ecCaM5PjCOTwKhsp5b/0WqEOJfwLLlPs1oQqDgb6B9MudZxso34CDAwSK1qmaSH3gtEU0zSkA1wF5jcWEbzVm167vZiLxij/F+K8i5EzEsV2F9LpSIXmremdvP68kw0eUl7dJcNtPQVDB/ZX5AaM0W83t8fl6uAKXDjqzgxepCog8BozGagMOg3FJY8kdPDRk6AWCjMOfgRxDmMa1OqejzF0dBHA2/riPq5RLl1IZkg//HSbaocNAXBtK4frKGB/TtOJvkAoXx41EXg9xtHNnO/u3P8tYQ== 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.78.216; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771835922087154100 Content-Type: text/plain; charset="utf-8" From: Bernhard Beschow Compared to decode_instruction(), decode_instruction_stream() has an additi= onal stream parameter which avoids some guest memory accesses during instruction decoding. Both functions defer the actual work to decode_opcode() which wou= ld set the stream pointer to zero such that decode_instruction_stream() essent= ially behaved like decode_instruction(). Given that all callers of decode_instruction_stream() properly zero-initialize the decode parameter, = the memset() call can be moved into decode_instruction() which is the only other user of decode_opcode(). This preserves the non-zero stream pointer which avoids extra guest memory accesses. Fixes: 1e25327b244a ("target/i386/emulate: Allow instruction decoding from = stream") cc: qemu-stable Signed-off-by: Bernhard Beschow Reviewed-by: Mohamed Mediouni Reviewed-by: Wei Liu (Microsoft) Tested-by: Magnus Kulke --- target/i386/emulate/x86_decode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index 6ad03b71b0..7bbcd2a9a2 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -2088,8 +2088,6 @@ static void decode_opcodes(CPUX86State *env, struct x= 86_decode *decode) =20 static uint32_t decode_opcode(CPUX86State *env, struct x86_decode *decode) { - memset(decode, 0, sizeof(*decode)); - decode_prefix(env, decode); set_addressing_size(env, decode); set_operand_size(env, decode); @@ -2101,6 +2099,8 @@ static uint32_t decode_opcode(CPUX86State *env, struc= t x86_decode *decode) =20 uint32_t decode_instruction(CPUX86State *env, struct x86_decode *decode) { + memset(decode, 0, sizeof(*decode)); + return decode_opcode(env, decode); } =20 --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771835916; cv=none; d=zohomail.com; s=zohoarc; b=Q0I0lVb8CKxob1MlHXd4880wHMdsTUoEERXtBG53Vx0mH7t21KYMmJm2pZvaSXdyBzsZcuNS02NJGM5pK6LyfrmUhQR6D7ehmc1EP4MoDkhSpGrKv5paGIik+vPJLF3kz71u3LnbZMiSBRQ4qMzCSogPkome95c1hRf52W9iYXk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771835916; 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=7itu/O5CELa9iPuSolCH3YRKKsdLS4pTb1/OCKKFmrA=; b=F3zl5IMfIq/w5R307a05aY5Obf9D8rLFdLSPd7FCwB3GUoa5gYkSIC+yhp7oqCe0AOM9NMvAsMNS/uClcMuLqfCzFagCvTzG+5byLjXG2nIimvyhC8TMgtnGVXEf1yVPUUV88VEekrux033wvQ6K8HzKg5L8Eqj3ykz3XVXYnzw= 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 1771835916201702.9988043202933; Mon, 23 Feb 2026 00:38:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRS9-0000Ei-4t; Mon, 23 Feb 2026 03:38:06 -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 1vuRRz-0000Dx-SO for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:55 -0500 Received: from p-east2-cluster4-host6-snip4-1.eps.apple.com ([57.103.78.202] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRRy-0002CG-A6 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:37:55 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 31E3C1800168; Mon, 23 Feb 2026 08:37:48 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 1A25118000B5; Mon, 23 Feb 2026 08:37:45 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835873; x=1774427873; bh=7itu/O5CELa9iPuSolCH3YRKKsdLS4pTb1/OCKKFmrA=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=KuOgTakSONpfOg0EiMNahmp1PZHJk5rIFWrtJ4+zj6RVv+cZ1ksqQrpcZJrPlD5veCsZXkUp5OwtQsHfWPvEpgPuXWog3jq3cc6nEAobCkJW6fNobCJ1yCK2kgPOETlTAu+ztz7ksMMySaxdO7ODHKWEMYj4yiTEYL3PzoKd0HWdIzehIlKV1AM+kGZAfKdX0iWb64wavqPIOibDfMAqEssyEcDAjfcnYZ269J/f5t0XcGipyN3+RqxruBErVuaXxZjvmoAkms2WdPGcbGUP8DuAlsOGD3M6+GVYsCisTxA043GTLlASF7CrRVjghTuTOwxcxvGZB6M7XoyO4icklg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 04/27] target/i386/emulate: rework string_rep emulation Date: Mon, 23 Feb 2026 09:37:10 +0100 Message-ID: <20260223083734.48533-5-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: NefzN70ZlL6Rnq_K8K5B1KJ3EVfllTcZ X-Authority-Info-Out: v=2.4 cv=FuQIPmrq c=1 sm=1 tr=0 ts=699c11df cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=6_-HZhw-fp-CqYksV2EA:9 X-Proofpoint-ORIG-GUID: NefzN70ZlL6Rnq_K8K5B1KJ3EVfllTcZ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX/uycO2ZU5TTH UBKc8P1olTHk22RtARjXsuSl5oEKsPriQAaQZKi8a66loEujzUMPlS7KDx1amaTM2i7BOsNt/OP dIkMiDkVZ4ZEP880vxJVmB6ch+rqF73WNfNaUuDHoIBcPxO/8ZIY/Kaw8vgNzs+sEfEnuyHH/2H 040T3szS1X6bZ3EmI8d41Krz5Oa7mw9wjdf1CJl96qmm4V8s66Idwr+DNsIWuO2RLIlBhQUTZMZ gvsaggyeKAyRrmt2cMMaBA2Q2hYqC9Kj8KiYRbOiW+GYtfWTMVU87uKeHTUWHwi9AU9xXZfEmzn THWMnJh6REDUZ4FVPbzNPy12hYnC3oUr/9sx7JcmD7Kw+gSNMWAxGvPxMdn32U= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 suspectscore=0 adultscore=0 clxscore=1030 mlxlogscore=870 bulkscore=0 mlxscore=0 lowpriorityscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAAB+NMK96lWwLstnPjkwfOEP1/cEaebUSAu5fOmz7tJD0rpkUna2eNcEin12OGX8UyBieTJzKh+xWWn4TAIg2+SNN7pCYhvfXOYfFNG0Uz3T4ZgSw7qtoAPhKVyRRnUe1xuXZvW4bbyPDAR1MSs2POFTfG4O4DQkpLpjkjqG9DN8DJQgtq8CJ+q3HR72HHfuPmHnXNlnJn3UlrHoHnSbzKwCxOWiyLASX4mGvNbwUKO+w8fAAVDJmW9uX2itTmC0deaOqjW3VTs4MWvKr6j08ieU+Vr830VLmsZ/hbxvy5XDVido2dsocs1yQtFS+KM9TMOHVdVmmy5EvupIwpBpMRYHfKnRKCfunhSafhqpQ+JWV+JUedWA/VP7dojBRMQK0T8O2e5tq8FQtV0J0Tg+2pK7LbqEFhBrutmsDPb1or9xh/yN2jARzTuM6V5wJqqNro7rVfuTMEODki+qVKwPrZ2jhbsxAlRINMONDCoQ2NRL8JUA1pDl9ast6dA2TugNG5ZG/N5Cx+cykA08LBduaLVlOXtpIkmiqoFV+5aO1YFCthVglenNNR2mt9Jg2uej/QuggddGaCHm3as9lBjE4zWvf6QFQZ3/HrgACbf9K2TXuJ1j/26SwFFFIc+M3IJ2eZbqhOf0Ak2lNS/nuCMFRNNt1b6O8xBDad00a2Ht+J6duAf6Tko70d/CyIFcS6Sp05VDIxg9utKnB9txfuDYJSQ8vFwbTVTbTkR8UZFM34ANDa4tfZM8O3BF2RrOEDwlEFNRXgeSbmmnvKPxJ6pW2M9HsYCE2KpIn2MzuDjtg== 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.78.202; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771835922021154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_emu.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index 4409f7bc13..bf96fe06b4 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -466,18 +466,25 @@ static inline void string_increment_reg(CPUX86State *= env, int reg, write_reg(env, reg, val, decode->addressing_size); } =20 +static inline int get_ZF(CPUX86State *env) { + return env->cc_dst ? 0 : CC_Z; +} + static inline void string_rep(CPUX86State *env, struct x86_decode *decode, void (*func)(CPUX86State *env, struct x86_decode *ins), int re= p) { target_ulong rcx =3D read_reg(env, R_ECX, decode->addressing_size); - while (rcx--) { + + while (rcx !=3D 0) { + bool is_cmps_or_scas =3D decode->cmd =3D=3D X86_DECODE_CMD_CMPS ||= decode->cmd =3D=3D X86_DECODE_CMD_SCAS; func(env, decode); + rcx--; write_reg(env, R_ECX, rcx, decode->addressing_size); - if ((PREFIX_REP =3D=3D rep) && !env->cc_dst) { + if ((PREFIX_REP =3D=3D rep) && !get_ZF(env) && is_cmps_or_scas) { break; } - if ((PREFIX_REPN =3D=3D rep) && env->cc_dst) { + if ((PREFIX_REPN =3D=3D rep) && get_ZF(env)&& is_cmps_or_scas) { break; } } --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836249; cv=none; d=zohomail.com; s=zohoarc; b=lVfXjEuYIqSk7oBOqgYKZo6PWgjbjb9SMRWJYJaeFIsCz/zzX72+VBzrf2vOKQwpeliT7JDjUqRF0v89dhzDlhoiBdvT5GBsSysKiTzLSH6c9oIPxcpXDHIuYqt/WPlwFmOWwhvVtWC8L5uwKraXS3uBSYuu+4vRjkr3cuPWbRs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836249; h=Content-Type: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=tOIg27vUU88mwrgezr591bqoq+9r1MOdy71woXavApE=; b=nr9lVIPcXLqDfkDdY2cszqSWts91orlIjoLIVbB1Hs95rSFUdWikG2aMO4JFyo7Y5cc8HL2ZYm+Rj6fh7CUDxHy1TRNSGQJR9pkiy+7tTCerElaw3BZ362nd1kz80jV3A9GDlIjLgoU5/xYy9PBihnLrdGspNL4Jn+6HhDeNvpA= 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 1771836249443566.3634016946355; Mon, 23 Feb 2026 00:44:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSV-0000fC-9W; Mon, 23 Feb 2026 03:38:27 -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 1vuRS5-0000Ep-MB for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:03 -0500 Received: from p-east2-cluster4-host3-snip4-7.eps.apple.com ([57.103.78.138] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRS2-0002Ck-8o for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:00 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 94FF9180017D; Mon, 23 Feb 2026 08:37:51 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 8B2701800173; Mon, 23 Feb 2026 08:37:48 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835875; x=1774427875; bh=tOIg27vUU88mwrgezr591bqoq+9r1MOdy71woXavApE=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=LmOV+9QKgZknnxII++r4GK8Q0n1uEicmK+Z6sjYxML0Jfdke9DU3wPKdvxF1+ed6IvIvfVtU8JjTG90HBGSntX6wtCFi4VoqV0NvQbygtyH6/y1KFwpU7c2CwfMzJ7Y1sFtBRTskYYM6+MiumWbZdvsjcNI+p80tsX+TZJgYi4YKOmn2ejlMYTQz687k4+ovRIWjiF0JU79We/equ/V0ahJ9dY/ek2IFOYldhf8VnL3oIuqCtTJ/0L02OdBGs82bOIkJSD5/dUIrX+SIArtqsbChs9VP6VhrHZJS+2R/DomFZPG8IJkKsq+ty74a1rTYlrgTIiFbXZLVXZVsH8HDVQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 05/27] target/i386: emulate, hvf: move x86_mmu to common code Date: Mon, 23 Feb 2026 09:37:11 +0100 Message-ID: <20260223083734.48533-6-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: HI1e8AiiyIZZKSavV8CMVqTr6jPxA_fw X-Authority-Info-Out: v=2.4 cv=FuQIPmrq c=1 sm=1 tr=0 ts=699c11e1 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=NAek0MM3JjVz2OpMgrkA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: HI1e8AiiyIZZKSavV8CMVqTr6jPxA_fw X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX7PvZyTRBV37J mZrqHQ6/2N5LYF9+4fdELLSrVnMbnAQfaCXXHlMR1iQ0lAUwDoEgtjO+ANuVWaQw0PE9yEUJ/jM b7e+dA3C0Pfih8qFMdpICo3kYkysOiCQsFiZB90nm5DrK9h+YY7IFDAWb1DqMp1k/BM6XoWvOTa iO9/rvmuML9x6cQaK3vJ3mKrWonQob46Imc3V/zGydjezLw5qZYfUQ0Y07qU1nWVbDwz2tstd9p HxfpBIlfIiDCrhYQ2c0gEkTTeaFgvK7kReysRxWi4H8QW0kistcJNuB4ONTiN/5wYi/afHO1QKJ He0xSHSt1FP6tE+paEl6Av3PpzYlaE0INj+9peFgH5OfXYkrCtGkB5+jVM5zgA= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 spamscore=0 suspectscore=0 adultscore=0 clxscore=1030 mlxlogscore=999 bulkscore=0 mlxscore=0 lowpriorityscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABHMnaiCtY/IhUwmF2mMO0VP1JqIAhIYKEExhWp8S4cfpqNvL8+MMvbZ1ndvPhkdoD6bIWdUwl7EVKIJUMZF9nQ5b0ZMBZciLsIg13Yqn7wCjtEDOd8Q7aeFeDvTqWhJ2u1g2Ab0vbYCN/4Fx9iegZuvbcKRZB10UyO1codikVp/duX5IbR0B6Pv9tyigBqsnmcZxPcOfSI+W3qwA7mSeV7iCEs94i3kic/MAWzPk5mHDSmYh+M4hSjRBEoMGpxpsV9OxoaM/peTeQmBRs+nylBGwNVW85h4pYdadrHo1uogp57YndyfJw3biRghXJrDZ3p3rUGFFU65X8M+Xbw/S64yEkzNlMwLNvNOkin1JaN/FAnjagTbEXbrwYm+svqgqMKmW7gQxhfQROONcAd8XWAmWoqwuzNfj06wPu4QGZII0vsSkvD6BezIu3uKSnAdtYR/ilJdGTe0O6jfcAI94bcxDHlfYxRzR/cc5sGafymC09/fNEqnifKUmAyPc0VkNuZUPEDwYzv3I56qaIk70UbEKiy2Owx4Y/G+AiDSlf5TN7aqZrbz11/lq06sYGugO9SsUu2kfUhksbwmdXcefiZj7aCdMz4tClyHJd4luUl0TZb3Dr/AbFi50WTjgRjbLxTaDfJqkuFfMfz4g4H/tzSHJT4nF0oAnyRlu7z4dL9lNF8RkVE7wD/A+bwwxCGlGg6zDIje+k63Wvl2IyPdZ2Y5H0CptJtmiGqrnLXfzh4GDRDksoOH0nAwJK7BrO+aToG+zT1DseBysZyk7RKkK02K9HfDiGtwu8X2g= 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.78.138; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836250892154100 Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/i386/emulate/meson.build | 1 + target/i386/{hvf =3D> emulate}/x86_mmu.c | 14 +++++++++----- target/i386/{hvf =3D> emulate}/x86_mmu.h | 0 target/i386/hvf/hvf.c | 10 +++++++++- target/i386/hvf/meson.build | 1 - target/i386/hvf/x86.c | 2 +- target/i386/hvf/x86_task.c | 2 +- 7 files changed, 21 insertions(+), 9 deletions(-) rename target/i386/{hvf =3D> emulate}/x86_mmu.c (95%) rename target/i386/{hvf =3D> emulate}/x86_mmu.h (100%) diff --git a/target/i386/emulate/meson.build b/target/i386/emulate/meson.bu= ild index b6dafb6a5b..dd047c424a 100644 --- a/target/i386/emulate/meson.build +++ b/target/i386/emulate/meson.build @@ -2,6 +2,7 @@ emulator_files =3D files( 'x86_decode.c', 'x86_emu.c', 'x86_flags.c', + 'x86_mmu.c' ) =20 i386_system_ss.add(when: [hvf, 'CONFIG_HVF'], if_true: emulator_files) diff --git a/target/i386/hvf/x86_mmu.c b/target/i386/emulate/x86_mmu.c similarity index 95% rename from target/i386/hvf/x86_mmu.c rename to target/i386/emulate/x86_mmu.c index fe44d2edf4..b82a55a3da 100644 --- a/target/i386/hvf/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -19,10 +19,10 @@ #include "qemu/osdep.h" #include "panic.h" #include "cpu.h" +#include "system/address-spaces.h" +#include "system/memory.h" #include "emulate/x86.h" -#include "x86_mmu.h" -#include "vmcs.h" -#include "vmx.h" +#include "emulate/x86_mmu.h" =20 #define pte_present(pte) (pte & PT_PRESENT) #define pte_write_access(pte) (pte & PT_WRITE) @@ -99,6 +99,8 @@ static bool get_pt_entry(CPUState *cpu, struct gpt_transl= ation *pt, static bool test_pt_entry(CPUState *cpu, struct gpt_translation *pt, int level, int *largeness, bool pae) { + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; uint64_t pte =3D pt->pte[level]; =20 if (pt->write_access) { @@ -127,7 +129,7 @@ static bool test_pt_entry(CPUState *cpu, struct gpt_tra= nslation *pt, pt->err_code |=3D MMU_PAGE_PT; } =20 - uint32_t cr0 =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); + uint32_t cr0 =3D env->cr[0]; /* check protection */ if (cr0 & CR0_WP_MASK) { if (pt->write_access && !pte_write_access(pte)) { @@ -179,9 +181,11 @@ static inline uint64_t large_page_gpa(struct gpt_trans= lation *pt, bool pae, static bool walk_gpt(CPUState *cpu, target_ulong addr, int err_code, struct gpt_translation *pt, bool pae) { + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; int top_level, level; int largeness =3D 0; - target_ulong cr3 =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); + target_ulong cr3 =3D env->cr[3]; uint64_t page_mask =3D pae ? PAE_PTE_PAGE_MASK : LEGACY_PTE_PAGE_MASK; =20 memset(pt, 0, sizeof(*pt)); diff --git a/target/i386/hvf/x86_mmu.h b/target/i386/emulate/x86_mmu.h similarity index 100% rename from target/i386/hvf/x86_mmu.h rename to target/i386/emulate/x86_mmu.h diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index ce54020f00..0b3674ad33 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -62,7 +62,7 @@ #include "emulate/x86.h" #include "x86_descr.h" #include "emulate/x86_flags.h" -#include "x86_mmu.h" +#include "emulate/x86_mmu.h" #include "emulate/x86_decode.h" #include "emulate/x86_emu.h" #include "x86_task.h" @@ -254,11 +254,19 @@ static void hvf_read_segment_descriptor(CPUState *s, = struct x86_segment_descript =20 static void hvf_read_mem(CPUState *cpu, void *data, target_ulong gva, int = bytes) { + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + env->cr[0] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); + env->cr[3] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); vmx_read_mem(cpu, data, gva, bytes); } =20 static void hvf_write_mem(CPUState *cpu, void *data, target_ulong gva, int= bytes) { + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + env->cr[0] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); + env->cr[3] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); vmx_write_mem(cpu, gva, data, bytes); } =20 diff --git a/target/i386/hvf/meson.build b/target/i386/hvf/meson.build index 519d190f0e..22bf886978 100644 --- a/target/i386/hvf/meson.build +++ b/target/i386/hvf/meson.build @@ -3,7 +3,6 @@ i386_system_ss.add(when: [hvf, 'CONFIG_HVF'], if_true: file= s( 'x86.c', 'x86_cpuid.c', 'x86_descr.c', - 'x86_mmu.c', 'x86_task.c', 'x86hvf.c', 'hvf-cpu.c', diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c index 5c75ec9a00..2fa210ff60 100644 --- a/target/i386/hvf/x86.c +++ b/target/i386/hvf/x86.c @@ -23,7 +23,7 @@ #include "emulate/x86_emu.h" #include "vmcs.h" #include "vmx.h" -#include "x86_mmu.h" +#include "emulate/x86_mmu.h" #include "x86_descr.h" =20 /* static uint32_t x86_segment_access_rights(struct x86_segment_descriptor= *var) diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c index bdf8b51ae6..b1e541a642 100644 --- a/target/i386/hvf/x86_task.c +++ b/target/i386/hvf/x86_task.c @@ -16,7 +16,7 @@ #include "vmx.h" #include "emulate/x86.h" #include "x86_descr.h" -#include "x86_mmu.h" +#include "emulate/x86_mmu.h" #include "emulate/x86_decode.h" #include "emulate/x86_emu.h" #include "x86_task.h" --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771835977; cv=none; d=zohomail.com; s=zohoarc; b=avnhzjqAUMHpE+w6rjEDjXApbTVCTWzN1PgzkLUxY6ScvsI3bQrwJBSPpxLVIx0wLIAjffxNXMRAwKTnZ1FzLRp3bkpe6RPy12AfV5ECmRQIM0xJU+Oel7ZW+9Fr+tMmZQKcljH+SL8lYj32zdp76M0bEiZlI5+fWM5F1eoQz5g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771835977; h=Content-Type: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=g4l1jVkhlHtyjTxoP0r17Oazu+fhT089N6+xSJMvRqw=; b=ijzBDogqobHYSFbCuqksl9gaS/CRix93CZNvThiDE1bSLfjvEr3BZDwYIgFwR9ydjPpjDTAW7/Cu/KJokG61a1ht+2bCVTEOLSTsvps1+ZUlVXCsGdW/m5tfSY6bFz1JDf3r0tdmkIolmH5qyZcVgSLgxZK1r+AwbfjyX+2ga/Y= 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 177183597670311.375882002807089; Mon, 23 Feb 2026 00:39:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSS-0000TG-P0; Mon, 23 Feb 2026 03:38:24 -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 1vuRS5-0000Eo-Ls for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:03 -0500 Received: from p-east2-cluster4-host5-snip4-5.eps.apple.com ([57.103.78.196] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRS3-0002Cy-JA for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:00 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 0C4451800202; Mon, 23 Feb 2026 08:37:53 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id F2A401800222; Mon, 23 Feb 2026 08:37:50 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835878; x=1774427878; bh=g4l1jVkhlHtyjTxoP0r17Oazu+fhT089N6+xSJMvRqw=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=Hl/f0/TR2RyxwKDB+wN0gyGt0Sbwls/juEj5dqkOjCFb2qLtUHugbW7XQIC7Y1mGDC3gfvfygGotd4t2zRlWUW0FOWgDVjCoN7DO4wWgSt1wbDGUfah8O9rBKNVaY2edjd833fqyf6oCLpXSGWO38bV7Nr3QkIbCQsOwYOQ2N0lLgK7FSh4v99o9iQoNN5exsfaGYWRv1QFbbpWKNXI9zJkglPoQxrww9wo6no+l3gJ1dsWZVQFbtlFmYTELezDX+3EED/doHHNlNxxAAU++mrjKvpSADpueEmF9VcFkTweD1Ir0/wf0pNmmS2Rq874PQ9QCvXhz6GIITu/q3pfSEg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 06/27] whpx: i386: re-enable guest debug support Date: Mon, 23 Feb 2026 09:37:12 +0100 Message-ID: <20260223083734.48533-7-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: jHSHs8El1oWdprxvUKHk3JIaz_2J926Y X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX/nwYGnCMoAcx GEEvZbAKyxu1jFMzIXISq/oR8a93MGqzJGsj76/saBvmY0CYunD+EIMVzhQoBRpn9KHc0w0vVjJ 9rYzxfCm1eXKGwMnu6BFOmjzW/cdN14MBQM1TrehBdYsoXpGTzpvVs9a7F+mrf/aGOuvcyzcKI1 illPlymJIcXzNrnvg8bSxyvoNuwoWxYWGP9VrpCGmOjQh/wXTdnZ+GuotXaSgm3MCvkxh3YGIdu KyyWvZ1QuWVU8oxKYC7IWCiFsEvRUqG6j2gDTDY6+fbB3yHjtBtHxQrnWHaOUN36RY80C/NuFSU tNXixCD8XxEIYEr23gQ7o3fXZ6vzwmK8txf2g3MR6hCEPVfP8hsBhOys0hedRU= X-Authority-Info-Out: v=2.4 cv=AN8t5o3d c=1 sm=1 tr=0 ts=699c11e4 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=VEyhEb3DslDlV8q9E0oA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: jHSHs8El1oWdprxvUKHk3JIaz_2J926Y 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 lowpriorityscore=0 clxscore=1030 malwarescore=0 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAAB6VlcgSAo5tcBswhTkfVlMB36k8PKTJnUik6xwW0JakX2p8IVpH0BuqSSAmxOSme3C1Xvjy8hQgvrm1as41H6aegVMjJH7e3yC8UHU+TwGZbfSINX64ZS8NdDy0N55J9WPH2xlqzypj4yYMZKbDHPFgiihSxT40chp742kF6dridGgN94BHwz7/i/TFKWcYZ30wFu3XRwnfKoE3J1I6MPTd5GqG+0kHf8Y4qkXa6fKAjT32uTQM+6iUMdrsl8PrAS16a9Il0qTDV7Tp/skqVDvnTtfpe7l6e3cbeLazkVqtHSy6P5vQpbw/zTi21H7cfShibyWEHTWqdeWfPVfNZ339fHX8RNkfRvq54qq9day2V/F2OpB3mnq6h4imPW+SjiE3GNCUzt5o59jjLzm36dqNh2hYE4UVsAQVHYvdB0lfBX9e3roSKdWg91gnNlA7mR5n3xGhwx5q4nvl3ilkpef2feRWjklADdvx2XglqjfaKHhYWBQFpYnqvqnTzEhC5WMndZH8LERGEaN8Hlx8VcogiTtGUpcPgZw03utFwEQXJI+VKPh0BjWiYVPb3xGJTZuPQ7BSZAmrJPkBpCM8Acpl1QmsXi9Sxjpvcl1Yogfe174B6dgysw9q1f0G7+47T1mSDJHBmQEBvgzisB4xhSAGiEYk1PtPL6re/s5jYPnU1AweqGBEt9GMytkrvNKPJsuN6F4Gibzd0zsLpuYVcWtC0nwbQMMKj1g+lDMxYRlWmJjf4ctPiBHNqW5KG+cAOw48W6m3RhleFiXNX5YkyqKapeBjtSFqzstGq+wXK5hTWUuxXt96HMVJg= 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.78.196; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771835981185158500 Fix what got broken several years ago by adding ops->supports_guest_debug support as an architecture-specific function. arm64 WHP doesn't currently provide support needed for this. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- accel/whpx/whpx-accel-ops.c | 8 ++++++++ include/system/whpx-all.h | 4 ++++ target/arm/whpx/whpx-all.c | 5 +++++ target/i386/whpx/whpx-all.c | 5 +++++ 4 files changed, 22 insertions(+) diff --git a/accel/whpx/whpx-accel-ops.c b/accel/whpx/whpx-accel-ops.c index 50fadea0fd..b8f41544cb 100644 --- a/accel/whpx/whpx-accel-ops.c +++ b/accel/whpx/whpx-accel-ops.c @@ -17,6 +17,7 @@ =20 #include "system/whpx.h" #include "system/whpx-internal.h" +#include "system/whpx-all.h" #include "system/whpx-accel-ops.h" =20 static void *whpx_cpu_thread_fn(void *arg) @@ -81,6 +82,12 @@ static bool whpx_vcpu_thread_is_idle(CPUState *cpu) return !whpx_irqchip_in_kernel(); } =20 +static bool whpx_supports_guest_debug(void) +{ + return whpx_arch_supports_guest_debug(); +} + + static void whpx_accel_ops_class_init(ObjectClass *oc, const void *data) { AccelOpsClass *ops =3D ACCEL_OPS_CLASS(oc); @@ -89,6 +96,7 @@ static void whpx_accel_ops_class_init(ObjectClass *oc, co= nst void *data) ops->kick_vcpu_thread =3D whpx_kick_vcpu_thread; ops->cpu_thread_is_idle =3D whpx_vcpu_thread_is_idle; ops->handle_interrupt =3D generic_handle_interrupt; + ops->supports_guest_debug =3D whpx_supports_guest_debug; =20 ops->synchronize_post_reset =3D whpx_cpu_synchronize_post_reset; ops->synchronize_post_init =3D whpx_cpu_synchronize_post_init; diff --git a/include/system/whpx-all.h b/include/system/whpx-all.h index f13cdf7f66..3db074c38c 100644 --- a/include/system/whpx-all.h +++ b/include/system/whpx-all.h @@ -17,4 +17,8 @@ void whpx_translate_cpu_breakpoints( struct whpx_breakpoints *breakpoints, CPUState *cpu, int cpu_breakpoint_count); + +/* called by whpx-accel-ops */ +bool whpx_arch_supports_guest_debug(void); + #endif diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c index 36c5e30a03..8d0ca794af 100644 --- a/target/arm/whpx/whpx-all.c +++ b/target/arm/whpx/whpx-all.c @@ -304,6 +304,11 @@ void whpx_translate_cpu_breakpoints( /* Breakpoints aren=E2=80=99t supported on this platform */ } =20 +bool whpx_arch_supports_guest_debug(void)=20 +{ + return false; +} + static void whpx_get_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTE= R_VALUE* val) { struct whpx_state *whpx =3D &whpx_global; diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 8210250dc3..e1f0fa5e77 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1272,6 +1272,11 @@ void whpx_apply_breakpoints( } } =20 +bool whpx_arch_supports_guest_debug(void)=20 +{ + return true; +} + /* Returns the address of the next instruction that is about to be execute= d. */ static vaddr whpx_vcpu_get_pc(CPUState *cpu, bool exit_context_valid) { --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836012; cv=none; d=zohomail.com; s=zohoarc; b=Xqo0onbR8Be+z1fVkusXqDMVtVlZdK59AHmXwtTEMi/Z56X6ifup3sPqmNJ3ujTj2UL4jfzAfgFl64Z5LyVgHk0h9V0kydT5FljQRFPDSuNM7dj20qgIokImeeWN8anWxoLTbkJwX9ZDXI37ffFgJI/U9ij9UqRVVjtNr6X5TkE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836012; 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=mfxct9QuL+ifLWFIShtfDThHLnEEVf+FJyNrc4eM18s=; b=HFwSCnBMWb9xNVTBHrlu0MuKYqjXJpaOCJpmwdeqxQcZKAYOWaEep+1lSxAm+VCbH60Fjs4R5rakiJEgdNGn9LaQ9PafAcn7c3D5tEw+1WH+XB3VXRQ9yXvkL8xZXZQPXTWS/sn6oZiHu7U/5dFS2w+7W2pvqcakZrBJ/+YEdBo= 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 1771836012617856.5568414379662; Mon, 23 Feb 2026 00:40:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSU-0000bH-MO; Mon, 23 Feb 2026 03:38:26 -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 1vuRS6-0000Eq-9P for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:03 -0500 Received: from p-east2-cluster3-host12-snip4-10.eps.apple.com ([57.103.77.191] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRS3-0002D5-VV for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:02 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 219211800200; Mon, 23 Feb 2026 08:37:55 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 63AF118000B5; Mon, 23 Feb 2026 08:37:53 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835879; x=1774427879; bh=mfxct9QuL+ifLWFIShtfDThHLnEEVf+FJyNrc4eM18s=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=IxFtgbYZ9ejTHYgZlcyQjK4A/5/1dF2YGbo7ExvXurzdjcIL3P/88yci8s480onXf3MXYIUdJVfr77HdC0GZPc/uCwBu4xb0PVuUSCUBKtv/wt6jMygsRPs0qavaOWs/KI48b9N6+96ak3I1GIhVpH7myJrIdVtbxW1ddfdHddyLnXV/H59QBnaY5zIpJeg/X/MVJokCgJD1Ou6mB2eJ4uzmaoFUdSUckAPafBBGfzNiYBKWryYuWrqPzHap8rrfZUS0LzfC9AS9/DPaxDZECJBhMmRA3xf5ceGmMnzlPaAWiBLmSgYHYBLglCsbbqqx12+bi36E2cSppLtg4Vbepw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 07/27] whpx: preparatory changes before switching over from winhvemulation Date: Mon, 23 Feb 2026 09:37:13 +0100 Message-ID: <20260223083734.48533-8-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXz9xn3qzMFQxh 9m08YIu7v+utVXjHkwXjS27jvFtPMl63r+wP9Jn6l//RECvpwVHBcQh/+Cg3ebwRUA5TQ837v3L Mi1Ywq05t+uYCkB1Y/Xisss7gZyW5LKp8D3bqBmKS2wfHccMrqDlSPIWHIWuwN5HReVqjrw+1xp fRiS3IUeZa+RjSWToaS1xzlsFcuwrqrfPzUXeEM1M8LoOmz3jJGizQo7mLcnCY2W1r/kB1YP1Nz EpYBEDEyFHcmpY8Jey3GmNN3c+OtjwQrScEVrukVqfh3o3jrltHvnWryjx/YJmVjpE2TdNe1c5M OUlUYJqLefbIaIW5dd+iygjPFMax7TW+Xtr1FuSH42v/wwbh/z0cRdVz1r03PA= X-Proofpoint-GUID: qfVl8H127eKKbqfkXA0rwP3o7QThhK9S X-Proofpoint-ORIG-GUID: qfVl8H127eKKbqfkXA0rwP3o7QThhK9S X-Authority-Info-Out: v=2.4 cv=Ra2dyltv c=1 sm=1 tr=0 ts=699c11e5 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=qtJoQR36IQ-qKrO0xoYA:9 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 mlxlogscore=941 spamscore=0 mlxscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 suspectscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABGp9lZ8Orj5z8+jWfbKs2f1DQVXH0+k8rVlWcwfm/+FpjNlMugm39Qe6d1aLLQ2bAUvLhQnxVczWqq/8NpWPXzXwgIiX9HwvSCyKkMhBvLXPQv99Npa0nJIonfTQGQC1/kneSMDid+uiL4sIRoG5ljwoKZdwDqG2atzGAK7Cf7gxjBr0iEJAlcMt1R+mnWYemXrfKpAj5OsycpH6WCLi1Vb7SzR52ciPU7a0DbyctismcRBJdU6yAGVr9YzzEviswxtnTLLD6k8NM1CYhu/INxKnuIBREXE5xWtaZjbd7ULvjYoFYKgItRxeo/CixFy0usCU8Wf9vsPX+BTSqA7+I67nUfCJ69PwZkkaoz85CbCs4F9TcqDuy5br4795KgAnM8kC1ROlOlIlXnFgwq040HK91Npz3ucOKt8Rxz9LydEv1qLxb7IaEzVE+jojsfunnOkjsh944zkHhfoJMa6/HMWKCS9z3C0IprHMJuymLw8PI21/IbYAXOStsGpHVLsm/OylRiN2TZLZNbdPdfwpT/3X6vt4I8XR8GvYQ6kE+Rh7UB8iYNPhunkelxNhlSz723UP+aTSPp8183hsoJhIpLWMLZVdhtkRr++nBRwUMsSBrx97sHqgGc5jac8ooFe91hJUsqgbwz8DT1NyBF0DG+N2b7mqR6fZAscyFxk0saTE5U8aRrBjhCEEjfymFZEFlwBl97cSIQxxM8zwWRo1T2cp4d22dQxI6X5lLU1V78sA9+UD7ytmAdMhiGER46OHkbMvrHLfrTMJeKR0EVLwmnB9oq+7L1i5QXg043DR48fyx2Wfi 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.77.191; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836014300158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/cpu.h | 2 +- target/i386/emulate/meson.build | 1 + target/i386/mshv/meson.build | 4 ++++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/target/i386/cpu.h b/target/i386/cpu.h index 9f222a0c9f..065613722f 100644 --- a/target/i386/cpu.h +++ b/target/i386/cpu.h @@ -2286,7 +2286,7 @@ typedef struct CPUArchState { QEMUTimer *xen_periodic_timer; QemuMutex xen_timers_lock; #endif -#if defined(CONFIG_HVF) || defined(CONFIG_MSHV) +#if defined(CONFIG_HVF) || defined(CONFIG_MSHV) || defined(CONFIG_WHPX) void *emu_mmio_buf; #endif =20 diff --git a/target/i386/emulate/meson.build b/target/i386/emulate/meson.bu= ild index dd047c424a..1bb3516249 100644 --- a/target/i386/emulate/meson.build +++ b/target/i386/emulate/meson.build @@ -7,3 +7,4 @@ emulator_files =3D files( =20 i386_system_ss.add(when: [hvf, 'CONFIG_HVF'], if_true: emulator_files) i386_system_ss.add(when: 'CONFIG_MSHV', if_true: emulator_files) +i386_system_ss.add(when: 'CONFIG_WHPX', if_true: emulator_files) diff --git a/target/i386/mshv/meson.build b/target/i386/mshv/meson.build index 647e5dafb7..3fadd4598a 100644 --- a/target/i386/mshv/meson.build +++ b/target/i386/mshv/meson.build @@ -6,3 +6,7 @@ i386_mshv_ss.add(files( )) =20 i386_system_ss.add_all(when: 'CONFIG_MSHV', if_true: i386_mshv_ss) + +i386_system_ss.add(when: 'CONFIG_WHPX', if_true: files( + 'x86.c', +)) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836241; cv=none; d=zohomail.com; s=zohoarc; b=gIdZhqADbNR03g/J/SePv/tO4sy13xIOpInnISJVsWP/SBKJFuLdY/WPn7tTrflvznyAuMlvvbLV78oiKl7DmebUcirTFArLYhJnRNPKv4pfLetIJNd7eMJkRHk9mphthm0ECtjS3Eq65rpXXrOOXgaT7/vXB9AV897WMv7p0yY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836241; h=Content-Type: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=Yw2iHtZGO16hdnJZFWAJ0heEY7g82L70ivWsP1jY3Mc=; b=RFmJo5cR8S3myoLjiVU/aeWfVJdruCntzXeCsCmAC8QCQavKvN5CF1TeOgWvSPBGC4TkAGcb5l4p8O+wS8NBh8iwm69dyseBoyZ7LLyZgEIjotGwVrstRY2c0vhacJZcMXLt6Qtdi9P1C9A5K9xSaicr1g8xDAci6JJHPNkCicw= 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 1771836241943405.31185188715517; Mon, 23 Feb 2026 00:44:01 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSV-0000i4-T2; Mon, 23 Feb 2026 03:38:27 -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 1vuRSA-0000G5-IE for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:06 -0500 Received: from p-east2-cluster3-host1-snip4-2.eps.apple.com ([57.103.77.213] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRS9-0002Dr-2g for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:06 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id D46911800216; Mon, 23 Feb 2026 08:37:58 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id CA1E5180016F; Mon, 23 Feb 2026 08:37:55 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835882; x=1774427882; bh=Yw2iHtZGO16hdnJZFWAJ0heEY7g82L70ivWsP1jY3Mc=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=W+UA8sN8GuU4a5hYAIC7ZLk+MVyc5CiL4DDwSNs2A45wGZOACP1emDSKcdJqxNM/dLstP3PixeO1cRtlN/FyMJSoPGS4sQpHi9IRJaBDAjkpkPhF1KUU9Pqnqj2RES8QxTD2o0SXL0hQM6/6OtebJGsl5xsPtuz5NBwqvADW6v0ArN1sLyjp1XCaz9ExNrI6mSf2fUwz09eiApXiVFhpO1pukC6VSgUkk76yJLc5PrS1faGuV8cH/BlOGWi93zsOEjSXGdkv8dCO4JmhHwv8sBRPamuhZmrGRC35cWjQSjmLcV85WrWP2VXxHqUebS78JsO3Y5IfBHbZOE03cjeORg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 08/27] whpx: refactor whpx_destroy_vcpu to arch-specific function Date: Mon, 23 Feb 2026 09:37:14 +0100 Message-ID: <20260223083734.48533-9-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=BPy+bVQG c=1 sm=1 tr=0 ts=699c11e8 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=MnziPJL1nimGiMRD7rAA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-ORIG-GUID: i8J1UlTfHBm4xyC2pRreQvQe1dJCorGz X-Proofpoint-GUID: i8J1UlTfHBm4xyC2pRreQvQe1dJCorGz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX1u7HQ61P8VQ/ dZoN9TbqHNO3QbA1azoOmyYQthCtviiu3Hqls5lHGJZqW7HQIkOMr2pd5xlo/0GgPG7WlLECUUV Jj8M4XEZ8H+ZGYElTaP9XsGEjpe6BtDQEUUn0Iz+DvzubOb4WBHlbk3zuBScOsrzhkk0ngGITGu Zk+jdDyKGPnAJCEl7C0gW1/cwAdDT1ZfP5TFi7cNwDY9s4Yp3Sbuqp2tkFEt1Um7ELN7Bcn6s5D h1XpnNdEziLIJqdUrHoqBe6GyBKViUh9/5lNAu2xToSQIlzOZPgomM1hp5MqkUoTPRFpIbNoBO2 HRoawbex8xkuqYnSHlt8Xq4wrQ5WNZHMSCtZ1oPe/aYw8lZdDikB37y9j20R3E= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 phishscore=0 spamscore=0 suspectscore=0 malwarescore=0 mlxlogscore=999 bulkscore=0 clxscore=1030 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABAsQCyXNpMfvcV5CHKvstyp3KhsVgEKfp7XMwjab3cbJ4WtxG3ZuYnM35L/tbm4y1MHJgb6dBwHep9Qwo/dIckGrtU65GJiURPsxBngSoeEzPCAZB8wA0iLd/n2S3lnTaBdDXIxcdSISpX1PxK/tf8vJ6P38r00rdmgoMvNif4y9/4Is50aeu27UeE7xkkotVIYhkP6g45dES+5ypt/FPJyj2Dcma33VH4GHI66FvdgQ2IYKa/3DiEsqjphTaL1rnJQiCXvS6E7aBEpPfDQC2JqGviSFCQODiMypwt4JIA4F6BF71OzdaCOfBbmsvwiHvtc6sodKzqpZnaHMMT+uEOLHjc8bfREhLrmKk8UxSdDZSWSjBgdsGOCGa8yy7AFpQYLBG6r4ENla5u3s4DyETj5TaNNAVs53bN6wi2FjbKNEEb4AeNZTxVyIV28pUb13VWOoTKnk6HG8AFnpnC0Lm2ZotyZE0oejLz5T2zoffSV/sPDltYBAYtjcmqRBEoMo7NY96NmIntkpo5MozDaxoxFYr8c7rdRW9tpfU2MuIA1z2nm05t6RqxzH0VPQa62jQkp1ELwCpD53oLpOgm9Bb5iUHdnXTeOS357TsLiqiNaARFiUOlKoH1YOfjHFc5gEpTQTtkGECXpTbHW0DOqbnFzCcKvZyReTpp+p20ZdiwRm2ZlD8lZxuJ6VYs5sbu7zU2XPS0W9lpMnF7kO2wc6Qj4sx33GEhw38w7RasebSx5rjRooVRQA3L/LpLfZMzf7Wuk082ZUnfyTxRo8XdXC6F9EA2k3O5G7A/1Jr 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.77.213; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836254177158500 Avoid a TARGET_X86_64 define by moving platform-specific code away from generic WHPX support. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- accel/whpx/whpx-common.c | 5 +---- include/system/whpx-all.h | 1 + target/arm/whpx/whpx-all.c | 5 +++++ target/i386/whpx/whpx-all.c | 6 ++++++ 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c index f018a8f5c7..c57a0d3f0f 100644 --- a/accel/whpx/whpx-common.c +++ b/accel/whpx/whpx-common.c @@ -236,10 +236,7 @@ void whpx_destroy_vcpu(CPUState *cpu) struct whpx_state *whpx =3D &whpx_global; =20 whp_dispatch.WHvDeleteVirtualProcessor(whpx->partition, cpu->cpu_index= ); -#ifdef HOST_X86_64 - AccelCPUState *vcpu =3D cpu->accel; - whp_dispatch.WHvEmulatorDestroyEmulator(vcpu->emulator); -#endif + whpx_arch_destroy_vcpu(cpu); g_free(cpu->accel); } =20 diff --git a/include/system/whpx-all.h b/include/system/whpx-all.h index 3db074c38c..b831c463b0 100644 --- a/include/system/whpx-all.h +++ b/include/system/whpx-all.h @@ -17,6 +17,7 @@ void whpx_translate_cpu_breakpoints( struct whpx_breakpoints *breakpoints, CPUState *cpu, int cpu_breakpoint_count); +void whpx_arch_destroy_vcpu(CPUState *cpu); =20 /* called by whpx-accel-ops */ bool whpx_arch_supports_guest_debug(void); diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c index 8d0ca794af..d52580a082 100644 --- a/target/arm/whpx/whpx-all.c +++ b/target/arm/whpx/whpx-all.c @@ -309,6 +309,11 @@ bool whpx_arch_supports_guest_debug(void) return false; } =20 +void whpx_arch_destroy_vcpu(CPUState *cpu) +{ + /* currently empty on Arm */ +} + static void whpx_get_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTE= R_VALUE* val) { struct whpx_state *whpx =3D &whpx_global; diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index e1f0fa5e77..cdcaebbe16 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1277,6 +1277,12 @@ bool whpx_arch_supports_guest_debug(void) return true; } =20 +void whpx_arch_destroy_vcpu(CPUState *cpu) +{ + AccelCPUState *vcpu =3D cpu->accel; + whp_dispatch.WHvEmulatorDestroyEmulator(vcpu->emulator); +} + /* Returns the address of the next instruction that is about to be execute= d. */ static vaddr whpx_vcpu_get_pc(CPUState *cpu, bool exit_context_valid) { --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771835995; cv=none; d=zohomail.com; s=zohoarc; b=HphI+LXytLieuvNBODRUp4wgCtYo1akFikX0V3bPKFiU7vemCMfBHCBJfr6UeKSVAsHEh9wWZRop64Na6bEUNsTxu0DZ9S+Z9l4TdW8fnE6/8QjY5eXr7PGgui7erfF5xkybeH69jlfEYHYNNn5B1vo3wdcvQKXDtRRxe9gwsw4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771835995; 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=NHOceMt/DdcT4zjUZf6YyjBJ5RV0Ja9t6DFzHeb/krs=; b=CEYNji5T5o96M69QHJkfuGqPV4tIvY2524dnqxLYZkRi2cOYAP1lA6x4pJCusYi7WEa0RfJm0TbxvObCd4uwXBYZuU03EnjyCx86IkQW3ylZ3Zm+nPRlMNf+tt5+y+dVfbZZ28RNQU7wUnyrV76GJM/wEdDf7UxdPb/2Xmyu/EI= 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 1771835994911832.4559441109739; Mon, 23 Feb 2026 00:39:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSS-0000T9-OJ; Mon, 23 Feb 2026 03:38:24 -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 1vuRSB-0000GQ-PE for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:10 -0500 Received: from p-east2-cluster3-host2-snip4-1.eps.apple.com ([57.103.77.222] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRS9-0002E1-3N for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:07 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 0A3981800204; Mon, 23 Feb 2026 08:38:00 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 44569180021B; Mon, 23 Feb 2026 08:37:58 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835884; x=1774427884; bh=NHOceMt/DdcT4zjUZf6YyjBJ5RV0Ja9t6DFzHeb/krs=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Cx5XuUOh7NJ42+qMr12BlyGtQkx+er2EM3L91tUOMWzT5CIeJwREKhtuFZR1O0hDftx9AmJAWWs68is2bjqLjS6NRLE2PfEcePDalgkeVviZ6cKqp3E7Cz2UbFLwM019TooNadY5RPjaEw7CKTc81eE6/fakpL/exiKLX6zrORMsOvu9qJjX1og6LGww0vFkXYddP6C6l71yD6OagWijpzXi47kMo1hYn5LxmWUTy9/Was2I52iTuU2wDN2drSxPtpYwhOwk8MwJIGy9nQG2RxML7t4M/l0IZRxYpGgWEs+cuZqjYTY1UGAgW4OsKAXWdq6ki+F+0cn/dV4WFO7Y2Q== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 09/27] whpx: move whpx_get_reg/whpx_set_reg to generic code Date: Mon, 23 Feb 2026 09:37:15 +0100 Message-ID: <20260223083734.48533-10-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=Oa2VzxTY c=1 sm=1 tr=0 ts=699c11ea cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=pUA6uon7y9DqcPPp1uEA:9 X-Proofpoint-ORIG-GUID: P6oXzlYi1dCtmB-C49vu6IUjcnMc1ny4 X-Proofpoint-GUID: P6oXzlYi1dCtmB-C49vu6IUjcnMc1ny4 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXy4GVrH/ON4yE JyZC2gzpT0dJihm9RvaHs40H841zsHdE+z45usLafqkjebHTgBliVDyEzuUSUlbeixIQYQGLI7U hmGwkHDI1FNxschQ/7WP2KC+ktCiyxjFZxX6AcVzqVj+tcF9eMi9IwtgoUWk9/FjuEols/AirwS bI4S3nS2EgAMHFwYwsjkgJFhIWnTr/4+tlWa8lWxrm0oioCKVij3VdO8OW12oFa5Pju//tB2ZL7 K3GYRoM32FRnxGOYuz3ss7uBkcesnj8IBLIMn8jCLYPFEbr94+qKlbpWAqzXh1W+Z3l3Sj/5nKi 8X/g2DxxG6SimZSH/r+6bKCaezNiVL/cxopNlD8A4MhrG7cJ7SYfO7pn69QD7o= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 bulkscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 clxscore=1030 mlxlogscore=999 spamscore=0 mlxscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABMYL5k+d2pcisUfWYnHW8ilBr2shK88FfHoaUs6B+yHi40hRt9NiQr0N8sfYy9OmszGucPCQFyvOjNw6yqVgrEzqTj8Il3e9954qylljngJbuGn8pT3GClrfm4NJsttDMncMutqkG9q9OeCGgQmpCZk2IuXmfcf5Wf/oOBooP2p980xkDo5YEzVO5Hf7A/USUbWf7GjUcfWsrOeGrnqwZzuZ5ZSWKQCspVIkHkv/n9Ou55gD1aLKTq6lHl42+xFJhJXu5QIzp+qae9MJQCEUPNW+v8kxKJIILZ9CJM911gWLJIXU3kQD9Uepirdye8uYGz8mD2Sb+ghCcuGVPybDAbfCb1Kr8nn8iOcqnpKxMH4rOaNlwXfSCzCN5/ASxzvsiqz/fRnA4kL7+s/S8h/iSDHPh85UUj8qJbQ6kbRl7SFZmc5QQsfMp6woRmtBUUBAB9BJic9DgNPUAEATdZ3H2jgymjEczeAzGplDEldX5PPPlWa7yB07zlECSA46K0SiMefHG9klYS7z7Vc62Neu0c3+lnpoXPF736Pd+0bWbw7m5H/LO6Yk4mLAbr4gbSk9ya87aZwuQBuncyOHU5qItN8Fw1TxEOCT8epR2Xj2OSistNPwCWioFOUszVjVWpYrx2OQ733dgrkX9IU9kDPTElMVwsvTOqOmdHshQXcWr8Zfmy8JtgCTkyWQhQzFjyGCXHtpfJgfzJtZ4uZ/pNrX9XCbTCbiSxjsJ5fVBYgkNUjM++Z52XFvtUccmNQZlOXiLCzffcMsv/04UD/4xS1VHBjOEDmuUqj+2xdG7l5ieuSCHjJ8= 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.77.222; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771835997654154100 Content-Type: text/plain; charset="utf-8" These will be used in the next commit on the x86_64 backend too. Also move flush_cpu_state as it's used by get_reg/set_reg and the arm64 cod= e. Signed-off-by: Mohamed Mediouni Reviewed-by: Bernhard Beschow --- accel/whpx/whpx-common.c | 35 ++++++++++++++++++++++++++++++++++ include/system/whpx-common.h | 3 +++ target/arm/whpx/whpx-all.c | 37 +----------------------------------- 3 files changed, 39 insertions(+), 36 deletions(-) diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c index c57a0d3f0f..21e9f1a178 100644 --- a/accel/whpx/whpx-common.c +++ b/accel/whpx/whpx-common.c @@ -46,6 +46,41 @@ static HMODULE hWinHvEmulation; struct whpx_state whpx_global; struct WHPDispatch whp_dispatch; =20 +void whpx_flush_cpu_state(CPUState *cpu) +{ + if (cpu->vcpu_dirty) { + whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); + cpu->vcpu_dirty =3D false; + } +} + +void whpx_get_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTER_VALUE= * val) +{ + struct whpx_state *whpx =3D &whpx_global; + HRESULT hr; + + whpx_flush_cpu_state(cpu); + + hr =3D whp_dispatch.WHvGetVirtualProcessorRegisters(whpx->partition, c= pu->cpu_index, + ®, 1, val); + + if (FAILED(hr)) { + error_report("WHPX: Failed to get register %08x, hr=3D%08lx", reg,= hr); + } +} + +void whpx_set_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTER_VALUE= val) +{ + struct whpx_state *whpx =3D &whpx_global; + HRESULT hr; + hr =3D whp_dispatch.WHvSetVirtualProcessorRegisters(whpx->partition, c= pu->cpu_index, + ®, 1, &val); + + if (FAILED(hr)) { + error_report("WHPX: Failed to set register %08x, hr=3D%08lx", reg,= hr); + } +} + /* Tries to find a breakpoint at the specified address. */ struct whpx_breakpoint *whpx_lookup_breakpoint_by_addr(uint64_t address) { diff --git a/include/system/whpx-common.h b/include/system/whpx-common.h index b86fe9db6e..a4e16e1309 100644 --- a/include/system/whpx-common.h +++ b/include/system/whpx-common.h @@ -20,6 +20,9 @@ int whpx_first_vcpu_starting(CPUState *cpu); int whpx_last_vcpu_stopping(CPUState *cpu); void whpx_memory_init(void); struct whpx_breakpoint *whpx_lookup_breakpoint_by_addr(uint64_t address); +void whpx_flush_cpu_state(CPUState *cpu); +void whpx_get_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTER_VALUE= * val); +void whpx_set_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTER_VALUE= val); =20 /* On x64: same as WHvX64ExceptionTypeDebugTrapOrFault */ #define WHPX_INTERCEPT_DEBUG_TRAPS 1 diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c index d52580a082..9a9a19c196 100644 --- a/target/arm/whpx/whpx-all.c +++ b/target/arm/whpx/whpx-all.c @@ -274,14 +274,6 @@ static struct whpx_sreg_match whpx_sreg_match[] =3D { { WHvArm64RegisterSpEl1, ENCODE_AA64_CP_REG(4, 1, 3, 4, 0) }, }; =20 -static void flush_cpu_state(CPUState *cpu) -{ - if (cpu->vcpu_dirty) { - whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); - cpu->vcpu_dirty =3D false; - } -} - HRESULT whpx_set_exception_exit_bitmap(UINT64 exceptions) { if (exceptions !=3D 0) { @@ -314,33 +306,6 @@ void whpx_arch_destroy_vcpu(CPUState *cpu) /* currently empty on Arm */ } =20 -static void whpx_get_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTE= R_VALUE* val) -{ - struct whpx_state *whpx =3D &whpx_global; - HRESULT hr; - - flush_cpu_state(cpu); - - hr =3D whp_dispatch.WHvGetVirtualProcessorRegisters(whpx->partition, c= pu->cpu_index, - ®, 1, val); - - if (FAILED(hr)) { - error_report("WHPX: Failed to get register %08x, hr=3D%08lx", reg,= hr); - } -} - -static void whpx_set_reg(CPUState *cpu, WHV_REGISTER_NAME reg, WHV_REGISTE= R_VALUE val) -{ - struct whpx_state *whpx =3D &whpx_global; - HRESULT hr; - hr =3D whp_dispatch.WHvSetVirtualProcessorRegisters(whpx->partition, c= pu->cpu_index, - ®, 1, &val); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set register %08x, hr=3D%08lx", reg,= hr); - } -} - static void whpx_get_global_reg(WHV_REGISTER_NAME reg, WHV_REGISTER_VALUE = *val) { struct whpx_state *whpx =3D &whpx_global; @@ -527,7 +492,7 @@ int whpx_vcpu_run(CPUState *cpu) if (advance_pc) { WHV_REGISTER_VALUE pc; =20 - flush_cpu_state(cpu); + whpx_flush_cpu_state(cpu); pc.Reg64 =3D vcpu->exit_ctx.MemoryAccess.Header.Pc + 4; whpx_set_reg(cpu, WHvArm64RegisterPc, pc); } --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836141; cv=none; d=zohomail.com; s=zohoarc; b=gj/kADYWExOxg5i9APLZC1HW2pZPFf8zxogBgFEosHd2eN6O0HW38A0r5IvH9c3Tr0mwSRZQ/bCdyq2umJO/Ai4ru2G/EaP4nJ6ZnxlT39VkFgX4c54K9YJocCu4FAhY5HXERR8dONFewJvU1JVaqmfeo0AYm9W9AQohYIRHlaQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836141; 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=Dk5eX2jOjF2PyRgCzPtgTVz6QNza9g8+ul+O0rRzATI=; b=dLHrpEZ7vFN5E1nxqVZ6TpgHC0PE2K2lUJLt4ApAxfnAt2TwzbtJbKalog1TMhsXASXWWLQRa7nXdI6KLx37P2R+pDDi5q6EqF4QjUtAG6ar8iRaMBOojBoAMdCwayFTIh3tkXjA6UrdjgtQRU3N2JTr6blxHqvVxxIFhjb961s= 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 1771836141104236.79970908341807; Mon, 23 Feb 2026 00:42:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSU-0000cu-Tq; Mon, 23 Feb 2026 03:38:26 -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 1vuRSF-0000Gv-SJ for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:12 -0500 Received: from p-east2-cluster3-host2-snip4-2.eps.apple.com ([57.103.77.223] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSC-0002Eo-QA for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:11 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id B1F911800173; Mon, 23 Feb 2026 08:38:03 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id A70F21800201; Mon, 23 Feb 2026 08:38:00 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835887; x=1774427887; bh=Dk5eX2jOjF2PyRgCzPtgTVz6QNza9g8+ul+O0rRzATI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Li3w1nVTknf6SseeH0e65mTM91Ak0oxVCaNFwDUYITXq60Pj6YKjr3WM256CA5ISoRvPLmBsj8b2eVOGeXYiSqlvmlj/ShJ7hCk2q3mTi4ZzYm85uulzqkzO66u2B0Xn0KXzRSmt/CKyoDupLa8JqF4ISTWC+eDgJgWm7wUAxqGNYak4kghhEnxiNUlqDg0o2q0fxAfeuS7VJblfzVF7fmpPrRXjS1zPWDSz0pntmIqSwoQcIx9LTS3Fhm9ngfnDWGda8JJJnRcj5YLjg8ca+UjNX+p232QfDXlba6G7jK+fYDAiUQVoq0Pl8sjwkKq6VYtmlqA7q+5W43bOaX3BNQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 10/27] whpx: i386: switch over from winhvemulation to target/i386/emulate Date: Mon, 23 Feb 2026 09:37:16 +0100 Message-ID: <20260223083734.48533-11-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX4/YNh4iucBDQ ZnlnUK17haTlVK0oLdZ40twSj7uL4X1Xfdijoaws1mSJxpCXGN7ezU9B9zhIGV4hsXwlr8ZFr7Q kE9ywyHSr84yLhMsZ0R9fZBrRoyv7eGNc0dAvqMyTt5lckjAJmf8Jhg9I/jZhgIF49SQ7yv3AQ/ 83mDNvGH8j4QFc54DPZVA69yroty3UbkYJa+qSB3M21/MlAcmqkQKN7fmR06aZrzMcRLVVvMvRF Ac6kUeTVtoF/SVe5ZeAE5sJ+JlwNGVpZ3HfQ/poXtR51oalANu9n/V/JLcMqo3uLNsfi0uF4M3p 7mFpZSjdDIHekwl+DMWEgi5FoGXGkimf7Js8R6zRAIwWglWJ8ZRZcz7EUc9wv4= X-Proofpoint-ORIG-GUID: u983UphK3IyHrMJgixw5Az_yjRVCy9KE X-Proofpoint-GUID: u983UphK3IyHrMJgixw5Az_yjRVCy9KE X-Authority-Info-Out: v=2.4 cv=EJELElZC c=1 sm=1 tr=0 ts=699c11ed cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=1q5U6jd5_WdO0fZ7RH8A:9 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 bulkscore=0 mlxlogscore=999 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 phishscore=0 clxscore=1030 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABsFUjuTofOaTXaGqV8OWqCdykYqYoH1RFHtPVKkr4m6RGUxF3xtxqYmdipg8UXMWkG0cXghcVgdvt5VS7UKR4r1wORoBpZ3QOWDWIKSIwpSQx7mHPtkyloUiuuXSnEWkyW74ceffvk36dPJn05ufBxFLnPsX2RwaaVGHg+2kLrxjxX7KxaSSn4fldgQhNfXNcybTWJ6zgPPgsXAqwvAKzOZayUeND5g2gychhxaagxvPV+dX9N6m1OdPYWRFOjKlqGTXZ5JcO2F2vwpm4c+r5ryIsFzyAW5XkEcSpuJyR4jyXCMjPf6BfXnamlxMlIAmtsCJzXX4esQ+nzOEkPQfZqCZwpWItAtg/O6TEHrNW2FEG+5pHLLM3yjt7fyWmZOwrKZ6O8DF2UXXGfpUBtSDQ1FZ1SWn7AY/vMO3OPQfJxXF5lsJGADllK+V21bI6EHqZXQiJlFZ0p1i6yUgLCKM1k0HzJvFgQqGYRIiG5C9gznfsmumkO5dz/YMivm8PFVLmbXu1zJR381ULv9WcPm3VtQXM+aBN6PZfw5ion7k7/qSCBGEOm52QMeM3MzbfnREOWzVnJHBLNmB1Gy0OUB50Cy6AD3Z8w+T+pAYv9LOobqpKXPpBPlHVoEfFt+SCesI9stm88xO/7BHZ28OCCt9DAC1Cpmvy9SKh+WOZHWQBQpbqE59H9PYWNhDUo/hjEW53SwF7x9DCyY82roJbkf1/C3SSYE3gktAjy77F3A0qfAipaE0kfkBuJvVNcj7YMpYSItlT1P59jFQ1kNs6/7yrfV8ECkTALOHMyRHQm1xiUG8fCMxfUfOF6A== 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.77.223; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836142928158500 Content-Type: text/plain; charset="utf-8" Using the mshv backend as a base, move away from winhvemulation to using common QEMU code used by the HVF and mshv backends. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 250 ++++++++++++++++-------------------- 1 file changed, 114 insertions(+), 136 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index cdcaebbe16..eb6076d2f4 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -15,6 +15,7 @@ #include "gdbstub/helpers.h" #include "qemu/accel.h" #include "accel/accel-ops.h" +#include "system/memory.h" #include "system/whpx.h" #include "system/cpus.h" #include "system/runstate.h" @@ -36,8 +37,12 @@ #include "system/whpx-all.h" #include "system/whpx-common.h" =20 +#include "emulate/x86_decode.h" +#include "emulate/x86_emu.h" +#include "emulate/x86_flags.h" +#include "emulate/x86_mmu.h" + #include -#include =20 #define HYPERV_APIC_BUS_FREQUENCY (200000000ULL) =20 @@ -756,158 +761,138 @@ void whpx_get_registers(CPUState *cpu) x86_update_hflags(env); } =20 -static HRESULT CALLBACK whpx_emu_ioport_callback( - void *ctx, - WHV_EMULATOR_IO_ACCESS_INFO *IoAccess) +static int emulate_instruction(CPUState *cpu, const uint8_t *insn_bytes, s= ize_t insn_len) { - MemTxAttrs attrs =3D { 0 }; - address_space_rw(&address_space_io, IoAccess->Port, attrs, - &IoAccess->Data, IoAccess->AccessSize, - IoAccess->Direction); - return S_OK; -} + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + struct x86_decode decode =3D { 0 }; + x86_insn_stream stream =3D { .bytes =3D insn_bytes, .len =3D insn_len = }; =20 -static HRESULT CALLBACK whpx_emu_mmio_callback( - void *ctx, - WHV_EMULATOR_MEMORY_ACCESS_INFO *ma) -{ - CPUState *cs =3D (CPUState *)ctx; - AddressSpace *as =3D cpu_addressspace(cs, MEMTXATTRS_UNSPECIFIED); + whpx_get_registers(cpu); + decode_instruction_stream(env, &decode, &stream); + exec_instruction(env, &decode); + whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); =20 - address_space_rw(as, ma->GpaAddress, MEMTXATTRS_UNSPECIFIED, - ma->Data, ma->AccessSize, ma->Direction); - return S_OK; + return 0; } =20 -static HRESULT CALLBACK whpx_emu_getreg_callback( - void *ctx, - const WHV_REGISTER_NAME *RegisterNames, - UINT32 RegisterCount, - WHV_REGISTER_VALUE *RegisterValues) +static int whpx_handle_mmio(CPUState *cpu, WHV_RUN_VP_EXIT_CONTEXT *exit_c= tx) { - HRESULT hr; - struct whpx_state *whpx =3D &whpx_global; - CPUState *cpu =3D (CPUState *)ctx; + WHV_MEMORY_ACCESS_CONTEXT *ctx =3D &exit_ctx->MemoryAccess; + int ret; =20 - hr =3D whp_dispatch.WHvGetVirtualProcessorRegisters( - whpx->partition, cpu->cpu_index, - RegisterNames, RegisterCount, - RegisterValues); - if (FAILED(hr)) { - error_report("WHPX: Failed to get virtual processor registers," - " hr=3D%08lx", hr); + ret =3D emulate_instruction(cpu, ctx->InstructionBytes, ctx->Instructi= onByteCount); + if (ret < 0) { + error_report("failed to emulate mmio"); + return -1; } =20 - return hr; + return 0; } =20 -static HRESULT CALLBACK whpx_emu_setreg_callback( - void *ctx, - const WHV_REGISTER_NAME *RegisterNames, - UINT32 RegisterCount, - const WHV_REGISTER_VALUE *RegisterValues) +static void handle_io(CPUState *env, uint16_t port, void *buffer, + int direction, int size, int count) { - HRESULT hr; - struct whpx_state *whpx =3D &whpx_global; - CPUState *cpu =3D (CPUState *)ctx; + int i; + uint8_t *ptr =3D buffer; =20 - hr =3D whp_dispatch.WHvSetVirtualProcessorRegisters( - whpx->partition, cpu->cpu_index, - RegisterNames, RegisterCount, - RegisterValues); - if (FAILED(hr)) { - error_report("WHPX: Failed to set virtual processor registers," - " hr=3D%08lx", hr); + for (i =3D 0; i < count; i++) { + address_space_rw(&address_space_io, port, MEMTXATTRS_UNSPECIFIED, + ptr, size, + direction); + ptr +=3D size; } - - /* - * The emulator just successfully wrote the register state. We clear t= he - * dirty state so we avoid the double write on resume of the VP. - */ - cpu->vcpu_dirty =3D false; - - return hr; } =20 -static HRESULT CALLBACK whpx_emu_translate_callback( - void *ctx, - WHV_GUEST_VIRTUAL_ADDRESS Gva, - WHV_TRANSLATE_GVA_FLAGS TranslateFlags, - WHV_TRANSLATE_GVA_RESULT_CODE *TranslationResult, - WHV_GUEST_PHYSICAL_ADDRESS *Gpa) +static void whpx_bump_rip(CPUState *cpu, WHV_RUN_VP_EXIT_CONTEXT *exit_ctx) { - HRESULT hr; - struct whpx_state *whpx =3D &whpx_global; - CPUState *cpu =3D (CPUState *)ctx; - WHV_TRANSLATE_GVA_RESULT res; - - hr =3D whp_dispatch.WHvTranslateGva(whpx->partition, cpu->cpu_index, - Gva, TranslateFlags, &res, Gpa); - if (FAILED(hr)) { - error_report("WHPX: Failed to translate GVA, hr=3D%08lx", hr); - } else { - *TranslationResult =3D res.ResultCode; - } - - return hr; + WHV_REGISTER_VALUE reg; + whpx_get_reg(cpu, WHvX64RegisterRip, ®); + reg.Reg64 =3D exit_ctx->VpContext.Rip + exit_ctx->VpContext.Instructio= nLength; + whpx_set_reg(cpu, WHvX64RegisterRip, reg); } =20 -static const WHV_EMULATOR_CALLBACKS whpx_emu_callbacks =3D { - .Size =3D sizeof(WHV_EMULATOR_CALLBACKS), - .WHvEmulatorIoPortCallback =3D whpx_emu_ioport_callback, - .WHvEmulatorMemoryCallback =3D whpx_emu_mmio_callback, - .WHvEmulatorGetVirtualProcessorRegisters =3D whpx_emu_getreg_callback, - .WHvEmulatorSetVirtualProcessorRegisters =3D whpx_emu_setreg_callback, - .WHvEmulatorTranslateGvaPage =3D whpx_emu_translate_callback, -}; - -static int whpx_handle_mmio(CPUState *cpu, WHV_MEMORY_ACCESS_CONTEXT *ctx) +static int whpx_handle_portio(CPUState *cpu, + WHV_RUN_VP_EXIT_CONTEXT *exit_ctx) { - HRESULT hr; - AccelCPUState *vcpu =3D cpu->accel; - WHV_EMULATOR_STATUS emu_status; - - hr =3D whp_dispatch.WHvEmulatorTryMmioEmulation( - vcpu->emulator, cpu, - &vcpu->exit_ctx.VpContext, ctx, - &emu_status); - if (FAILED(hr)) { - error_report("WHPX: Failed to parse MMIO access, hr=3D%08lx", hr); - return -1; - } + WHV_X64_IO_PORT_ACCESS_CONTEXT *ctx =3D &exit_ctx->IoPortAccess; + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + int ret; =20 - if (!emu_status.EmulationSuccessful) { - error_report("WHPX: Failed to emulate MMIO access with" - " EmulatorReturnStatus: %u", emu_status.AsUINT32); + if (!ctx->AccessInfo.StringOp && !ctx->AccessInfo.IsWrite) { + uint64_t val =3D 0; + WHV_REGISTER_VALUE reg; + + whpx_get_reg(cpu, WHvX64RegisterRax, ®); + handle_io(cpu, ctx->PortNumber, &val, 0, ctx->AccessInfo.AccessSiz= e, 1); + if (ctx->AccessInfo.AccessSize =3D=3D 1) { + reg.Reg8 =3D val; + } else if (ctx->AccessInfo.AccessSize =3D=3D 2) { + reg.Reg16 =3D val; + } else if (ctx->AccessInfo.AccessSize =3D=3D 4) { + reg.Reg64 =3D (uint32_t)val; + } else { + reg.Reg64 =3D (uint64_t)val; + } + whpx_bump_rip(cpu, exit_ctx); + whpx_set_reg(cpu, WHvX64RegisterRax, reg); + return 0; + } else if (!ctx->AccessInfo.StringOp && ctx->AccessInfo.IsWrite) { + RAX(env) =3D ctx->Rax; + handle_io(cpu, ctx->PortNumber, &RAX(env), 1, ctx->AccessInfo.Acce= ssSize, 1); + whpx_bump_rip(cpu, exit_ctx); + return 0; + } + + ret =3D emulate_instruction(cpu, ctx->InstructionBytes, exit_ctx->VpCo= ntext.InstructionLength); + if (ret < 0) { + error_report("failed to emulate I/O port access"); return -1; } =20 return 0; } =20 -static int whpx_handle_portio(CPUState *cpu, - WHV_X64_IO_PORT_ACCESS_CONTEXT *ctx) +static void write_mem(CPUState *cpu, void *data, target_ulong addr, int by= tes) { - HRESULT hr; - AccelCPUState *vcpu =3D cpu->accel; - WHV_EMULATOR_STATUS emu_status; + vmx_write_mem(cpu, addr, data, bytes); +} =20 - hr =3D whp_dispatch.WHvEmulatorTryIoEmulation( - vcpu->emulator, cpu, - &vcpu->exit_ctx.VpContext, ctx, - &emu_status); - if (FAILED(hr)) { - error_report("WHPX: Failed to parse PortIO access, hr=3D%08lx", hr= ); - return -1; - } +static void read_mem(CPUState *cpu, void *data, target_ulong addr, int byt= es) +{ + vmx_read_mem(cpu, data, addr, bytes); +} =20 - if (!emu_status.EmulationSuccessful) { - error_report("WHPX: Failed to emulate PortIO access with" - " EmulatorReturnStatus: %u", emu_status.AsUINT32); - return -1; +static void read_segment_descriptor(CPUState *cpu, + struct x86_segment_descriptor *desc, + enum X86Seg seg_idx) +{ + bool ret; + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + SegmentCache *seg =3D &env->segs[seg_idx]; + x86_segment_selector sel =3D { .sel =3D seg->selector & 0xFFFF }; + + ret =3D x86_read_segment_descriptor(cpu, desc, sel); + if (ret =3D=3D false) { + error_report("failed to read segment descriptor"); + abort(); } +} =20 - return 0; + +static const struct x86_emul_ops whpx_x86_emul_ops =3D { + .read_mem =3D read_mem, + .write_mem =3D write_mem, + .read_segment_descriptor =3D read_segment_descriptor, + .handle_io =3D handle_io +}; + +static void whpx_init_emu(void) +{ + init_decoder(); + init_emu(&whpx_x86_emul_ops); } =20 /* @@ -1279,8 +1264,9 @@ bool whpx_arch_supports_guest_debug(void) =20 void whpx_arch_destroy_vcpu(CPUState *cpu) { - AccelCPUState *vcpu =3D cpu->accel; - whp_dispatch.WHvEmulatorDestroyEmulator(vcpu->emulator); + X86CPU *x86cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86cpu->env; + g_free(env->emu_mmio_buf); } =20 /* Returns the address of the next instruction that is about to be execute= d. */ @@ -1639,11 +1625,11 @@ int whpx_vcpu_run(CPUState *cpu) =20 switch (vcpu->exit_ctx.ExitReason) { case WHvRunVpExitReasonMemoryAccess: - ret =3D whpx_handle_mmio(cpu, &vcpu->exit_ctx.MemoryAccess); + ret =3D whpx_handle_mmio(cpu, &vcpu->exit_ctx); break; =20 case WHvRunVpExitReasonX64IoPortAccess: - ret =3D whpx_handle_portio(cpu, &vcpu->exit_ctx.IoPortAccess); + ret =3D whpx_handle_portio(cpu, &vcpu->exit_ctx); break; =20 case WHvRunVpExitReasonX64InterruptWindow: @@ -1990,22 +1976,11 @@ int whpx_init_vcpu(CPUState *cpu) =20 vcpu =3D g_new0(AccelCPUState, 1); =20 - hr =3D whp_dispatch.WHvEmulatorCreateEmulator( - &whpx_emu_callbacks, - &vcpu->emulator); - if (FAILED(hr)) { - error_report("WHPX: Failed to setup instruction completion support= ," - " hr=3D%08lx", hr); - ret =3D -EINVAL; - goto error; - } - hr =3D whp_dispatch.WHvCreateVirtualProcessor( whpx->partition, cpu->cpu_index, 0); if (FAILED(hr)) { error_report("WHPX: Failed to create a virtual processor," " hr=3D%08lx", hr); - whp_dispatch.WHvEmulatorDestroyEmulator(vcpu->emulator); ret =3D -EINVAL; goto error; } @@ -2067,6 +2042,8 @@ int whpx_init_vcpu(CPUState *cpu) max_vcpu_index =3D max(max_vcpu_index, cpu->cpu_index); qemu_add_vm_change_state_handler(whpx_cpu_update_state, env); =20 + env->emu_mmio_buf =3D g_new(char, 4096); + return 0; =20 error: @@ -2256,6 +2233,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) } =20 whpx_memory_init(); + whpx_init_emu(); =20 printf("Windows Hypervisor Platform accelerator is operational\n"); return 0; --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836209; cv=none; d=zohomail.com; s=zohoarc; b=AgvgmzG1TL80Ztya9DIIWS03H8qSVAe9oAZvDTgC/YHZx/CsAhrmYUmhdPENCunFr9KsVU9xucUWoRLVyNCWYPsWSoHzcchqKc6DunSDJ9Hd/QPWWWVCTduiAnYHjz3Qm2kYFJwtv3WqkmoLc7R7K+DMBZ3XvpYh6F/l7xiCqOE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836209; 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=fg6ASREgM8H3KqayXNpjqghODmRREAt5H2XvAof8pXs=; b=dv+wdYfAd1UAmCIYU5FvjHgfN/MroYwzmF19i+W/GN0JjDgoxtmt0FOIxKNFSyR3Myo4TppnmmlFo4H9VKtfrUzCqXcRKDpGyJtsrsQ+kYYIRDwrebQJdlC8EHeZ11uNfuOPUvclrOHSfc07fFJc+mOcPAXScAxfGSwNiCbRwPw= 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 1771836209793672.8117943881172; Mon, 23 Feb 2026 00:43:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSX-0000lt-BI; Mon, 23 Feb 2026 03:38:29 -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 1vuRSK-0000HJ-5B for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:18 -0500 Received: from p-east2-cluster3-host9-snip4-3.eps.apple.com ([57.103.77.134] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSD-0002F0-Jn for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:11 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id C6AB71800209; Mon, 23 Feb 2026 08:38:05 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 1AE2918000B5; Mon, 23 Feb 2026 08:38:02 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835888; x=1774427888; bh=fg6ASREgM8H3KqayXNpjqghODmRREAt5H2XvAof8pXs=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=UIlcicBDFslAQf/64hwP1H/MIU63ucp8NlaLB0teWUR8caGXbKGucbmp34DLsb3dSsvYI4I/Y8B6xwBLMJWxLFMXy3ZfwAXRmy/g/47InxQWr5td5MWQYR3k0IZD2z3WuNTM9Ek3mYo3mS1r0o/UTxKesOGQtcpR56KgxzTDKQhxiKtDW+kWd4GYqbjb4An2/YjqJH8XW+rx63gSP2DvRaL3Yjx85xLvfH4GeT6t9OmEgbfucdngEwv+cC66srxHJ4o3b/xrXCLt1dM67L0GqdO44qUXo5XjdYrdcH5o0ssoKu8SKCTtMJMLO6HngPcZVg39ye4ORuMs0mqfUXgjhQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 11/27] whpx: i386: flags conversion for target/i386/emulate internal state Date: Mon, 23 Feb 2026 09:37:17 +0100 Message-ID: <20260223083734.48533-12-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX+GDBw3xxXUPF laKBXr7+oJVTL/qMvoPz4bnZdU4J9lh+mQ29P6BRNwt1vauAi0wqZS5uiYqDNbmKeS0iAbQvpmk UXI15WcpzeaY38qZa1YyE7AZaiO9U/0UKibP2FREOop0/0rWlwMG+MScyxnrfEU1FkUwGehQQuJ KbyLrMpRdmGvWT94PJLrOeogwblGrsleyhBY1Pdf0WTlg1/vjIkCiXX9hY09mggyi9VANLwHg4k MM+bsir+86sjUyVu2tVOo0txHPATp2990XIIaeJhrdEstJRYaY/yGJBh/m/ty0h6H/Hg07pllqF peCwqSahNbMUt3VDhJlD/KnXPPC6ulwFQknmbj6E2DfA74glm0rOuZ5U66n0KI= X-Proofpoint-GUID: knrFs6kCT28b9cqWXSWgwkkLm2J3PjlV X-Authority-Info-Out: v=2.4 cv=RYadyltv c=1 sm=1 tr=0 ts=699c11ef cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=GO8j3Qv1z8u8_yQncx4A:9 X-Proofpoint-ORIG-GUID: knrFs6kCT28b9cqWXSWgwkkLm2J3PjlV 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 clxscore=1030 suspectscore=0 adultscore=0 mlxlogscore=817 spamscore=0 bulkscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABsR+s+VedhzlgK1KO6fe5lNyVWSoo7elinTKThp+T189L1EjPb83dr3shc34hmfgC9HObYbJdHIg9ZrOq29X0dga/+n8YVejAibFzJiEz5GvOz3XDiZJOtE2zTEiQMR0kyYatv/uwYZAaWx7g6OADOsZb4Vm4Zw/uVZvfSgw2TN8Zu+A19+GNBKN2inMl6SqflpDfpzNcnLYDQBGI1C4/56p4cwITwaJhp3KassaBZCpglLlVQaKhyNzE1HzmXiWW9aYgtT+v/v3O56BFtsD7IfXDZv4+1+qPaTb+FSXsvx6KLBaJ1SOtUEGNeeleD9kILul31xZZZc/vN6f4jMKk3vfjBhfmFP4wqQDXN9XSvayHxEgDVywO7B6XfyYvI5w8uUQjJPDAN/fXc/b4hAcfCWKB0JcjEvn4j5qQy4B0Q2cgG6GrrdafQVdMBalyFWQRBpuYexnhfHSqcrIRkYGAuZLjEv1JCMGMABIOySXWVaYWT75kMO9337H55+Iqi6cZRnuwAG89KYl2zzIVCWwrvuaTCbbBqsHt74UjEzXTU3OmHDSIdCbcYU2bv2KWRh6QbMHKXqX1USzk6B8nwIgDFvsBRFhYfakFQxv1CfCZKeUx+F3nGo0KR0VmRiYqoXVP1iPUmCvkhH/hdo4nO+RKqpQoWqBTQWXEemawz9fcyAyBf/u6J4vBGO9KcGpBjbBKc5qugXniOis8vlq9gcUFV9o+X6RLaMsXjqznkCK9tpGSr9RgNiFRglaqBcmTrSrM568XqTXDRCJXRBZtOgEDCCaM5rsZPKkMeRpQbaKpwPK43khoaw== 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.77.134; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836212519154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index eb6076d2f4..0524885053 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -412,6 +412,7 @@ void whpx_set_registers(CPUState *cpu, int level) vcxt.values[idx++].Reg64 =3D env->eip; =20 assert(whpx_register_names[idx] =3D=3D WHvX64RegisterRflags); + lflags_to_rflags(env); vcxt.values[idx++].Reg64 =3D env->eflags; =20 /* Translate 6+4 segment registers. HV and QEMU order matches */ @@ -637,6 +638,7 @@ void whpx_get_registers(CPUState *cpu) env->eip =3D vcxt.values[idx++].Reg64; assert(whpx_register_names[idx] =3D=3D WHvX64RegisterRflags); env->eflags =3D vcxt.values[idx++].Reg64; + rflags_to_lflags(env); =20 /* Translate 6+4 segment registers. HV and QEMU order matches */ assert(idx =3D=3D WHvX64RegisterEs); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836028; cv=none; d=zohomail.com; s=zohoarc; b=QHvZIjWmEYwSV0W3DlG2OTkl/LS+ZyQYXdONfnNVeGA+Z3gErroYgtR3A1WQP1D9+W60s2v6MnKrWTiGOpkFlyTVm5Bx8goV5YB+ZQyVFenuYPoW5HhsRlF+l4XCFUWNgA9uLPnAs4RRNJuwgb1vSnX3PdsfQQR4sr58O7fSUxo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836028; 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=Tz3bvcnMe5CE3w/zA9xLDVXBu2mGec3HnRSmhDH3Hu8=; b=IpCHteIPxLxIL2Onu+ipm4pnplSOLKKPy5ZV+3B4FZOBu9b3q6LWauHvPkK1slYEqRGM6XAK5A2y0mNXFbh5bL3JTyPv8g4kRcvjtxIATLSar0+mGlT0WVfNGDi4ktjS2zg4Nll6CpiyarZgu+EXn6EE7CixDJy4nd65WmnrsFM= 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 177183602843787.3758733362015; Mon, 23 Feb 2026 00:40:28 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSY-0000nZ-4F; Mon, 23 Feb 2026 03:38:30 -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 1vuRSM-0000Pa-0d for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:18 -0500 Received: from p-east2-cluster3-host5-snip4-10.eps.apple.com ([57.103.77.201] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSI-0002FS-CI for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:17 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 38116180017E; Mon, 23 Feb 2026 08:38:08 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 7D6661800179; Mon, 23 Feb 2026 08:38:05 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835891; x=1774427891; bh=Tz3bvcnMe5CE3w/zA9xLDVXBu2mGec3HnRSmhDH3Hu8=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=dgmMwrps6dPy1e2gixAjhnV0Zi1VuaAVWiQ/hOEjGRrMZqFIjiT+p6gdsVO1daNKZd0haGX8ESYhAiG9e/W5KDog8PcZki6c9uEu6FUmYIzHeikVYNcgJZTIhkRx+3kt8Hlsy+/ZdmWQx2Fvnn4VD/nnZS9cbnnvqnqibomB+hV8FSEixQ8bVDxEzftvfgWlP9U0aUEQnptWj3ixz5AxZGhruhuN82KT8slXYnXO0/El2+NSItcWTPfOlzFR733ZF+V50dl+0lSFRskI2ohdbt3VimiHg4mWdOUmg27OUJMLKGSvVf6X2ducUFPumDfrAgL31wlvmTu5GvUO22lzrg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 12/27] whpx: i386: remove remaining winhvemulation support code Date: Mon, 23 Feb 2026 09:37:18 +0100 Message-ID: <20260223083734.48533-13-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXym2uUgmvNOEm Phw3BHyx2x0gNi9Yx2ohZETjl4x/3LHKChTLqBqQicXyPzUo/KWIwlQps0o9W0mL8eJYB6DuCqf BBzlfrFRUs0FweegmNOnjpvzAhIXuEGtWa14+TPJyBkBOQhfVeOgbDXBv6VObukZJ9l10+WKYBP 0jcI3SW39ysh+BSIhjmSPqqxGWL/YzmyP2PE4Rk+c54FZC77rLrQo4kb7USU/FzU324zHLfm2pe xZ28Zn1TDQXFPHqmSgxBg68UFSgcE3Lj5E2wPL+NfQjqPUNT93ZxwSDddLQswtVL9+0VFKuLrEL wow31GtvBorrWu7FxcWnggbNvg1QLdZXVj1/lYTcH9U1w3sH3c27EwpKY5Hrsw= X-Proofpoint-GUID: g7w74lZj6lGu_w0NBU5aIVNvP5cJyu3k X-Proofpoint-ORIG-GUID: g7w74lZj6lGu_w0NBU5aIVNvP5cJyu3k X-Authority-Info-Out: v=2.4 cv=E8HAZKdl c=1 sm=1 tr=0 ts=699c11f1 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=UBzWkQmmy9v7-gCQCgEA:9 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 mlxscore=0 phishscore=0 lowpriorityscore=0 malwarescore=0 clxscore=1030 bulkscore=0 adultscore=0 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABRt7HQLqx9tmZf0wR9iYS0I9O88hYySutCFEKE9oDuXsclX58rWihnHrnmdZMx6S94MRDbKaaojO30oPi+EDrC/IA9lsqcEHZ9EudELwED64lbeFNlNxd98SnMBkPgSRdI24xge0+WTvVhvAmX0tL5e6qC9Ux5lkvPDICok58Jcipvv5kTz4p3BJUCNRmJ5HsgR9JqvucxU3e6ib7q7HYYpatfBEf22cFyEx4yzbjbVvLaEsUjawdEEtw3Hi5NsFx3ABXjuviHS7oSuw+hvmatnWCKVbBTX2XCoMyz12X6S9rTobKH//ptSqPsv/DnTTvJpLCazngJBzpoaW4uQDg6ZU9dq8FAgtFgoDMvYgd0cFApnmeObJmcy0PRLILK2/IQgRTVL3f+BC4wM0YTvfuMAyHBPDUbQbJh2oFXj1TbxGr3Jsn2rIgpV7Pfzyl45fJrwdL7Az1F0hEp8goRWd9UXq5wFdBXKJ3AJzuV4Uq5APx10BM7xHnpkItoiwjUcdYfJJNTsN8woUtWrZFJ0vGNaJNY0b/+mg+8GcqET7EOeYIJQN4PDzMHH3nn6lR1+xNeCVeCrOTUZunBLscnW9dEZIzXKf8+sLysT29aOXpzR3q/xOjDTbpna2j3evHVHRX635xnz7JTBjgyeDTCFmRSyn16wa2G+N0F856GzFaSeLFL+jyhZDsli2tlchqdvw1TNumHlo/ov9+TtP98/9iaYQZREUBwOpoOB7W0B53Ofl7ztix739I9++BiDTrJM6XC8MLWsZby2dGYDbjJlCtos+DOKClEarNlI8DwGlGzOa69uZ53KksW2ClC+ay4oVi 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.77.201; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836029983154100 Content-Type: text/plain; charset="utf-8" After moving away to target/i386/emulate, this is no longer necessary. Signed-off-by: Mohamed Mediouni --- accel/whpx/whpx-common.c | 22 ---------------------- include/system/whpx-common.h | 3 --- include/system/whpx-internal.h | 16 ---------------- meson.build | 3 +-- 4 files changed, 1 insertion(+), 43 deletions(-) diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c index 21e9f1a178..88eef55799 100644 --- a/accel/whpx/whpx-common.c +++ b/accel/whpx/whpx-common.c @@ -39,9 +39,6 @@ bool whpx_allowed; bool whpx_irqchip_in_kernel; static bool whp_dispatch_initialized; static HMODULE hWinHvPlatform; -#ifdef HOST_X86_64 -static HMODULE hWinHvEmulation; -#endif =20 struct whpx_state whpx_global; struct WHPDispatch whp_dispatch; @@ -393,7 +390,6 @@ static bool load_whp_dispatch_fns(HMODULE *handle, HMODULE hLib =3D *handle; =20 #define WINHV_PLATFORM_DLL "WinHvPlatform.dll" - #define WINHV_EMULATION_DLL "WinHvEmulation.dll" #define WHP_LOAD_FIELD_OPTIONAL(return_type, function_name, signature)= \ whp_dispatch.function_name =3D \ (function_name ## _t)GetProcAddress(hLib, #function_name); \ @@ -420,14 +416,6 @@ static bool load_whp_dispatch_fns(HMODULE *handle, WHP_LOAD_LIB(WINHV_PLATFORM_DLL, hLib) LIST_WINHVPLATFORM_FUNCTIONS(WHP_LOAD_FIELD) break; - case WINHV_EMULATION_FNS_DEFAULT: -#ifdef HOST_X86_64 - WHP_LOAD_LIB(WINHV_EMULATION_DLL, hLib) - LIST_WINHVEMULATION_FUNCTIONS(WHP_LOAD_FIELD) -#else - g_assert_not_reached(); -#endif - break; case WINHV_PLATFORM_FNS_SUPPLEMENTAL: WHP_LOAD_LIB(WINHV_PLATFORM_DLL, hLib) LIST_WINHVPLATFORM_FUNCTIONS_SUPPLEMENTAL(WHP_LOAD_FIELD_OPTIONAL) @@ -543,11 +531,6 @@ bool init_whp_dispatch(void) if (!load_whp_dispatch_fns(&hWinHvPlatform, WINHV_PLATFORM_FNS_DEFAULT= )) { goto error; } -#ifdef HOST_X86_64 - if (!load_whp_dispatch_fns(&hWinHvEmulation, WINHV_EMULATION_FNS_DEFAU= LT)) { - goto error; - } -#endif assert(load_whp_dispatch_fns(&hWinHvPlatform, WINHV_PLATFORM_FNS_SUPPLEMENTAL)); whp_dispatch_initialized =3D true; @@ -557,11 +540,6 @@ error: if (hWinHvPlatform) { FreeLibrary(hWinHvPlatform); } -#ifdef HOST_X86_64 - if (hWinHvEmulation) { - FreeLibrary(hWinHvEmulation); - } -#endif return false; } =20 diff --git a/include/system/whpx-common.h b/include/system/whpx-common.h index a4e16e1309..04289afd97 100644 --- a/include/system/whpx-common.h +++ b/include/system/whpx-common.h @@ -3,9 +3,6 @@ #define SYSTEM_WHPX_COMMON_H =20 struct AccelCPUState { -#ifdef HOST_X86_64 - WHV_EMULATOR_HANDLE emulator; -#endif bool window_registered; bool interruptable; bool ready_for_pic_interrupt; diff --git a/include/system/whpx-internal.h b/include/system/whpx-internal.h index ad6ade223e..7a1c9871f1 100644 --- a/include/system/whpx-internal.h +++ b/include/system/whpx-internal.h @@ -4,9 +4,6 @@ =20 #include #include -#ifdef HOST_X86_64 -#include -#endif #include "hw/i386/apic.h" #include "exec/vaddr.h" =20 @@ -89,12 +86,6 @@ void whpx_apic_get(APICCommonState *s); X(HRESULT, WHvResetPartition, \ (WHV_PARTITION_HANDLE Partition)) \ =20 -#define LIST_WINHVEMULATION_FUNCTIONS(X) \ - X(HRESULT, WHvEmulatorCreateEmulator, (const WHV_EMULATOR_CALLBACKS* Cal= lbacks, WHV_EMULATOR_HANDLE* Emulator)) \ - X(HRESULT, WHvEmulatorDestroyEmulator, (WHV_EMULATOR_HANDLE Emulator)) \ - X(HRESULT, WHvEmulatorTryIoEmulation, (WHV_EMULATOR_HANDLE Emulator, VOI= D* Context, const WHV_VP_EXIT_CONTEXT* VpContext, const WHV_X64_IO_PORT_ACC= ESS_CONTEXT* IoInstructionContext, WHV_EMULATOR_STATUS* EmulatorReturnStatu= s)) \ - X(HRESULT, WHvEmulatorTryMmioEmulation, (WHV_EMULATOR_HANDLE Emulator, V= OID* Context, const WHV_VP_EXIT_CONTEXT* VpContext, const WHV_MEMORY_ACCESS= _CONTEXT* MmioInstructionContext, WHV_EMULATOR_STATUS* EmulatorReturnStatus= )) \ - #define WHP_DEFINE_TYPE(return_type, function_name, signature) \ typedef return_type (WINAPI *function_name ## _t) signature; =20 @@ -103,16 +94,10 @@ void whpx_apic_get(APICCommonState *s); =20 /* Define function typedef */ LIST_WINHVPLATFORM_FUNCTIONS(WHP_DEFINE_TYPE) -#ifdef HOST_X86_64 -LIST_WINHVEMULATION_FUNCTIONS(WHP_DEFINE_TYPE) -#endif LIST_WINHVPLATFORM_FUNCTIONS_SUPPLEMENTAL(WHP_DEFINE_TYPE) =20 struct WHPDispatch { LIST_WINHVPLATFORM_FUNCTIONS(WHP_DECLARE_MEMBER) -#ifdef HOST_X86_64 - LIST_WINHVEMULATION_FUNCTIONS(WHP_DECLARE_MEMBER) -#endif LIST_WINHVPLATFORM_FUNCTIONS_SUPPLEMENTAL(WHP_DECLARE_MEMBER) }; =20 @@ -122,7 +107,6 @@ bool init_whp_dispatch(void); =20 typedef enum WHPFunctionList { WINHV_PLATFORM_FNS_DEFAULT, - WINHV_EMULATION_FNS_DEFAULT, WINHV_PLATFORM_FNS_SUPPLEMENTAL } WHPFunctionList; =20 diff --git a/meson.build b/meson.build index 4af32c3e1f..86bc807e56 100644 --- a/meson.build +++ b/meson.build @@ -865,8 +865,7 @@ if get_option('whpx').allowed() and host_os =3D=3D 'win= dows' endif # Leave CONFIG_WHPX disabled else - if cc.has_header('winhvplatform.h', required: get_option('whpx')) and \ - cc.has_header('winhvemulation.h', required: get_option('whpx')) + if cc.has_header('winhvplatform.h', required: get_option('whpx')) accelerators +=3D 'CONFIG_WHPX' endif endif --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836210; cv=none; d=zohomail.com; s=zohoarc; b=hWlxkhMCXJuSLUHsAXHPQGMIZ+aIuV9Veku5ziTOBdfNh+E/pCYZDxT+DP5tcsDim/IVv9j13xNmuuIlV0aljSJzLXaTLpyed+6azlA4/U5iHVAclncmmAmBfwOyBDCgb3rBrWLtSaSNepRgkzhocT8UnVFIovKOlRxItPDMlzY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836210; h=Content-Type: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=YKGmjTwasOTKHJc2TN0N83W04DQ/70JvOkGojdqvAPY=; b=JYQ1p8jh0Mx6ju3voc8DBBiqd5F+uHgK8UNxo9Ff6AoR5l2P6dVMaNZ/b98VtdkQXr5UV11BhMoeEieQsDbjP6k/T4wMuUnPD8RvlWkqA5/t2g2HO/8au+4y79Ll3xwLuaXOEyaNuay+1OPxgNDyvP93Q12M3MR0JIxLYDJKYDw= 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 177183621006160.26982160361922; Mon, 23 Feb 2026 00:43:30 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSW-0000kf-R8; Mon, 23 Feb 2026 03:38:28 -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 1vuRSN-0000QA-7r for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:22 -0500 Received: from p-east2-cluster3-host2-snip4-10.eps.apple.com ([57.103.77.231] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSK-0002Fl-B4 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:18 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id A57201800213; Mon, 23 Feb 2026 08:38:10 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id E2C20180016F; Mon, 23 Feb 2026 08:38:07 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835894; x=1774427894; bh=YKGmjTwasOTKHJc2TN0N83W04DQ/70JvOkGojdqvAPY=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=L44vC6hLQ1BFnVyABO6kJ6U2nLcWWgAdL2D77RGVeWtc+hYsnpxJbMVcysroL0sTPCu3Zcp7/DtZKSmx+mi+Q6tClpYVL1TzhyzmCw8f+6euVl7Kf7dKcbX5KTBZMm6vt6/rOtrKWsdm2ja/fJmLSOg2y0AoNvOwg19zjukItlCWuB6P7gp0z06yFLnOM+u5nioQDVGMOfotHO8/f/X4F03xQX+iZa0UUUjfB6CLvRkhY7Q0uh8WMZvtFrS5q4XLSyTNDmD6zwum5kOwFAdC6GsI/dkYop+xvdeaPch7x++TkDz+Dat/bE1zVuoIq7OrshcNjaQA0g3LEVIQdzzCJg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 13/27] whpx: i386: remove messages Date: Mon, 23 Feb 2026 09:37:19 +0100 Message-ID: <20260223083734.48533-14-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX6kHtHgqPysUD ULzNFQ8nnuLk0Gvv+FiOiP1xvuXVh4yZCj7DkorXBgwnqb5ei9M0rXbbhiBRxFYG+ZfddrhX8c7 kapw3MsLLlTtUAQ5b6Xc+NCoL1C+Ghv4GrREKk3Ws/eVF1U45rxh7t+Tg0mXpQe0uZuWXV0f+lW MwSCiHinB+uL70JvCh1wsZaSUzoIfs/+TBz0qxQQvMU7WG9CAZnPIP9CUi2gkaGJ491FUn8b74G WogH67xYHSDvuJJLS+DimsRc+awTCKp26AqGPHpxyRoUggSVMN60Rpe71H5GDia5jmhbKnyyoNO CTaHeMefY4DSiHfw6yePCgEBKrE2dAeXXJRiu0bHAp9boXSBPhQqdXuAu4ZPe8= X-Proofpoint-GUID: oM5km0EWyGKi4mm0glYQ-6Oxkd4pr1mJ X-Proofpoint-ORIG-GUID: oM5km0EWyGKi4mm0glYQ-6Oxkd4pr1mJ X-Authority-Info-Out: v=2.4 cv=Ra2dyltv c=1 sm=1 tr=0 ts=699c11f3 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=tHCKdM3VofH7q6B9RbgA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 mlxlogscore=999 spamscore=0 mlxscore=0 bulkscore=0 lowpriorityscore=0 malwarescore=0 adultscore=0 suspectscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAAB3NZcXgrYcCl8tvGPtUGVbRvvj8yamMnZBrQjUMcZAEPolQfjIbkLiETP1RVClBCN4/bvPy3632Tij/JiyG7FrsPncwnIORv5axVJtmVEe2i/RubuoTNKOV/DTfZtu1MvHOkqUST70Ko72qONahewQRp+Gb1ehbS62jS5G1AnzOzO3HQj4Wyvv4UKdbOKg4Nf9hPoe6AlKHBxqWHlBCWyJATk4NeRtBPa0tTRzB3sLKT45rlQ6tmblfZGB+914l+7ChwV9HQyYaeNTDzLjhKTqJntYc7iSPg1KFlIhCoBnaFVFPLBjMxXZ5aHHRy7sqquwcbwMkQ/Mc9+hmfgGzHw3abRc1jLf3KIPGZacOmpsWMcigcGWVjv069c4LXg9kgC37jnA1o6giKaau3B+rD3QiCVkuFEpyJR7Vfh3E3smPNiQgpQiXhv71JHvmKH3kjfflvNZveB8/3b9VI1JfuXlkJ2Vb4rqkl8cy1m/Ittli9IJJXuShwuH3fkJI8wClTk9/gMDmCoITafFEEFEFHt+xJDn7+wK2TEtq6ymcxNno7C8uJzBP9twCJa1DtHazIS/Wm4MIvWAfASb49h2r1xucwSZKEH28KjxLPbnAFUNMUcjE3GMRSwvSNjBmnnWD9eJgs/r/4NgLEnQfYtMRLECeopFA8/GnOpGrCk7l38ewNF0d8lBfit01ac4ahAZa7c69diiHynBmWmHS+gxBiBL5AbT45s95nUnziKNsCmPpYA1yJPLnX/Q2pEJDEzOX7phGGeIX+WOYu/R5zmrlx6UBg+uzv7Tqp/6mZ+vO9lRF1r7xE= 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.77.231; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836210756158500 Remove some messages printed by the WHPX backend that don't have an equivalent elsewhere and don't convey an error. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- target/i386/whpx/whpx-all.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 0524885053..2f2c613eda 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -2163,7 +2163,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) whp_dispatch.WHvSetVirtualProcessorInterruptControllerState2) { WHV_X64_LOCAL_APIC_EMULATION_MODE mode =3D WHvX64LocalApicEmulationModeXApic; - printf("WHPX: setting APIC emulation mode in the hypervisor\n"); hr =3D whp_dispatch.WHvSetPartitionProperty( whpx->partition, WHvPartitionPropertyCodeLocalApicEmulationMode, @@ -2237,7 +2236,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) whpx_memory_init(); whpx_init_emu(); =20 - printf("Windows Hypervisor Platform accelerator is operational\n"); return 0; =20 error: --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836217; cv=none; d=zohomail.com; s=zohoarc; b=W7TAS8cYxSGKeiEmVHnZFKmhRdjixXmKRyMWbeQA8IZstxF/bv9BrpnRYBiTKowAW3xMKxRQTCBro08aV3wm+bVJcu8h6IfZlOnNv1tajfvVBEFFLj9fV2jo3A1ARH5RxDI1k0VZctyiRZZS61TJug69GGtlsiYpyJDv6xvNHwk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836217; 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=op64aUwd3kHeSL+XTt7uxWfJ6n/JYbXZSlN/Ec+uOgk=; b=k5+C2xY5Llms1+uigM0cMYEp3YOVBJzJi1Ev0tpnz5nLdPrNEpOED30O78L0nfLhemVzDJqElkRo7gGZZZcDvpECP0F5aScacAdlzCEBzZYYzUkjjsEtRY81fGPt0VNQDXu+p1TotbluzvLY+r9kvl1IQURuR71KgAJjRIZv06M= 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 1771836217165705.5556033634253; Mon, 23 Feb 2026 00:43:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSX-0000mJ-G3; Mon, 23 Feb 2026 03:38:29 -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 1vuRSP-0000Qb-UO for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:22 -0500 Received: from p-east2-cluster3-host10-snip4-1.eps.apple.com ([57.103.77.142] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSN-0002G1-07 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:21 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 126A3180021B; Mon, 23 Feb 2026 08:38:12 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 53F851800210; Mon, 23 Feb 2026 08:38:10 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835896; x=1774427896; bh=op64aUwd3kHeSL+XTt7uxWfJ6n/JYbXZSlN/Ec+uOgk=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Lg9QjPe1R5NZFsyMJGBfswkyqlZz5fjDflrdjYpWuU1EwyDU5RZuM8Nsmdo159qchJpCkdd/6LaLKm87iXxKFSyTooPxflYEIWQJGc6sAOllmR8wFuwxif6wqdoiHRkTOQXQbSMNyc/QuXA3TzoctWvAvxyBl8DcfWUKsWYxoRT+BQILqehWGQT+zoBd7G6SyiQw6fsaejV4oIbjl3nwt2s05upqRKLtmfqNjJPRqUlkwIUIlHrt41RLqTVu4D1cq0iQGhPpDXuY3CLM1IdvD63pp1GWQ4ny12oSGDTHGEzZCWFYHnTkY0Est41QlMQ/dmXRFzIjwTJRrmJd2SfuYQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 14/27] whpx: i386: remove CPUID trapping Date: Mon, 23 Feb 2026 09:37:20 +0100 Message-ID: <20260223083734.48533-15-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: l1N_nbsWPFKQYnXxjLFyLwNsq7FxTso3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX2v8QppCai7rr KCoSS5VurzPICii2i1NVGOBqCgtpl/dC+Te7Owss2NqQKbfwDjlH219BqNuuiI+v/KaMuIsmbSW DTF2iQu46QBdSKsLjqSFdmRgx7hAa/hIfFNCRv+OZa3sWTBxM4b3KAaUUz8mjusn+pRvSfLtI/Y 34nPN3iiu6iceSKfbj9Ifs5fW3YDmgf6Pywa/nFiqXdAKa6npX4SiwzFenVzxvXFBzB+8GAQdfq A/A597E5lONDAxBCkvBVPsAUuwoNX5AD00+GtApNfflbTPm2uqZAVYzq7cWR0lxPrGjJGW09LOd eVNi4TeBPmO9aNCdJ8UxX6io9kLkZ/8gI30WtQRpOiGevj4i0WxbtZEKXlbSjE= X-Authority-Info-Out: v=2.4 cv=fPw0HJae c=1 sm=1 tr=0 ts=699c11f6 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=Gk9p9Fe9aJpBGj35TJ8A:9 X-Proofpoint-ORIG-GUID: l1N_nbsWPFKQYnXxjLFyLwNsq7FxTso3 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 clxscore=1030 suspectscore=0 mlxlogscore=999 adultscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABjZIOkB16XhAZZZeRFP73N4EZi6JfWkD6Gi5Hx8aNHXjcpS415u1XW/iKlUcOtJGtgBgysZpXrHA2aWUygqIUsWga/O7XW74I6ynQN6F36PPDV/g1ZtM71Y+CZgEZB5aQhUpfw2TkcO/0OJJ22NJGtV7MDIGzq9Tzj6ixEQ7saJZXK4BDcWwcoq8B3nikt1hquz+YvdbgysHhsxOlJU2rpbC92Wgt0d7lF1cpFcXwztLp6O+f9Xk51Et+DrgcJvgNO4W3QCTP0I4+kVCdLHcwARiGIDDdsaRAj/wiO6B0ap+8E6CK8jdWjYsgfATYdFRNgsZ+kZ+jrdOw8yb5C1qeoX2TdcP6SSNNUvuFy7k9N3vhePEDyQ+p3RqePzU3gjPMcJo9Aki2NV0ghs/ex36wZCji1IsE0JWbnzwstm8g2FK8Vux6Lv6TLC1LMiFKyXTesuaszXiznxIkY/kL95xdc0Uo6wYwZPzEIJUgkIIZHR05RBfPvkL4ObZiqJxuCRvztJ0I0SJKXR7fjNH2y+iiLBuXHPKqk/xOKCDU7iGrDFzczuibe3mfsAmWhbVp3bFn400HyKI3puMmjsJhL8ikBE3EwxpNDeUk+j0Kq0JUvYg/kAm3EfgSUm7Y0pMzhDG6otmVu0RVQOCGIQ5+hQITW6EOFIOMN1hhpHlKWx38c4GBut5GHvd9HAaamEg144/+X77Bp/lID7Xt8UwwJkNFCQqD804qMcAhfekLQ/vacw/72/p8GwdXItqQ8KiBhtVJx+MaatRYr3GENcZD0K7BrzYEmaIBpBBKuoZK3tueLc7Jg1YFXldJDx44KHVFz/GpWg== 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.77.142; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836218864158500 Content-Type: text/plain; charset="utf-8" Very partial in its current state and results in significantly inconsistent CPUID data. Remove it until it's reimplemented later. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 104 ------------------------------------ 1 file changed, 104 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 2f2c613eda..baa3169c55 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1795,75 +1795,6 @@ int whpx_vcpu_run(CPUState *cpu) ret =3D 0; break; } - case WHvRunVpExitReasonX64Cpuid: { - WHV_REGISTER_VALUE reg_values[5]; - WHV_REGISTER_NAME reg_names[5]; - UINT32 reg_count =3D 5; - UINT64 cpuid_fn, rip =3D 0, rax =3D 0, rcx =3D 0, rdx =3D 0, r= bx =3D 0; - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - - memset(reg_values, 0, sizeof(reg_values)); - - rip =3D vcpu->exit_ctx.VpContext.Rip + - vcpu->exit_ctx.VpContext.InstructionLength; - cpuid_fn =3D vcpu->exit_ctx.CpuidAccess.Rax; - - /* - * Ideally, these should be supplied to the hypervisor during = VCPU - * initialization and it should be able to satisfy this reques= t. - * But, currently, WHPX doesn't support setting CPUID values i= n the - * hypervisor once the partition has been setup, which is too = late - * since VCPUs are realized later. For now, use the values from - * QEMU to satisfy these requests, until WHPX adds support for - * being able to set these values in the hypervisor at runtime. - */ - cpu_x86_cpuid(env, cpuid_fn, 0, (UINT32 *)&rax, (UINT32 *)&rbx, - (UINT32 *)&rcx, (UINT32 *)&rdx); - switch (cpuid_fn) { - case 0x40000000: - /* Expose the vmware cpu frequency cpuid leaf */ - rax =3D 0x40000010; - rbx =3D rcx =3D rdx =3D 0; - break; - - case 0x40000010: - rax =3D env->tsc_khz; - rbx =3D env->apic_bus_freq / 1000; /* Hz to KHz */ - rcx =3D rdx =3D 0; - break; - - case 0x80000001: - /* Remove any support of OSVW */ - rcx &=3D ~CPUID_EXT3_OSVW; - break; - } - - reg_names[0] =3D WHvX64RegisterRip; - reg_names[1] =3D WHvX64RegisterRax; - reg_names[2] =3D WHvX64RegisterRcx; - reg_names[3] =3D WHvX64RegisterRdx; - reg_names[4] =3D WHvX64RegisterRbx; - - reg_values[0].Reg64 =3D rip; - reg_values[1].Reg64 =3D rax; - reg_values[2].Reg64 =3D rcx; - reg_values[3].Reg64 =3D rdx; - reg_values[4].Reg64 =3D rbx; - - hr =3D whp_dispatch.WHvSetVirtualProcessorRegisters( - whpx->partition, cpu->cpu_index, - reg_names, - reg_count, - reg_values); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set CpuidAccess state regist= ers," - " hr=3D%08lx", hr); - } - ret =3D 0; - break; - } case WHvRunVpExitReasonException: whpx_get_registers(cpu); =20 @@ -2017,26 +1948,6 @@ int whpx_init_vcpu(CPUState *cpu) } } =20 - /* - * If the vmware cpuid frequency leaf option is set, and we have a val= id - * tsc value, trap the corresponding cpuid's. - */ - if (x86_cpu->vmware_cpuid_freq && env->tsc_khz) { - UINT32 cpuidExitList[] =3D {1, 0x80000001, 0x40000000, 0x40000010}; - - hr =3D whp_dispatch.WHvSetPartitionProperty( - whpx->partition, - WHvPartitionPropertyCodeCpuidExitList, - cpuidExitList, - RTL_NUMBER_OF(cpuidExitList) * sizeof(UINT32)); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set partition CpuidExitList hr= =3D%08lx", - hr); - ret =3D -EINVAL; - goto error; - } - } =20 vcpu->interruptable =3D true; cpu->vcpu_dirty =3D true; @@ -2073,7 +1984,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) WHV_CAPABILITY whpx_cap; UINT32 whpx_cap_size; WHV_PARTITION_PROPERTY prop; - UINT32 cpuidExitList[] =3D {1, 0x80000001}; WHV_CAPABILITY_FEATURES features =3D {0}; =20 whpx =3D &whpx_global; @@ -2183,7 +2093,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) /* Register for MSR and CPUID exits */ memset(&prop, 0, sizeof(WHV_PARTITION_PROPERTY)); prop.ExtendedVmExits.X64MsrExit =3D 1; - prop.ExtendedVmExits.X64CpuidExit =3D 1; prop.ExtendedVmExits.ExceptionExit =3D 1; if (whpx_irqchip_in_kernel()) { prop.ExtendedVmExits.X64ApicInitSipiExitTrap =3D 1; @@ -2200,19 +2109,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) goto error; } =20 - hr =3D whp_dispatch.WHvSetPartitionProperty( - whpx->partition, - WHvPartitionPropertyCodeCpuidExitList, - cpuidExitList, - RTL_NUMBER_OF(cpuidExitList) * sizeof(UINT32)); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set partition CpuidExitList hr=3D%08= lx", - hr); - ret =3D -EINVAL; - goto error; - } - /* * We do not want to intercept any exceptions from the guest, * until we actually start debugging with gdb. --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836214; cv=none; d=zohomail.com; s=zohoarc; b=aDcDOu7rtDXju93qJ0VkX33wAzKh14/4vgZ/wOEoYMkF6UGr/aYb7eablXgXPIvmXysukusP8i5BP+SQ0O3LrKFP3dNsMT15P46o9Xg3djf3w7laDTa/8Ri6EfZiM3M8sByXTBKR/ujt4CS/dWcygzwv0lMUJBNG9+rqQPFIjKs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836214; h=Content-Type: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=tErMiEuDLXt0dMED3y+T60xeOyEgc7UicdCqP1DD7/0=; b=bZJoIXWaN0gF5sIntQAIscMu/+yOMYVkll2oTJTSgch6kae246OgWDrT5wh+D6vFUkDDjFyQUhoctZ4GZKgUM//loT24LPW3wou1ZNc77dqBeH8Mv8s/3PTbQBi2F67+ox3ZO3UHhpXdfHWo+S+EC07ZSVqFRA4eRGQKoZotLSo= 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 1771836214555906.7233085351105; Mon, 23 Feb 2026 00:43:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSY-0000ns-Gk; Mon, 23 Feb 2026 03:38:30 -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 1vuRSS-0000UP-Q8 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:24 -0500 Received: from p-east2-cluster3-host3-snip4-5.eps.apple.com ([57.103.77.156] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSP-0002Gi-BK for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:23 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id CDA31180020E; Mon, 23 Feb 2026 08:38:15 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id B88041800179; Mon, 23 Feb 2026 08:38:12 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835900; x=1774427900; bh=tErMiEuDLXt0dMED3y+T60xeOyEgc7UicdCqP1DD7/0=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=edjSSTnRMQ7/LG5/BoJr0aULbymu5OW913C06fZsEWmnC2N/k0PvELnTgjN2eHyJTVc7Ovb33+De5L6juiHGbtNwNmSJrCieBpFWuNbF5Nx3qHSFTrUA90R0FPDJQ9g5CDPpeT+8pz9U7EzR5tGulfhUsUo8/scwinXCd2wU7qClyT+ET5kkY47kbmgfKNchrq3NkvYjezOF0zVLdDhUxYc03UZSioeOtIzT7iFNPwdYVZPGBEzqA2PTczmIccVNaOw5Wk6X+wAjhVrhPlxgLBpoyGtn61MOQnia99ZvVy9Y4lFj31T1mnr8/IhWW7HUvAIPETeC8OZAsfefucvwoQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 15/27] whpx: common, i386, arm: rework state levels Date: Mon, 23 Feb 2026 09:37:21 +0100 Message-ID: <20260223083734.48533-16-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: CKG1-Z0D2FapmAPSjki1-TKiZv_j0cFe X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXynRb3+vZnTMJ h4Qwq3rCxAvKHOcizEuVzuyIR6pc+cFaqd17At5mWn+SKwMueG1NlORUU+0bIV9q/axUj30i6L4 Cc4SCL+fFHtELWyzDR8m8jqVUaMkVMd35m7VHyTQ5ngRzVCYrOuuFIeBWrZvpyGck1A70gVMmcP U6AMqMws1R10nOyuAA39Tt99POxhe0LrE7CPbSIyXauwTv5bamebDatXr3Q8yZs47HQN5Kf+G4B fREpqFBB/wZkXi5hDPU9rW/FLgOLpiRfckidb540Hn9cXHJEDpQSE9OXhQLjpDnyHkuvHjRh5QF 8aNve28SG6TObeT6H7mSfpgIY2nUPiEMrTsj3qbAX5WmsRZGifc1tXZCU78xKc= X-Authority-Info-Out: v=2.4 cv=AN8t5o3d c=1 sm=1 tr=0 ts=699c11fa cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=IkcTkHD0fZMA:10 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=KKAkSRfTAAAA:8 a=N0RsYbKkH9eAvmUnK9wA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=cvBusfyB2V15izCimMoJ:22 X-Proofpoint-GUID: CKG1-Z0D2FapmAPSjki1-TKiZv_j0cFe 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 lowpriorityscore=0 clxscore=1030 malwarescore=0 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABrSrlbG57qK7QLuw8XCPEToBrZUf6E/0LH8Y4JUAP00hZ7+xwQWLjhaoiYU2pdeX+QI3Q/WoSmUhwmx3Bk/mKV4mp9Ylqlahm+prZBnU6rp6mJSVuwlJJCX3r3qmi2khFbBD547DbCx1EboQ1kWs9odXExY/wsW5E3WLJNOkxtHYjAQF3aaEJJYQrAHomZm8RxoH5XgAPn5dSdICbLGhwB6Tb14jKFIwffMoaMSp7y+6UC24itYL3gPogS4muDH7/ow883xyMguhdsTqvskRdEugpcKtlE+mYzqyyOxnTHIykuiJD4CB6haOqtsBRsFotMpQ2f1bBLerVyT/QuYI5uBXksCuqd14B5xZxDfdVCB7qEoxMS9+BngC2N17D8W8KKbUT7GX17dOHLYMfapaA4L/OZQoQ5tLkF1SUF9RXQwq7FxmutlJ+OOnmacn/YT2lRP6sZzi6Vbrkw+lljGX+7axuzIfngXSLTs5duB1MB+0fvhaV1ZeKB8pn/1A2Zg25CfubB+iXrb4x9txbyLcLSLElFmzK0j9xaoBxR2ygDPPE1Q8i4+SxD6VTe5s9U3RokHZCCYQQGj7R2JiB+KTjXgtljLosmWGmOwkBA72eVCn+WgniW4h4HQxj+kViFBNQybbVz50hWRQ7/OGimKGTnHTPrKKBYx37RJO6jeBTkgTLAd+vHh9brtXCsPkPf5R6vW/OunvEJQSqQBwbhJlDcE/qbM7Ig6+48cYUEWIyLH7l0Rjf8VDyqAH91d1C1wYIMbb8HrKH+TlT/kLqa4gSoJDdFH6uLGI= 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.77.156; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836214896158500 Change state levels from a set of ifdefs to an enum. Make register state loads use state levels too. Signed-off-by: Mohamed Mediouni Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- accel/whpx/whpx-common.c | 8 ++++---- include/system/whpx-accel-ops.h | 16 ++++++++++------ include/system/whpx-all.h | 6 ++++-- target/arm/whpx/whpx-all.c | 8 ++++---- target/i386/whpx/whpx-all.c | 16 ++++++++-------- 5 files changed, 30 insertions(+), 24 deletions(-) diff --git a/accel/whpx/whpx-common.c b/accel/whpx/whpx-common.c index 88eef55799..4863fc8663 100644 --- a/accel/whpx/whpx-common.c +++ b/accel/whpx/whpx-common.c @@ -46,7 +46,7 @@ struct WHPDispatch whp_dispatch; void whpx_flush_cpu_state(CPUState *cpu) { if (cpu->vcpu_dirty) { - whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); + whpx_set_registers(cpu, WHPX_LEVEL_RUNTIME_STATE); cpu->vcpu_dirty =3D false; } } @@ -180,7 +180,7 @@ int whpx_last_vcpu_stopping(CPUState *cpu) static void do_whpx_cpu_synchronize_state(CPUState *cpu, run_on_cpu_data a= rg) { if (!cpu->vcpu_dirty) { - whpx_get_registers(cpu); + whpx_get_registers(cpu, WHPX_LEVEL_FULL_STATE); cpu->vcpu_dirty =3D true; } } @@ -188,14 +188,14 @@ static void do_whpx_cpu_synchronize_state(CPUState *c= pu, run_on_cpu_data arg) static void do_whpx_cpu_synchronize_post_reset(CPUState *cpu, run_on_cpu_data arg) { - whpx_set_registers(cpu, WHPX_SET_RESET_STATE); + whpx_set_registers(cpu, WHPX_LEVEL_RESET_STATE); cpu->vcpu_dirty =3D false; } =20 static void do_whpx_cpu_synchronize_post_init(CPUState *cpu, run_on_cpu_data arg) { - whpx_set_registers(cpu, WHPX_SET_FULL_STATE); + whpx_set_registers(cpu, WHPX_LEVEL_FULL_STATE); cpu->vcpu_dirty =3D false; } =20 diff --git a/include/system/whpx-accel-ops.h b/include/system/whpx-accel-op= s.h index ed9d4c49f4..4b2a732654 100644 --- a/include/system/whpx-accel-ops.h +++ b/include/system/whpx-accel-ops.h @@ -22,11 +22,15 @@ void whpx_cpu_synchronize_post_reset(CPUState *cpu); void whpx_cpu_synchronize_post_init(CPUState *cpu); void whpx_cpu_synchronize_pre_loadvm(CPUState *cpu); =20 -/* state subset only touched by the VCPU itself during runtime */ -#define WHPX_SET_RUNTIME_STATE 1 -/* state subset modified during VCPU reset */ -#define WHPX_SET_RESET_STATE 2 -/* full state set, modified during initialization or on vmload */ -#define WHPX_SET_FULL_STATE 3 +typedef enum WHPXStateLevel { + /* subset of runtime state for faster returns from vmexit */ + WHPX_LEVEL_FAST_RUNTIME_STATE, + /* state subset only touched by the VCPU itself during runtime */ + WHPX_LEVEL_RUNTIME_STATE, + /* state subset modified during VCPU reset */ + WHPX_LEVEL_RESET_STATE, + /* full state set, modified during initialization or on vmload */ + WHPX_LEVEL_FULL_STATE +} WHPXStateLevel; =20 #endif /* TARGET_I386_WHPX_ACCEL_OPS_H */ diff --git a/include/system/whpx-all.h b/include/system/whpx-all.h index b831c463b0..2cbea71b14 100644 --- a/include/system/whpx-all.h +++ b/include/system/whpx-all.h @@ -2,10 +2,12 @@ #ifndef SYSTEM_WHPX_ALL_H #define SYSTEM_WHPX_ALL_H =20 +#include "system/whpx-accel-ops.h" + /* Called by whpx-common */ int whpx_vcpu_run(CPUState *cpu); -void whpx_get_registers(CPUState *cpu); -void whpx_set_registers(CPUState *cpu, int level); +void whpx_get_registers(CPUState *cpu, WHPXStateLevel level); +void whpx_set_registers(CPUState *cpu, WHPXStateLevel level); int whpx_accel_init(AccelState *as, MachineState *ms); void whpx_cpu_instance_init(CPUState *cs); HRESULT whpx_set_exception_exit_bitmap(UINT64 exceptions); diff --git a/target/arm/whpx/whpx-all.c b/target/arm/whpx/whpx-all.c index 9a9a19c196..a4d54b027f 100644 --- a/target/arm/whpx/whpx-all.c +++ b/target/arm/whpx/whpx-all.c @@ -418,7 +418,7 @@ int whpx_vcpu_run(CPUState *cpu) do { bool advance_pc =3D false; if (cpu->vcpu_dirty) { - whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); + whpx_set_registers(cpu, WHPX_LEVEL_RUNTIME_STATE); cpu->vcpu_dirty =3D false; } =20 @@ -483,7 +483,7 @@ int whpx_vcpu_run(CPUState *cpu) default: error_report("WHPX: Unexpected VP exit code 0x%08x", vcpu->exit_ctx.ExitReason); - whpx_get_registers(cpu); + whpx_get_registers(cpu, WHPX_LEVEL_FULL_STATE); bql_lock(); qemu_system_guest_panicked(cpu_get_crash_info(cpu)); bql_unlock(); @@ -517,7 +517,7 @@ static void clean_whv_register_value(WHV_REGISTER_VALUE= *val) memset(val, 0, sizeof(WHV_REGISTER_VALUE)); } =20 -void whpx_get_registers(CPUState *cpu) +void whpx_get_registers(CPUState *cpu, WHPXStateLevel level) { ARMCPU *arm_cpu =3D ARM_CPU(cpu); CPUARMState *env =3D &arm_cpu->env; @@ -564,7 +564,7 @@ void whpx_get_registers(CPUState *cpu) aarch64_restore_sp(env, arm_current_el(env)); } =20 -void whpx_set_registers(CPUState *cpu, int level) +void whpx_set_registers(CPUState *cpu, WHPXStateLevel level) { ARMCPU *arm_cpu =3D ARM_CPU(cpu); CPUARMState *env =3D &arm_cpu->env; diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index baa3169c55..c09d9affef 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -367,7 +367,7 @@ static uint64_t whpx_cr8_to_apic_tpr(uint64_t cr8) return cr8 << 4; } =20 -void whpx_set_registers(CPUState *cpu, int level) +void whpx_set_registers(CPUState *cpu, WHPXStateLevel level) { struct whpx_state *whpx =3D &whpx_global; AccelCPUState *vcpu =3D cpu->accel; @@ -386,7 +386,7 @@ void whpx_set_registers(CPUState *cpu, int level) * Following MSRs have side effects on the guest or are too heavy for * runtime. Limit them to full state update. */ - if (level >=3D WHPX_SET_RESET_STATE) { + if (level >=3D WHPX_LEVEL_RESET_STATE) { whpx_set_tsc(cpu); } =20 @@ -583,7 +583,7 @@ static void whpx_get_xcrs(CPUState *cpu) cpu_env(cpu)->xcr0 =3D xcr0.Reg64; } =20 -void whpx_get_registers(CPUState *cpu) +void whpx_get_registers(CPUState *cpu, WHPXStateLevel level) { struct whpx_state *whpx =3D &whpx_global; AccelCPUState *vcpu =3D cpu->accel; @@ -770,10 +770,10 @@ static int emulate_instruction(CPUState *cpu, const u= int8_t *insn_bytes, size_t struct x86_decode decode =3D { 0 }; x86_insn_stream stream =3D { .bytes =3D insn_bytes, .len =3D insn_len = }; =20 - whpx_get_registers(cpu); + whpx_get_registers(cpu, WHPX_LEVEL_FAST_RUNTIME_STATE); decode_instruction_stream(env, &decode, &stream); exec_instruction(env, &decode); - whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); + whpx_set_registers(cpu, WHPX_LEVEL_FAST_RUNTIME_STATE); =20 return 0; } @@ -1589,7 +1589,7 @@ int whpx_vcpu_run(CPUState *cpu) =20 do { if (cpu->vcpu_dirty) { - whpx_set_registers(cpu, WHPX_SET_RUNTIME_STATE); + whpx_set_registers(cpu, WHPX_LEVEL_RUNTIME_STATE); cpu->vcpu_dirty =3D false; } =20 @@ -1796,7 +1796,7 @@ int whpx_vcpu_run(CPUState *cpu) break; } case WHvRunVpExitReasonException: - whpx_get_registers(cpu); + whpx_get_registers(cpu, WHPX_LEVEL_FULL_STATE); =20 if ((vcpu->exit_ctx.VpException.ExceptionType =3D=3D WHvX64ExceptionTypeDebugTrapOrFault) && @@ -1828,7 +1828,7 @@ int whpx_vcpu_run(CPUState *cpu) default: error_report("WHPX: Unexpected VP exit code %d", vcpu->exit_ctx.ExitReason); - whpx_get_registers(cpu); + whpx_get_registers(cpu, WHPX_LEVEL_FULL_STATE); bql_lock(); qemu_system_guest_panicked(cpu_get_crash_info(cpu)); bql_unlock(); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836151; cv=none; d=zohomail.com; s=zohoarc; b=U5pCLyeS2l8/6k5pi2mGsza2BfwCpUeXBbmeHMHMHlrEAf00IA2CX0jdFDrGOnel9TjMUxbxpjhbsTVLrjOiTpQstLZ3WdOHUvQLrtpMGIDhE9U1wBkeAPn7ErtFWdlmKIugu7+0h82h2s/7a85ysir9PySpnSg1PV5qCW2WBuQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836151; 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=WRWOr4bOqspFilOnrREUflTllQ5A/6LuLnTDO613usU=; b=AWhm4OF6Wm4UWabg6opgtQn21b3r7yoBYtdWn527zhC6Kc0FMfPQG0nY2Ug+vgBFEH2nGO6ZeOAAOQefeDC2wBw7mWlHdE7fDzfNC/FcA42YrbD5m/+Dz4eTpr1F6jxL0uncYwH0eSrTaVtgiD1zMUiqmga70cZMa7TyPBxF6eM= 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 1771836151326244.75768846316873; Mon, 23 Feb 2026 00:42:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSX-0000nN-U8; Mon, 23 Feb 2026 03:38:29 -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 1vuRSS-0000UL-Pw for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:24 -0500 Received: from p-east2-cluster3-host9-snip4-7.eps.apple.com ([57.103.77.138] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSP-0002Gl-4p for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:23 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id B93071800168; Mon, 23 Feb 2026 08:38:17 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 2B49B1800215; Mon, 23 Feb 2026 08:38:15 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835900; x=1774427900; bh=WRWOr4bOqspFilOnrREUflTllQ5A/6LuLnTDO613usU=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=AAv/ga93I0C5T51RkaV36r1XV7GyXhlhBv8An6EUnNXDWYUJ6m320z6lCvuOxbl2zCxEvF5n65rrHhYxATvEpcRj5ZzljCclDetk6wmA82SBOjW8QdKkr5RaJtgPJBLx5DVJSnw0xnRZm6D5h41F1muJ9Q03FzU4D7sb3DlSboJ3YHSKiw1Mam7eyoI0ZP282EAZFy5F299uGO5CHk3v4zgP54fPo7D4Gu3v8ABPS4sfynpNzSoV+sw2C0OGklyS/UMMQ6Xazr+zj4SIi1fTn4rpk2tDGu4AsnTXJjXhq7klvHOGqvxdDOqpkvtnK/nZ5IuI0Vi34i8d4etcNzghcg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 16/27] whpx: i386: saving/restoring less state for WHPX_LEVEL_FAST_RUNTIME_STATE Date: Mon, 23 Feb 2026 09:37:22 +0100 Message-ID: <20260223083734.48533-17-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=Oa2VzxTY c=1 sm=1 tr=0 ts=699c11fa cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=d1mOUhxfU30B8FCplPMA:9 X-Proofpoint-ORIG-GUID: J3OhY3FvfJi5ajNKNVWstzkshGJGi9BT X-Proofpoint-GUID: J3OhY3FvfJi5ajNKNVWstzkshGJGi9BT X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXxIXopqGLFimb qWzSqpEvUHxiyK8BtumhhIG8prDZGzthNejmeijL29FZhGs0GuaiodHhr3vYdh1TDaVUJNpH5eR UBddkXwJVcbbuFjFDroxa67XAfD02l6diJnio5dWSdl3nCu4W2j3dDd99wozm0uM7RWQRmaKZQj sJ71JpvIy2vHDO3RFhSJ+a+MaKkD6eqXROZQ6G7LwJDjmPdlGbtyL272jxLcqAJBCxuEbDgMwk+ cLm5UaPi11BRCcfWDFQD3E274wLp0e2MvyhopdB4osRNDdgYe1620CQf+ScEmnHu+Jcbs25iv8f WPHlWTCYX0WCe6cuK4pesiRZ1Jyz1HKG0gKDzfncUMLFWkA0c3L6mWMVWhkTJM= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 bulkscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 clxscore=1030 mlxlogscore=999 spamscore=0 mlxscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABm83HsolHTZ31+Naq+YtYzpQmXwxHjdBzOjMR0ZWOTXFsFtPVuo6jk03lVFnJwx9mlCT296BYzQZeuXtVgV9KHUwqoISy3KVSRV+E+vBry5XFxDu/mK6w7xI0RU6E3574Vooyj0B3OeB4VhAqaLy9OcxOrA5GgsO2mDV8t3AAHH+bMFbBib6dT8+i4uOrggzcITH6Xdd3b9rSu1CC4YtvPo+OzHgfgkTR/QRbNMKqplIkrvWSww2EQ1q+VGLFDUkpsob09tBjgXgi1ORq8Rd6fAi66mSv7J8qJOJJxi4/3vnHHSMPnx2x46GJf9E36Fp3cMW+3irupuX02kf2FugSMio37QhR52xqM9Ow0aQ91KP9hGWD5988K8gk+CpAcwJYhRz0GUf/7yHEhDn5rGse7OUgoSKD/bnutWsXnusSs8CDD0hJmLmuszvJ50HCLtAVkZZemNlSKzNHDjsZ+vJFqHY+QKSFuwbLJlfUtOHxLJy6D90uZ7sI90S/aGa+K4WPd5dC8Yv8cGl2/1bmuhasj7HHx+3AaGmsbcwG+Gjtn9pDJbQji3ZpitP1HQ/nJNOeD3SwvCI3V5DxDUZtl67KkdmwT5FFyCq4g5adfz5xdsM3t+oHDJer5xhukXfcP0zYLIOeRHGXEM++yaGCdMZXH55pvElELFaBA7oVu7wO9k47WspB9Yd4CHBErN2XaQCzahWW7CAxHRq9FdmBLrPs5da36/ufzqoLdkekRHP9BjJ9B1vrWAaqJvsk1oZw5gNVUZLH5/bHRRVD16qZFSuHJCzRp6YznE96NxuJmVdOJRnyyg6JuOQ+tKQ/3ohQQHt0qLZNahVF 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.77.138; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836152483158500 Content-Type: text/plain; charset="utf-8" Optimise vmexits by save/restoring less state in those cases instead of the= full state. Signed-off-by: Mohamed Mediouni Reviewed-by: Bernhard Beschow --- target/i386/whpx/whpx-all.c | 202 +++++++++++++++++++----------------- 1 file changed, 104 insertions(+), 98 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index c09d9affef..ab583e922d 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -422,118 +422,124 @@ void whpx_set_registers(CPUState *cpu, WHPXStateLev= el level) } =20 assert(idx =3D=3D WHvX64RegisterLdtr); - vcxt.values[idx++].Segment =3D whpx_seg_q2h(&env->ldt, 0, 0); - - assert(idx =3D=3D WHvX64RegisterTr); - vcxt.values[idx++].Segment =3D whpx_seg_q2h(&env->tr, 0, 0); - - assert(idx =3D=3D WHvX64RegisterIdtr); - vcxt.values[idx].Table.Base =3D env->idt.base; - vcxt.values[idx].Table.Limit =3D env->idt.limit; - idx +=3D 1; - - assert(idx =3D=3D WHvX64RegisterGdtr); - vcxt.values[idx].Table.Base =3D env->gdt.base; - vcxt.values[idx].Table.Limit =3D env->gdt.limit; - idx +=3D 1; - - /* CR0, 2, 3, 4, 8 */ - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr0); - vcxt.values[idx++].Reg64 =3D env->cr[0]; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr2); - vcxt.values[idx++].Reg64 =3D env->cr[2]; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr3); - vcxt.values[idx++].Reg64 =3D env->cr[3]; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr4); - vcxt.values[idx++].Reg64 =3D env->cr[4]; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr8); - vcxt.values[idx++].Reg64 =3D vcpu->tpr; - - /* 8 Debug Registers - Skipped */ - /* - * Extended control registers needs to be handled separately depending - * on whether xsave is supported/enabled or not. + * Skip those registers for synchronisation after MMIO accesses + * as they're not going to be modified in that case. */ - whpx_set_xcrs(cpu); - - /* 16 XMM registers */ - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterXmm0); - idx_next =3D idx + 16; - for (i =3D 0; i < sizeof(env->xmm_regs) / sizeof(ZMMReg); i +=3D 1, id= x +=3D 1) { - vcxt.values[idx].Reg128.Low64 =3D env->xmm_regs[i].ZMM_Q(0); - vcxt.values[idx].Reg128.High64 =3D env->xmm_regs[i].ZMM_Q(1); - } - idx =3D idx_next; - - /* 8 FP registers */ - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterFpMmx0); - for (i =3D 0; i < 8; i +=3D 1, idx +=3D 1) { - vcxt.values[idx].Fp.AsUINT128.Low64 =3D env->fpregs[i].mmx.MMX_Q(0= ); - /* vcxt.values[idx].Fp.AsUINT128.High64 =3D - env->fpregs[i].mmx.MMX_Q(1); - */ - } + if (level > WHPX_LEVEL_FAST_RUNTIME_STATE) { + vcxt.values[idx++].Segment =3D whpx_seg_q2h(&env->ldt, 0, 0); + + assert(idx =3D=3D WHvX64RegisterTr); + vcxt.values[idx++].Segment =3D whpx_seg_q2h(&env->tr, 0, 0); + + assert(idx =3D=3D WHvX64RegisterIdtr); + vcxt.values[idx].Table.Base =3D env->idt.base; + vcxt.values[idx].Table.Limit =3D env->idt.limit; + idx +=3D 1; + + assert(idx =3D=3D WHvX64RegisterGdtr); + vcxt.values[idx].Table.Base =3D env->gdt.base; + vcxt.values[idx].Table.Limit =3D env->gdt.limit; + idx +=3D 1; + + /* CR0, 2, 3, 4, 8 */ + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr0); + vcxt.values[idx++].Reg64 =3D env->cr[0]; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr2); + vcxt.values[idx++].Reg64 =3D env->cr[2]; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr3); + vcxt.values[idx++].Reg64 =3D env->cr[3]; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr4); + vcxt.values[idx++].Reg64 =3D env->cr[4]; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr8); + vcxt.values[idx++].Reg64 =3D vcpu->tpr; + + /* 8 Debug Registers - Skipped */ =20 - /* FP control status register */ - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterFpControlStatus); - vcxt.values[idx].FpControlStatus.FpControl =3D env->fpuc; - vcxt.values[idx].FpControlStatus.FpStatus =3D - (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11; - vcxt.values[idx].FpControlStatus.FpTag =3D 0; - for (i =3D 0; i < 8; ++i) { - vcxt.values[idx].FpControlStatus.FpTag |=3D (!env->fptags[i]) << i; - } - vcxt.values[idx].FpControlStatus.Reserved =3D 0; - vcxt.values[idx].FpControlStatus.LastFpOp =3D env->fpop; - vcxt.values[idx].FpControlStatus.LastFpRip =3D env->fpip; - idx +=3D 1; - - /* XMM control status register */ - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterXmmControlStatus); - vcxt.values[idx].XmmControlStatus.LastFpRdp =3D 0; - vcxt.values[idx].XmmControlStatus.XmmStatusControl =3D env->mxcsr; - vcxt.values[idx].XmmControlStatus.XmmStatusControlMask =3D 0x0000ffff; - idx +=3D 1; + /* + * Extended control registers needs to be handled separately depen= ding + * on whether xsave is supported/enabled or not. + */ + whpx_set_xcrs(cpu); + + /* 16 XMM registers */ + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterXmm0); + idx_next =3D idx + 16; + for (i =3D 0; i < sizeof(env->xmm_regs) / sizeof(ZMMReg); i +=3D 1= , idx +=3D 1) { + vcxt.values[idx].Reg128.Low64 =3D env->xmm_regs[i].ZMM_Q(0); + vcxt.values[idx].Reg128.High64 =3D env->xmm_regs[i].ZMM_Q(1); + } + idx =3D idx_next; + + /* 8 FP registers */ + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterFpMmx0); + for (i =3D 0; i < 8; i +=3D 1, idx +=3D 1) { + vcxt.values[idx].Fp.AsUINT128.Low64 =3D env->fpregs[i].mmx.MMX= _Q(0); + /* vcxt.values[idx].Fp.AsUINT128.High64 =3D + env->fpregs[i].mmx.MMX_Q(1); + */ + } =20 - /* MSRs */ - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterEfer); - vcxt.values[idx++].Reg64 =3D env->efer; + /* FP control status register */ + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterFpControlStat= us); + vcxt.values[idx].FpControlStatus.FpControl =3D env->fpuc; + vcxt.values[idx].FpControlStatus.FpStatus =3D + (env->fpus & ~0x3800) | (env->fpstt & 0x7) << 11; + vcxt.values[idx].FpControlStatus.FpTag =3D 0; + for (i =3D 0; i < 8; ++i) { + vcxt.values[idx].FpControlStatus.FpTag |=3D (!env->fptags[i]) = << i; + } + vcxt.values[idx].FpControlStatus.Reserved =3D 0; + vcxt.values[idx].FpControlStatus.LastFpOp =3D env->fpop; + vcxt.values[idx].FpControlStatus.LastFpRip =3D env->fpip; + idx +=3D 1; + + /* XMM control status register */ + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterXmmControlSta= tus); + vcxt.values[idx].XmmControlStatus.LastFpRdp =3D 0; + vcxt.values[idx].XmmControlStatus.XmmStatusControl =3D env->mxcsr; + vcxt.values[idx].XmmControlStatus.XmmStatusControlMask =3D 0x0000f= fff; + idx +=3D 1; + + /* MSRs */ + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterEfer); + vcxt.values[idx++].Reg64 =3D env->efer; #ifdef TARGET_X86_64 - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterKernelGsBase); - vcxt.values[idx++].Reg64 =3D env->kernelgsbase; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterKernelGsBase); + vcxt.values[idx++].Reg64 =3D env->kernelgsbase; #endif =20 - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterApicBase); - vcxt.values[idx++].Reg64 =3D vcpu->apic_base; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterApicBase); + vcxt.values[idx++].Reg64 =3D vcpu->apic_base; =20 - /* WHvX64RegisterPat - Skipped */ + /* WHvX64RegisterPat - Skipped */ =20 - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterCs); - vcxt.values[idx++].Reg64 =3D env->sysenter_cs; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterEip); - vcxt.values[idx++].Reg64 =3D env->sysenter_eip; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterEsp); - vcxt.values[idx++].Reg64 =3D env->sysenter_esp; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterStar); - vcxt.values[idx++].Reg64 =3D env->star; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterCs); + vcxt.values[idx++].Reg64 =3D env->sysenter_cs; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterEip); + vcxt.values[idx++].Reg64 =3D env->sysenter_eip; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSysenterEsp); + vcxt.values[idx++].Reg64 =3D env->sysenter_esp; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterStar); + vcxt.values[idx++].Reg64 =3D env->star; #ifdef TARGET_X86_64 - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterLstar); - vcxt.values[idx++].Reg64 =3D env->lstar; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCstar); - vcxt.values[idx++].Reg64 =3D env->cstar; - assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSfmask); - vcxt.values[idx++].Reg64 =3D env->fmask; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterLstar); + vcxt.values[idx++].Reg64 =3D env->lstar; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCstar); + vcxt.values[idx++].Reg64 =3D env->cstar; + assert(whpx_register_names[idx] =3D=3D WHvX64RegisterSfmask); + vcxt.values[idx++].Reg64 =3D env->fmask; #endif =20 - /* Interrupt / Event Registers - Skipped */ + /* Interrupt / Event Registers - Skipped */ =20 - assert(idx =3D=3D RTL_NUMBER_OF(whpx_register_names)); + assert(idx =3D=3D RTL_NUMBER_OF(whpx_register_names)); + } =20 hr =3D whp_dispatch.WHvSetVirtualProcessorRegisters( whpx->partition, cpu->cpu_index, whpx_register_names, - RTL_NUMBER_OF(whpx_register_names), + idx, &vcxt.values[0]); =20 if (FAILED(hr)) { @@ -613,7 +619,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) hr); } =20 - if (whpx_irqchip_in_kernel()) { + if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && whpx_irqchip_in_kernel())= { /* * Fetch the TPR value from the emulated APIC. It may get overwrit= ten * below with the value from CR8 returned by @@ -670,7 +676,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) env->cr[4] =3D vcxt.values[idx++].Reg64; assert(whpx_register_names[idx] =3D=3D WHvX64RegisterCr8); tpr =3D vcxt.values[idx++].Reg64; - if (tpr !=3D vcpu->tpr) { + if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && tpr !=3D vcpu->tpr) { vcpu->tpr =3D tpr; cpu_set_apic_tpr(x86_cpu->apic_state, whpx_cr8_to_apic_tpr(tpr)); } @@ -756,7 +762,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) =20 assert(idx =3D=3D RTL_NUMBER_OF(whpx_register_names)); =20 - if (whpx_irqchip_in_kernel()) { + if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && whpx_irqchip_in_kernel())= { whpx_apic_get(x86_cpu->apic_state); } =20 --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836192; cv=none; d=zohomail.com; s=zohoarc; b=kASV16PqU9xLIMsoOH6W/LWdfY8yNDJ2NuM/PCVeYrpR9BPUKRDiF5Z7gwBT7vyOO1fTMbCGzEa7fpVfiUQm9F+SjzCznhKtpJg+Qjomt3vTPv5IMyJXOi/jfeF0VEBiFxIUidszUHeUApn9T+cWRT2oaoyn+2BN79B1rhU8dEo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836192; 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=XgFRpT3feuG6/cTAi1iAFTBe6D91Ph2uKDNsaSuHVhw=; b=CNSXKkmbDd3NOYz+VLZkg/3TtRHaU00oCfAorTsQ5A/iBf+kzCt111H4ExsUN8TXz6r4RoK2drUvN3brVXk7ttT+lwPrl3/CfezPk1DZPG4QOhNe68EUhi2+NIuDFVFkao7s1drxU3CpkCE7Nk2r4TvsbRd/DUL5bzxzby9qfMY= 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 1771836192405298.8420467236772; Mon, 23 Feb 2026 00:43:12 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSW-0000jm-Ba; Mon, 23 Feb 2026 03:38:28 -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 1vuRSU-0000aN-3e for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:26 -0500 Received: from p-east2-cluster3-host9-snip4-8.eps.apple.com ([57.103.77.139] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSS-0002HY-Hd for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:25 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 56E571800170; Mon, 23 Feb 2026 08:38:20 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 908B018000A4; Mon, 23 Feb 2026 08:38:17 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835903; x=1774427903; bh=XgFRpT3feuG6/cTAi1iAFTBe6D91Ph2uKDNsaSuHVhw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=ZdZxqb+/uFsz9l8zJiK6qnmS0/4NcFMpzhrSgT0pYw2bPDmR2T0TtKQQaYWHlOR2isZca22Vlb9BdmfcfnOpIj3du2zolDIULChcS8daB9OzdWQOL34Y8n1Mm8LobKYgt21mY2M+FzTKXrp/mLAKwQkC+7SCyVlo4pSaecVXwbKO/E54dOnjo8FgUZLg7vOgPXx88Szln5gfTdnrhbYTlVfGzEnBM2Lbhdujy9qZDGHIULSuZ4FIPcm+Ys32r3ajmET6BCsaZlgjMfxHM1W4w1ZX953xtbkCh4mVs9vgEFvV6WVswqnCXEOkjp27kUtpHIVmkj1KyHqTY1pgDFn7Ig== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 17/27] target/i386: mshv, emulate: move the generic x86 helpers to target/i386/emulate Date: Mon, 23 Feb 2026 09:37:23 +0100 Message-ID: <20260223083734.48533-18-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXzuiz5qm7sXRH cd+2+GkBFYO9pc9rwUYITV+yROnOt60f8FfGvz41oq4RI9r9JrySyGqNuFKU1UUCz8Q/Zzl6fr/ vOIiIo3NOH12ALaRX+mxIIjOQfaqb/z8LO9awaxGrLyhWYXV61N8V34mC3wlRQ2kuAJ3OUnAcAV E8pS9PVikUWc5BKq5dUxaFhY4jAOZ8o2J/hcSZO1fbwIh4sN6j923iJBtFmjL3NZiSPAdv+nRvk KKrEFIWWGrVCoqpF4m1RPKLRII/667jfHKVuV8D1oQfH8gFNB5ihCfGZ5+ZCuH70GscbtnH0DPT 34ncPDOotLmmCoxzPmWd09rBDTC2O37qkWpv0HxCaTsn5D6EkQKSb30N/pMZNc= X-Authority-Info-Out: v=2.4 cv=NrTcssdJ c=1 sm=1 tr=0 ts=699c11fd cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=BYAFF96DE6y5VNP45KIA:9 X-Proofpoint-ORIG-GUID: n-VTutPt0bIdWJwgLBviPR9XyLsI9S1e X-Proofpoint-GUID: n-VTutPt0bIdWJwgLBviPR9XyLsI9S1e 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=823 phishscore=0 spamscore=0 malwarescore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1030 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABkykzqFoYr9rko3N4BO/WIAX99mXTHfCu5Hb/k8ErBhb4MBqitOj8N/wz5ecF/lo+EG06oJcJ0oy7eHGRt7akODdC2WL4dz/8mzDLLg2mjYtQUnvQGgHdDfg7Y5h6PnVIHFm5w3TluinxNqd1nC4EuQI2qDT94CMT1QsSU5QPbuvwd64jkvrRRpjgJOWJMkWA6fk3S4f5JFvVLpXn/SZQCI0FV6ZPHOjeD6VvPi/gSK7K7FA+U+cKNW63KkipKJ4CBoLyYIpmgFdSuT8kl043DAzzhDVaOcHP/ZImGB60vfC+qLtMMHe0fMLVEVq8iBKUL5L4qMMWskEHOgqBhPyb3cViAzeUgmHawQW61TYNbhfRRZBqoJYljANEPUecMMx34tfbOB28eNtFX/9CqTwNf4/9o5BfVhxhZB+o1me+4QbBMyPvgT/jsAPnnsAXe84WKNk+6WkeBQjTDYIIrw4OLMovgszMGIJlMTm21VvSjYV9eqnCCkx48Y1PnVn1dgiZbAGmdRBkxHU8KRZiRjeHrJKVSYVE/++3T6pqNg+F3qI/OdyVzS4DuLNhlOvfnIXhrGJAY501R+s7XqCwXyH7/RcJMxIiX/TOI7pPBG90WPJ5DGk6s6cnPn6yyNUCXwqk28YrS66aT3qezDpHH98i9No/vUfaQjsM5Uxq/FMjk+2uiiWrh+Q7Qm540U0zrOwimV7i5iOvqkZ2OV9m7rzQNpNnj2TmHH4Vgk4DwsyBaBekIlQRJleMgZBgJM13qCXoDex7uRGqH5bCzAQVr1CSdCSA3TgaOWsTzFUIjAZRh+e6x4aevVGnpXw= 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.77.139; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836192869158500 Content-Type: text/plain; charset="utf-8" HVF doesn't use them at this point, but move them to common code as that's = what they are. Signed-off-by: Mohamed Mediouni --- target/i386/emulate/meson.build | 7 +++++++ target/i386/{mshv/x86.c =3D> emulate/x86_helpers.c} | 0 target/i386/mshv/meson.build | 4 ---- 3 files changed, 7 insertions(+), 4 deletions(-) rename target/i386/{mshv/x86.c =3D> emulate/x86_helpers.c} (100%) diff --git a/target/i386/emulate/meson.build b/target/i386/emulate/meson.bu= ild index 1bb3516249..1fa1a8e8ec 100644 --- a/target/i386/emulate/meson.build +++ b/target/i386/emulate/meson.build @@ -5,6 +5,13 @@ emulator_files =3D files( 'x86_mmu.c' ) =20 +emulator_helper_files =3D files( + 'x86_helpers.c' +) + i386_system_ss.add(when: [hvf, 'CONFIG_HVF'], if_true: emulator_files) i386_system_ss.add(when: 'CONFIG_MSHV', if_true: emulator_files) i386_system_ss.add(when: 'CONFIG_WHPX', if_true: emulator_files) + +i386_system_ss.add(when: 'CONFIG_MSHV', if_true: emulator_helper_files) +i386_system_ss.add(when: 'CONFIG_WHPX', if_true: emulator_helper_files) diff --git a/target/i386/mshv/x86.c b/target/i386/emulate/x86_helpers.c similarity index 100% rename from target/i386/mshv/x86.c rename to target/i386/emulate/x86_helpers.c diff --git a/target/i386/mshv/meson.build b/target/i386/mshv/meson.build index 3fadd4598a..49f28d4a5b 100644 --- a/target/i386/mshv/meson.build +++ b/target/i386/mshv/meson.build @@ -2,11 +2,7 @@ i386_mshv_ss =3D ss.source_set() =20 i386_mshv_ss.add(files( 'mshv-cpu.c', - 'x86.c', )) =20 i386_system_ss.add_all(when: 'CONFIG_MSHV', if_true: i386_mshv_ss) =20 -i386_system_ss.add(when: 'CONFIG_WHPX', if_true: files( - 'x86.c', -)) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836040; cv=none; d=zohomail.com; s=zohoarc; b=fMbskntBYXyW3QKvcEGUxI9bxECYfRHc3IA/PuvnDRsg8f8dQ4xpjl05gqIT3jc/Qars51rzpUIob7FE7C+586pjun0ETVIGl1+TK4fKVvobf7mGsyZkYWVCNsryONNAtvF5gPwXGZakUgDMqmwlafGndMVbAjX7gkS+x+HJKZc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836040; 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=IYoDu1Lf/5IVuiCOr/JCatr7nNqgDdTH9YXn2YCe0wI=; b=IeXJaNeeBulpEnNKp7vEtBSwQWDKX4mb7I7mEXiisodERFyj/domZ2v3btIKMjJVmEQXWpi81gQEc0Mu2GWZLAxOUPcDcfEpED8VbWyHBD3nKmMQN0I8/Yc/txaO6gscqAbfZknCX+n8qbhLmCL9aXsRZ2s71KBeieztFdrSBlg= 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 1771836040345294.1073034324015; Mon, 23 Feb 2026 00:40:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSc-0000rD-2I; Mon, 23 Feb 2026 03:38:34 -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 1vuRSV-0000g9-DQ for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:27 -0500 Received: from p-east2-cluster4-host4-snip4-10.eps.apple.com ([57.103.78.151] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRST-0002I0-Ld for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:27 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id C10D4180021F; Mon, 23 Feb 2026 08:38:22 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 09CD1180022B; Mon, 23 Feb 2026 08:38:19 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835905; x=1774427905; bh=IYoDu1Lf/5IVuiCOr/JCatr7nNqgDdTH9YXn2YCe0wI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Iu1JMpEiX0KUElA4Xzgk/B+VbohRFjeA14RALqaPDeH1bYQRRQTObPbirLwx+1tRRz5dStsX0Sel8CNiYVMtK/wC2qZS1F6WVke8FA2zEmz1zLpHjQVpE2ty4ivQgd42zRmxwdunKpnk5JECgzYiYyiQiQl9KkLU/kwZtd/D6KnX2ZvTF8bVagC4SiVEZcx6r4NDr/FFXGvTdlwm8efdYK2hnA308cuBOVGMoar4DStWeyzVL8f9Loos+ocMrrNtfRc7hsk0JoGbRKnyiWkUCTTzcP9gHo2bqv84ginbBLPsM43wqv7RjAo+aRhCcHwUSf4GmwZ/QrjEQLfSua9gFg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 18/27] target/i386: emulate: 5-level paging for the page table walker Date: Mon, 23 Feb 2026 09:37:24 +0100 Message-ID: <20260223083734.48533-19-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: wsYI_q74itjnoY1Y9n-LcBXOCKd8rKsO X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXw47CegKWW7cG pIXsp+bSBgE4aQdsr/3D3PlDInK7wiYeurTSZzLJ3JU9fraNBN7BG0fnrt9nlkK58FhaJmKG/N7 WqpNv0DoG7EOtAq/8n53w0RPAOrs1ZiKvFZLxRa+RBC7jj5VlABU8FmyGOiWsYUx3QqxTEmdwCb vjrw4AJTwGNYWfG2zfgFoq16ZoB+GsXUcfU5Z0szoQKbf+DJ436V2ZRuLwb9ijtOA+P8T6FA2w2 HDEF1UxN8UkHcbA2w/Dc65H9uz6ea0esil023AfYIPrpAbmcEFo1Uhbb6kx76bjwkE71sV31dOM yqYQuAA202LbYDaWYclolIK227p8LlNweoMTKrRPQXb3lPJetDGysKFs8rxZnM= X-Proofpoint-ORIG-GUID: wsYI_q74itjnoY1Y9n-LcBXOCKd8rKsO X-Authority-Info-Out: v=2.4 cv=N9Uk1m9B c=1 sm=1 tr=0 ts=699c11ff cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=A61MTNvy9Chr7HSFv3YA:9 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 clxscore=1030 bulkscore=0 spamscore=0 malwarescore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABD9ZuAxgszkzcgbiOIEP2/zg+CLLg/DaBK5YGRPKZg8GLo4QIucTJaWGj29Sz9pCRlqyt/+fc2Rs2KVsGbgJ25ezbr17KMMXl/6k0fO36XLQH/7N25qIGDwV73Sw7NpmsESp0tEgv5N8V4BOOpc2puXZmHtZSyWh2OSB9ptGE5BrwhQ6cOsAmzX+jRLaeSd3hq+p7KTQ5JZ2soMLbNsIADFQrTLxdYYwtrcIgcjAauYJElaPImXlG+AEKi1eBxJiFTgf78finNshE+Vd+/o51htjKZj8cGunCjtWi7UQL61HmVaYTMcSnz5sllHvsfgxu+VrY1YmkWfM5XWahWQH+rIPbiRKhmij5MtkfYjsZWUFKfnXaVURGufQXuOc1RYrklqq8brCzwQfDLYJ9FdvJtcJcavLLbSFkPHaRD/nZo7MPHE+zvRFPcPMCkz/qaFFBNYyylgpgHgoe7BOtbjXlUyBpgAl1dScHzxWaqpHrXxcUerVMY6j4qMtBfj4RAhjBY2fbhFwS8U3SQ3tchzXcJakU6v2+M03qV4zSHtwXWXd/ZjTKWVN7w3z40CBnSE2jCJCYscWwirqST1Bkp1Dc7bnLvh+VpH4wSpS3aNKXgKcYhepntxhcYAgr/4V9zylyYyFchyNl5/3lI0R2NbnLethQyHfGvb6Slexu3zjHHrUxiDiz3mj/1hGktNph9RwO9W8r8wWh0YA3eJFS9H0w47ZE9mKMfWSB6ha9jaGAt3YoLypbA8OrJ+ROvowulF7XNRpZxTr+Ie7EBPZfFPwWR1aBgCgvKMH71VhHYAeuXGeZV/5cllU= 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.78.151; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836044412158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86.h | 1 + target/i386/emulate/x86_helpers.c | 8 ++++++++ target/i386/emulate/x86_mmu.c | 3 +++ target/i386/hvf/x86.c | 5 +++++ 4 files changed, 17 insertions(+) diff --git a/target/i386/emulate/x86.h b/target/i386/emulate/x86.h index 73edccfba0..caf0e3be50 100644 --- a/target/i386/emulate/x86.h +++ b/target/i386/emulate/x86.h @@ -263,6 +263,7 @@ bool x86_is_protected(CPUState *cpu); bool x86_is_real(CPUState *cpu); bool x86_is_v8086(CPUState *cpu); bool x86_is_long_mode(CPUState *cpu); +bool x86_is_la57(CPUState *cpu); bool x86_is_long64_mode(CPUState *cpu); bool x86_is_paging_mode(CPUState *cpu); bool x86_is_pae_enabled(CPUState *cpu); diff --git a/target/i386/emulate/x86_helpers.c b/target/i386/emulate/x86_he= lpers.c index 0700cc05ef..7bdd7e4c2a 100644 --- a/target/i386/emulate/x86_helpers.c +++ b/target/i386/emulate/x86_helpers.c @@ -236,6 +236,14 @@ bool x86_is_long_mode(CPUState *cpu) return ((efer & lme_lma) =3D=3D lme_lma); } =20 +bool x86_is_la57(CPUState *cpu) +{ + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + uint64_t is_la57 =3D env->cr[4] & CR4_LA57_MASK; + return is_la57; +} + bool x86_is_long64_mode(CPUState *cpu) { error_report("unimplemented: is_long64_mode()"); diff --git a/target/i386/emulate/x86_mmu.c b/target/i386/emulate/x86_mmu.c index b82a55a3da..35987a897a 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -56,6 +56,9 @@ static int gpt_top_level(CPUState *cpu, bool pae) return 2; } if (x86_is_long_mode(cpu)) { + if (x86_is_la57(cpu)) { + return 5; + } return 4; } =20 diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c index 2fa210ff60..e98f480f41 100644 --- a/target/i386/hvf/x86.c +++ b/target/i386/hvf/x86.c @@ -138,6 +138,11 @@ bool x86_is_long_mode(CPUState *cpu) return rvmcs(cpu->accel->fd, VMCS_GUEST_IA32_EFER) & MSR_EFER_LMA; } =20 +bool x86_is_la57(CPUState *cpu) +{ + return false; +} + bool x86_is_long64_mode(CPUState *cpu) { struct vmx_segment desc; --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836223; cv=none; d=zohomail.com; s=zohoarc; b=e1HqhUIjfeWwPTLwaoZmXVsRnxlgkijDHKUu3u5LJmxqnIZNoIEadajUO9Zeq8ntd91U35ZYA2JD8i2nyujJ2p90V3Tk4ZKYRft8KHUsn+eLobBEcB3BozXXTMJvw8y1q8kaBsdM+w4M/qUefigrdDGnAhjEzP+Rlby0CfMYYNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836223; 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=CCgfFx+5AiMeuYvGexBMXX2p4GxNqWH7CHzxDxgGLXw=; b=XtKwOSILGMOlnFpiJG+ZHytMIG+3xAVvGO6Q8g3K/8SLvrHS1nowXhb79RUcrEzX1BuJiCsB2gwM+Rxy/zm8hVombUGHc1qB7GHe04C471B2Q/DVGdI+XQLHjMqQCrHC2eTme8CDQlcshznIc0AyghJZJXvZczqsmaYIiV+P/mg= 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 1771836223415392.8779909905768; Mon, 23 Feb 2026 00:43:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSY-0000o3-IQ; Mon, 23 Feb 2026 03:38:30 -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 1vuRSW-0000l0-Sz for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:28 -0500 Received: from p-east2-cluster4-host3-snip4-10.eps.apple.com ([57.103.78.141] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRST-0002I5-P3 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:28 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id A98ED1800222; Mon, 23 Feb 2026 08:38:24 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 6DB931800217; Mon, 23 Feb 2026 08:38:22 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835905; x=1774427905; bh=CCgfFx+5AiMeuYvGexBMXX2p4GxNqWH7CHzxDxgGLXw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=PjCx4ymNv+tCBW0SN9E3WpmrhF/HHFErIUFtvcbvyNVYSYvBD9Fnjm87+SDHHolDmmBfl9165IKxv8ydKyBS+ywocWdGNCYucozIkLYQyr+zTfn5ZUYXwwNhH9Htezm7ti4gGx/qVNa1KtGEqopHXbwBm46nTd/ezSalHoBl8wK7VXqEACHY6k+OU++Yod0muyoOOR9hDJe6jgcMp/GB8bDxAzAyJEpUO/Yufoz8G2EdFd7EfWqMnGQ0UZs+9IMzxv395U81R9EyZE5Ewp2hbmKMITXwpzBCPcopgyJv61F8hNO48SIk0tf6bjKrPX6A6aq5trd6Piijrq5azzHkFA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 19/27] target/i386: emulate, hvf, mshv: rework MMU code Date: Mon, 23 Feb 2026 09:37:25 +0100 Message-ID: <20260223083734.48533-20-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX0Ak26X1yuDmR 4MFpk01nw9XTkq9ksyNqznlJizObx+u4E0vxFwMCfkD0TzTyNMyMFOmAylVnK5PAlAbtRrAETTu NBFQb4/ouYxEwvsV0juoN9N3EzrL06nBj4Six+Su7ON+O8KwLuiR9IEIGK5LOYQTegb9resmjhd 3hnqtBksoLtMk4hBcOVBKTrI97jU7KEJlS+b7jxNkfBuMzAC+FNIwPu2gUOH77Gjbx4ipsawH9g 4ANaFms5v8GCy1Hagi+yY9nSk5S3g6WpxZyENcLCkK8puGrwoaqKTY6zbAqJ/oHqTmNsK/mg06w tUX+Z9ueZUIFiMxA8p8NBf49jxujE12uNfd126RlgA/K2utHWUcPTTUI75laH8= X-Proofpoint-ORIG-GUID: p0e2yjDdjreJA5dKArxOlRb-KSSVSxsq X-Proofpoint-GUID: p0e2yjDdjreJA5dKArxOlRb-KSSVSxsq X-Authority-Info-Out: v=2.4 cv=Zvfg6t7G c=1 sm=1 tr=0 ts=699c1200 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=psr5uwal3eg38tanxqEA:9 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxscore=0 bulkscore=0 phishscore=0 suspectscore=0 lowpriorityscore=0 mlxlogscore=999 spamscore=0 malwarescore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABRF8Rol0qW70DV/I61Zum0zDLtLKMiQ/B7qFyPbyMIcc939AMuOZxOvvBDdBFKPkVvWSIOdBlrmxHEecVCQi6IXFgp/y3QaF6j7HXn7yAWS2GN1l01h2VBD0sVJ8uN0lPOK2438p3bx+ZfbFLMcNCw2hGA6GjR1SAq0Wo1QWb38w5Wb5rPySISC/t36e8RpuJ1tFQlKzx/wb4WOT65wPmg/RUr6ni0yDqDtmYj7NpXCIi338RresSZtI7ATz0lsIj7n/b/BQvKCo1j/FgeKzBQP1b2o+69xYZZ2VlXKrcpbCKeTm/ywvJqSeV03a7qcrEfeRUq4AMh7MJogA/N4swOQrLYB+MffMyaZGBkLrEdzKCeuVw/Oqna9wrnPbKaK4f2qe8pRbGHstOJoHhLCr08hKuB8ykTgum5XtkdERqiW9jJB+HwFJPiFhRXCCEP0PqfNEVS1y2Ub59x3W4WI5tgUMC9jN/kxIB2Vz/+WZfAEGogMNqN9TBg37HxrJmtYckyskt0SGYdI5Uzh/PUzal5uIxHEobJNKd9LiAPft9z/O7dxYrt2na3KTtiNb5GJhaZmmRv/Djx61AzyuSI/aYqXPfi1J8uszRteb2FVMg9t7PcesRhW4jB1AbpPeQTcE/BDI/zcpVvYw/P2Hhp9KZI0eL/akhwhfYBIvzU+Yd803X7X6ooweQh6hOfBrgExMquSSGK2HewX57pCaa1WanXCa0a79rqCF+1e4P4UJteNzAqUrMdTYhuxcn4za8ekNy8Rx4pXmC1QkOzJibxYxyIk9Ozzq+Qexz4DU5 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.78.141; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836224532154100 Content-Type: text/plain; charset="utf-8" target/i386/emulate doesn't currently properly emulate instructions which might cause a page fault during their execution. Notably, REP STOS/MO= VS from MMIO to an address which is unmapped until a page fault exception is r= aised causes an abort() in vmx_write_mem. Change the interface between the HW accel backend and target/i386/emulate a= s a first step towards addressing that. Adapt the page table walker code to give actionable errors, while leaving a possibility for backends to provide their own walker. This removes the usage of the Hyper-V page walker in the mshv backend. Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_decode.c | 2 +- target/i386/emulate/x86_emu.c | 14 +-- target/i386/emulate/x86_emu.h | 4 +- target/i386/emulate/x86_helpers.c | 5 +- target/i386/emulate/x86_mmu.c | 143 +++++++++++++++++++----------- target/i386/emulate/x86_mmu.h | 31 +++++-- target/i386/hvf/hvf.c | 31 +++---- target/i386/hvf/x86.c | 6 +- target/i386/hvf/x86_task.c | 8 +- target/i386/mshv/mshv-cpu.c | 71 --------------- target/i386/whpx/whpx-all.c | 12 --- 11 files changed, 143 insertions(+), 184 deletions(-) diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index 7bbcd2a9a2..9faa65a579 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -80,7 +80,7 @@ static inline uint64_t decode_bytes(CPUX86State *env, str= uct x86_decode *decode, if (emul_ops->fetch_instruction) { emul_ops->fetch_instruction(env_cpu(env), &val, va, size); } else { - emul_ops->read_mem(env_cpu(env), &val, va, size); + x86_read_mem(env_cpu(env), &val, va, size); } } decode->len +=3D size; diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index bf96fe06b4..cfa35561dd 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -166,7 +166,7 @@ void write_val_to_reg(void *reg_ptr, target_ulong val, = int size) =20 static void write_val_to_mem(CPUX86State *env, target_ulong ptr, target_ul= ong val, int size) { - emul_ops->write_mem(env_cpu(env), &val, ptr, size); + x86_write_mem(env_cpu(env), &val, ptr, size); } =20 void write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size) @@ -180,7 +180,7 @@ void write_val_ext(CPUX86State *env, struct x86_decode_= op *decode, target_ulong =20 uint8_t *read_mmio(CPUX86State *env, target_ulong ptr, int bytes) { - emul_ops->read_mem(env_cpu(env), env->emu_mmio_buf, ptr, bytes); + x86_read_mem(env_cpu(env), env->emu_mmio_buf, ptr, bytes); return env->emu_mmio_buf; } =20 @@ -497,7 +497,7 @@ static void exec_ins_single(CPUX86State *env, struct x8= 6_decode *decode) =20 emul_ops->handle_io(env_cpu(env), DX(env), env->emu_mmio_buf, 0, decode->operand_size, 1); - emul_ops->write_mem(env_cpu(env), env->emu_mmio_buf, addr, + x86_write_mem(env_cpu(env), env->emu_mmio_buf, addr, decode->operand_size); =20 string_increment_reg(env, R_EDI, decode); @@ -518,7 +518,7 @@ static void exec_outs_single(CPUX86State *env, struct x= 86_decode *decode) { target_ulong addr =3D decode_linear_addr(env, decode, RSI(env), R_DS); =20 - emul_ops->read_mem(env_cpu(env), env->emu_mmio_buf, addr, + x86_read_mem(env_cpu(env), env->emu_mmio_buf, addr, decode->operand_size); emul_ops->handle_io(env_cpu(env), DX(env), env->emu_mmio_buf, 1, decode->operand_size, 1); @@ -604,7 +604,7 @@ static void exec_stos_single(CPUX86State *env, struct x= 86_decode *decode) addr =3D linear_addr_size(env_cpu(env), RDI(env), decode->addressing_size, R_ES); val =3D read_reg(env, R_EAX, decode->operand_size); - emul_ops->write_mem(env_cpu(env), &val, addr, decode->operand_size); + x86_write_mem(env_cpu(env), &val, addr, decode->operand_size); =20 string_increment_reg(env, R_EDI, decode); } @@ -628,7 +628,7 @@ static void exec_scas_single(CPUX86State *env, struct x= 86_decode *decode) addr =3D linear_addr_size(env_cpu(env), RDI(env), decode->addressing_size, R_ES); decode->op[1].type =3D X86_VAR_IMMEDIATE; - emul_ops->read_mem(env_cpu(env), &decode->op[1].val, addr, decode->ope= rand_size); + x86_read_mem(env_cpu(env), &decode->op[1].val, addr, decode->operand_s= ize); =20 EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, false); string_increment_reg(env, R_EDI, decode); @@ -653,7 +653,7 @@ static void exec_lods_single(CPUX86State *env, struct x= 86_decode *decode) target_ulong val =3D 0; =20 addr =3D decode_linear_addr(env, decode, RSI(env), R_DS); - emul_ops->read_mem(env_cpu(env), &val, addr, decode->operand_size); + x86_read_mem(env_cpu(env), &val, addr, decode->operand_size); write_reg(env, R_EAX, val, decode->operand_size); =20 string_increment_reg(env, R_ESI, decode); diff --git a/target/i386/emulate/x86_emu.h b/target/i386/emulate/x86_emu.h index 05686b162f..3e485b8ca3 100644 --- a/target/i386/emulate/x86_emu.h +++ b/target/i386/emulate/x86_emu.h @@ -21,13 +21,13 @@ =20 #include "x86.h" #include "x86_decode.h" +#include "x86_mmu.h" #include "cpu.h" =20 struct x86_emul_ops { void (*fetch_instruction)(CPUState *cpu, void *data, target_ulong addr, int bytes); - void (*read_mem)(CPUState *cpu, void *data, target_ulong addr, int byt= es); - void (*write_mem)(CPUState *cpu, void *data, target_ulong addr, int by= tes); + MMUTranslateResult (*mmu_gva_to_gpa) (CPUState *cpu, target_ulong gva,= uint64_t *gpa, MMUTranslateFlags flags); void (*read_segment_descriptor)(CPUState *cpu, struct x86_segment_desc= riptor *desc, enum X86Seg seg); void (*handle_io)(CPUState *cpu, uint16_t port, void *data, int direct= ion, diff --git a/target/i386/emulate/x86_helpers.c b/target/i386/emulate/x86_he= lpers.c index 7bdd7e4c2a..024f9a2afc 100644 --- a/target/i386/emulate/x86_helpers.c +++ b/target/i386/emulate/x86_helpers.c @@ -13,6 +13,7 @@ #include "cpu.h" #include "emulate/x86_decode.h" #include "emulate/x86_emu.h" +#include "emulate/x86_mmu.h" #include "qemu/error-report.h" #include "system/mshv.h" =20 @@ -176,7 +177,7 @@ bool x86_read_segment_descriptor(CPUState *cpu, } =20 gva =3D base + sel.index * 8; - emul_ops->read_mem(cpu, desc, gva, sizeof(*desc)); + x86_read_mem_priv(cpu, desc, gva, sizeof(*desc)); =20 return true; } @@ -200,7 +201,7 @@ bool x86_read_call_gate(CPUState *cpu, struct x86_call_= gate *idt_desc, } =20 gva =3D base + gate * 8; - emul_ops->read_mem(cpu, idt_desc, gva, sizeof(*idt_desc)); + x86_read_mem_priv(cpu, idt_desc, gva, sizeof(*idt_desc)); =20 return true; } diff --git a/target/i386/emulate/x86_mmu.c b/target/i386/emulate/x86_mmu.c index 35987a897a..d664df5e1c 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -22,6 +22,7 @@ #include "system/address-spaces.h" #include "system/memory.h" #include "emulate/x86.h" +#include "emulate/x86_emu.h" #include "emulate/x86_mmu.h" =20 #define pte_present(pte) (pte & PT_PRESENT) @@ -32,6 +33,11 @@ #define pte_large_page(pte) (pte & PT_PS) #define pte_global_access(pte) (pte & PT_GLOBAL) =20 +#define mmu_validate_write(flags) (flags & MMU_TRANSLATE_VALIDATE_WRITE) +#define mmu_validate_execute(flags) (flags & MMU_TRANSLATE_VALIDATE_EXECUT= E) +#define mmu_priv_checks_exempt(flags) (flags & MMU_TRANSLATE_PRIV_CHECKS_E= XEMPT) + + #define PAE_CR3_MASK (~0x1fllu) #define LEGACY_CR3_MASK (0xffffffff) =20 @@ -40,14 +46,16 @@ #define PAE_PTE_LARGE_PAGE_MASK ((-1llu << (21)) & ((1llu << 52) - 1)) #define PAE_PTE_SUPER_PAGE_MASK ((-1llu << (30)) & ((1llu << 52) - 1)) =20 +static bool is_user(CPUState *cpu) +{ + return false; +} + + struct gpt_translation { target_ulong gva; uint64_t gpa; - int err_code; uint64_t pte[5]; - bool write_access; - bool user_access; - bool exec_access; }; =20 static int gpt_top_level(CPUState *cpu, bool pae) @@ -99,25 +107,15 @@ static bool get_pt_entry(CPUState *cpu, struct gpt_tra= nslation *pt, } =20 /* test page table entry */ -static bool test_pt_entry(CPUState *cpu, struct gpt_translation *pt, - int level, int *largeness, bool pae) +static MMUTranslateResult test_pt_entry(CPUState *cpu, struct gpt_translat= ion *pt, + int level, int *largeness, bool pae, MMUTranslat= eFlags flags) { X86CPU *x86_cpu =3D X86_CPU(cpu); CPUX86State *env =3D &x86_cpu->env; uint64_t pte =3D pt->pte[level]; =20 - if (pt->write_access) { - pt->err_code |=3D MMU_PAGE_WT; - } - if (pt->user_access) { - pt->err_code |=3D MMU_PAGE_US; - } - if (pt->exec_access) { - pt->err_code |=3D MMU_PAGE_NX; - } - if (!pte_present(pte)) { - return false; + return MMU_TRANSLATE_PAGE_NOT_MAPPED; } =20 if (pae && !x86_is_long_mode(cpu) && 2 =3D=3D level) { @@ -125,32 +123,30 @@ static bool test_pt_entry(CPUState *cpu, struct gpt_t= ranslation *pt, } =20 if (level && pte_large_page(pte)) { - pt->err_code |=3D MMU_PAGE_PT; *largeness =3D level; } - if (!level) { - pt->err_code |=3D MMU_PAGE_PT; - } =20 uint32_t cr0 =3D env->cr[0]; /* check protection */ if (cr0 & CR0_WP_MASK) { - if (pt->write_access && !pte_write_access(pte)) { - return false; + if (mmu_validate_write(flags) && !pte_write_access(pte)) { + return MMU_TRANSLATE_PRIV_VIOLATION; } } =20 - if (pt->user_access && !pte_user_access(pte)) { - return false; + if (!mmu_priv_checks_exempt(flags)) { + if (is_user(cpu) && !pte_user_access(pte)) { + return MMU_TRANSLATE_PRIV_VIOLATION; + } } =20 - if (pae && pt->exec_access && !pte_exec_access(pte)) { - return false; + if (pae && mmu_validate_execute(flags) && !pte_exec_access(pte)) { + return MMU_TRANSLATE_PRIV_VIOLATION; } =20 exit: /* TODO: check reserved bits */ - return true; + return MMU_TRANSLATE_SUCCESS; } =20 static inline uint64_t pse_pte_to_page(uint64_t pte) @@ -181,7 +177,7 @@ static inline uint64_t large_page_gpa(struct gpt_transl= ation *pt, bool pae, =20 =20 =20 -static bool walk_gpt(CPUState *cpu, target_ulong addr, int err_code, +static MMUTranslateResult walk_gpt(CPUState *cpu, target_ulong addr, MMUTr= anslateFlags flags, struct gpt_translation *pt, bool pae) { X86CPU *x86_cpu =3D X86_CPU(cpu); @@ -190,21 +186,20 @@ static bool walk_gpt(CPUState *cpu, target_ulong addr= , int err_code, int largeness =3D 0; target_ulong cr3 =3D env->cr[3]; uint64_t page_mask =3D pae ? PAE_PTE_PAGE_MASK : LEGACY_PTE_PAGE_MASK; + MMUTranslateResult res; =20 memset(pt, 0, sizeof(*pt)); top_level =3D gpt_top_level(cpu, pae); =20 pt->pte[top_level] =3D pae ? (cr3 & PAE_CR3_MASK) : (cr3 & LEGACY_CR3_= MASK); pt->gva =3D addr; - pt->user_access =3D (err_code & MMU_PAGE_US); - pt->write_access =3D (err_code & MMU_PAGE_WT); - pt->exec_access =3D (err_code & MMU_PAGE_NX); =20 for (level =3D top_level; level > 0; level--) { get_pt_entry(cpu, pt, level, pae); + res =3D test_pt_entry(cpu, pt, level - 1, &largeness, pae, flags); =20 - if (!test_pt_entry(cpu, pt, level - 1, &largeness, pae)) { - return false; + if (res) { + return res; } =20 if (largeness) { @@ -218,69 +213,109 @@ static bool walk_gpt(CPUState *cpu, target_ulong add= r, int err_code, pt->gpa =3D large_page_gpa(pt, pae, largeness); } =20 - return true; + return res; } =20 =20 -bool mmu_gva_to_gpa(CPUState *cpu, target_ulong gva, uint64_t *gpa) +MMUTranslateResult mmu_gva_to_gpa(CPUState *cpu, target_ulong gva, uint64_= t *gpa, MMUTranslateFlags flags) { + if (emul_ops->mmu_gva_to_gpa) { + return emul_ops->mmu_gva_to_gpa(cpu, gva, gpa, flags); + } + bool res; struct gpt_translation pt; - int err_code =3D 0; =20 if (!x86_is_paging_mode(cpu)) { *gpa =3D gva; - return true; + return MMU_TRANSLATE_SUCCESS; } =20 - res =3D walk_gpt(cpu, gva, err_code, &pt, x86_is_pae_enabled(cpu)); - if (res) { + res =3D walk_gpt(cpu, gva, flags, &pt, x86_is_pae_enabled(cpu)); + if (res =3D=3D MMU_TRANSLATE_SUCCESS) { *gpa =3D pt.gpa; - return true; } =20 - return false; + return res; } =20 -void vmx_write_mem(CPUState *cpu, target_ulong gva, void *data, int bytes) +static MMUTranslateResult x86_write_mem_ex(CPUState *cpu, void *data, targ= et_ulong gva, int bytes, bool priv_check_exempt) { + MMUTranslateResult translate_res =3D MMU_TRANSLATE_SUCCESS; + MemTxResult mem_tx_res; uint64_t gpa; =20 while (bytes > 0) { /* copy page */ int copy =3D MIN(bytes, 0x1000 - (gva & 0xfff)); =20 - if (!mmu_gva_to_gpa(cpu, gva, &gpa)) { - VM_PANIC_EX("%s: mmu_gva_to_gpa " TARGET_FMT_lx " failed\n", - __func__, gva); - } else { - address_space_write(&address_space_memory, gpa, - MEMTXATTRS_UNSPECIFIED, data, copy); + translate_res =3D mmu_gva_to_gpa(cpu, gva, &gpa, MMU_TRANSLATE_VAL= IDATE_WRITE); + if (translate_res) { + return translate_res; + } + + mem_tx_res =3D address_space_write(&address_space_memory, gpa, + MEMTXATTRS_UNSPECIFIED, data, copy); + + if (mem_tx_res =3D=3D MEMTX_DECODE_ERROR) { + return MMU_TRANSLATE_GPA_UNMAPPED; + } else if (mem_tx_res =3D=3D MEMTX_ACCESS_ERROR) { + return MMU_TRANSLATE_GPA_NO_WRITE_ACCESS; } =20 bytes -=3D copy; gva +=3D copy; data +=3D copy; } + return translate_res; +} + +MMUTranslateResult x86_write_mem(CPUState *cpu, void *data, target_ulong g= va, int bytes) +{ + return x86_write_mem_ex(cpu, data, gva, bytes, false); +} + +MMUTranslateResult x86_write_mem_priv(CPUState *cpu, void *data, target_ul= ong gva, int bytes) +{ + return x86_write_mem_ex(cpu, data, gva, bytes, true); } =20 -void vmx_read_mem(CPUState *cpu, void *data, target_ulong gva, int bytes) +static MMUTranslateResult x86_read_mem_ex(CPUState *cpu, void *data, targe= t_ulong gva, int bytes, bool priv_check_exempt) { + MMUTranslateResult translate_res =3D MMU_TRANSLATE_SUCCESS; + MemTxResult mem_tx_res; uint64_t gpa; =20 while (bytes > 0) { /* copy page */ int copy =3D MIN(bytes, 0x1000 - (gva & 0xfff)); =20 - if (!mmu_gva_to_gpa(cpu, gva, &gpa)) { - VM_PANIC_EX("%s: mmu_gva_to_gpa " TARGET_FMT_lx " failed\n", - __func__, gva); + translate_res =3D mmu_gva_to_gpa(cpu, gva, &gpa, 0); + if (translate_res) { + return translate_res; } - address_space_read(&address_space_memory, gpa, MEMTXATTRS_UNSPECIF= IED, + mem_tx_res =3D address_space_read(&address_space_memory, gpa, MEMT= XATTRS_UNSPECIFIED, data, copy); =20 + if (mem_tx_res =3D=3D MEMTX_DECODE_ERROR) { + return MMU_TRANSLATE_GPA_UNMAPPED; + } else if (mem_tx_res =3D=3D MEMTX_ACCESS_ERROR) { + return MMU_TRANSLATE_GPA_NO_READ_ACCESS; + } + bytes -=3D copy; gva +=3D copy; data +=3D copy; } + return translate_res; +} + +MMUTranslateResult x86_read_mem(CPUState *cpu, void *data, target_ulong gv= a, int bytes) +{ + return x86_read_mem_ex(cpu, data, gva, bytes, false); +} + +MMUTranslateResult x86_read_mem_priv(CPUState *cpu, void *data, target_ulo= ng gva, int bytes) +{ + return x86_read_mem_ex(cpu, data, gva, bytes, true); } diff --git a/target/i386/emulate/x86_mmu.h b/target/i386/emulate/x86_mmu.h index 9447ae072c..190bd272a2 100644 --- a/target/i386/emulate/x86_mmu.h +++ b/target/i386/emulate/x86_mmu.h @@ -30,15 +30,30 @@ #define PT_GLOBAL (1 << 8) #define PT_NX (1llu << 63) =20 -/* error codes */ -#define MMU_PAGE_PT (1 << 0) -#define MMU_PAGE_WT (1 << 1) -#define MMU_PAGE_US (1 << 2) -#define MMU_PAGE_NX (1 << 3) +typedef enum MMUTranslateFlags { + MMU_TRANSLATE_VALIDATE_WRITE =3D BIT(1), + MMU_TRANSLATE_VALIDATE_EXECUTE =3D BIT(2), + MMU_TRANSLATE_PRIV_CHECKS_EXEMPT =3D BIT(3) +} MMUTranslateFlags; =20 -bool mmu_gva_to_gpa(CPUState *cpu, target_ulong gva, uint64_t *gpa); +typedef enum MMUTranslateResult { + MMU_TRANSLATE_SUCCESS =3D 0, + MMU_TRANSLATE_PAGE_NOT_MAPPED =3D 1, + MMU_TRANSLATE_PRIV_VIOLATION =3D 2, + MMU_TRANSLATE_INVALID_PT_FLAGS =3D 3, + MMU_TRANSLATE_GPA_UNMAPPED =3D 4, + MMU_TRANSLATE_GPA_NO_READ_ACCESS =3D 5, + MMU_TRANSLATE_GPA_NO_WRITE_ACCESS =3D 6 +} MMUTranslateResult; + +MMUTranslateResult mmu_gva_to_gpa(CPUState *cpu, target_ulong gva, uint64_= t *gpa, MMUTranslateFlags flags); + +/* Thin wrappers x86_write_mem_ex/x86_read_mem_ex for code readability */ +MMUTranslateResult x86_write_mem(CPUState *cpu, void *data, target_ulong g= va, int bytes); +MMUTranslateResult x86_read_mem(CPUState *cpu, void *data, target_ulong gv= a, int bytes); + +MMUTranslateResult x86_write_mem_priv(CPUState *cpu, void *data, target_ul= ong gva, int bytes); +MMUTranslateResult x86_read_mem_priv(CPUState *cpu, void *data, target_ulo= ng gva, int bytes); =20 -void vmx_write_mem(CPUState *cpu, target_ulong gva, void *data, int bytes); -void vmx_read_mem(CPUState *cpu, void *data, target_ulong gva, int bytes); =20 #endif /* X86_MMU_H */ diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index 0b3674ad33..fb039ff7bd 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -252,27 +252,7 @@ static void hvf_read_segment_descriptor(CPUState *s, s= truct x86_segment_descript vmx_segment_to_x86_descriptor(s, &vmx_segment, desc); } =20 -static void hvf_read_mem(CPUState *cpu, void *data, target_ulong gva, int = bytes) -{ - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - env->cr[0] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); - env->cr[3] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); - vmx_read_mem(cpu, data, gva, bytes); -} - -static void hvf_write_mem(CPUState *cpu, void *data, target_ulong gva, int= bytes) -{ - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - env->cr[0] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); - env->cr[3] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); - vmx_write_mem(cpu, gva, data, bytes); -} - static const struct x86_emul_ops hvf_x86_emul_ops =3D { - .read_mem =3D hvf_read_mem, - .write_mem =3D hvf_write_mem, .read_segment_descriptor =3D hvf_read_segment_descriptor, .handle_io =3D hvf_handle_io, .simulate_rdmsr =3D hvf_simulate_rdmsr, @@ -490,6 +470,14 @@ static void hvf_cpu_x86_cpuid(CPUX86State *env, uint32= _t index, uint32_t count, } } =20 +static void hvf_load_crs(CPUState *cs) +{ + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + + env->cr[0] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); + env->cr[3] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); +} void hvf_load_regs(CPUState *cs) { X86CPU *cpu =3D X86_CPU(cs); @@ -802,6 +790,7 @@ static int hvf_handle_vmexit(CPUState *cpu) struct x86_decode decode; =20 hvf_load_regs(cpu); + hvf_load_crs(cpu); decode_instruction(env, &decode); exec_instruction(env, &decode); hvf_store_regs(cpu); @@ -843,6 +832,7 @@ static int hvf_handle_vmexit(CPUState *cpu) } =20 hvf_load_regs(cpu); + hvf_load_crs(cpu); decode_instruction(env, &decode); assert(ins_len =3D=3D decode.len); exec_instruction(env, &decode); @@ -948,6 +938,7 @@ static int hvf_handle_vmexit(CPUState *cpu) struct x86_decode decode; =20 hvf_load_regs(cpu); + hvf_load_crs(cpu); decode_instruction(env, &decode); exec_instruction(env, &decode); hvf_store_regs(cpu); diff --git a/target/i386/hvf/x86.c b/target/i386/hvf/x86.c index e98f480f41..7fe710aca3 100644 --- a/target/i386/hvf/x86.c +++ b/target/i386/hvf/x86.c @@ -72,7 +72,7 @@ bool x86_read_segment_descriptor(CPUState *cpu, return false; } =20 - vmx_read_mem(cpu, desc, base + sel.index * 8, sizeof(*desc)); + x86_read_mem_priv(cpu, desc, base + sel.index * 8, sizeof(*desc)); return true; } =20 @@ -95,7 +95,7 @@ bool x86_write_segment_descriptor(CPUState *cpu, printf("%s: gdt limit\n", __func__); return false; } - vmx_write_mem(cpu, base + sel.index * 8, desc, sizeof(*desc)); + x86_write_mem_priv(cpu, desc, base + sel.index * 8, sizeof(*desc)); return true; } =20 @@ -111,7 +111,7 @@ bool x86_read_call_gate(CPUState *cpu, struct x86_call_= gate *idt_desc, return false; } =20 - vmx_read_mem(cpu, idt_desc, base + gate * 8, sizeof(*idt_desc)); + x86_read_mem_priv(cpu, idt_desc, base + gate * 8, sizeof(*idt_desc)); return true; } =20 diff --git a/target/i386/hvf/x86_task.c b/target/i386/hvf/x86_task.c index b1e541a642..64e30e970d 100644 --- a/target/i386/hvf/x86_task.c +++ b/target/i386/hvf/x86_task.c @@ -93,16 +93,16 @@ static int task_switch_32(CPUState *cpu, x86_segment_se= lector tss_sel, x86_segme uint32_t eip_offset =3D offsetof(struct x86_tss_segment32, eip); uint32_t ldt_sel_offset =3D offsetof(struct x86_tss_segment32, ldt); =20 - vmx_read_mem(cpu, &tss_seg, old_tss_base, sizeof(tss_seg)); + x86_read_mem_priv(cpu, &tss_seg, old_tss_base, sizeof(tss_seg)); save_state_to_tss32(cpu, &tss_seg); =20 - vmx_write_mem(cpu, old_tss_base + eip_offset, &tss_seg.eip, ldt_sel_of= fset - eip_offset); - vmx_read_mem(cpu, &tss_seg, new_tss_base, sizeof(tss_seg)); + x86_write_mem_priv(cpu, &tss_seg.eip, old_tss_base + eip_offset, ldt_s= el_offset - eip_offset); + x86_read_mem_priv(cpu, &tss_seg, new_tss_base, sizeof(tss_seg)); =20 if (old_tss_sel.sel !=3D 0xffff) { tss_seg.prev_tss =3D old_tss_sel.sel; =20 - vmx_write_mem(cpu, new_tss_base, &tss_seg.prev_tss, sizeof(tss_seg= .prev_tss)); + x86_write_mem_priv(cpu, &tss_seg.prev_tss, new_tss_base, sizeof(ts= s_seg.prev_tss)); } load_state_from_tss32(cpu, &tss_seg); return 0; diff --git a/target/i386/mshv/mshv-cpu.c b/target/i386/mshv/mshv-cpu.c index f190e83bd1..2bc978deb2 100644 --- a/target/i386/mshv/mshv-cpu.c +++ b/target/i386/mshv/mshv-cpu.c @@ -1548,74 +1548,6 @@ int mshv_create_vcpu(int vm_fd, uint8_t vp_index, in= t *cpu_fd) return 0; } =20 -static int guest_mem_read_with_gva(const CPUState *cpu, uint64_t gva, - uint8_t *data, uintptr_t size, - bool fetch_instruction) -{ - int ret; - uint64_t gpa, flags; - - flags =3D HV_TRANSLATE_GVA_VALIDATE_READ; - ret =3D translate_gva(cpu, gva, &gpa, flags); - if (ret < 0) { - error_report("failed to translate gva to gpa"); - return -1; - } - - ret =3D mshv_guest_mem_read(gpa, data, size, false, fetch_instruction); - if (ret < 0) { - error_report("failed to read from guest memory"); - return -1; - } - - return 0; -} - -static int guest_mem_write_with_gva(const CPUState *cpu, uint64_t gva, - const uint8_t *data, uintptr_t size) -{ - int ret; - uint64_t gpa, flags; - - flags =3D HV_TRANSLATE_GVA_VALIDATE_WRITE; - ret =3D translate_gva(cpu, gva, &gpa, flags); - if (ret < 0) { - error_report("failed to translate gva to gpa"); - return -1; - } - ret =3D mshv_guest_mem_write(gpa, data, size, false); - if (ret < 0) { - error_report("failed to write to guest memory"); - return -1; - } - return 0; -} - -static void write_mem(CPUState *cpu, void *data, target_ulong addr, int by= tes) -{ - if (guest_mem_write_with_gva(cpu, addr, data, bytes) < 0) { - error_report("failed to write memory"); - abort(); - } -} - -static void fetch_instruction(CPUState *cpu, void *data, - target_ulong addr, int bytes) -{ - if (guest_mem_read_with_gva(cpu, addr, data, bytes, true) < 0) { - error_report("failed to fetch instruction"); - abort(); - } -} - -static void read_mem(CPUState *cpu, void *data, target_ulong addr, int byt= es) -{ - if (guest_mem_read_with_gva(cpu, addr, data, bytes, false) < 0) { - error_report("failed to read memory"); - abort(); - } -} - static void read_segment_descriptor(CPUState *cpu, struct x86_segment_descriptor *desc, enum X86Seg seg_idx) @@ -1634,9 +1566,6 @@ static void read_segment_descriptor(CPUState *cpu, } =20 static const struct x86_emul_ops mshv_x86_emul_ops =3D { - .fetch_instruction =3D fetch_instruction, - .read_mem =3D read_mem, - .write_mem =3D write_mem, .read_segment_descriptor =3D read_segment_descriptor, }; =20 diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index ab583e922d..561a48206c 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -862,16 +862,6 @@ static int whpx_handle_portio(CPUState *cpu, return 0; } =20 -static void write_mem(CPUState *cpu, void *data, target_ulong addr, int by= tes) -{ - vmx_write_mem(cpu, addr, data, bytes); -} - -static void read_mem(CPUState *cpu, void *data, target_ulong addr, int byt= es) -{ - vmx_read_mem(cpu, data, addr, bytes); -} - static void read_segment_descriptor(CPUState *cpu, struct x86_segment_descriptor *desc, enum X86Seg seg_idx) @@ -891,8 +881,6 @@ static void read_segment_descriptor(CPUState *cpu, =20 =20 static const struct x86_emul_ops whpx_x86_emul_ops =3D { - .read_mem =3D read_mem, - .write_mem =3D write_mem, .read_segment_descriptor =3D read_segment_descriptor, .handle_io =3D handle_io }; --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836205; cv=none; d=zohomail.com; s=zohoarc; b=k3ANrdkxPmY+vD5hGaPK6VNxwg5cXvNWdI+1EUeRTaGCpNFKEfqu45i9US0ocJ5+rodYwoHShKDpTpowm3Uf7aJTQQsP0vZSNda6L1GIw13L3LPDEcl6tI3nZaigHIlPaODMoW3OGKAR11Rzs7KUCJTS+Prg/wRSpmy6L37W4U4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836205; 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=A04BlxLz7/khJrSYJAsW3ORmDALVzlVjhIJh6HzuFL4=; b=fe8e3XNGDUxgGGS/P91RnW6hd5aVXkDgGwT/foGJugSTvoJ6K/DQ/pa8r3FxYBiSbwvFtxm7wFzl3eWOQmzL5loFdln4sIquFuzKjRbw8a7V9JtGzNgjN6UIQdvvBYy0xwvIMGFVZMfQFofp2u5nDE59cglAcFCecik/pP134PI= 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 1771836205116533.2310092121558; Mon, 23 Feb 2026 00:43:25 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRTV-0001c8-Eu; Mon, 23 Feb 2026 03:39:31 -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 1vuRSc-0000s2-7r for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:35 -0500 Received: from p-east2-cluster3-host3-snip4-5.eps.apple.com ([57.103.77.156] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSZ-0002J9-EW for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:33 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 8B4EF180021D; Mon, 23 Feb 2026 08:38:27 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id D14211800223; Mon, 23 Feb 2026 08:38:24 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835910; x=1774427910; bh=A04BlxLz7/khJrSYJAsW3ORmDALVzlVjhIJh6HzuFL4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=CKShV99yYLDTJAERr5f2QZefBqEIlV6evitCOusKaatHG3ug8H1qgTbWe02Gqnfy7XrYrYuG1jBJBwbZn3I04zOt2lku5oNCBVpZzm8xeKfUqotMSzl1/FLIA4dQnIbpQ71UraVoItZAy8Ql7cbJwK51a5tY1FS8MXIevySpF7Ubd82VsWjuum3PB6QIAan9W/IB2v0R/sT8PAyvdNpsH4yZom/mF1XvGqK8pLfdypzgBPqA/rcnibCbRuMhPFQE7wF7aIteIYDiVJBpBYUdKqWKXfx1IxuD/XtfprbOIVFLPkAQQV8t+bgawk7IEfzZj289+rU6L/YM1SrMMsnKAA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 20/27] hvf: i386: save/restore CR0/2/3 Date: Mon, 23 Feb 2026 09:37:26 +0100 Message-ID: <20260223083734.48533-21-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXyeNcEKjCGvzH UXJFFkE+jkWzvAbNn6GP2fgp38byhKAOUNGjcwptl1G2l0d1y3nNB5UfafrK28O9P/AX/31bECp vylHgCa1jqfcgUYoX9tR5R1+kERdMQXmg7GTnpcMhXqEskjCuK6juyS4Di/ONNHZ2eO0L55sZ/s OVml5qDZpGexyRai9blnXUD2tWdw+n+fPLNXzSodJUbU/+wCqBgUp1PoYw/iQx51nu4qA8rVhxj WMzrK9ZGwln4USVpcWtG1v6h/3B5fEMS86U6lEAExMFtHvTzz7AzUeVmeP68tfqFO9M7pK1uTD1 R3Yfr9xq3/4nngsfokgHGEHB2oZbGhDFLsg0BP5qcSAMGLmJIcypNEDlIPmHys= X-Authority-Info-Out: v=2.4 cv=fr/RpV4f c=1 sm=1 tr=0 ts=699c1204 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=8nbFswGFAu2En9I1cXwA:9 X-Proofpoint-ORIG-GUID: 15cdjiEEl0yYNg9W73i3iFOVHRshAJrL X-Proofpoint-GUID: 15cdjiEEl0yYNg9W73i3iFOVHRshAJrL 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 mlxlogscore=747 clxscore=1030 mlxscore=0 spamscore=0 adultscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABj8p/Wv8oRtocVz95AdUpUShnXDgK/nU26VUiAFeMR1ePcTGC2VEcORdi3yJBZ+cpkV2tjubleqkSQ9IfQ4chRQvXtE/GvpO7JLxAYulEZ6PHbs4D6B6PTvNLTcf6/hvWHPgGl0Iw9OfkIs4hJX+leOW0gBliKe4GCPKtbe/fL63PVUdrRDUnhxYIVzmZgxWngE1KVEMlcp5w5IYXBLNbdm7Jc32EiuCqdJCd5JulcCcrWH0zdgukrE6neweFYo1+7nbrZqA9FBpB7R7yzm4WQX2vIDYzQ92L+5oye8kPsZSef5fF1rEG0J4u7ouGCJnmY06TZJxGFOo63nh95ByZqShmWyuImachUhaR2052iSwA0R/pylduArZcWGaodOB9nEx8k3CoU+NZmpoRDZuOl3LwkljRYlSOpWdmUOpPn8dgOHS/n3gKn3pCjhd5UrV74z0u+9VBqIvLpZWylCkOpdjuF54/kcQvXUO+fae7M5Y84QcPucF3xm2xOoIcjFWogtuBQ2I2S7aoik7mZGutjRHwf2ePZo2yH6j89/C3h62tZPlhyJvGRduQwX0heII5zd3LBNzvYheIvvTrHhLsv9PFjpve2ZmaQYbQrm5gT7w5IQCUTzOLZEmGCCuIt54ww14oyFRUVLuj4BmSasF5AKLm0jN7COd8agUYhqTvU9wj5IZCJAdbm2gK41cQhvKH8V9hGorfQ4YOko43KQ8gPC2AG+dqiS5qUugqoqc8FOJjjetEVJwmLo/DuPQNhf1Lny7m4bSZsZHx07y3E8znuS4hND2RXcEOWu0q 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.77.156; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836206942158500 Content-Type: text/plain; charset="utf-8" For symmetry, save/restore the same set of registers even when not needed. CR2 save/restore needed as page faults injected to the guest imply modifyin= g CR2. Signed-off-by: Mohamed Mediouni --- target/i386/hvf/hvf.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index fb039ff7bd..a70f8461b0 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -477,7 +477,19 @@ static void hvf_load_crs(CPUState *cs) =20 env->cr[0] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR0); env->cr[3] =3D rvmcs(cpu->accel->fd, VMCS_GUEST_CR3); + env->cr[2] =3D rreg(cpu->accel->fd, HV_X86_CR2); } + +static void hvf_save_crs(CPUState *cs) +{ + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + + wvmcs(cpu->accel->fd, VMCS_GUEST_CR0, env->cr[0]); + wvmcs(cpu->accel->fd, VMCS_GUEST_CR3, env->cr[3]); + wreg(cs->accel->fd, HV_X86_CR2, env->cr[2]); +} + void hvf_load_regs(CPUState *cs) { X86CPU *cpu =3D X86_CPU(cs); @@ -794,6 +806,7 @@ static int hvf_handle_vmexit(CPUState *cpu) decode_instruction(env, &decode); exec_instruction(env, &decode); hvf_store_regs(cpu); + hvf_save_crs(cpu); break; } break; @@ -837,6 +850,7 @@ static int hvf_handle_vmexit(CPUState *cpu) assert(ins_len =3D=3D decode.len); exec_instruction(env, &decode); hvf_store_regs(cpu); + hvf_save_crs(cpu); =20 break; } @@ -942,6 +956,7 @@ static int hvf_handle_vmexit(CPUState *cpu) decode_instruction(env, &decode); exec_instruction(env, &decode); hvf_store_regs(cpu); + hvf_save_crs(cpu); break; } case EXIT_REASON_TPR: { --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836168; cv=none; d=zohomail.com; s=zohoarc; b=ccEPVrkAakUD6/cBhEiFrgPYCf7TY50zB7xyQfnwFvrY2S0+2BU8B0W1XpaY1XS5VTAImIBaaaW/ddHMZa26+W7cwe3GqgAmwSIet4kZ741sS4Qy0j308CnYqH+O6ggu6DJFs+BxMNSjwcdoSsDmBGZQYP3OsXVb6xLvXwGrahA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836168; 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=sec6CMnKYJJI9y5Wj8/7I6YJyCwv3268OSQx7dh58iI=; b=ch3ycV4ks9+XnQKn3LpZP5mt/ur5VC02TBSuz1Td5JgSIizy/7IEkkn3qAPePUbc6HhvyP5eUZGFZFjZZtMdn89lr8Odc8+KRL01d8MV26/HwS0kVBouvukZK87zNDeg7JpJnkSjO4pXzzznHegbydVtP/nmi4vSNyIZMSLe/4k= 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 1771836168668327.3430311948323; Mon, 23 Feb 2026 00:42:48 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSh-0000s6-Fb; Mon, 23 Feb 2026 03:38:41 -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 1vuRSa-0000qU-58 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:32 -0500 Received: from p-east2-cluster3-host11-snip4-7.eps.apple.com ([57.103.77.178] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSY-0002J2-MT for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:31 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 8715218000BF; Mon, 23 Feb 2026 08:38:29 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 407FA180020F; Mon, 23 Feb 2026 08:38:27 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835910; x=1774427910; bh=sec6CMnKYJJI9y5Wj8/7I6YJyCwv3268OSQx7dh58iI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=MZk6v56ex4wDs+K2P4yAo5KjcohqHOqct+wm9+nWeraPfoDyzjD7v6h/ulC1Vs6egzOnc9OHa3iGT+ASP+Bpflb9vMkZEX+G8/o4HWZcb6MUwAfJxB0JE5oXJ2wQjV0YYIlmtyHmyehQSDdxMWhxiQCPsaisXJ5gt7vsl4tuIFhOgGE8ILhBTMuJ0JyqjS2M0fgSylar8ZRDfGl4BC39kbFZaXey/lQAPVsyjMTLLBGnm3MnpoI1aHTaITKR8/NyRke89X4nq5LpLw366EslBiMQ9WzYK6kVZDd5S7XMLmbMkTSBG1vtaIRQduKCXNnHhGpBZpoVMfr1El+ytN5Jlg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 21/27] target/i386: emulate: get rid of write_val_to_mem() helper Date: Mon, 23 Feb 2026 09:37:27 +0100 Message-ID: <20260223083734.48533-22-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX6rGGggbymyM4 ZYxc53NDQxVTjZqO931s+N+anyP5oRD3L21srkQPr+vS3klaxJ7Srzchj3hXxsAeYE8E6cLULd/ FHL1X2EFJ4Gwy2VIQSTguW9+M9dz7zZ+6UU7qdTC9uvJy151WsnvjQgPgE1nudmk9g9utiYlVX8 N7qAZtRySPVewsnj/ki6I5SrMicnP70LKhIdqRKStQa3nMFyo66FJ1RGf8IomijljGwb+3hYR6w 9UsFVWhGnDe1Pb7azITW7QnlXpQHkH6yCso5IyVGMXo9AdQRcksfGoIH/SoszXnsYfLwCbuxuGW ftVgNtCX1rYsRWTa4lZW3ouCXQoXmrJ50RsVxkHUCK33K1EJmAipLIH7gHPJpI= X-Authority-Info-Out: v=2.4 cv=NrTcssdJ c=1 sm=1 tr=0 ts=699c1205 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=X61gGJnvCjtZcTrZb8IA:9 X-Proofpoint-ORIG-GUID: qyHfEGa_HxO0SY38F7FtLYCeyMAqKAQK X-Proofpoint-GUID: qyHfEGa_HxO0SY38F7FtLYCeyMAqKAQK 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=860 phishscore=0 spamscore=0 malwarescore=0 mlxscore=0 adultscore=0 lowpriorityscore=0 suspectscore=0 clxscore=1030 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABrrKjmFfhPBvUyColqYVG2RmpldHVjbPu1g0AW77JyMVjJFzFwOwZbKZaCyAuQleiaJ+qHBrBGbJPnYEN2VsmyPlGhtYQY+PjeGVR/yNRdpcbYQ19+cuPuzoRbm+gMNTgXz/DwcZSfsM6TIlgq8bPTVDb3L3QJ/qczF+uidXuOvtks00mppGUizpqKlDZach/zUrIjBvxTwkTCnDllNLxhnNsVkYJSUHUBrBjZRZ/yONRKCEWSSlOul+1n+1B7HhaNFzhF/l5nmPSlrr81jrfpe8C/BQAvpV5URbbHfwd9zA8W6cjl89V8LIbBzry3Jb8NIVEYUT/3bzrt1kmyupU5E798WIXl04d00LMnHHm8e773VwuA+4kfTDXaP5tAsrRAuY9Z+Fe9a3Q6lxNbum2iNuqzBYjQi8SRQ8HvCrz/p0//mSyX5b8Yklc+Hz9XNoST9mMvsrkAWC5rx6buJ/iJVwB732I1SUnUDxtf2K3/g+3pXmFZzon2XD9YAtjl3xMcu4yUzZ4uaP2aAKIn/qaktGzE3H9W0H/DChYRWziprIURDhBesz9IVi5KaORzQsZF3oUPHMjx0fVZBBbQDZJ5SjjQIjxowYz8sHS/zSNxmGaJ7wabOY6NEsfZIra8LWnMverV/m6jMzshBTKE1j9qiMpy7VMYWojsbkyvJ36ovMrACvdoCRVAnmU0YHJ1f2t5TH26hl9qvuOkd5ubcK8fcDT6dNoSo3ZGdWGI+E52D8S3RgijD+DJvXV/0o5YPgXhoO/aGwa+jsh2MbGh1d+clKKJR6MtFENth9mWq4zy5C6yNM5Mk2FW82DGS81/wA= 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.77.178; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836170560158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_emu.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index cfa35561dd..3aedd638a1 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -164,17 +164,12 @@ void write_val_to_reg(void *reg_ptr, target_ulong val= , int size) } } =20 -static void write_val_to_mem(CPUX86State *env, target_ulong ptr, target_ul= ong val, int size) -{ - x86_write_mem(env_cpu(env), &val, ptr, size); -} - void write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size) { if (decode->type =3D=3D X86_VAR_REG) { write_val_to_reg(decode->regptr, val, size); } else { - write_val_to_mem(env, decode->addr, val, size); + x86_write_mem(env_cpu(env), &val, decode->addr, size); } } =20 @@ -548,7 +543,7 @@ static void exec_movs_single(CPUX86State *env, struct x= 86_decode *decode) decode->addressing_size, R_ES); =20 val =3D read_val_from_mem(env, src_addr, decode->operand_size); - write_val_to_mem(env, dst_addr, val, decode->operand_size); + x86_write_mem(env_cpu(env), &val, dst_addr, decode->operand_size); =20 string_increment_reg(env, R_ESI, decode); string_increment_reg(env, R_EDI, decode); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771835977; cv=none; d=zohomail.com; s=zohoarc; b=XIHA3NCkkk0Mz5O2SSLfozRWNr+rWUrDCwRokk8yJPVVE7+KPBjpGPeHT1x2ATfUZSvKr61gIXlGUoCxG+gAvBUwZSChPPjKI6vu2xQ5Ygx/tcR0lsZVVKMRS93XQXPOCj2XsEJeONY9Vn3kdczFp2PTZX0mKXCNfbbP8RnacRQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771835977; 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=S9AJdBE8oo76V1KEGNHuiIM13A7vPwhp6IK3//MSg3Y=; b=F1iFTwwL/qHeU7PrZ2M4GQffHpuOHO8i9imo6LQMYz4kuOUUsvshuxENJhQbAROWempTPNemHGu8Skl1B/aYFS/ldYxuG8PNEB39G8BsjC3qM8MMVANjvOoUQIouT4x/7yH2UYll5VuRhJOd3F/PFwbBs0TZxnr5LYW4CcPzqA0= 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 1771835977257756.3762883234624; Mon, 23 Feb 2026 00:39:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRTQ-0001Ve-Hg; Mon, 23 Feb 2026 03:39:27 -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 1vuRSe-0000tu-1o for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:37 -0500 Received: from p-east2-cluster3-host2-snip4-10.eps.apple.com ([57.103.77.231] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSc-0002JT-11 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:35 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id EC2E218000A4; Mon, 23 Feb 2026 08:38:31 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id AD6E51800179; Mon, 23 Feb 2026 08:38:29 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835912; x=1774427912; bh=S9AJdBE8oo76V1KEGNHuiIM13A7vPwhp6IK3//MSg3Y=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=JE71G0fiYv5+xBQs5TjdHg9PIRh3fL7fpO70E84Y0hevzAKqMHcFgAjKyCHPPEPQ2Ja5SDZUUvGA2rSmgnaIGAlsR4zK4gbmndAF1aHoQNZGG3Iz2XMopP6V7PmFrPsSzWHY2dxbF1gNqmzb7EJux9nlfYj2aYXjdVOMbgp64c+cBH+yitjxOvAhNeqlM64Jvb/k/Zi3ENlwaRmifhPrMqPR4c68Cc/+mICAcSKRmh4WALD7iB4aLBTD8AXa5mONuCyu9MHJ1UxPAhpnBbWcoof5zJgiLvvDI9C69HMYoSXxm+/H99lCmj0mWPwLbcTJYZSiJgGpTLz6suCL+DWgAg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 22/27] target/i386: emulate: raise an exception on translation fault Date: Mon, 23 Feb 2026 09:37:28 +0100 Message-ID: <20260223083734.48533-23-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: rrGl6vO-anZ7dDG0eTHvJbAoN_zXIC8T X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXwpInSagZoX/T mpv4E5/ptyBA+tWJW7h6LONH8bsnYr7o1H4r3cBFQmMI9DcwmyEhzR2nv4nRs8t/YOv44O/bxlL BLEKoS3LehiVIohkXFe5JB9RiOSRH4cl3BCFp03hohdo0RrCIDe5jGl3ImkTRcH7tFPeT/kfmQc 2h1j4ZSB0brTmvRJnRNjRUctNRYvWtQQrUy9RJ9erhrvezQSTmqbcYmFtFkzbHSfV93m3IxGUfR H/irl+FRAJmqeiGh+TzIK2aacRoFg3Zz+YvfTpg15xiWmxqeUVjPK8xLLuODmHR/BuX4iZFHvRq FTekz6qwQ/YO92NW2eEj6q9hGToSH71/+c2fr4tOy6ZEDUr8aSx4e0An3Mk1qI= X-Proofpoint-ORIG-GUID: rrGl6vO-anZ7dDG0eTHvJbAoN_zXIC8T X-Authority-Info-Out: v=2.4 cv=N9Uk1m9B c=1 sm=1 tr=0 ts=699c1208 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=L5enj1CBYy6CaSJ8q-IA:9 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 clxscore=1030 bulkscore=0 spamscore=0 malwarescore=0 mlxscore=0 suspectscore=0 mlxlogscore=794 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABWiWJJR/yVLAATf6Tn2moeCT3PqHkSN7Wg/qDrXIbjDyf9ShDpi9nk7q05fXM6m3qLVA7SJASir88nkbhXnAMQQthx3xPn8OWNluWlWlvOJF9XMWN1/Tve45xdG136huc2Ncf/xh8hR1v3sRSdckdqyqbN4ThqmujIroo2+bL4fxSYY9KCMZXA8xpjinvnKDzpXgZ8Bh9mqAd58vImga7cnY9LnO51I7DgbGyno64tpLijtVbiz41d+iYe0pfKeNDK8uiWGH7yEtycgN4FQJlYztnVkRVq3rvjH9+GAj2Tl/uwLMvaqgDQaHZojYtJbU7QyneZRflt91tT3o8P5++EgnKtei0NFwZRA3577nLWZUAExCUqJol/YBpfYgw+5Ys9Xz9y67xWOAHzQ1ee7SKoKoBIiH45jyqGnKi2JGHIIKYR6RohgWBbtVlGw9CqTBo8g2eUXlq3rowFWEwV4CXlSoCbEXWL3fSHLVACj1pwUeJKMngIPmPB0oHWj+1WAHuxxnNQBHUCwFu4//zmIsBY0uHIIEIpDlXPmZxgTmLrQsNDSiV9zSJoeCh2OjXfxFrCgqPIFW8kaRz+9PqWi4e4mVZOl6AfesP3nyDegWcHxQ1lcUjOOfppOLKhSdA2OfMhEgTXCFKoAuk2ScYUHDbqJvTiAjfp5GwanMSWnLFZGZcRJ6oc9tg/po1nvi764F6nMmohmPyDyzPffegWT5eR34y4ZTBBpwP193QeYjzVTzmkUppp7LpY7jNenaosZ5i0msZ1b1lQYwXrtrCq/KjFt1HqREyBWtDQX4eeg8= 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.77.231; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 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_H4=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771835981004158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_mmu.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/target/i386/emulate/x86_mmu.c b/target/i386/emulate/x86_mmu.c index d664df5e1c..c7d2a77531 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -239,8 +239,29 @@ MMUTranslateResult mmu_gva_to_gpa(CPUState *cpu, targe= t_ulong gva, uint64_t *gpa return res; } =20 +static int translate_res_to_error_code(MMUTranslateResult res, bool is_wri= te, bool is_user) +{ + int error_code =3D 0; + if (is_user) { + error_code |=3D PG_ERROR_U_MASK; + } + if (!(res & MMU_TRANSLATE_PAGE_NOT_MAPPED)) { + error_code |=3D PG_ERROR_P_MASK; + } + if (is_write && (res & MMU_TRANSLATE_PRIV_VIOLATION)) { + error_code |=3D PG_ERROR_W_MASK; + } + if (res & MMU_TRANSLATE_INVALID_PT_FLAGS) { + error_code |=3D PG_ERROR_RSVD_MASK; + } + return error_code; +} + static MMUTranslateResult x86_write_mem_ex(CPUState *cpu, void *data, targ= et_ulong gva, int bytes, bool priv_check_exempt) { + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + MMUTranslateResult translate_res =3D MMU_TRANSLATE_SUCCESS; MemTxResult mem_tx_res; uint64_t gpa; @@ -251,6 +272,9 @@ static MMUTranslateResult x86_write_mem_ex(CPUState *cp= u, void *data, target_ulo =20 translate_res =3D mmu_gva_to_gpa(cpu, gva, &gpa, MMU_TRANSLATE_VAL= IDATE_WRITE); if (translate_res) { + int error_code =3D translate_res_to_error_code(translate_res, = true, is_user(cpu)); + env->cr[2] =3D gva; + x86_emul_raise_exception(env, EXCP0E_PAGE, error_code); return translate_res; } =20 @@ -282,6 +306,9 @@ MMUTranslateResult x86_write_mem_priv(CPUState *cpu, vo= id *data, target_ulong gv =20 static MMUTranslateResult x86_read_mem_ex(CPUState *cpu, void *data, targe= t_ulong gva, int bytes, bool priv_check_exempt) { + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + MMUTranslateResult translate_res =3D MMU_TRANSLATE_SUCCESS; MemTxResult mem_tx_res; uint64_t gpa; @@ -292,6 +319,9 @@ static MMUTranslateResult x86_read_mem_ex(CPUState *cpu= , void *data, target_ulon =20 translate_res =3D mmu_gva_to_gpa(cpu, gva, &gpa, 0); if (translate_res) { + int error_code =3D translate_res_to_error_code(translate_res, = false, is_user(cpu)); + env->cr[2] =3D gva; + x86_emul_raise_exception(env, EXCP0E_PAGE, error_code); return translate_res; } mem_tx_res =3D address_space_read(&address_space_memory, gpa, MEMT= XATTRS_UNSPECIFIED, --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771835992; cv=none; d=zohomail.com; s=zohoarc; b=O3hlQ2zy0uqWWv7EJj6ir9LGgQx4K/UXlqiTu5fP+6tQQ1R8zqxja7OSmWVY6WYjwgZTfMSF79f3TUKLltrLvZ5PFJoCGI4Ca6fXXxetFtfuPC5phszGd31GAkt+tstkuBA488TW10jY9e5ANPj0w46uT+jNuY+6Kf0rc2CrBwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771835992; 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=JmJeyCNGmOwI1RRJYOEbtrFmR9IX358A6jq63HYV7u4=; b=k9n/W9Z+6uskecWEENvlTMOtmK7xVFIFMZtroAWYsY6dmv5d/z6oGdFyoVfxPPdaDn5zRuAuVt7bQqND4u3C8hZitmy1o2KT1UPQ9nfcJAJvKHVyx4ZE+MAvkW/QpMtsDEG9bAVEQVcBffGbRiVDCOugQ3x2waz1z/T5cpQKo4g= 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 1771835992044390.0014913511003; Mon, 23 Feb 2026 00:39:52 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRTi-0001xH-Sr; Mon, 23 Feb 2026 03:39:43 -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 1vuRSi-0000zL-LL for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:41 -0500 Received: from p-east2-cluster3-host7-snip4-7.eps.apple.com ([57.103.77.238] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSh-0002KW-6z for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:40 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id CA72A1800223; Mon, 23 Feb 2026 08:38:34 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 1D33A18000B5; Mon, 23 Feb 2026 08:38:32 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835918; x=1774427918; bh=JmJeyCNGmOwI1RRJYOEbtrFmR9IX358A6jq63HYV7u4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=NwYl4m+KBSHF9H3/aAbwWp0CA7yQf2KhHrI4T9GzoSvPhRm4Dv8msINPsIIozduWsiO6mDYeLW3rCGs3VNTkKkVa9FGsmtDug9ci2YRxxIhb7uH2HVMBfvsOL1GscByILGfEgRCo+YY+lC+rGStyLBIpvUeBjXRPSz6aIL3LTzfeZkratjx6A4SFSBbucXeOf1bD8mLVM0k3lqxWhQUA4GU+IdpJKSOS7vmfqmw/0YRDB2GVX0M1IXmR4DuQ6Vf5FD+xs3601u9DaBSNzAQU57vzFWy6xszhiFkX3Z990XWqf1dC70CJLYOgBz8Uv+5MWWEPDbsDX8z9ZEEMelRURg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 23/27] target/i386: emulate: remove fetch_instruction helper too Date: Mon, 23 Feb 2026 09:37:29 +0100 Message-ID: <20260223083734.48533-24-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=a9E9NESF c=1 sm=1 tr=0 ts=699c120c cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=Mh07pQtNwjrl1AJ-msEA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXzTVsOcVOyT5C nQtLmd6DPmwQRx7IpOcmEEmyhvawcowpeuIle8PeNT7W4MFvuI67zU8GpDV8BL/5kx1KMw2UREM 1atYaGzvMqDA242faW1R1AyHlweZHnO96hNvfnSGGD1L4tkfUY7XFrbLSx4YCB1wlc+avFmk+Ks r1twbIM6MjUvrb/wPhgqcdlPxOVjIPsC0pZPmrn++qlJjHLw2Fe9QzYlBfs1yFkMq4ns3I+cY6r xQlW5HISW+wngkp+1YupojWW9fB3DO1GkwHeT7+u+6mEdJhKxcLQZ1OvAHNk/k7FFM36pR8G9Zo 0P6hqRgMsRn7bVxg3/R2xkiWh8vw20LWwckxiUBfjpjHAP43kNTejUdimT+LaE= X-Proofpoint-GUID: xgZNz9hoG3ZdY-QUPZ62EFWhQrMzHpTi X-Proofpoint-ORIG-GUID: xgZNz9hoG3ZdY-QUPZ62EFWhQrMzHpTi 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 suspectscore=0 malwarescore=0 adultscore=0 spamscore=0 mlxlogscore=869 lowpriorityscore=0 phishscore=0 mlxscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABoCE3VP3L4BGzVoN9RyMhQXXhBL3V5jkI09wqF8gZqNBe6K0SCMY3UZfCsudJAhqK7vf2THievFNWxfXBdzGZ3/PiuUqYdbcGpHPtKR/J75d7/q6ROQAsP1OVOXzRd5ysb/mRALSgl2w+gCZiFdbuqbNuAd4bD+O+i4NA4rnDJKrDYBcnEBLy9v/tuJrOtj/sSmBOUnQW3Is7ytE9MtNluLAY7piSGfEO5thWb7XY5zd6xzEbL9vgCg64BR0jNGQ5dkpa5n4JJtj/eiCtVZ8ZGVLKpja6Ar7ylHEQRP7wopPdfAOuAPisGuQg7rE2nGO2myFa5huro9vdM7nVXh2ieoRAC0A+QZ9kdVcmu8ZwXQr4EyfIhC61nkh8U/oVOj+e9CEtf/edD0IX9529bQyLWQXtXhI/2HEuCaHmJgBQuar6lGSYnkQp4bMkypWri3dSF+KYUy29DwWpyp/Xf0Hu83GFeNYMLRGBApf3nayTxL465YSxUF2hcopsOVSDec9XtlIuFqV04AXHwOrF8zLAOlK7boQDJG/7b5ZmrITSBdjh/haHQWwCom+KA0LXmktAIxMDR3E98pNFPkYqAtf48SKWrD6PNPbBO4q25KK8YpHtdeq00OAP4Pn6fFMXh73fleIF6etzRdeW6WNWGFTGkoSEbO5Vn2s2cMn/ek9sxdrLjRnc5cGi3Kq2ivrlAQ70YMcBaSRf8Of2PegdkMay1OaLcRuct10Xbp4k/VrDI6YgjH3sXz/aRJcP5+2Zx0G8kFdSZz7QHvZNCbNg+T33TODmouiC609u4fdTHkP9 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.77.238; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771835993702154100 Content-Type: text/plain; charset="utf-8" Not used anymore. --- target/i386/emulate/x86_decode.c | 6 +----- target/i386/emulate/x86_emu.h | 2 -- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/target/i386/emulate/x86_decode.c b/target/i386/emulate/x86_dec= ode.c index 9faa65a579..bae1dd4d6f 100644 --- a/target/i386/emulate/x86_decode.c +++ b/target/i386/emulate/x86_decode.c @@ -77,11 +77,7 @@ static inline uint64_t decode_bytes(CPUX86State *env, st= ruct x86_decode *decode, memcpy(&val, decode->stream->bytes + decode->len, size); } else { target_ulong va =3D linear_rip(env_cpu(env), env->eip) + decode->l= en; - if (emul_ops->fetch_instruction) { - emul_ops->fetch_instruction(env_cpu(env), &val, va, size); - } else { - x86_read_mem(env_cpu(env), &val, va, size); - } + x86_read_mem(env_cpu(env), &val, va, size); } decode->len +=3D size; =20 diff --git a/target/i386/emulate/x86_emu.h b/target/i386/emulate/x86_emu.h index 3e485b8ca3..6b69111822 100644 --- a/target/i386/emulate/x86_emu.h +++ b/target/i386/emulate/x86_emu.h @@ -25,8 +25,6 @@ #include "cpu.h" =20 struct x86_emul_ops { - void (*fetch_instruction)(CPUState *cpu, void *data, target_ulong addr, - int bytes); MMUTranslateResult (*mmu_gva_to_gpa) (CPUState *cpu, target_ulong gva,= uint64_t *gpa, MMUTranslateFlags flags); void (*read_segment_descriptor)(CPUState *cpu, struct x86_segment_desc= riptor *desc, enum X86Seg seg); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836135; cv=none; d=zohomail.com; s=zohoarc; b=Z1VYZE+9Y7LpttxmiJ6F0Tn9F4HOt0ba0webvH+6eH5CAuh6pEZYcMmR/BYzxkc2VAe6Gofr/yGK2y0d95IVg+3t5ajNddh+gjBLd0Q+bDXFAVtTmcQ2ACpid+eGFozCuS3chf1LF3Ef/PSoyfqppTmoskaOaW1+29m53FtTb3s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836135; 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=A0kv8WcUrfCI0eP6NvMQADwHXSg1hEvtsUz+NsukzMg=; b=VNud7jbURjnEjgF57K68OU19xtviQGtEic1wUetJqWBHgQDyxoIhaYXyRl8fOn0AC0AWtS7Z4vobafiEjIRMBX3cuai2erkbkevRJoOgCqlTkuIm/tURmg166qh00r1k45K/OqweUDIBijNetJJdhldQQEV1nVwcOqwG46ijTVA= 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 1771836135948717.4265330547701; Mon, 23 Feb 2026 00:42:15 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSz-0001IA-Jm; Mon, 23 Feb 2026 03:39:01 -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 1vuRSh-0000uj-HD for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:41 -0500 Received: from p-east2-cluster3-host10-snip4-8.eps.apple.com ([57.103.77.149] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSf-0002KJ-MU for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:39 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id BB601180022A; Mon, 23 Feb 2026 08:38:36 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 7FFD11800215; Mon, 23 Feb 2026 08:38:34 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835917; x=1774427917; bh=A0kv8WcUrfCI0eP6NvMQADwHXSg1hEvtsUz+NsukzMg=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=A8rRUPy+C0zZo0i3JytokBFWvcNXxuM7+pQE21Q6y5KYTDd1t2iS0DppdG4hj1iPKVPuBZxAEvfphqLPc7g35t6StjekXmNW/UtEUmjmfPDEvOBuJw39mZvuy45i41mAO1CYANLRSs0kbcU/ROMugL+UhiYXlqyhj93JPQGCBLfvFkU3tXZwwbymRtjr/cIbkpsGv0IiZp71sc6WN0IRBiF0dxAHUPmycau4OiJwDaT0POT4kkUmBHo6lJpAaov+jZxoVmRBKPYCuFaHDOTgYvG70QH95l5rwdOknXBD5Gp2mbfA4O+YO6itjcMjhaWikN81Q/0ZfpvLMmNaOboQ4A== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 24/27] target/i386: emulate: propagate memory errors on most reads/writes Date: Mon, 23 Feb 2026 09:37:30 +0100 Message-ID: <20260223083734.48533-25-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXzX4UOWoBgOzA 4ebSoRXnoGQdiWQ7RHifmESWZsmTInGs4grjti3TSzAdWaKkl42cvXlhNtzEkZ10Ag9qQjLNg8E VuJzQsQwDlsD7pcTTLZP2JP64fXyMst5IEmNdEnY9k/PwaTexBOdR6kGJrq5daHfPrT4nvgnNQz EM2+YXWenY2RRPK/7IL7pg9kE8Ul6EG2zRYb0HaXhgZ4blNBcrSZKquqMTvPwUG4kDoXOQq75yZ geOh0w5gEswwzCntRAR7IKchOirOFJ1uia5jreqwDFIbFhXJfAB33ugNj+Q83S9IHfjTMVdrCKL Vgbs6ks1Iy+mF7pr697pRRkodqdAfielfvWMYvdtQBqDWLXtyYHC2RO45JvI7s= X-Proofpoint-GUID: R6IpnaC2gLFJPyOONrViqSWUpvkw3p-4 X-Authority-Info-Out: v=2.4 cv=RYadyltv c=1 sm=1 tr=0 ts=699c120c cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yuK-eIj46yw4D_dHqGMA:9 X-Proofpoint-ORIG-GUID: R6IpnaC2gLFJPyOONrViqSWUpvkw3p-4 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 clxscore=1030 suspectscore=0 adultscore=0 mlxlogscore=979 spamscore=0 bulkscore=0 mlxscore=0 phishscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAAB+2m3PclqCc3IVA4xOzyufGRnKJooG/abyZetovkTW/aY4LRV/0xAHcdwWXnAh1HiB1iqJinuxRnUPcsXD+7krOsdeey4TjbW0ZWihVn6iAezv5HBlvm5b7HPdIjlF9hii9nsItXWN7tUeSs0GRqSMHhYMmSuo9A8MRuFbDAkMhiT69lOall7j9MFrV9YEy7pHyqCEw8kGdQZ1QFBls//SyMRDJdbVlcFFSt9mqwj2OECUpwjji5Wai/PoRDn45dwdWpX32x9Qo8XuIVt6dLTNM/3FvYw5+VVIVGfBsBPOhR13I8do3RcGdXzMNiIfhSEO7IF+JjwpJzhIM0LvAKvgmHgylp7muhNBBBVBkOZtLXyuABNC5xxnmJ8HOXoNOg0o1upXRKB227SvTen3lEDnmUgEUzbkviecV1dkAJ4E0Y61opYEN+rlVuwxh3jgMwsVpm6vtTFwa9ZpfV0HLaIwj0rRVQHjQe7M9BhJkg+N7K0qS1sQ2USnKebP6lcqvKfqm9MAMfi5PVz0mZS4iv+tVXbI5XjpW3foel9AOGzUgjPs5s30ACghrN3ec2iGIKD/++WW9CwjsbPCPoDe059e3KQjBmYQkNYjxH0UZEKB7Y5BNqQCa58XeRT6CawL9W0DXKKQPk4uALFQKkr06/GInHAWFIuiK8wql0Hn1fnQVmw079P4qG40sxIb1Lq+Xcb+V71PIJiMPPk4IVAosp1phXatuG7Jx9arBFvrMT1wfUlLqyYHdc3evN8wNJh6m19OdvcAJ5eO7hR8hiMSK51pUOlY6KmkBUAiHCmcwb98R2NsdlGIdyzG+Rt 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.77.149; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836137593154100 Content-Type: text/plain; charset="utf-8" Use that to not bump RIP for those cases. Leaves a coverage gap for read_val_ext(), to be handled in a later commit. Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_emu.c | 115 +++++++++++++++++++++++++--------- 1 file changed, 84 insertions(+), 31 deletions(-) diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index 3aedd638a1..f5359d3a45 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -36,11 +36,14 @@ ///////////////////////////////////////////////////////////////////////// =20 #include "qemu/osdep.h" +#include "qemu/error-report.h" #include "panic.h" #include "x86_decode.h" #include "x86.h" #include "x86_emu.h" #include "x86_flags.h" +#include "x86_mmu.h" + =20 #define EXEC_2OP_FLAGS_CMD(env, decode, cmd, FLAGS_FUNC, save_res) \ { \ @@ -175,43 +178,52 @@ void write_val_ext(CPUX86State *env, struct x86_decod= e_op *decode, target_ulong =20 uint8_t *read_mmio(CPUX86State *env, target_ulong ptr, int bytes) { - x86_read_mem(env_cpu(env), env->emu_mmio_buf, ptr, bytes); + MMUTranslateResult res =3D x86_read_mem(env_cpu(env), env->emu_mmio_bu= f, ptr, bytes); + if (res) { + return NULL; + } return env->emu_mmio_buf; } =20 =20 -static target_ulong read_val_from_mem(CPUX86State *env, target_long ptr, i= nt size) +static bool read_val_from_mem(CPUX86State *env, target_long ptr, int size,= target_ulong* val) { - target_ulong val; uint8_t *mmio_ptr; =20 mmio_ptr =3D read_mmio(env, ptr, size); + if (mmio_ptr =3D=3D NULL) { + return 1; + } switch (size) { case 1: - val =3D *(uint8_t *)mmio_ptr; + *val =3D *(uint8_t *)mmio_ptr; break; case 2: - val =3D *(uint16_t *)mmio_ptr; + *val =3D *(uint16_t *)mmio_ptr; break; case 4: - val =3D *(uint32_t *)mmio_ptr; + *val =3D *(uint32_t *)mmio_ptr; break; case 8: - val =3D *(uint64_t *)mmio_ptr; + *val =3D *(uint64_t *)mmio_ptr; break; default: VM_PANIC("bad size\n"); break; } - return val; + return 0; } =20 target_ulong read_val_ext(CPUX86State *env, struct x86_decode_op *decode, = int size) { + target_ulong val; if (decode->type =3D=3D X86_VAR_REG) { return read_val_from_reg(decode->regptr, size); } else { - return read_val_from_mem(env, decode->addr, size); + if (read_val_from_mem(env, decode->addr, size, &val)) { + error_report("target/i386/emulate: read_val_ext: reading from = unmapped address."); + } + return val; } } =20 @@ -465,15 +477,17 @@ static inline int get_ZF(CPUX86State *env) { return env->cc_dst ? 0 : CC_Z; } =20 -static inline void string_rep(CPUX86State *env, struct x86_decode *decode, - void (*func)(CPUX86State *env, +static inline bool string_rep(CPUX86State *env, struct x86_decode *decode, + bool (*func)(CPUX86State *env, struct x86_decode *ins), int re= p) { target_ulong rcx =3D read_reg(env, R_ECX, decode->addressing_size); =20 while (rcx !=3D 0) { bool is_cmps_or_scas =3D decode->cmd =3D=3D X86_DECODE_CMD_CMPS ||= decode->cmd =3D=3D X86_DECODE_CMD_SCAS; - func(env, decode); + if (func(env, decode)) { + return 1; + } rcx--; write_reg(env, R_ECX, rcx, decode->addressing_size); if ((PREFIX_REP =3D=3D rep) && !get_ZF(env) && is_cmps_or_scas) { @@ -483,33 +497,44 @@ static inline void string_rep(CPUX86State *env, struc= t x86_decode *decode, break; } } + return 0; } =20 -static void exec_ins_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_ins_single(CPUX86State *env, struct x86_decode *decode) { + MMUTranslateResult res; + target_ulong addr =3D linear_addr_size(env_cpu(env), RDI(env), decode->addressing_size, R_ES); =20 emul_ops->handle_io(env_cpu(env), DX(env), env->emu_mmio_buf, 0, decode->operand_size, 1); - x86_write_mem(env_cpu(env), env->emu_mmio_buf, addr, + res =3D x86_write_mem(env_cpu(env), env->emu_mmio_buf, addr, decode->operand_size); + if (res) { + return 1; + } =20 string_increment_reg(env, R_EDI, decode); + return 0; } =20 static void exec_ins(CPUX86State *env, struct x86_decode *decode) { + bool res; if (decode->rep) { - string_rep(env, decode, exec_ins_single, 0); + res =3D string_rep(env, decode, exec_ins_single, 0); } else { - exec_ins_single(env, decode); + res =3D exec_ins_single(env, decode); } =20 + if (res) { + return; + } env->eip +=3D decode->len; } =20 -static void exec_outs_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_outs_single(CPUX86State *env, struct x86_decode *decode) { target_ulong addr =3D decode_linear_addr(env, decode, RSI(env), R_DS); =20 @@ -519,48 +544,64 @@ static void exec_outs_single(CPUX86State *env, struct= x86_decode *decode) decode->operand_size, 1); =20 string_increment_reg(env, R_ESI, decode); + return 0; } =20 static void exec_outs(CPUX86State *env, struct x86_decode *decode) { + bool res; if (decode->rep) { - string_rep(env, decode, exec_outs_single, 0); + res =3D string_rep(env, decode, exec_outs_single, 0); } else { - exec_outs_single(env, decode); + res =3D exec_outs_single(env, decode); } =20 + if (res) { + return; + } env->eip +=3D decode->len; } =20 -static void exec_movs_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_movs_single(CPUX86State *env, struct x86_decode *decode) { target_ulong src_addr; target_ulong dst_addr; target_ulong val; + MMUTranslateResult res; =20 src_addr =3D decode_linear_addr(env, decode, RSI(env), R_DS); dst_addr =3D linear_addr_size(env_cpu(env), RDI(env), decode->addressing_size, R_ES); =20 - val =3D read_val_from_mem(env, src_addr, decode->operand_size); - x86_write_mem(env_cpu(env), &val, dst_addr, decode->operand_size); + if (read_val_from_mem(env, src_addr, decode->operand_size, &val)) { + return 1; + } + res =3D x86_write_mem(env_cpu(env), &val, dst_addr, decode->operand_si= ze); + if (res) { + return 1; + } =20 string_increment_reg(env, R_ESI, decode); string_increment_reg(env, R_EDI, decode); + return 0; } =20 static void exec_movs(CPUX86State *env, struct x86_decode *decode) { + bool res; if (decode->rep) { - string_rep(env, decode, exec_movs_single, 0); + res =3D string_rep(env, decode, exec_movs_single, 0); } else { - exec_movs_single(env, decode); + res =3D exec_movs_single(env, decode); } =20 + if (res) { + return; + } env->eip +=3D decode->len; } =20 -static void exec_cmps_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_cmps_single(CPUX86State *env, struct x86_decode *decode) { target_ulong src_addr; target_ulong dst_addr; @@ -570,14 +611,19 @@ static void exec_cmps_single(CPUX86State *env, struct= x86_decode *decode) decode->addressing_size, R_ES); =20 decode->op[0].type =3D X86_VAR_IMMEDIATE; - decode->op[0].val =3D read_val_from_mem(env, src_addr, decode->operand= _size); + if (read_val_from_mem(env, src_addr, decode->operand_size, &decode->op= [0].val)) { + return 1; + } decode->op[1].type =3D X86_VAR_IMMEDIATE; - decode->op[1].val =3D read_val_from_mem(env, dst_addr, decode->operand= _size); + if (read_val_from_mem(env, dst_addr, decode->operand_size, &decode->op= [1].val)) { + return 1; + } =20 EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, false); =20 string_increment_reg(env, R_ESI, decode); string_increment_reg(env, R_EDI, decode); + return 0; } =20 static void exec_cmps(CPUX86State *env, struct x86_decode *decode) @@ -591,17 +637,22 @@ static void exec_cmps(CPUX86State *env, struct x86_de= code *decode) } =20 =20 -static void exec_stos_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_stos_single(CPUX86State *env, struct x86_decode *decode) { target_ulong addr; target_ulong val; + MMUTranslateResult res; =20 addr =3D linear_addr_size(env_cpu(env), RDI(env), decode->addressing_size, R_ES); val =3D read_reg(env, R_EAX, decode->operand_size); - x86_write_mem(env_cpu(env), &val, addr, decode->operand_size); + res =3D x86_write_mem(env_cpu(env), &val, addr, decode->operand_size); + if (res) { + return 1; + } =20 string_increment_reg(env, R_EDI, decode); + return 0; } =20 =20 @@ -616,7 +667,7 @@ static void exec_stos(CPUX86State *env, struct x86_deco= de *decode) env->eip +=3D decode->len; } =20 -static void exec_scas_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_scas_single(CPUX86State *env, struct x86_decode *decode) { target_ulong addr; =20 @@ -627,6 +678,7 @@ static void exec_scas_single(CPUX86State *env, struct x= 86_decode *decode) =20 EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, false); string_increment_reg(env, R_EDI, decode); + return 0; } =20 static void exec_scas(CPUX86State *env, struct x86_decode *decode) @@ -642,7 +694,7 @@ static void exec_scas(CPUX86State *env, struct x86_deco= de *decode) env->eip +=3D decode->len; } =20 -static void exec_lods_single(CPUX86State *env, struct x86_decode *decode) +static bool exec_lods_single(CPUX86State *env, struct x86_decode *decode) { target_ulong addr; target_ulong val =3D 0; @@ -652,6 +704,7 @@ static void exec_lods_single(CPUX86State *env, struct x= 86_decode *decode) write_reg(env, R_EAX, val, decode->operand_size); =20 string_increment_reg(env, R_ESI, decode); + return 0; } =20 static void exec_lods(CPUX86State *env, struct x86_decode *decode) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836240; cv=none; d=zohomail.com; s=zohoarc; b=VpQi0HfMW2r0CYyXNcA5/m2rnjh0VcLK0Q+3vXJOTfOYoW++2c5nNDG8MSvpXAmO08FLXwkr7Wd7cbcHU8etYIVFqBOqPa4uEoXDmFLud6zXHbJF4jdNrKGO5Ytl/gaQJjvJSPNDY40SiL/Z6Uz4vfzobqIZ4/UlaUYHJnmyN0U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836240; 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=hfNR82VI32cF33QTS3FopfW+BPdUa6X/9gAEMrrkmf4=; b=QSMczJDfNzoVOnYvaZiV62bCBoQ+8LvSw28J8BOD+uJTeUdIDoDkYTqsC5lVNBg3WTgi7O+3pn0aIKHIMjfKi3ipQyXKI23Il0Ys4iaqhGjs4O5kC+6GAtdqFWj+3sqZAaJoU0PzjT+TQRp68OuhgGFJyZeHcxu295ahAMF4S1c= 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 1771836240134913.68995265801; Mon, 23 Feb 2026 00:44:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRU1-0002HU-9q; Mon, 23 Feb 2026 03:40:02 -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 1vuRSj-0000zc-Ja for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:43 -0500 Received: from p-east2-cluster3-host2-snip4-2.eps.apple.com ([57.103.77.223] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSi-0002Kx-6N for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:41 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 35A68180022E; Mon, 23 Feb 2026 08:38:39 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id E2C1F180020F; Mon, 23 Feb 2026 08:38:36 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835919; x=1774427919; bh=hfNR82VI32cF33QTS3FopfW+BPdUa6X/9gAEMrrkmf4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=RbsBx57NhlF1VMDANvoW93uf1ad+M2QrowptYXf7fPz2wZo/XHjtEUNHx1KY5izyvbCNmhrqctBnb51f+d7ogIFHLD2IvwnqUZyXtoIZ0TBU5TZneVT6tQ1ySFGw4/h+6REFU5ktkOW1mgaOKFbU+Qx/CAu428/0fIq4jzuXVj0z7BJ37FD0SU+QUwqhtuRcWUI7qQqzOQ49yQWnSxmd5W7RU8xb/ojmCD6NPuvPlveBXlNWFdmYg5f5x5NQ2QeLrpVI5Fyce9lHukibaEi1qUR5cnVYzDHUEsRW485PLYRKT0aNWwM28cfY0gAAhBOvNTXTFuvuS8DQ6TVsrE5RsQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 25/27] whpx: i386: inject exceptions Date: Mon, 23 Feb 2026 09:37:31 +0100 Message-ID: <20260223083734.48533-26-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=Oa2VzxTY c=1 sm=1 tr=0 ts=699c120f cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=41a--giXCHF2Chj7mBYA:9 X-Proofpoint-ORIG-GUID: 5coSjpzfVgGBt7uM4Odq5S6-EyRCpJg2 X-Proofpoint-GUID: 5coSjpzfVgGBt7uM4Odq5S6-EyRCpJg2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXwXbCYBfcwm9o TJZAIu7o3Tg1oh/5lwNzLwSLSim78zDlseUM7TZOtmRKKsO0YNbDEPCRW7jk0PEc0HNLvQDwXCe NtzfKoLMTfSJfDyTyQlAt82J+HI9ZIz4bm0QdlyazMOrgZbyVj3Iqun2Y08sHaWzmzpqSuXveDi kv4uGzaE1dq+UrTiRowD0zyDwNHPLrsDYv/olW8qVLOore5J0r/q0f2CpE74N1CYDUedRrZm18D dp8DkDNvuAbeyrRXLswpaHVg1raNA3piPAKZEthi96Yf1+NUFplvxtAy1ndOiCtijKh+eqRp/xC Wwj3UpNTioPt2XKH747+3D5bZkAD4cLjNNQ0hh1tv6iJaeq8STjq/a1sa5F2Vs= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 bulkscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 clxscore=1030 mlxlogscore=994 spamscore=0 mlxscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABIitEgpudpvkyAlF4bZqpvR56Ew6qniLQmuNGrzZb0cdBU4usMENdAit3Fk0YYY9rNXId7rkcbYESJO6U2lCsz7sbgQbpK3Ij7W4X8m4GFuREWJw/hLvDhgz6jJyjQXSwaOKYYOBuL/nizFr74w1x4J0BPhTgzaMLfpt7uH70E2IYjKPgw2TWvE1LaurlIBHOrPJdSZm5fWKYDaSR5iNjRICE+owJfwl2DXKSA2fOblmvN9F40H1wcVf6UIxE2xmz8CJU4p0C8MtiNJ7lHi6dlEuBmmjFs42kl0Dww+NI+IPp/ajvo9s5fhFOlv1OiTBnDBMrhF67gfPf3NcTaStTSpW+N2MeM9wGJD0hDC8UBUGzCBRe2Atjc4Xf1aC2Afulbk6bLNdjlc+mIxazK2fTxZXoJjksuzRKBwR5TS6S9fnup2OIm5dI1a83rMY6p8kq+cI50ACP0sDPv9G3CJtM0T7VEstbX3SA4SphspD6AQ+jUbUS5KI7ZBitVixW1LSlkTgqa4Q1mZRn2kx2pm4qh98LF4Dkc7LyDYf6fbvElfYDDyjzHfvbkh1YaT7Nk7J8aAhR8eX1/r0Uf6sXQITTjRl35vySvLKrfdI+zeOGtQWAVdTH8oCg06mVUje1j8OVdhj4wEUcOgPjGH6v1UMHYrw7ozf6VuzENWK7S0RbpjdTwT7HYxGZf1cHVkxX+dVdn15VNyzWM8ybfZjIR8TTGo6LtDl8a2TgFjmxPhFRuO/1l1iBS2TQCcKwVfhxEj+mkMmQe0Gmnr/kwuMkuc7IgjY= 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.77.223; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_MSPIKE_H2=-0.01, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836240908158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 561a48206c..0259782a82 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1506,6 +1506,26 @@ static void whpx_vcpu_process_async_events(CPUState = *cpu) } } =20 +static void whpx_inject_exceptions(CPUState* cpu) +{ + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + + if (env->exception_injected) { + env->exception_injected =3D 0; + WHV_REGISTER_VALUE reg =3D {}; + reg.ExceptionEvent.EventPending =3D 1; + reg.ExceptionEvent.EventType =3D WHvX64PendingEventException; + reg.ExceptionEvent.DeliverErrorCode =3D 1; + reg.ExceptionEvent.Vector =3D env->exception_nr; + reg.ExceptionEvent.ErrorCode =3D env->error_code; + if (env->exception_nr =3D=3D EXCP0E_PAGE) { + reg.ExceptionEvent.ExceptionParameter =3D env->cr[2]; + } + whpx_set_reg(cpu, WHvRegisterPendingEvent, reg); + } +} + int whpx_vcpu_run(CPUState *cpu) { HRESULT hr; @@ -1600,6 +1620,8 @@ int whpx_vcpu_run(CPUState *cpu) whpx_vcpu_configure_single_stepping(cpu, true, NULL); } =20 + whpx_inject_exceptions(cpu); + hr =3D whp_dispatch.WHvRunVirtualProcessor( whpx->partition, cpu->cpu_index, &vcpu->exit_ctx, sizeof(vcpu->exit_ctx)); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836142; cv=none; d=zohomail.com; s=zohoarc; b=R6p7sQnarlDp+wDxDmVn4ZYBdUcDVW4HeTQySLFbIdoBObIDcNraNoHvBayam7J9SMG2Zvjgcn7ZHQzdLElJ5zkHx8yii8aqbHV0J9Jcgd9FWLoqlvmU4Luyc2a7DSmVqe/h+PeGfKBuZLtK7JrC9cjyHgA1ACqi50E2uZitT2w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836142; 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=gtU6O9Cu9XkEyzJz8skz8NQEIEN6lbh5ZiIRw855Hxw=; b=FM5DIzbT/d/PrpxH7eTcZS132S7Rdkpf+4fM2JZk2haeskZZhElQnWh60cSXLGLo2jQM5q7sYE2LulIy6hxL1dbj83/q6UMxq0Psyql1qwxHPmXGNC0zO8kX1Ag7bKu9jqfTh1DArEnczq0r7hvQGNSD/GfyO71XU4m4jCgCWvA= 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 177183614216151.155979549855715; Mon, 23 Feb 2026 00:42:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRUF-0002c9-48; Mon, 23 Feb 2026 03:40:16 -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 1vuRSr-0001FU-SY for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:52 -0500 Received: from p-east2-cluster3-host6-snip4-9.eps.apple.com ([57.103.77.210] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSq-0002Ll-HR for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:49 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 1E74E1800218; Mon, 23 Feb 2026 08:38:41 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 5C797180016F; Mon, 23 Feb 2026 08:38:39 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835925; x=1774427925; bh=gtU6O9Cu9XkEyzJz8skz8NQEIEN6lbh5ZiIRw855Hxw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=R4r1c8j/VV84602et/9Me8tlcqjg/eh5b/W5UbmI8TX0qS44Vbd9pWtjindwYKoqdBx7V+ulLgS6VyzWr87617D6Nc3WZXMlwu/5KXYPWSx445sLpRw2Q8Jy7GlirG1x6Avch+f2h8d/LrA3elhzc5PPzFcZji3B5o/VcUbRhx9CHD6cwZQrQvqbP8thtCYDgkRfg8GTAdismw9GsNeG62/8se3HbzLoavOGiJ5PrxHJqJ8q7nlAeWmGjvk5mEMpmlwWrSDf/qFl9U7o10LFlEPKADffuvWVeVsWwRsWLq5AM8TYW2t7PASSgmrZD5rIXOD3f5gO3mDuf6b+lRuHWg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 26/27] whpx: i386: bump to x2apic Date: Mon, 23 Feb 2026 09:37:32 +0100 Message-ID: <20260223083734.48533-27-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: EQSJ8WjNMv4QG4SsGCaUsE_1G8FgDknX X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX59VQbMukm3Lh 5N1FTHgdqPrVBCVDqSf/oBzEoTqrIcMknQW8U3unIYMbkugMIqu1yD+HVcAfGoCNfEiuE3TGMvK swYQJ5zuZsvDjuSdVA0ZLYY191dA+nkXfm5Go06swPlZlkkK4u4S0kNhOsKKyKHsYX2REwmhB98 cOJ57G5nwhU3bGrmQm8+T1zow62wgbZSH3UYsYuoqB4NBXyKNN+sNz9B4tm4uOtYZFVncvdNC9d dcc51120VtMiWjDiBo9tt5FrlLYSkTatV9WQJikSeeAZApye06m/OYUn1YfGz0VnfpSWB5mhuAU pAIW1uKQYxixPg/lEuv9dwtAZB6gD7vD+0r4Sa6xAaHdtD2hFQyU8H7wPVpwBM= X-Authority-Info-Out: v=2.4 cv=fPw0HJae c=1 sm=1 tr=0 ts=699c1213 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=wF7mTIv5wlbhAN2AGiYA:9 X-Proofpoint-ORIG-GUID: EQSJ8WjNMv4QG4SsGCaUsE_1G8FgDknX 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 clxscore=1030 suspectscore=0 mlxlogscore=740 adultscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABAmpfQmiPKm6+TrZChPQW81bGeOIiauJn3qYGPhcjOqGKwcfdpcmPEc9Pa+eSqpgOqk8ksoWBvGMEoydEgPgwsm4GbSBm9ovHfP/S2PU4ahDEJOm5hZqt+ZC/fYv2i2Rk5rwz+iwELc16bbo3h70t3h7ZQwSRrSqj8nGEKhxjhxi/FEmVcFR4HGvYTkZMEyvORNV0NwzCTEF71ZaYWxywUpY+ueQuN7oY0h6oFRBj9iZglOps4oNlH1qDfZd40q5JLnAB3DSICC9C+7Bc2OsqmX85aZdTdC5QTnBrX2bhqFHvtb0N7iBsx8M9DQ9bxx3LZRrm0RVh2kLUakLDly0NFilyTOjDESIv+bJTRdG8o7WE98jswn6cIS38F0oJ8cKkDnv5AtHgA5NpVfca4WHkEChlkvUdD+OlCMIJh06DgXYtfW11M2Ez72jWTW2ETSSv5HeTOoipehnDOUoQFubfQckJcwmR0nB964T73EKjnwHNuJyaxXYn9nHjjU/yIC5+iJNw+iYS7SPBSdURmnqSLrL69tpT5XghVLnIRJxkWD5VeUUwPonbNU+NWtf7ZLLL8m1t3bK0H4rUMwg6qZmg/mAGzL6Iv5inFJbFvxD7RWR8D/4vNIkCQZ5XiXCdESPY77tXuc/TZc+nJbN+Eiyg2T7+FIurKhIL2kt5eV358kJ0X5s30tx8pR33dLVPQ/Qyg4TzTaSb+3aZjFNthZMy6DswYjDm/yBp4kk16LPMMguPQgTlUaKgdwQSGdZIFV0m1Oyw9M+1VMBoKNLfT3aAVz3CMavj0S06WJTOXtGWpZ+X 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.77.210; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836143346154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 0259782a82..d98619face 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -2088,7 +2088,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) if (whpx->kernel_irqchip_allowed && features.LocalApicEmulation && whp_dispatch.WHvSetVirtualProcessorInterruptControllerState2) { WHV_X64_LOCAL_APIC_EMULATION_MODE mode =3D - WHvX64LocalApicEmulationModeXApic; + WHvX64LocalApicEmulationModeX2Apic; hr =3D whp_dispatch.WHvSetPartitionProperty( whpx->partition, WHvPartitionPropertyCodeLocalApicEmulationMode, --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 12 00:55:08 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=1771836143; cv=none; d=zohomail.com; s=zohoarc; b=AqhU34s9SEbquv1hmyFekFl0VCSsEUYAS0XOZkI+JNdLx6pBaz6LyRMpNvflP0Y2TdsnBH0ld6mPMvJAiL7ksF8v03TBj2EQWdfWxU2CtCawaZD4fhcQpIFKs+/871rShDAFZ1cUL2PnCbXV8Z2Gb+KQSZEO9mdZdiHsmjTLbmU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836143; 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=9BGts0SO+ELvn9DPQ6ozA7TaG8Ww+N7E7c4pnrVSxIg=; b=HGJ0fDSsaTbOWe2GChROQ7iwsIlqysQvTjEZEG8/pT8nHK4u/MpNwznQ7ujEeVxwr5AAsdLEJxVloIyKFZ/NplLVRL0hjCV3EwTy0UY3qkrbt6c/hEjT8BbhoW4mcSYS5aso831ib5NZQNGa4kqS949O4n18mvf1u2gDjSMGK/s= 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 1771836143880687.7364074195967; Mon, 23 Feb 2026 00:42:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRTh-0001w3-UW; Mon, 23 Feb 2026 03:39:43 -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 1vuRSq-0001BJ-O3 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:49 -0500 Received: from p-east2-cluster3-host7-snip4-3.eps.apple.com ([57.103.77.234] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSn-0002Lb-GE for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:46 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 1C0F51800222; Mon, 23 Feb 2026 08:38:44 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id CA88E1800215; Mon, 23 Feb 2026 08:38:41 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835924; x=1774427924; bh=9BGts0SO+ELvn9DPQ6ozA7TaG8Ww+N7E7c4pnrVSxIg=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=B2FKKIDXHo2gmpmJGFi8LibfHq8kJCHsgROUgWlg1dA64AAn/xK+IKtMoxdjeIKmXNl6bH/ZtGMzIZr2spwxcgvLW2JPlt1n3xkwVnR+yKMBsWGh0tqiJqGd36F5SYBO4bM2Qpiy0V3nULVy+Luw4842D9eMLS2IfSz8fF6t5urJ52TIs8xnDmskoct8lycKUn8Vyc5S53OL2fgUgxmUeXbPHVeY+Zbgjr2WZWBZMABip7Darx+27kOQY7AJ+EK6xoLjeU6jqNgn4gtUcQh3TyVFBbhrjvJ5YuNONFwJqGRPw7Mi04fUJJyIrF1xyIiLZyyUqPOF3wsljCBDyT/76g== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 27/27] whpx: i386: ignore send_msi to interrupt vector 0 Date: Mon, 23 Feb 2026 09:37:33 +0100 Message-ID: <20260223083734.48533-28-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=U/efzOru c=1 sm=1 tr=0 ts=699c1214 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=P0CsU09aOh3OwRgeKFoA:9 X-Proofpoint-ORIG-GUID: MLStYARdgZTDIfSmQzhsB9lDgjtiWZkw X-Proofpoint-GUID: MLStYARdgZTDIfSmQzhsB9lDgjtiWZkw X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfXzu5k77PfxO00 wrwvwZW3a31RnGrsFzm9OpOwBXmCF4tSh+6cFd2BET3NxvsVV6OZKH1gNhberL+lej85VZl/vV5 LekD4FbFt3VbIaSNOLcxK7XlXU2YG7RXoJba4yqlveBK2dwh0D3nvV4VGjSrraxIQS/uXqrSqa9 EDSWso4EYt9txxg6g4QrNhzHZGqn6Wz+TKmlLcZU5KZWW0IpVPhl5iBXUZKmw5lzQ9SnKBD+6dh kzbTXOLTC49iV8hyVXgbmjWspWJm7Fk/qJtx+o54g07d/YDITOIixSkoY4yyKuHGpvODG6WMC+8 gPZ6m81IpEDRMNO7ptR1BX0WUwjMt+urmeJDc0+4+tWljHDT3nMtalTyhTWwyc= 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-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 mlxlogscore=999 phishscore=0 bulkscore=0 lowpriorityscore=0 clxscore=1030 spamscore=0 mlxscore=0 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABByb2izpc8SyX4Yc7GdW4d6wzLrbrIkCBOc+XcvNjc/1xloUNX9Gg7FM/yD6K1AIa8M6Xz/baVfx+TMpmtQDzdGQUe5FOm068dMvfNq5Pn3Ath7V783hPUKTgb5U7IuwiKO4f4Br+4K3zDoNQopb0KbCu/EDrSoAXMoVgIGOwX/0nxytl/bySiAG6voSP8BdqK31fRYS0KuWwNnuQXeZEbAsqmY+NzMjyPVGwSROzMPn6MU1chTSC7EL1jrZeQtt5NNWlChgGs1EKo1F43kdP4iR09UdyMiK4P3BWbYW7Y/YkAOZIetTH/1FsQMELRdd0I4YWg6kYNs110JcT2aK+WKyIDMZttivdGmTM3gYMyQRdR5nyDvnMbIRZojSHWXNmCfniqdRyj7A9ELpvPUiQvkglqm/D/ajQ3lsbqnoSAjS7bwL696bviU3Ud45KWJAXlorZh/U65TqUPQ9EeBOGhXl9K3kTTWJnxQqz0RIbsK/ZmUMuVzoibrUNj7eTBMkWav97voSr0FhIqR/LChXbupW6i7Yk32jR4Srtzffw6aOuqARgRGZXGEJzxVZCG9Sj3VeCyMHLzd1ndNQlLKHYJur2+kC21jbc4bH2o4QhpF5dFDT8hLCr7rqA5sMRgCCySAETbksZ/SQwjvOZbF/c/Gy4hQTVfTXqpDgi6yqys5EtgDKCL9MJPH40+qvY/bCaXMEC36FvWkzkjM0Na4z+3OaPvZIqmIDWLfKiz8D319s46gid7kkE4wsfvKatyhStvme5tfy0Jt8m5YNdL7s1iAqSbiK2Iliu+icgxudG3ZriqA1QPnfGPg== 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.77.234; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 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_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, 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: 1771836144530158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-apic.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/i386/whpx/whpx-apic.c b/target/i386/whpx/whpx-apic.c index b934fdcbe1..f26ecaf6e8 100644 --- a/target/i386/whpx/whpx-apic.c +++ b/target/i386/whpx/whpx-apic.c @@ -192,6 +192,11 @@ static void whpx_send_msi(MSIMessage *msg) uint8_t trigger_mode =3D (data >> MSI_DATA_TRIGGER_SHIFT) & 0x1; uint8_t delivery =3D (data >> MSI_DATA_DELIVERY_MODE_SHIFT) & 0x7; =20 + if (vector =3D=3D 0) { + warn_report("Ignoring request for interrupt vector 0"); + return; + } + WHV_INTERRUPT_CONTROL interrupt =3D { /* Values correspond to delivery modes */ .Type =3D delivery, --=20 2.50.1 (Apple Git-155)