From nobody Sun Apr 12 00:54:28 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=1771890013; cv=none; d=zohomail.com; s=zohoarc; b=cTK26PYumKbvOc6hKLmDOR0R4TdzQ0UmHY9ZmOT8beQsMfVyC7HusBFsy/bXjeeWJkjQm98kzyJWbMAMne7Q5JT9Yz5ph/mxj/GQgWaKwgcP/ZRYgYTbVJCRX7NvI0eB/SdrYkfzsYB/etVJViZYm/Be2SfcWXN6XBGvaxF3iu8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890013; 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=JHpJgYv5FAOKJsuI0WltD0kHhoos82KMM1srqdeXgtj0No8E25SoKnZRme1CPjU5ZdB+DVnvM0KvcHg5oY51s23+KJzvhcrQrUqqH1+tF/wFonT3pBCwLaH/XZXmKpgZcHmfiuk9J6cvXboQNQuFkG3tctEX2xC3cdldC0sgb5s= 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 1771890012454782.4437582202902; Mon, 23 Feb 2026 15: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 1vufX3-00064W-5r; Mon, 23 Feb 2026 18:40:05 -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 1vufX2-00060Z-04 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:04 -0500 Received: from qs-2007h-snip4-11.eps.apple.com ([57.103.84.211] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufX0-00049p-I7 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:03 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id DC23E18000A3; Mon, 23 Feb 2026 23:39:57 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 4035D180013D; Mon, 23 Feb 2026 23:39:55 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890001; x=1774482001; bh=RBeGuU3g66EpifK7auesB/uat8+GKJ5tjIXtWZ1mj1k=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=bV68NBJLDrm4ZCdCIMZ14hBbTUNcdS+9qZ7nj72s1LXWY0pWQpMp48lIOGTdvO3r4t+jiCN+rpXE9AwG7DAYFcuoatd7zteKJp8cXHsH0Y4BwncrfeNH/oaf7be1sww54M7nqudGwOcGTYATVLcdvSs8easx9Cz7jhLmjtI26S42f9yPtyPWlQAfJKmIT6qzlSH1X9ty5ibl6KqDawA759BwF2TJORnwVHf26+S+pT3V6QOwSzGAngnctxY0e04PcL6OyLDeEvLhaEQN4BeO+fhd99cxuxRulF6uPJuffEiDF4FEnYIBbwgW6ZeFzTJawiri6aaLxfT3GlrpqBRn2A== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 01/28] target/i386/emulate/x86_decode: Fix compiler warning Date: Tue, 24 Feb 2026 00:39:23 +0100 Message-ID: <20260223233950.96076-2-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: V7j4-DWl8vcnLw_0zkdNu9dFQd1lVCt8 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX8dc5gCi7ohzc Zj/IALeYlW0neZjNZeZy9BXN9hHTmYvjxv3mKyn87SPirGULsknwUOV8X3YgCHEfyDVn+1W/KaB OkBc7oiMu6I6H0/yPTwUDwdXiBc8A2dtdKurmIw0Ka0kKm8FMFQkQcltru410MJG5CmGLlQFD64 MEsZWeVH3cSALBlER+y1GqX+sSF5ldfgcDoeyFBE1HXNriO6JwmrzNySDPL7Hi6k4Bq2gXt/i6M fPeVC880da0noYm0BZYYntCD9e66b0indrDl2TbW1IIlRDCH94f0K4hVrtJkICyuJ4EwDcn81F4 8/UH4tUNizeNG0N4zFYccZU6chdm9/LjVTkUpYMxE2yC5ENqUu4vR1s5NqgB4Q= X-Authority-Info-Out: v=2.4 cv=cMntc1eN c=1 sm=1 tr=0 ts=699ce54f cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=VwQbUJbxAAAA:8 a=1g1V9cNuhepT8r8r7IUA:9 X-Proofpoint-ORIG-GUID: V7j4-DWl8vcnLw_0zkdNu9dFQd1lVCt8 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 bulkscore=0 clxscore=1030 mlxlogscore=782 spamscore=0 mlxscore=0 adultscore=0 malwarescore=0 phishscore=0 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABEz6UxY0M6sQoLrelT+3L0ibsNbJJEog+sADX6CA5KOUAp0HznsRSxEOqYqgcy6RUU8WwTxkUQaK7bc6yZLZCwfeZ/MXYyEgJ2dgB3YwPCKJqrZzNj3jnkS4tbj7dnroZD/yjdgtd4eGRUqgiG+HpXMbkMSJlST9L9qm0eyDIekZvva1h8QMREgRNOZaiVHZeKmVaEOYxOFNZtZKd2XYu6KEXNH7hp1VNltLizwitBMHLIeSejFJnaCCVl9UHOAX8V8G//uBtbe2MdW/UsHQiXr3w8wkSgrucIGu7DtttVss+ZiK559K92bzKBDoG7hgfhRoVGAHo2D9oQcyzhr8WPgM7HuT41fdTBnIPUY9fRMWAT6KKRKYrZIDmSb3uuExHyLp8xI+LAWk57AygPYJr3lIIEW7SG0C1fIR/bDwgXkTzRkR0G8lMBbyvrY4TQFgDrfzpWAj1PcTvk/KqVg07pkEJpQ1pf7nMgrmtNmEZBeny6THCb5Cc5Pqv28F7o4PWLyn0+zpQFErAVuzhdBoOSjUbAEIQ8avwCZMy/+14Tc4fjVqNno7RDPD8nrQL305YK9SLAqlcMuTIUuhx4qDPB3dv44+7beKbQcJ9JCnE+wR8P/2a/xQEZqDx1Vq49zYGQ5B4ldp03NoyxDp0my/iMmC/Ee75ukhrDln5/TnQ42gVZgaCWh2JQoAKni+qVYCLuRasYW3iBtlw0GjGheT+bsHXVxnQ5ZS7wHHFNjAD58nbexrFHohq8TkDGhCf/wt2PO1YplzJjwfmJ7OdLcUTvf9eARbcmO8TuuoBxBTqHHJZJI6F+td3u+1dLjvGJKR4 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.84.211; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 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.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890038402158500 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:54:28 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=1771890129; cv=none; d=zohomail.com; s=zohoarc; b=e9xoQf190UV5EHNY/TBYNrQPSggCkhFk2u0pfCkxyb1bwdrqTUxu+/LLl3c5Op1Bp2HhUJ4vk/72Krc2podKpsVg9/oIeFTwNq+cqbTctiX2Fdx0wEfZGD3e2bVwGRteUhDefLNXStbn4ePm/bK6m8/6yIVjgYfxj9VgrenMxNY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890129; 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=D5ee81Aac2e/NPBboVAzPNWX6ero67vkrDT/lmqAdhA/R0eBzriQnyQyUauZ7WCYl4vYesmMRorrVvx5Lcl4ZfIr+ljbXwAdkl7POSu00t5EYzbP8q8qYLkirUvwC5nkUQkHAYrNLhPHM1WqZSmxKsKz7s3izBz85pAyg72aOR8= 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 17718901298491017.1094385316121; Mon, 23 Feb 2026 15:42:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufX5-00066S-OB; Mon, 23 Feb 2026 18:40:07 -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 1vufX3-00065B-WE for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:06 -0500 Received: from qs-2007g-snip4-8.eps.apple.com ([57.103.84.199] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufX2-0004E8-EZ for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:05 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id D9F951800149; Mon, 23 Feb 2026 23:39:59 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 2CF2918003AD; Mon, 23 Feb 2026 23:39:57 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890003; x=1774482003; bh=eGBzMnvYi2plqRMYS3s+jPbPqZ3R3tScJhTlruf1lkA=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=bMlfxEeflR2wwWfVphNlzIE0YZWm9oMux8k3/slpzuITZsgCncDLFRAa/svYwKcvh3Jpq2ICbOV6TkW1yLrAo13wkQjRAkAs5c7yOhqtoMO3Dm5qVRnWgLatiXer9JJ9iWbYkNc6rj/EodKjiwvNxybNjUO+40/tozHLqCzEM2Sh8C2YUiFYqPrarDiRxMZsP2454hQI0hXbXTpwSlc3bB8RkmFGFfNG9XIAYPp1jDHBFDBHXJbemvAoiBChUF89jK22mKmLcW5wqCmY9RKbcuupELoH7k1YbDlJTfaFG+ART3W5NQ30SQmUM1BauOMo6h2LsaFrQPpLhLctlnTakw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 02/28] target/i386/hvf/x86_mmu: Fix compiler warning Date: Tue, 24 Feb 2026 00:39:24 +0100 Message-ID: <20260223233950.96076-3-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-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: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX/LqlWRJo1hlN YIKaUUStjnyc+Ezz3t/fCrzBuQqu9lCLT18tAeNHjYiuHSS0PRy91gMxxOF7dThDbTgpwL3W306 aTqdD3RHzUqcvveNkdYJky2GCbR0AAA1PhUrGbgIxc8kuiJXW2ruAQeZZjpaIWBU6x7OLgkqGtn JG+2MtGOcOOagwh+UEXMmZKZ/bpjbU2Mcp/mnar0txApBaaCv93OoY1puJGLq0RHJ0jbzVqZqtk ehfUIr1LwsTJSFh3ACSueNR+RpKlxvtVSP0oBcWh3HgAG+xKQwBu/mfWSvYdDHvI6wXSXSjLKO5 2GF22OSjqeF4VpmY1JC6P4rSixGbsebaVGkOtkBIdWlBLVsOQ+BulrjLDg3DvM= X-Authority-Info-Out: v=2.4 cv=HpV72kTS c=1 sm=1 tr=0 ts=699ce551 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==: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-GUID: SBbMa-Bil1D09mWdL804uKsVa3C32wbU X-Proofpoint-ORIG-GUID: SBbMa-Bil1D09mWdL804uKsVa3C32wbU 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=938 lowpriorityscore=0 spamscore=0 suspectscore=0 phishscore=0 clxscore=1030 malwarescore=0 adultscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABiy/d9UElkPBy4H74Nt4fCOPXaMvOqOKH1Oc/a+gmlfhNuUKkFXcHTv038dZgZ6CruOHzqYul/LmtNxnylgjKcsp6GYk87+hR4GfSaP85eHrdEhpw9W9wqtDr//yVSJPZ7lpiZTdGKm4YK0a4MO6t51rpwBvj3WDHZ7XPSFYavOMvnOwiy3uieA1+t5AnLbpeq8VTvs4X0CGB50shJAcFxpWDQHgCfZIQ84Gt8mew6ROiphQEReB1IkJEUUGMs+faVJqka5m2xc5JLsWrhDSJObtqzyKWS4zpvi9xPVMAT/Kzy0Mvz5I3eV7hpMOYhQO8MqO1NRDeUaniZVJ3xOOTPK1JL12052a9A3LV3b4N6dWubhhEzbH2ReFY4kzIleS66ssxCl5uXk84/fUV8Yt81fEqwwTYR8Hr9FJ80qmOtpBM3kETKty6WlMFNE/rUaHMYpWV4qpIwMpJ2sAvgiMfrYvD0K2rEj7PozMJA1CH0/sytt+5yKveAGxoj9H+3J9SCyAhhE1s9Rzu5arJR6vMWVgXTwCBFsdNhg30HX/WyOSi3/aCYCwDyPNijHGBX0f0y4HSjxDizOFlFk2pAk1lysIb6TASG/BE2BX+Z421W0s2/d3AIoB4iIjK0/XlXqgLnNCVDrImy9anSiGmmXQxkFzO8fPsZVA5TCm7r5yvMadkPgmuEqW/0z3zmG/p5Tdbu0HC3mqbb/+TZjaP7YpyA8VQ5kHHDOL5Cza4szNsv9kbZynM7I6B3+4bhzfkawz8rkJYoLckIayiMV/BidPihmfaOr7nq6DMtI2qabURyQRrQyWNxpvdSvwqnyazDbTCByU= 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.84.199; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890129996158500 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:54:28 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=1771890170; cv=none; d=zohomail.com; s=zohoarc; b=aPdSfuC4a6wbEvoZKXmBJY3XW79dPOO9sT7VgI19iAFFYT4WWd9ZLlJ8b5wgNq0EFYdWpMFqEzoiHGBNjs5fM1P1yRVl9UsEGC5gvQlK0Tq9LMmnbhl6ve2c+C2P9YbFBUjGvk5+AG2xNXaEa2nBpKMH8rlFBgkYeiXob4O04e0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890170; 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=CqDjY66ro5Qvgv51yhj5+1B1Lf5tjTA0Ti+z/9hVTwGyEXbcjV17JhNKJ235i4jFyAZyqTupwtDkoxq1t+ycsHEnOKZt23QHOaP02s59kQtYNzB1yZAlWt2T4iNi848rArv5rM1om+p8OMCXXkIqxVpxF7I4k3AxsST7AJnU+9o= 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 1771890170707431.6698369932765; Mon, 23 Feb 2026 15:42:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufX8-00067T-7E; Mon, 23 Feb 2026 18:40:10 -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 1vufX6-00066d-4E for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:08 -0500 Received: from qs-2007k-snip4-8.eps.apple.com ([57.103.84.239] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufX4-0004MV-Iu for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:07 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id D6D87180013D; Mon, 23 Feb 2026 23:40:01 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 1D52218003B1; Mon, 23 Feb 2026 23:39:59 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890005; x=1774482005; bh=Ajm5wvw79Vw9L0B+loVcxnLQ5Hp1DddrxTh1ozEZLIw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=a+uTLF+HfebeM9snXIBu+MU48YqSMY8KH/QMl4OV9Byx185G4t0gJUhFPl23JtILb8K2TjWifPm/ZMsOCgbKNgCP/KuvZok9lnKWr3t0Pd8SKJ1rq+58iCn+7ctMC0mgbW+l+c7z92dXqqBNDpHTaNj4V4C48ItrOuMcTq4M713cnD7m7ESrhPCdgmobgO9GD8B3EFn+DZ5tdyGg2SoKMxGFssyQaUqJQ+w9hEbKjTRgKqd34XHSbZR3VtUjuk/VubiVkDfh/oy4GAFCMNHHw6LZ2yMS35rvPtGI0yAK/XQ1g7/C+p9aLnh4yp3XD6R1clNXEdnLOPIh29ZoG8HcjQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 03/28] target/i386/emulate/x86_decode: Actually use stream in decode_instruction_stream() Date: Tue, 24 Feb 2026 00:39:25 +0100 Message-ID: <20260223233950.96076-4-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: aCgJPN1nJTqY9rFw9VSAXrZAuzmdLmxQ X-Authority-Info-Out: v=2.4 cv=I7Bohdgg c=1 sm=1 tr=0 ts=699ce553 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=VwQbUJbxAAAA:8 a=yMhMjlubAAAA:8 a=s2ha6HylF4ed1T9rlyMA:9 X-Proofpoint-GUID: aCgJPN1nJTqY9rFw9VSAXrZAuzmdLmxQ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX63Oz7cWZEaGz Vp9NqGxMS6PRMMToRLvgxCnhMDDQRPRWHFFi/vjJA8BTqVu/m20nPSNIamYCo+HIzOyYJhlP7ew WT5INyCMqhv1/u9U+2ZhMngMZ8xxXH8cPCYowKo2WP6U742qpzvYcjaTTW/Esw65ICw8kB9Fa5m vDLRHxDgnPFwpi00swHdOBLeGJvEWzZ6HkiFYQKIVGiqwhuTSdD51vGlI54RrWEw7melCHMj6e3 N3fPiZZO6zQ4dHaTzMpiFOnc7RRPBJ46txZX5DEFySvm7uQXRPwiKecM+gRzw8I2tj56Y7rmJwQ j1a2asvGo+1ITuuZM3/13Q4T7dxDDniEe7rGpXZG+KKk2Sd4Pz43cME0Ys4NUk= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 malwarescore=0 suspectscore=0 spamscore=0 mlxlogscore=857 mlxscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABNSH1VyixLOSEV2kMzEt3jzt1MzB1ij/U78XYxqdO+YGPXq2Ck42YouivTeYecF5FtP+b0UBdC6ddL2DV9DYHukNxCWgsQ0ucM3189yjgT0Gn/Tam7nE5ac5jEKZe/dK3pZpZcSyY0pZUqFOO+AR7nr+CZoSN9VmjLL3ez0Im/Dfu4dCwJRps4Y1HPzSi7r0QtHMpXEik7uy2bXFNplJLBJ3ffNO5jiHodIAOtweEHtLfusbhbrwwl5ADcHjr/Af/vid9ePDNBb4tcbYFozfg6JJQ/mztzR7XkSvGcumpu+agBNwohoojsAvq3evhOuuGGZ0hk5HXitUtF8BZEyEofuNubCiGMTvAyPMG82aAt70mphUQqU1vnTo/6o6CG0JTZvkNqEFtrEVvNqSHuCP8upmDIYf7G/sFr+A7uOfoTEr/S9L9QkXGzfCi6gT9LNtm90p7LM9BJ6jum1DZX4R7Jh6AfFitYhllFX4D3pJ/8ZQnmqp1WlR/MwiEdCni0Yve05MpP38ranKGzqXg0kx1DmN3g8WXHl5Grs0MYmBtrViSK6x2vbcRn4huzk0Rh3WEOlGxAwt7y/Mz95RpsH5wNO6my9sWPM+PlkdZ/vSDrixqQpGC89Jh04hf64oIh8UD/MI5dkm+fcwMwuLppog+Hq7rGbqbCnFrvjUnTldyxAAgKF9Wfmc85sF8+xSCjZ9/Qm1Oh/6YN15+RFvevwE7KzU6arL9qNoe9IXnl17lNZqGT6/aotCZFbU68Y+QGxuKPn2yMTd1KkMnPtAyXX+rhpJXPXusw9C6kYPe6yglF+6svsdjsH4= 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.84.239; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890172293158500 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:54:28 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=1771890023; cv=none; d=zohomail.com; s=zohoarc; b=CSTY7+/p9vYHDq+8lel6JHLEE3YuV9PzAER/lCR5rTZ46tCFh/pZ7/tZzsnlUaRLy5MaOghYJYIsaS0E5KNTdOknhCPzLFCdiJhI4X/caZTfzcit/SqoITkkteLIZ/dNNNUzVNhlzrl54QE85AofhCvEO1bXNUfWYhQZPsNuZeA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890023; 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=a7wOgL/sww7nX/iTUAcm8SX+E4EEs/EI53gm9TBgM6ZBelcxjExxFhI4FkNmzDlXzg9P+C9HBr/vDzJJlAMe+YbjGUwhc3vNN10JHPb2f4yKwD0MBVEiE59lMy+igb9j1S2eSLGaAno13G3ANM1no2AkE3gR/vVD4SM6dnA3BOM= 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 177189002301150.16946293139472; Mon, 23 Feb 2026 15:40:23 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufX9-00067x-TI; Mon, 23 Feb 2026 18:40:11 -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 1vufX7-00067G-H6 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:09 -0500 Received: from qs-2007d-snip4-11.eps.apple.com ([57.103.84.171] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufX6-0004Mu-4U for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:09 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id C143D18003AE; Mon, 23 Feb 2026 23:40:03 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 0A29C1800161; Mon, 23 Feb 2026 23:40:00 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890007; x=1774482007; bh=7itu/O5CELa9iPuSolCH3YRKKsdLS4pTb1/OCKKFmrA=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Mw28RG901SCuc8BRGulMfNCfn4uCikYY9l3+c6ndUQCovz2eHqEpE/0gnyMB+Rf1YTOYFFkiTkiC6naNDaO3rdOo+VtXZz6UtuJk891UE31W/i7Uh/FNJywiHmMvyybPMaGc3TAMswTDv0m1xyxnjiifFalO8mjtaG1d4OXWAVYU1TZ07yrD73gFG14GsCuNVP6cC+Zu3PzIOb0F2TIYLf05hpIPSYgP4so9UJVza8HJjj1hWl51h06gtUBWRFKxhuW8p5KYROtOU/7z1bIfLnFPLn4kdzIKo2GfQ19xW3aO0PBC36Y1CLDI0sPfF/+YHVlAAnUGJK4USEHZn5JiCA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 04/28] target/i386/emulate: rework string_rep emulation Date: Tue, 24 Feb 2026 00:39:26 +0100 Message-ID: <20260223233950.96076-5-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=POQCOPqC c=1 sm=1 tr=0 ts=699ce555 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=6_-HZhw-fp-CqYksV2EA:9 X-Proofpoint-ORIG-GUID: FDYl9ZctD-HwWAlGmsKB2rMNbZfivCyU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXxW3ouirZgKzF Lq8FNzJ8R5Xt00veutn8tkGWtHIqFnfN2Az6Q1AspJH3cSkkh8mGbJDvVEXSb46qA+9CwEcHIv6 /s70FzjEqaFvzinqZ4z/iiAvsHL1ZSSodm/XSaANunU7wN1mMAOqKLPYnCeLfQZbXVHQe4UBIA2 IA0jnf5z6G/u3pH2EXKb4OPPmyoAqDJUplqebqZ07xseH3QZRRYkH787nUk2H+kFhJud9Hyh+HX v7jjx2nnQBL9HC9+xv4i5MF9PT5e48p2ABEL0o6zT2ZAUImfXbMenwTTqXv5nInMpdWcv9gyFB6 grgVnBr1wv/XOo822SjKWTu0qd/OLm65AUwgyDeedOawCnIvIMa/wpT6t5QL60= X-Proofpoint-GUID: FDYl9ZctD-HwWAlGmsKB2rMNbZfivCyU 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=870 malwarescore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 adultscore=0 clxscore=1030 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABsYeyPJI9PNc97jIRAHq8RFbnyaFlmdQ4Gqiu5Qt1C1U7V3Grb4knLE5JcOfsHI112qfxVnJuoZU9a62G70apTjUS0ci3ad6W2q+gKSFrPjbGYUSL5StgbeO2EVHfSIfFy6fJmPpACAxxlTik+12OoYZgKQ0VJ/gnXz7UXV3WD+9fKprgyBYTR+5xKnbTVV0EYW8J3qXSUdiYjzMxi04FJXm2slOR+LKQUSrdopFMuhjDkcHzoAbEfJONhZGuLuDP639f36o4PhEv+7sAGqnQ3LgZZSITWAoSZvwQ4BNiDbJKej49IWxFF3EU2yQ1WdGqwIRCeaK9GTnEijYadjmVVjePSv9qBvjmSD5b2t41ujo1XEwzfaj5gbXQBasqrn3gFK7gOnNmtfk4a6AXJT3aB+21HiI02G6hhriUMF2zefsOEWE0oOFc4C3oMBDRLAE6n6rsheaMimdA4TvE28kaX00VARoiCSJG/XGepfJ8o4EH4rki4hYnzxFdY4as1Z+7Zu7lZTfcAj/utabkG0OiritOe6F0DNku/iCBBkOzlcE+gOozMeD6dq/JtqpxMB4ta5SiwJXA1DrKYfuyHovpUSb7KKNqi7Gesi+ksg0ghw6TspmV1/l08Xf8W/XgZp6yhH9VZp6uoIQXklTeBXHUMQ9aP3l5zs35Tj3GhtKvxEYqRc8ZGb9Z2D8p3irEL82DjMtQqo9CfKYu6dptPJG4urYah6v4V++7ErakNrcWmK57Yz/6wLSuGAdlLxAKS6KqwUJ3S3ANSmT/pXCYpgNc+DXUBos= 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.84.171; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 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.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890027360158500 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:54:28 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=1771890023; cv=none; d=zohomail.com; s=zohoarc; b=dYpXeV1jwwF5rvcLwckFxEOWAeeDqJblff+7ipBNLNUsbaHPI96/Cgf+NzCZkh6rfsg9iZfLJVvC3Kqq45zIDNtpTJua8j3szz3jCT8Ww0muBuF4PNx9yVikln+PmxfnfAj0neD4S8ZHg97w8KVGXFeeNGLPSi0FwAFpJM5sA8g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890023; 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=grAiOdUSrMZITliqhZjX2P/hmCr1Dof6L1XwBdwuUbTQqAhc6rM4gFwxR6rwBDxqzN+GM1c4ImSN9EBzAP4+nnyGB4r17qcJxEmVTFYrOz8YvvKZlO8z3K14jYiQVL4eCPNgcOLPBV6Egxtq+QoiM8RiloAHPPH1NJ6IovKqfFY= 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 1771890022574633.8532427999677; Mon, 23 Feb 2026 15:40:22 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXB-00069k-D5; Mon, 23 Feb 2026 18:40:13 -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 1vufXA-00067z-40 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:12 -0500 Received: from qs-2002d-snip4-2.eps.apple.com ([57.103.87.163] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufX8-0004NI-B0 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:11 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 9E80C1800171; Mon, 23 Feb 2026 23:40:05 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id ECB851800169; Mon, 23 Feb 2026 23:40:02 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890009; x=1774482009; bh=tOIg27vUU88mwrgezr591bqoq+9r1MOdy71woXavApE=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=eu3m+JyDDi6DuHIYfKi4sGMDCSzXfnjI1uT4A1/hh4sgm/kf+hs5TSen+b9HjmhLTKjmQHeryTzWVAsfEwcVkmBdjhO96nbudUOwqg9UycmA3F95+kLssSJM6KaHgYY7yNjakJ/GnabznxnOrVkfYXve4CDV7uMoqkfoheUN3O3BIkNDlb6RunbfUtbiP9r2HaG/txj8GVoCkJLkvNX3vqT/GQGJMlz3kqd1ihCayyU5m7axDv07qY3RcBfjajuqEdZ7FbAxqMewuAzG1M+MQVwWR1PIFdh0XANHRHo1WMRCJJ+5S55p5hBYg8ows7DW5igHK8S65SeMUhWICoAbow== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 05/28] target/i386: emulate, hvf: move x86_mmu to common code Date: Tue, 24 Feb 2026 00:39:27 +0100 Message-ID: <20260223233950.96076-6-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-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=faWgCkQF c=1 sm=1 tr=0 ts=699ce557 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==: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: _BGzbT0Wl_4R_QrEy-lgbWlfUJXJFKnS X-Proofpoint-GUID: _BGzbT0Wl_4R_QrEy-lgbWlfUJXJFKnS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX1RGS0j2XseYy 0Q0SN77SG90xLRlr9jtyK6CHi/QV6P3QhtvmI9g8wJB82RCNhyH3j26A0BazVLC0XNSuLF4f4O0 yiBIX5pN0RrLY8+P9w63QDd1Z3Mj2EZCXEWkT2gs75jv6P+ezj1xcV/AsiXmE7VybNkiXMTIwY3 jmGHco/uctpJVksKUPgm+t5XJH+OkxFshBTiYdWkNe5gTu65JrX62o5Du8+J+jKUuEy36XaiNrk Zzj1Gis1y0WNTQN8pNY4qZgJ2StJP69XUp+Vu/gUIaJKH33v8U8YgNEY0aF9qrBE/T1soXpVnHP tRX1kjjF19S/+Ne/LpGy3GCAu1jD7F2hs2sPHsCobvNky/Ullt/5SyNsmheV9M= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 phishscore=0 lowpriorityscore=0 mlxlogscore=999 bulkscore=0 spamscore=0 clxscore=1030 suspectscore=0 adultscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABJd4FAek51saWFBWjSgujLjFEbW3kit21/q8j6WYbabwTY/8/t2bJU8IUO3GrcpftvxSooZuLyBYRvJ4lqGF61hTuGQCh7ADIZcZcnNuqc/8Pu9vw0uiTgSjJqzXsN0fmKpC9hDHDB1yKZiXtiWzTHInpxGanzvlw5m6umE8yvsI4DuE+qaAy/gZSwZTI9I7q3ngVMRnmW9j+P8Btp0pPy7EJn2Ip4QdBtncOJaCJheJ9IMkXtjr0yDm9CY9dIM+fW4Qvn4yf1gACFKZBQve1kP+bVTJ6Bw7Y6+u0SORhx6w5B4od9g8Vdtih0vEycFaXAKpB3aifrTdZmvLFAI1s/mpEUr5QtWrY2Vy8CRwxNCidULzACnFQZcGwjrEjyTn41gEHzMHHw2CT+GCy8D7lEzB7AaJfCJn85OK7W8X1eqHxmKGFGld5UIF/fKvte4cU5fVdQ40iIOHAFOMosUP0MkdwEMCOJh1uD0nmFA9tloWNtjCDrXT0hzJdvSw2m6ChhAnUH4MDIClYQ5f8/msD3EPniq4/ACtmNiZeUJaFVbLW8SAPItYrKOGzQg/MjbUeEZKJSNTymy7xchcsh3rEYVng2Ga53JnqqhlQbhFxYyHCsWPanYO6o3LI0va2jt6w1A9Zen04EQ4IzBNA93gRTdFZYNOQaRtivlOcKcEm8fKy+hNZYERi+cUOQ6HGDy0lUcqXembg+4L4QnI5r74Bx7EPArxjacGe846uOPd2/6qELmQKzJaMPDIoq9fya7Q6PcdW9+Y41QQzrIYHcg== 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.87.163; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890027362158500 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:54:28 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=1771890171; cv=none; d=zohomail.com; s=zohoarc; b=K8iFzXwpuFSEQcbDgBeKZ852YAvofbzmyNrleBkR2do2J8gZ52Ld8tmlq8OGaUE8Iqrp2l5O1/o2sa/81t3Wkx+hgy3VpPjsew8qeaLyeIv/jMQtd0qZHrjV0iaH8LI0iNJM+0B2qwwA0jUu6YcWko55kf+Hho4XQ+u6U13Gv/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890171; 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=WboUfCzGFq+G6qRpkxIVpLwBoCJbX/4E7btDNK4j03TqvCEaRqRYA9C4jvY5jxPezatGHecDVa6+g5ELz1bjRSXcyPU/m3o/D/jSBK0rVfTdaO7o+CLkafDOO99/pJ1UYTpPOnc+TkpHmnzC4/enTQNA6IvUbORHI/0kFOnGJUQ= 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 1771890171628999.4059041242672; Mon, 23 Feb 2026 15:42:51 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXD-0006FA-Du; Mon, 23 Feb 2026 18:40:15 -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 1vufXB-0006Af-Uh for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:13 -0500 Received: from qs-2002k-snip4-4.eps.apple.com ([57.103.87.235] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXA-0004Nb-Bp for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:13 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 87BC91800168; Mon, 23 Feb 2026 23:40:07 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id DCBEE18003B6; Mon, 23 Feb 2026 23:40:04 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890011; x=1774482011; bh=g4l1jVkhlHtyjTxoP0r17Oazu+fhT089N6+xSJMvRqw=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=UXyAnMSgO0WncxN9uJwdkbzTa72HGlsdEk8tS0nplpxJ1PuHk2qnPyL9ONq2uIFsaA33iIsLnnqSvIzlJ4JK94gv00Q4N76r36aGvgKc58CFPx0OIDAO5TytgFz/7MSRbM/sAtP5LxDt+lHutXEQ/842+fkKjNnMx8Ea7t431+HWwpqWScaBGa0RRTKypB2+JR3Ajyu6SaU3eQHxGvW5COJwuXnMSa5HyNsMZ/t6Ircssv7KslBNhhyljY4amNy34aiPSFi8Kds8isQmv/KgA52D81pxHOVkk4C2qcUaiPxcy8eQ3liD+uv1PEi2tWDxTYmsRS24GN/R6aGC2pSm9g== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 06/28] whpx: i386: re-enable guest debug support Date: Tue, 24 Feb 2026 00:39:28 +0100 Message-ID: <20260223233950.96076-7-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: zFPHqHGPhSF_ODeYkxSi0ZiVo3yvN0Nk X-Authority-Info-Out: v=2.4 cv=I7Bohdgg c=1 sm=1 tr=0 ts=699ce559 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==: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: zFPHqHGPhSF_ODeYkxSi0ZiVo3yvN0Nk X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXzIiRzJqmctvQ EMzpTgHzUVcspjbMJpwFdB8S4MajscxnOHptUUf5biVzRjzIEOumE2MjR00GfGk+xXUsXlx3+Dc 5D1p4sK4Kg0K6CLE5W/aJ6Hv+Y585QKnhwkO6xMXIxmlsuOkkvgZjeH5q1NDVFVLwEaTzj2ecY3 f13OkIuQ2dJkNDoiA00KxiqGrVSR31AyCNMIjHUIL7NTsJKllXuYlbvDdS2AH3MjCNVnMw2EHGb Egl6epf++Emhpn956GKJU3PoTsJl62+ZvgIneVJCCXQOIxTXwRV+j3ytilVLXANBD8V8ui+nfqL pW8KJGe0CKYjQvvHcNzlPktRqSQt5/Y/joOOZ/dSNFa763gL7hzhqcygV7qRoI= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 malwarescore=0 suspectscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 bulkscore=0 adultscore=0 lowpriorityscore=0 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABZX9onRockw8olJIAuMn//UEXGJEOux1q7TbV9nBaaPXv14Hq3Nvskv0itXieoqsF1Ovb34lyjC441PFqzZ7aFT8Pf9FGmRWtWW6UA5Yq2Zw/dF1/bJaquliZKvLilkcbm9BgkEf7QYRZ1s3uhzQXc+zmkTeMDyXnNfFIzmFVYhllNRRdGtUDf4/U3M2VYqMWuXvsF4OCCUwNqGpHkWfiPvRXk5ity4Lzdx22gQ4FFx12g2/MIzmx0uugB5iyztpCjfQLRDEsqXbWWqO0PJKzh8MUl1N2nsKPPSfvs64icWHK2yEfZ/xDIQECDh8eih0r8fTMmAS/W4wnmXWMzKc/miyFo0Pv37hGLYQcUEycjz8gFpsbUa836AAf5oPF+k2MofugyYE6drxEsuGvofuieuHRh39qhKScx7dhg2nfm9dzDz7QwJGXuUHjv9eWAPH7z+sEVLEu/fl0r5PBFZOFTAxLF3Lc+ZqXHFfiGt2i6EzTt46adZhwpdOadCVxCVrbkJBnaVNTOjVEyJ11kj5dss2wyxp1LcJsZ4xWgWDGX8wgxRNQ22wo6cmxONK5J2Y0TbivTvktiv4QFekmCGDNoFE2L8aElQ6XOng4441fl4ROxDg9g0liPw2pKbZvohFUURYrioFX1gWWltbFt9sSk2QNqKIDoT9WEwK/KGRvYjUsVqE1o1xWzvrLgAanhvtTjRpt9eeU6s+HNWVIv7mg2rVa6IUaBIUTzS2xrXtmirVEr0jMNPVs61c3eaco8GxroF156/waRqmS8Z+xFVo+B9Xq2VTeUpdR9r0GIbIf 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.87.235; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890188483158500 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:54:28 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=1771890098; cv=none; d=zohomail.com; s=zohoarc; b=nIZU+GZz8LfYcU69bOwt5XlTzcTQ9pbUCSkNzXTD8PDHdLhxacbfVRXso1itM6Kc5VXkvIf3o7LiHlcMUS5an8px65UvyIymVjxIuOQVDj1jNRTUNAApcbcQT/o3wzgbygDDSbbxAgMKq1VRpmG3WnwsrMIZ9zwB7CNSPdijy6E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890098; 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=SjFCBZ1pCy/zn56xe3MEP46pmClNGytS+Ut+P6G/BvC4Sm/1SFmxIiOvi7TcMNC1KHMhp2rDI+66/0gsBSBOOMyGo42FIHDctWyLHmPGkbo1qfSViR6IYh8XUO+4YvG2h4q25Q6gUZ07YV0LmiTkFFRpkJdOVnb+RNaowKwMyhY= 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 1771890098728721.5022281371618; Mon, 23 Feb 2026 15:41:38 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXE-0006L9-W4; Mon, 23 Feb 2026 18:40:17 -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 1vufXD-0006Fa-M9 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:15 -0500 Received: from qs-2002g-snip4-4.eps.apple.com ([57.103.87.195] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXC-0004Nz-4S for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:15 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 75B0118000A3; Mon, 23 Feb 2026 23:40:09 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id CB0A718003B1; Mon, 23 Feb 2026 23:40:06 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890013; x=1774482013; bh=mfxct9QuL+ifLWFIShtfDThHLnEEVf+FJyNrc4eM18s=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=IP++RAdq9dj21x0DfBzJX18BlXAk1e9yev4RYckX0SOMTpStzl6WPUASLA257LobyU1xkRHxYXiZhiSQViCd1NeKFWvNVz5tJEUzL2hz0YfZDVsdM6MgBWtrfTXOYOukz05EgshodPH8BvDh/m1NusBjN/SMwRWohN+Hs59ebV5cHU9OvvwUwP9SykBq5cHYdv8U4KsZuZInx0f9/mLRjZ6yRLxS+H2KkprkFIQxGN+pdRAf66Yes6uXjXc+bBTLeMy5iQOMRgvsGksY/dm51W7dxMAzvQYFr4z58psNs721phjfLZ6+PNb/qLVjrtsulie26u7P2mssr6maXSWdqw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 07/28] whpx: preparatory changes before switching over from winhvemulation Date: Tue, 24 Feb 2026 00:39:29 +0100 Message-ID: <20260223233950.96076-8-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX0053o7qjlrQq JJke9KB2HQST/XF9v4fkaQQgz66bH3kF8jqrPE/h81K+edEWJSBeE4DW2OzfB9uOZ7SkVYCcO+a FUYjM1Uq98/n2d4TTMFGRR+9KYWg6YX5WXDDX99cULSeBnqexaX8rX6BsECjk8lWbJVxW1dgJxQ ugyvchBN8U/oXRsy8e38R2HUrSoZxwfFgW1CjzarHdtSAVXcD71mw1+aD7lEKZQqcrWaHFJo6Hx BSwMP8ku20w1/HP3DvDHVZozoKjaYP2mgOjR3DwwIHAcGEylm3HNa+3ZuXKGSCmphoa8kJAO0ee 2DyraeSquuFmiYFaWKCyViO4k5PS1nY1yfR5IO88+jyjeLjPz29vGUi+Lx8o+c= X-Authority-Info-Out: v=2.4 cv=BcfVE7t2 c=1 sm=1 tr=0 ts=699ce55b cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=qtJoQR36IQ-qKrO0xoYA:9 X-Proofpoint-ORIG-GUID: PlMFzuoQG2x7uDKVBynV8Qn_A6LGcbzw X-Proofpoint-GUID: PlMFzuoQG2x7uDKVBynV8Qn_A6LGcbzw 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 adultscore=0 suspectscore=0 mlxlogscore=941 lowpriorityscore=0 phishscore=0 mlxscore=0 spamscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABz9p7WxHtwD/22OL6N2K1GTEyteXsFFgItmtIzlwxEt7hHy6hK6KZXCothpHLRucoPrk29bRK3mufm9w5haYYm5SIHoFsiAZGrHnF16PGWt90bVrgaWYlXJay8UyvHenIiJrToPu+YycynBBjmVHv+mMGhsssVDMGmJP3ZIbM6VnKk4Sgf66QExqgUiYkGuHz8eRO74yq+eT9bTaVLCV0+VHZ2FoOg934j6l+4/3KO2vk3PqxDQcS/re8zUDRFnHuKYWphMlAERlSRjaSNAtjGOFTE8ylJeXMSoJxoW3DafPhfdlBCBV0a+JlMgpiipTQVm8nn0VMHBBpCNEv7C5lUI+X9cVXrEp6yLi4OfqhADmqGFC1SM/6E6/tQOq87DtMkLE40XKokWLfVXg6FrjoWRDAFzI2R6DgGSGs3SkCY3E3mZRCqRp8lHQRLwjSpuBWppQJ6pszTUFAIcNMuMUgain1zeuvTfyUEipP2TeEApgA7ACP7+ox2akHGVHRPpnnshbR8H9RW+67X3m3qRD9rJ2WWZgRPdw9WGamuSlVO40nKvT89pKzVt0QaayyXwjD4KHeBMY8OuRVawTrIJkIMSHaF/eX1eE2hgvo6pgV/mqyhTt8TVEesrtK11nrIeIMlNCyOLZ1M59gMUo0y8yzkR2puyU2LKR3eHm/dCG+tg7KaufJ60HcDr4mAZO8GMNSPCQVBfCCR87tJERYPYGOdXkEw1Ad4dnrGHNLq4m1TlHIvGM3cpdGgd5I/53M9F6c/kcSTe8DuXLe+g2ZqYV2UO56PVfTvgRNmB0= 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.87.195; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890128247158500 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:54:28 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=1771890123; cv=none; d=zohomail.com; s=zohoarc; b=j1fQ7Sk4TWGZhl5lw1NeKcN3kVnrX9KXFGjuppdCzSB5GRo7WjTHh2f7qQouvdSqVqOZOX49cFliVwgWtjh5S5I8LszMpht6iRCvt0Z8KxchyqsMeObEshshZR7cZdww0h2Ju83JZZjnoNMUpfLB3IZCBr+R1rCkp4bvYVn1/A8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890123; 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=aEsYZJ1l1GgJuFs7a5i5mxI9QBpwO6rSPKsFNI9PjjpGbIxwgL+TOG3+WaQs3QjmF5PsrWaXRw9GrpcTu2LWqTcGR8tkpl0c8DJQgple/VCQ484Al/4bMWQqOtHymy+vhtH+Sp64T1bRXrYxc+RZIgf+ODc3sCqHGOJgZMfnma0= 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 1771890123372933.0984671713176; Mon, 23 Feb 2026 15:42:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXH-0006Qs-IH; Mon, 23 Feb 2026 18:40:19 -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 1vufXF-0006Le-2J for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:17 -0500 Received: from qs-2002d-snip4-1.eps.apple.com ([57.103.87.162] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXD-0004OF-G0 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:16 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 6C21B180038E; Mon, 23 Feb 2026 23:40:11 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id C13301800395; Mon, 23 Feb 2026 23:40:08 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890014; x=1774482014; bh=Yw2iHtZGO16hdnJZFWAJ0heEY7g82L70ivWsP1jY3Mc=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=VBro4QjQQ36QDhgvPjZRr5calixSSF70thVZCPqUqf1txvs+Rd4yKTu2OuUbFOlyDidO9diYR3jZwgGrRTfcry8fa9DwkihezpmmTtZSKdNOiQi9h41ENoYLFctF3HSkhj+HOZlN0h+lS24nEfYHqpvB+Lyb7oI7OsPWT0c9/gDoGTJE5bMzxrKMY5fJe/v5hYuLm3HMnXLN/+4vS7F6k/22/9IKyLHcerBALTCWuMP5ihgEX5DB0BRlPixeDwQKw2+OBEsfya7MoGtJB8aP8pW7o3t+d587BvPcd3iNDKN0A3fiXrBh3i+LgRZwkswwrLWwRScfIzth5r9Mo5JKxg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 08/28] whpx: refactor whpx_destroy_vcpu to arch-specific function Date: Tue, 24 Feb 2026 00:39:30 +0100 Message-ID: <20260223233950.96076-9-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-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=POQCOPqC c=1 sm=1 tr=0 ts=699ce55d cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==: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: suHMEIofTdU9-cNNiWqKWc54xBJSxzUv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXzZ4UMacgDD9F PfbPr3PNMltnffyEDbPTBXPwsCDL2LKzKD/fpDO3I8re7nS4yCQ7i+VbuGrcqVd8Gc0nks4PylI xTr0gcUzQN3+FQJr8yWlHX90HFoCfjHRUQ6OSoOKFoVxsJbunOcV99/aES+87nRduyCNY7vJ0AV y0re93X5p3XOPzgI6P/W8D+MSt5bKl/9h7PymU7ndZvsUqitebQ6ZkJMrm5531oqU4dAZzsJ1oq vViYmYPFvwSnCUhHV0HKbwOx4CQyhziji243/F81IpYUMj5TeqCLgcaDl1UurK/5RtznWoRsloI OuHk3IXHvgXf5zCQjWspjB9xgo/BSei7kY35+w0NflqFonaxw9Du/kSBR5LRG8= X-Proofpoint-GUID: suHMEIofTdU9-cNNiWqKWc54xBJSxzUv 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 bulkscore=0 adultscore=0 clxscore=1030 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABNrbJrszwjQJCIgN3dxSHR5D6dSat5pKBK612lwyMHnLVzzfCutvip6bB6JgfUT26tTEgqkhVsj7sJeSP9R8O9XNSvswkYv3x/GbSLCi4DYZP42HQcp9B/TNW7OtSxdyj+7k6w1ZCUxSdjrYBomf7AYsZ2ZQiXh6HKZD9AFgQRhFL8tC7qvejngpUmzxF6ySUdkqpV5xBh+JHvGXcaX4kP8Pz5eFrh+ZEgeS/whRzkFeMFskx8ZjfHKd8K/gJmVfh9B/pvbkNqyq+lBHFGuBsbafe5HgwTo/uFM7D3iJ1NINbOjjOc/WJb8Yp9m1jINQr/DEMJ6WQOT4MXDa0xXfbrs9+IFEbtgsKQzy8PirIZ2bII23ZPQWjov9y5y8oO8TK4k6u7NoNfTJGZPam2KdLIqFgQAa1/Qw6W+iOgWI5efGBdXyUrefT9EKc/K+rsWTG9jwFeiY0X7B8EaOsa+MR+DI/5bLFfOsh5cu62izATyZzfyN7wHzjKPVKtRfQEqz5gI+pcKghFz5xMSZwV4nhn5KzWQQNsmfXafG35pyY0sQg3sFDntqmTqnFCgL45N/VWqjddRfoQM6lvcWCnbzO5nyRUxO3JelpfoRtswbZDlFrA/IwTFv0Z1g98CtDuqTTUrtIub6/Q1QnOztoejTBtreNMqhz+rQWgQdcxgtNSGlq+y6yWL8RL/B1GKsquJwIx73Vvn/kgp1XmnSYn/gCGRIj40at8e2yur4BXzYRNXAe/XcqtpeSrNrp4yQPBLqGIaFZ1rEblFmH0WNNsO1eL/T5IEz/QQ== 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.87.162; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890123957158500 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:54:28 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=1771890107; cv=none; d=zohomail.com; s=zohoarc; b=Co+HhbbBNI+3AWvtJZpuD+5+PU7aNMm1vPHTuoTYEkT2Geig+9vRYRePOwQw450tgmmPtwLWT/5GLxqUKdGyfXKSDNvXenjwv6DbwnMPZBd6h8hpRprIwdzddm45lVJOWR9qpuaYW+tkKHIXJqXjUbEEMTQ7rGmaQvcnpKTZ9D4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890107; 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=d8U29AWQN8JF9qrkqK9aNbCo364WbDednDlFvr8bl7guasN21xLD6C4JHyGQayTrpVGJybDS+lOYNEptvBamrvCLBDj+BZ7ak8xxhmNxAUVHo9BI5fvxUhGwjuRujHmgyW7/WgDYH/OKJmmhgK9YdDfYMFWjItz/ftLkuLAClo8= 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 1771890107332885.7291162842981; Mon, 23 Feb 2026 15:41:47 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXK-0006XO-Pc; Mon, 23 Feb 2026 18:40:22 -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 1vufXH-0006Qt-J6 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:19 -0500 Received: from qs-2002d-snip4-4.eps.apple.com ([57.103.87.165] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXF-0004Ob-VQ for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:19 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 781BB18000BD; Mon, 23 Feb 2026 23:40:13 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id BEB291800169; Mon, 23 Feb 2026 23:40:10 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890017; x=1774482017; bh=NHOceMt/DdcT4zjUZf6YyjBJ5RV0Ja9t6DFzHeb/krs=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=V9T5NbA4TKZFHkj1l4rtnJAfOGH+eG7C7yA6X+cRUS+8BlulKURZ5gEez/R5OWGoCla+9jW8T7+8F8YfFyUyIqT61U+ZGT4BQKOc74HAFiXLlFgYz0nn6D4GOehw0xVBvwQZTP+seKmmViZn8YbBT8e6UU2RF+ZYw4HKskwJ4ZEy38qPIrNgf/sKxamS1eb2R6K7Pw61vQBeso34UMRmzOu2+DG9FYZOzZR8Wyo4BvqH4ys/KcbPhOg1XbNkGK61esvlWjz0NAT7d6oKPnUGt2QveaqsSeWbRh5n7KtlGZqA4tdcPCusY99TD6lgegVosRw0xgKqxrvBhfu1PeWIzg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 09/28] whpx: move whpx_get_reg/whpx_set_reg to generic code Date: Tue, 24 Feb 2026 00:39:31 +0100 Message-ID: <20260223233950.96076-10-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=ZuXg6t7G c=1 sm=1 tr=0 ts=699ce55f cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=pUA6uon7y9DqcPPp1uEA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXzML3UFTyvrAt 7SscKNyQaTC3nUdETYKJq9d7+cOsUgKkE5idN13ZnJTSDXSpQrl17amwKJB3oS6QoZorBblACV7 EpuQorm4O9OFzmtwQq5gG4BQusv3XS9ltL+xTEWg3+t+OgMWG+uPjQObUrFFl2GXR9D/6XCIZkh Z2XG6nQ3Sz8GSTcMan0hcsyovU9SM9EkZykKVLdG5bIvoWEMG4OsFz0S+bHJMUTCJzkWg0oRVVM VzQTXjhxYB3Rq8isFbdRC54TWbOo46TwM2hYauvKgIRRHB7Vqe2B1D16/wcR+Awi0btHHO0czwb K3w367azG+3NbNAgjIWWRys4iA96AxlSLi7/fpE4dwcw4l+bpUqJlAiB2WHNqg= X-Proofpoint-ORIG-GUID: G7xY7Ic_TaXAJl2gnA0MwqFQnc_cPfZL X-Proofpoint-GUID: G7xY7Ic_TaXAJl2gnA0MwqFQnc_cPfZL 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 spamscore=0 mlxscore=0 clxscore=1030 bulkscore=0 adultscore=0 mlxlogscore=999 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABzCXQY2SfsB+mtUfE+o0LWURuKdSELlU71lBhrla9sntYc27aF3nu2BABdSnH+20o1m6PRC3loxRyAuukfXJpkI8UPpLhfoweniCnkcCdPhLQPQCRrxr/PuaG0c1q1UHVLdx4x4t5oSbU4TKekndhmqFKOxoKKJwCa8taCvQR0Z6Dkp+//Tk3pt2mFlyF4rMRgI3Bv2/ceTRTxXeNjVHedwvUM2Xur0QX7BRgLV2DwjWQeokLq0mSddcQAhU4XWO1RBxISgxO4QmvmVjnxKpL2gAFjXh4/q2EerxqexxJYOF5vWPaZRXtFpgl1hIU3gRUeJ7aoSL/2XST5KVJMUqVSvbJ5A4iGV1j01o1K7MLdCPwohb7k5I26WkLMOwXLheLGNjvtqACBsqlPpu2GQu6I5Y8znb0X1Ly4qBvO0C+vtvNsBQ99wXTuM7KQ4MHTpUGSEmu1/Iesj8LcP+XiVFkiPI8vod+iEWLkZhs0pz4kvWlHKKX6qpRdM5Q9QgFrfJxRUzihf5yOCQ8AoM5KSyzqvdl4BQ+KevPYMCtDm+LRo0CALJDi0ZSHcxuNA6MH1D86unb0TW4Koh0yy7IRJ1wPZl/mHqMZR+dPprD66/ksRvA6oXLSV1enqYyRAGLVXLKPq6JX7PCTlVKiSkiqVLw7UAe10uX5np6tcr23kpoamXrpa1bmBNje6OOwBc4/eSd8x6ooRMgQGEK8X6dM/vZw/6suQWRcVuTkFIO0OCqf0sqnC19nfnritFDFXtEVx4sv0mj5dAGSI+k 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.87.165; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890107926158500 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:54:28 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=1771890077; cv=none; d=zohomail.com; s=zohoarc; b=Dphj7B12QFjtF/y09E3bb3hjfZamdI2fCApyWnCLrUvd6Xfz9SsfWjMfwK9VcntRQlCMsjJo+GLmfZwkNMH94YfJ1IC25/7F7MqrYPbqlmAzRgM2EUGfhswuoVi0Cviw0mZpRzCHW+qUVdd8Pwo8Y15srFQj6ldunGNN86AGCRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890077; 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=YuR7U9l+gxON0JCaOSJZle875vm4Xxs4Fq/hUZR3IL+7OycJExmzbjbJw2XY3bPH/PNmdyoqCvR+z7g3cCrEvFAzWYbZIsBksj2xf0/M5miX6sjX/Q/aHHj7gA8MmNvZmJ86+uWXDkTB06A5yr8eMoge7s1nvBn7t4obLEPpESo= 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 1771890077436528.1064457035892; Mon, 23 Feb 2026 15:41:17 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXM-0006lS-Oz; Mon, 23 Feb 2026 18:40: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 1vufXJ-0006XK-Uh for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:22 -0500 Received: from qs-2002a-snip4-2.eps.apple.com ([57.103.87.133] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXH-0004Ok-Qy for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:21 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 5D6151800171; Mon, 23 Feb 2026 23:40:15 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id B536B180039A; Mon, 23 Feb 2026 23:40:12 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890019; x=1774482019; bh=Dk5eX2jOjF2PyRgCzPtgTVz6QNza9g8+ul+O0rRzATI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=dFQfb3F02BGeiXisUYTAkdK0kteUX5lwsO1xnBI7SQikKDIw/wKIminzWlbpzJkp6eFzpPgUhfXmaB7zJXHas1KQr3u7EGCaZjS3KceOLD92NwqKh07LNTbhl+x102fb++P1YETUjtlzv41nfOvA7MiOjWSf33G1cqbiNplv/SeLIUZLGLxYCT6nPZEz7b/cp20lBgWfzGuaTTpOJ7u6ZNUQy0Joeda7jiqypEeXhgQYcl/8Pgt9t2VQQLY7eKH65TD9zozskXk5HO4Grt5jtNzdpMHQs03EKwsTwSrScoTWNcUOOsDFwoKIE9rh5xOoxttD7eq9uxqetpBBxphu4Q== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 10/28] whpx: i386: switch over from winhvemulation to target/i386/emulate Date: Tue, 24 Feb 2026 00:39:32 +0100 Message-ID: <20260223233950.96076-11-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: cZkyL7Ni1HVVMixj98YWAJ7IBIRF6QVm X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXxagQtKoJLiJy rfd2Mihq2tpALLsNu/v7KkQxedCzw9sBJj1iTzILmTkyWiu73POIOEE51tLeM+n3bcAPEI12yhR XozBA6dUiXpoHVmJLwT3ECfp4KE9rMXRFoKJIlv4QiKEAHddgJuGNS9oD91cecrJIKKUfM4L75M NAkjwdeel0TEhjtJaV7AQsLCHSpp+L7glxG4jGx3W3CV4XyNPyu7YleMEpPX+5XCcf/cpARFMSA 7ilf8g/sjupm3X3giD6mH+5xgj4PStZL7k7rKELj80C1VmZatxqESIpzeQSs9l4zzugJw1G6bQ5 RbD8Ts7/f9VziwaQuVKtFE4wgTibbMGxzBFZEFb0IzUCcy1ibBBS5IXQIuB91I= X-Proofpoint-ORIG-GUID: cZkyL7Ni1HVVMixj98YWAJ7IBIRF6QVm X-Authority-Info-Out: v=2.4 cv=fpTRpV4f c=1 sm=1 tr=0 ts=699ce561 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 lowpriorityscore=0 mlxlogscore=999 malwarescore=0 clxscore=1030 suspectscore=0 bulkscore=0 mlxscore=0 phishscore=0 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABhHSeBuPuqxlH3fCQovTsgk/AVIVt8etNRS4ja4a4EUXU9LKhG6xRrMf0MBdJzQd5KU0g6jDpfXOfik5OYPZFm7SsFQ8aSJXTVwdqh8nU21FeKltOF4ZJIdy4D63IGls0aPdHCje374Dl2bgRVio8uMIZkOxNUmwQO+jpVYlLgwIjPz5n/uBQw3Br79qOMwBbuWjgsKx0eHI7XwGFiO1nS9JBpU2Gtc477wTyYt2G/CEu3/ia8HyW+f+Y5RVh9w0mL24D0uZl3EevbHu5WTDDLhpsEZuwMSQ1TADVF/QpwVBdlyDyR+yEX6tV4qhgJWKXaIJqcHnT+yPXX+rgbME5ZMSESmvyrQgDO0kLw0s4V3EzH50NBwSxoQjGXOb9Fhsagk/RvmhZdNdf4K2fPeK/GSI1qthsXAmLGBSxphX9Od2+bzjM0c3A6LWu3yU++TeWZ7hz74ahuNRpp2jYj8KqNA/bFzJBXEpTw7dlAtsWYnfJwS5H8glw6z+1CqwBgvL8jfB8ZQEcUivJopj2d6EQzqIripInkDNLkmz3ukDU53ZwUGyvH9yaXJbZNgDe8x90yBAf+WkEDTWZas6Musy+9KQU7qIEQYF5C7t4MN5Q9qWFTr6zo4emKvrm+Z1b6uw+3T8GDcd0r3c7X8retUajO9hts5au18MGhBy02zi8ofBjdCdEvQMq//u/sZ73jxvs5XV55YjihhRn3hn2YWC+m4dbPPtSnuKMRqXSufTkIhPD6IIrSGsi1qtDsV3mcTF5+bbY8c97Z+JQZfr96VBxUyKU0Ry6ukB8Tg== 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.87.133; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890077929158500 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:54:28 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=1771890063; cv=none; d=zohomail.com; s=zohoarc; b=DiTWMJOx7T3yrhAkrRpHVXHmWhu0b0aty56YXZtyXFzVG4LUogSbLxnpx6c1lyyjMvOn1D6CDop7euNKVnyX066LGYBw0NyF9S9A5p0Bw8oyf7bckXGPoBAYBA3pUQQ1SwBIgJ8PF1YGp/H9Lv+fdWMrwWXSbtJlqLbyumPK940= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890063; 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=IdsPV/SA6MydHSnQdAIvzAhKcZA9Be92y05lN5QwotQCef0JrudH6OnpRXuUu8bGffn8qADN2L0yCCCLiqbuEYnrEOF3BcbCss3z6/gWhhHANRwpKAdNu2lPR/Fn88mhM5dH58k313M1olqfC0p07IWLKnnCHf1FT7pqRnPIqbw= 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 17718900632431014.3890348489883; Mon, 23 Feb 2026 15:41:03 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXQ-0006tO-Bf; Mon, 23 Feb 2026 18:40: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 1vufXN-0006qB-T5 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:25 -0500 Received: from qs-2002h-snip4-2.eps.apple.com ([57.103.87.203] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXK-0004PI-Hs for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:25 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 6581018003AB; Mon, 23 Feb 2026 23:40:17 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id A800B18003A8; Mon, 23 Feb 2026 23:40:14 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890021; x=1774482021; bh=fg6ASREgM8H3KqayXNpjqghODmRREAt5H2XvAof8pXs=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=e45eEvcpfHESNlbZjtt+wv8CD2cGxAJciA2jJwxYCQ5yKPkM+qcfKt0Ahz10DxSPg1eAJBmoZuJ641idQabK9k74YQV1oqO4LFmozRCK9QDhWOogYCfcazb1MVQzbK6sfpaa5jDlofRgMwwS6h+QS+KzuxgxPw4LeMCaJ//cBZT0FzN6tAHiNf4N/91mRaQ2CVlIvXzD9/Kvg0oLQH95zL2tZfd95A+DVqxemSv3TQCD36aIKCc9uZhT+WFEKOZKlJFtcQkK9bptoug/8qhF3Vwl/Mrzcf5WI1MrSUFg0XjV/T/iZZQ9cXnqVSaLX+VeM28KaByzVLU8TQm7TNzbrw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 11/28] whpx: i386: flags conversion for target/i386/emulate internal state Date: Tue, 24 Feb 2026 00:39:33 +0100 Message-ID: <20260223233950.96076-12-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXxR2Cm99u85nj MHjNnnbCdIZt4tUcJwCIEt6fD5b1Ng8TO+irnRcCvqAgW3XKIwRzM3NZZtAn1SvEo4ocAPGAR7l SFh9sHRDVhJhUbLcvVlKMhZfrH+9bXJXXptqEzGEedpk6YdPuT98wdBW4hwV8xEFnCEkVSqkOkl 6BMCeznjAf+euIZn5jGt+A9hNn7rUXNX2AC3tjKoZuf2uusZhYijPrSQKHfeoY03DpQ1j6tpgsX yu88AeXWTbPXoqMh5sijuEPkDRYfzHaESImYJYN9t2MC+iIh6kv5dY7Wb6sOgMHfRmudyCGvrdu y2xwS7W5l5rRRV5f2ffR4PRt9n0H2+MG7CAodPJxapCmv5qWcaa33ce40n3zVs= X-Proofpoint-GUID: f3DsMulqSm7k-REuwsBQxbxnSZyQs8g_ X-Authority-Info-Out: v=2.4 cv=C/PkCAP+ c=1 sm=1 tr=0 ts=699ce563 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=GO8j3Qv1z8u8_yQncx4A:9 X-Proofpoint-ORIG-GUID: f3DsMulqSm7k-REuwsBQxbxnSZyQs8g_ 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 lowpriorityscore=0 spamscore=0 mlxlogscore=817 mlxscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABNr/LmIF1Nh9Qw7RPM4TJw6jO7QRU6C2MlAH+mkdVgouHLgA/X2uhmGDawW7Zh2W9EGhO14YwSpfEIGkUuoPt0h8mVxSdvcTa0iaKwGzjSUHRuvCYq0gRdPQwERj7uND5MPTZb1Jfsqmu4SG+tfdKN8q4FhSE5kszz1Si8q+wAsYMs7VP6cfchKQFTuX8xxEbc6I7q0p0+h6wUaxPq/IjuEigk0EeG0THLLzwSDZpwZCBQ9yfEim7IG41YAPM/YbMLVFm5VRju0DAC/MhXcAILCNiVH4OE8Rc0IhM8d4OXAtDXGfoY35hz4wbNxQOstdhkFYo3N+a1T9MQL9xvZyNKfkMeIx3rPC/1wj3rfGoKZIw+aVaZXDRmBKGfJDMs78EmMHOAvYILTwCoOS9WZTSxViZ4+fIv1aLlCJVLlKscCz+03uPEDMBNk5z93h5tTULWBnNL3ZcZIVuxf/74tNWykARDDnVvV98WjDSVDWInVg05IYKvTMgK6DzFxWT/sHPd70bdG2f5rzh5Stsl4E/jkz/VL96MuJ3Lotm1omENbdohIYQh413j/hZ3IRElBheAluzc+p+i8R79FF7iuHu3n74W+Cc2YNguk73Lx4IbhHAnzHGcsUxCb0xvNujC6Zv41BPVWm7EoScS2ha7xsUUQJAQZ8+fiui4ZHZ9zIlK7x+pWOqXlLZ0MXcuhZKmd2AX5pR6PX5+sZqwqLRldSgcYv0hBrBvv+tnohKbdrqYtpNjl/rGraB3/I522GbZuaKX5T4o6C+Kq3eiiZlp9rG/8PsM4jVARdK 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.87.203; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890066027158500 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:54:28 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=1771890038; cv=none; d=zohomail.com; s=zohoarc; b=jSX+PHQWMAhH6mNwTpTBHv/Y0IEcjK+V1zNvgXjwgL5utGHFKnGrv2Ujr9bh6zaXzaxXFkR00hrUC1+CJhPMPm7UnjCYLDLGFdQhp46ShpC5eCeIwYGN9pmuYJ23Td7ZKqWARQR5yy5nmnVB2Fkq+q8V3rmYsl46Xj6QGH7c7oQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890038; 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=hiofR5GhQ/GZimkl9ZpfgxrywgDLuyTXvhgrCGtKpPK/lSZwvScKEYrRbsS6GR0baYaSeWIAYdFB0veY5fWnMy2AdMpMjSiyQhMaOjFGjGehFWHydyJvEWsXiicJGcDjmBNqF8JJXe2Hw9IVf6C9B6yZMHW/9tHdyIcU74pcrIc= 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 1771890037485628.7656289113617; Mon, 23 Feb 2026 15:40:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXR-0006v1-Tc; Mon, 23 Feb 2026 18:40: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 1vufXO-0006qz-AI for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:26 -0500 Received: from qs-2002c-snip4-10.eps.apple.com ([57.103.87.160] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXL-0004PZ-IM for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:26 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 460BD18003B3; Mon, 23 Feb 2026 23:40:19 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 95E1718003A5; Mon, 23 Feb 2026 23:40:16 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890022; x=1774482022; bh=Tz3bvcnMe5CE3w/zA9xLDVXBu2mGec3HnRSmhDH3Hu8=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=ShIZ6ZrYDZMZJ7ru131yHuTEuwauvbEw9q6IgyIic1T9aAer7aPrmUSs2gmigYtmDSmMwFv1aJBuBcg9B61aQ25gudMDh7QiiE1i/+jP2tb8uC4TCr7M2VMTUcv9wmfoZmhIRqH6NoyQO6VLRAabv1j2HlJm6ePnis5O7+TYAVAMHEfrr8CtFHaXtjMlKnBVA8+V3qHXwnCCpr9qrjhmcdoNAtB0PO1EM01RNijaBq8QXIaGcm3Q4azR/5Z4FexeKefFj9hJRK2mEUsvCBZ2bCfRqakUIfZhrUSTDN5binmIiO/Jo314HqpjzZm/d4eH5EiHDjQkVaSXwVkBFqcBrg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 12/28] whpx: i386: remove remaining winhvemulation support code Date: Tue, 24 Feb 2026 00:39:34 +0100 Message-ID: <20260223233950.96076-13-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=VcH6/Vp9 c=1 sm=1 tr=0 ts=699ce565 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=UBzWkQmmy9v7-gCQCgEA:9 X-Proofpoint-GUID: HP2ygSEmt74cAwpVV6PJnG9nQ0k2vO83 X-Proofpoint-ORIG-GUID: HP2ygSEmt74cAwpVV6PJnG9nQ0k2vO83 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX67x2ZhWVYtco ToIWHKFXhw1tkUdOFLhZ+vE9wAIDu/1USP96CnrILCOCAC+7HEUhlyaE2QmDHMh8Cqrz7BNGMSl M39S8pk6H0PwfPxxSkuhNiqJDuIdPCcrh36lG0uL5oduLfTo7qsnQNbkyRzzGJ0GpI46gJTKG48 5WToP4EvT4dq6LE54I8Nj2YSxdvkS/mkvOlZYoOw3BPxSLxMN6VgxaBvNXtui9gg89cDSTsCqk/ 0zdcWtHBH/qATplX7MFTuT/x9HyUSiVKAhgNY1mMkn2WFz0cYTszyjbw5kesVm3Am1o7OlySN3r s3MFoRja7WqXNitb5YWemM3+TfDa+X4qGHQfgJmTs89oc7JzROyAy7tZsL7Qg0= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 mlxscore=0 phishscore=0 clxscore=1030 adultscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 mlxlogscore=999 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABuZesvvqCPMXaTnZg+SmoXBdkzOC5PZxQote2IfK7ke+vBbWXe+geG900J7yaQjUhgUWVo+ndem6QgK5kYUIivOk/ogxFkV7Z3fFLZ0xkfZpe+LeGl5Ki8ScC4Mw/EoOUEJyJfXXLrzzBBJsk3WMjPA8IRBYyBMKzR1/gqw0l2rqck5JEFkrLIsh89MNXyK0btKZ8ywZ2kaRMj1lPpRH4rfww944x5ASfBfzK0n71cCrQFmpLlGeQ/XMlbNEigrGwCf7YeOWcqVPii920YKj/GDofYrWjU1TkHyIBvKhmfr9Vt2da87W3xuey6WLzk6dlSoLUvQpdcHNTSp5w19w/1HCg53XibRiCAsXfLuHbQa5Ubs/gqCNFdcFxFi0DbQMHb6Xzl23yoKQiY1x82SkW6jWznvZINetUQvyLSoyJlQYH1C+FWCzwpgC7aMX5zmT16I9m/f17oo7YGrNzui+XPdjThqHL4WxfPEoKDOaGn+NOo4vCCJJXe8okgDohRwZMqcFPzuTDkkwSW+Eja6jK1zTQ+W6QZfIfhBR9u06KDE6m9uZ/6O92vp+dZqTxV7KklDbvC/C+/z4qJputr+2EQcxcHQn6IudUhiEKlptKvt+EGfspIuhKb58NWBYxlTJLztSullty1LfrjL6R3jTqPWTSF8dkktduW4FPY+D2CFc45nyTL1Y92N5m1FV//20tjPFiCI63cYeNL7nNS5WNBWX+HloJA6dPvaDv4IeV5AOS27FpNeObqQsqdRAvM6jRLDUYOmLtkBWVdXhBZ8Xf8c8Tt0q1cUIsoMsHIA== 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.87.160; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890041693158500 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:54:28 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=1771890094; cv=none; d=zohomail.com; s=zohoarc; b=OIzmGbp55jx4u4uxg2BVPzx0qjuhJVH3i2GNBl5UdQl2XZjZWTWPcu51kS3Hnpwyr+wkjdGsoHKZ3y5FeczLgfFUY82BJVs0GCamNt2gs3ULylIAb7skAqi8ugZdVqyF/VcQ60EcL+b7mrtSTRFRg+YIQzT8NQNolqIhVBaNLGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890094; 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=CiSoUf5SYSRGmSazY5pXj4xfZ0dBlTK1qoUwE+1g24NzCpeMI6S3mBU7t2BsRsIqm6aWph+RaxrQo8eOoMDFkbrJbwipphY9aCf9010erQg/BVjB8HhM8wNpAt/PM8GWgd1kEhuQYzwJPMqL3MsFdbwFuxY2Kfr8Cn5EBBldRbY= 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 177189009450325.96299995804236; Mon, 23 Feb 2026 15:41:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXP-0006sa-Cd; Mon, 23 Feb 2026 18:40: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 1vufXN-0006qO-W1 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:26 -0500 Received: from qs-2002g-snip4-11.eps.apple.com ([57.103.87.201] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXM-0004Pe-9t for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:25 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id D2D241800149; Mon, 23 Feb 2026 23:40:20 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 85BD018003B0; Mon, 23 Feb 2026 23:40:18 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890023; x=1774482023; bh=YKGmjTwasOTKHJc2TN0N83W04DQ/70JvOkGojdqvAPY=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=Y+sSkGCkYME7ufx0sLh0ZMf0khE6HKebyvwo4Myb7PEwQG2EuvxjsHGJCunW1nCBKW1KTsxrsnSHusDAtSyD+3VdA5ecpeCaAJVclegl4YcwvESQoRRsg9GQmPQ5w01flBC9QeitacJSPCS3tpSqAJ1Mtqd2VWkBM1D0sItjmplUCmM4+eHg0nk3IHP2lEJwt2sfU96U3Y0POfCgrLRqFlBVU1ZtC4CdzY4OJKYh6qAkByop9QpoEDK7vNrE3zwamumaVrpmR1MrUAaE+NEM33sgaxjex7ipzQM+DoL1gZGrk05wc8kjSTOW9QUCEKLH1YCh5l6oy4zl1xJgqXy+UQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 13/28] whpx: i386: remove messages Date: Tue, 24 Feb 2026 00:39:35 +0100 Message-ID: <20260223233950.96076-14-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-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: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX7Um6A/7c47+A LC+YsK30Zz42UMVoMg+H7d8GuiWfgopSVAHh5tYZupD9HBSjlYS7O+pgvgxvjAwvntuAPKcJhld yGnoWtwJYFxjXnGorsZNzMlXevMwBTVNqcm4xmKHL9xEvjLE2mE7iGlHkCziVMxotc5DS10Mfdi THxtfkB4S+fRpN4xVKkiiwuoXwQe2MMZp08OQwr6mVv3FhEBJXPcN3NXysTAFSKYLVryqmiKJ93 qj+BagsSYpxSUUTkAy2L3lZDuWuG5DJi09wexK7iCztewSisOorTgpAezbSvFEkPwdfsBEolICa t6pja+7b4psi3neT0+X9TU4YuYUful8Y1XZ2gewpGdtpJyfYzWPZnZG/dUCdTY= X-Proofpoint-GUID: vE74Hp7M4ml8bJyZFVqb4ASENjoi4-OM X-Authority-Info-Out: v=2.4 cv=C5jkCAP+ c=1 sm=1 tr=0 ts=699ce565 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==: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-ORIG-GUID: vE74Hp7M4ml8bJyZFVqb4ASENjoi4-OM 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 bulkscore=0 malwarescore=0 suspectscore=0 lowpriorityscore=0 adultscore=0 phishscore=0 spamscore=0 clxscore=1030 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABuvNoQw0Fi2JIXRjC1rbquUDsEgaU+tisX0Mj3pI5WAAHBphKfn4gVIh1YKQ2DSvCBKKUqDY13K0Rtd0ALUD39hRcPQx97ZEUoU2hrwUH7mgUm6nlk5Dthd0UA+lTeY9GIOhWHGU667gWT8xxIdZqGofK21DoK7ehpDlZB1SIGuIXe4qandEXZ/ukLt9Okd2thlUi5Na/ATrrHsBV07BB44bEIpSr5+UIiVmTwCBMMv9v6er/WtMs30sLH+uWY9WWylcXtIrhG6PjAgi0R3tk0LkyGjwayXhvFFGHweTrg7JQUMl3iuC7OgYsJmgESx49iKOI7s29G4i4WtvCckjuWCkcbCowdSoLIqPQ602AB01F1HakHag1Y1EX6CDRyi0NzSvuEZlLBha6MXOJho5bifoIlsHcSRN6evyXM1oI8TPUQWMPGuUCvYK6RuERn6DpH7yfICYkc4nnEyBoyjpUG2nxUp3KxtTvUgWB7ywGoNAUhWkAx2UkzyYgXMuN/SF/79/159st0NM83CLa1MDYwl5QJxl7bhEn9GI0tpHkBKa9HmPVJBvUx7eXN2T7CeBwHZIoTy6S+FvXzVsVsUGqPzrO/s6+2ryByoutnrrhyisBCvFVwMR39NC72LGgAu8BIeMG4QyAF/BcJy5CsMya0wrUueox8r5VtbyNFGH4ZwGf8Saj2AgSLmauh9RHYPxb4rM2uunAMiXruuIJMGt3+TpEK49lcFjjExY6Ba9f+6n3i1OobUaCbkTEwfZev/1zLiG783BJHEI10Gl6NDQ4p/HSt4oxoLZpA5M= 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.87.201; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890095815158500 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:54:28 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=1771890041; cv=none; d=zohomail.com; s=zohoarc; b=CU/47rn/SLBcWRz2xgcrF11/DNVvXCrxvR5WL9c1ojCgkPr+FWq0iEd8HrK/dKRU6JhSsIiYTRIIUOwBWGq1d82b/j7lPpuOH6OISGD3oJlvc6aHeZm+RObeapAXWXmfIIOiYE/9YVNQCNxbrIUFoevgoIXliR6yjCD3AvQ5wd8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890041; 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=cltTLS0hrfIkrceTyJWRPA/Zs8GSBrnWtLmesluQ2TJN+DIsx6coGrh0NoKmrXoK/uKsBRJZ2hLgopUKHMp+RNXffZtK+SIkj/bG4ZA2KSGGoj1/EZ+M75KLyu9M7SxtqEzDeI4yzrwLq6whjL8YiRTn3i+ZVPMANX9gu0ZbW+U= 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 1771890041357976.6500908923434; Mon, 23 Feb 2026 15:40:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXR-0006uH-2P; Mon, 23 Feb 2026 18:40: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 1vufXP-0006sX-88 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:27 -0500 Received: from qs-2002d-snip4-1.eps.apple.com ([57.103.87.162] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXM-0004Pd-Ah for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:26 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 7C63E18003AF; Mon, 23 Feb 2026 23:40:22 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 7C74618003B5; Mon, 23 Feb 2026 23:40:20 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890023; x=1774482023; bh=op64aUwd3kHeSL+XTt7uxWfJ6n/JYbXZSlN/Ec+uOgk=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Py80wF9lv9we2yFYzggr1T5vKIy0WZxh1WZOzmB4UFKvlKwlQBBSCKVR59gUCQi+ossbX2j/9FpjQa2vet8y+oG5KCGJTjMax8fyNyPXHjdV6uBuY1paQqpuCJo8CDU3khsi31iJl+AUBFbuuD7eYNQeRsxAXGKqakIWyKO96ikQec3HfZbOHuaCjTkbAR70qrcnly29Tpi40Uwg9cjgFAkDsonoLyq9tt78VNskR64olvO90Z+WM2aHWfSFHsBp86Zca6+BHKejxF9Gd53cEUYVjFXGHZ9UvWBv3rYdUWuezXO6F/bmwuqrojgNhEQ5runXw2F/tBkbgBlgJjZmKA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 14/28] whpx: i386: remove CPUID trapping Date: Tue, 24 Feb 2026 00:39:36 +0100 Message-ID: <20260223233950.96076-15-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=MvxfKmae c=1 sm=1 tr=0 ts=699ce566 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=Gk9p9Fe9aJpBGj35TJ8A:9 X-Proofpoint-ORIG-GUID: tT-_xX84vP4_F9XOoBvPZ5coTHQKJHbE X-Proofpoint-GUID: tT-_xX84vP4_F9XOoBvPZ5coTHQKJHbE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX8TllSzLAVdkW jjCTdHL89a70gw4t1eqdc3K7+ZVX7aMARR3OT5iV9/+/s8HXA6wdvMKLrzlzswu3m9a76MVvn2T FAcqmRR/DaZ34adSH/VIrUE2S425Eaacpj39cTeVwnuImUlpwVUsPV3zajMjJ6ZEwBj5LAgwKjw 75VYQruII2DwiVLyvALHHF69ux+bzQ7rqGNvHOsDRL651D9PSHvss7nf7shZ2j6gUOwOUqr1Ux0 eqx6W53ZiHQJ3W/zZs9UWo9tEDBeyReI3tbWeoKQEln7b9Abpi5kUMzFSlh9EjEo9MV2zULFmWG RXAninelg236rzHYbDwoFWUaDeLoIVKaKRQf2FZSavE07E0rMmXK4BIDBtzaNo= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxlogscore=999 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1030 phishscore=0 malwarescore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABGvinVmvP9FEW6x0ZHISKU6UIcm+nNCMLHgYt0RGekh0PY2AuY+f51rlduD8DGXeKU6onrOgdcyyYPAdBgei6U660dwS9xWg0kDaP77ChyTMRU8Qc6zDsvikmi6y3BIa2h5pvhfGuBmgIeLVmLkgu/EBKsa8JrHkmAnsuZLApkEPmfLlX6Mc0CWMTCImXeo12d/qswyR4mQoVEXA6xWOm09xbIxKvOygtMgswvgnKyH4mfJOyzJ6P9IcAzyqY71VZVwAZiOpj0TnzgUp4dxvNYYEhEso59JKnfubq2LsjR3847sKzzVLNNj1rsBce1XZvnCvKmw5v/Y3/ZGxUj++rCkThWc5zn6vJZ3cniHowLcSYq9zNb8fIg/TcQIRz5pIyCMzGA9Jo4eYMq5ADQo+0yEF4BSLKJy46U86yZAOKnSYa1OWMSFu3SvFC+V8vmbhRUQmZJTB1SBJfef0PBT/PQ0tORmw5iAu9OOWUUGx51JZs6ZOhUb+Rn0AUAJuLfTyMug/emuqvzI/xRi9T6t5BlLeBp0qpWlO76NtvKPyL+hMXpmXuUtcisKcLXpWAg1nKs3Md6AOdgq7gh3Ph9KWZPc7jZWdzamunGOcbTi/GmPA7HUysjS/JDpNSjSb2JRN7SH1/PHq+bzTdB3fIcqbBlq63ZeSIGgLhowLa0WtINBpYU9IcT3dKwbtnonFMl0mT04Xa4GgBzUIxotLvYxDu1prEqXYYg8O8+yhxE8HDfQh5aTsVek2W6g4+4/ZlHQ056QWHeGU4I8sho7rZsO5SX6hZDJQEaBEKjqIMJe0Yz7Cnow== 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.87.162; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890043678158500 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:54:28 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=1771890189; cv=none; d=zohomail.com; s=zohoarc; b=BPFmE+o9/WOr7fQ6NskdkLSoflAn3/PmkMF8+ngmNO5EiAVrgrwA79df07WWQX6EJ3DQKP4z/Qim87XSk1ow/81WRr1hpabFO2SyBNqK2fyVe6HZlG3KtGaritv8VS8aOX6TGo0IoqiIZk/vLWW5/Krh6egl6bOn5DgyTH4lJ58= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890189; 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=Lu1k3lOfHS7OJhUoNMekG28bm+9v+cXHJ5LS8UbVW1CB/N3JMGIPovCFyejzG6gXkU0kA4m0Y40whx2DYHfpWSZJ1616ZmwI7QgX8YP6npspB7A+xCi+b9eDtJMTgdfYnRP51wrWy/tr7Dcvmebf4KtjyKGGqCLSFUJp8CZDcvY= 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 1771890189039430.57876229260705; Mon, 23 Feb 2026 15:43:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXV-0006wp-Bo; Mon, 23 Feb 2026 18:40:33 -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 1vufXT-0006w8-CD for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:31 -0500 Received: from qs-2002i-snip4-6.eps.apple.com ([57.103.87.217] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXR-0004Qu-Id for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:31 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 53345180010D; Mon, 23 Feb 2026 23:40:24 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 7B12318003AE; Mon, 23 Feb 2026 23:40:22 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890029; x=1774482029; bh=tErMiEuDLXt0dMED3y+T60xeOyEgc7UicdCqP1DD7/0=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:x-icloud-hme; b=CMiKQauZA1x+SK1kdmxSrE4+qqWQhXGztOd/cpOCq9KjvG9TcJ7QS5d/+Coy72Ct+3/LQxPMPLzeCXC8ws0TxeF26BBrz0UdodbzNSmNyWtQUaqJdhk7NP9CBvc/1llebz6jFTGQ8wylUOg+Tg7UasuCXii0UdpRWhyCnOrG/4REFRfauoil+FVSAwNSuvoUJujs5ZK8VywkXD9RZ6WOhHVpJnDQcnJv2JmV6L9FYaJ/U25ReDoAUR7trZ0clTUQKQEaXg3iPPBNmUFkz08/Y/+wpirHoDRG+8V/qUctSbhlmL1Owm+pBBsdXZZd2/B2xD14e/+T5QylcJUuxFT2/g== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 15/28] whpx: common, i386, arm: rework state levels Date: Tue, 24 Feb 2026 00:39:37 +0100 Message-ID: <20260223233950.96076-16-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-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: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX0BmSDO/avJMf akjPdNOBEsijPSZ6iunMEqTzA+RYMJ9L8vnW41BKwx2Oe88YLz9MLBDb5ql6OFA9xEP8tmUCej2 73mcBC3SzZhScalDvzDfIw1Pb/MQAXQV25aQZyAKyaED68Wu+3t8cQP4rJxnzEMpdPF1T+rPk56 23tAfNYJ3syUXUF4D/6D5sBQ6TtW2OJEuv2qNfWvpU61N99aaFwTvONh8iXphUhaTuTF3aACvz1 J7xgAgCecoqWGbRdBMKm90STctuDp/NzKENSYcx9Wj5kv796c4WH7rOhtI5KWYCwsLF+rx6P+Y9 1VhXxe0eqW9n3TYLqUT+CE0J57qBMTra8oib5ULFk7MgNyypm5CobQV5ej7MUI= X-Proofpoint-GUID: cEpz0EnJBBILq8oG7Ubcnr2G9BqKszF8 X-Authority-Info-Out: v=2.4 cv=C/PkCAP+ c=1 sm=1 tr=0 ts=699ce56b cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==: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-ORIG-GUID: cEpz0EnJBBILq8oG7Ubcnr2G9BqKszF8 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 lowpriorityscore=0 spamscore=0 mlxlogscore=999 mlxscore=0 suspectscore=0 adultscore=0 malwarescore=0 phishscore=0 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABSTk8mWwGNw6v4okc3k9lmwJ5aeYVyiRH/Ll3IH39ZQYpndN9n7HnZfnl9Q0q4Us55y+KezKVxpQFg9hRFYjqRKYFMzI1ZURCrl6sCk0OIw879neyIsaUIuXQRbFDIDWa6tKn8ACW3gFpKlIIMtts9Z6f1t4UIydEwze/3kOvL+MT5AFuTHvzSx4qwma1WFFGuTs90rf6ke7snk6voMJHvTziIfaBnGf2zmykXUjuXU52NBEYIW5VvvIF5mDzaSlaTbMBLwOBs6y6vunjSJsUq23i2a7kYP5XZa2SOQZHPv00EI/6TOxzi8PJAt8cIQuOj+6iCvhHS5iF7Ca8Et+I7escKczIvR8fq289tU5d7/v0aruEhj90qocetozPBapIIHBaq7DnRMesS9+auT/hpiGVWxud1tHQJKwaFR3UFhGkJkP9W7iWrViVXbyFfN1Sp3k/fmBHDKd5YnWoY1oreCUQfCiKGhEvQOEmzWkC9CD/nepvF84pnKcsfECP+rwBZsVsLHdz0usIYvrI0cbXyz8zDUc5+6CbtQZ+7q8vT3VfmoTrEDV+KejOb40T+/q4KqReXDQDoqexdxQAdv0BUbHBjC7Tzw65BC5UtFLU3+A3Vv/IRztCpvO57JP0RIRT9rgFmw+Ca4j/cfd5JwgcrbOrJ7lSYJh4KUW2gywC6nrbX3j/PD5qiEf5/wXiViE279by4qeMOHGnViodFTBxjxQ0D0IV5d3PvyJ0aIedWNk1atjVAESWc7wg9YIPLi6lVYTMMxbYIs8RaWH/jYv5 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.87.217; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890190287158500 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:54:28 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=1771890054; cv=none; d=zohomail.com; s=zohoarc; b=ePej3kk8IqkFARfDQIwwJmyxG77MF6M+2a3lf3Uu7V7j59UV59Msm3girbxWiqFcUs7ttxUZGBFbKi8ZU0kXsXoclf8ySxIhuohTJN7niC4rYquaKX622pNYIxLV5kEcpAxU9riv9eyioJ8FXmp3jpNycsEti9KpOD+G90nw3CA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890054; 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=n0s+mtyfNl2o+63FBlwFz2WMgjunIXKWEkJ80hhdGco+Cmy/0aW5sF4k8vS7T5pB2vhZDeb/vWJx6HFPqoaRgDNkOXUKmItNVgYOCPMkvw56YDY0AxyXtoNgj4pcCyC8tj4oZumfPEszR1K42Un0V8LaVUYuntSZIb8pTPtsUcw= 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 1771890054232599.6126203855254; Mon, 23 Feb 2026 15:40:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXS-0006vv-Rt; Mon, 23 Feb 2026 18:40: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 1vufXR-0006v2-Re for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:29 -0500 Received: from qs-2002g-snip4-1.eps.apple.com ([57.103.87.192] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXP-0004Qe-VX for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:29 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 6E0D31800171; Mon, 23 Feb 2026 23:40:26 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 7A27F18000A3; Mon, 23 Feb 2026 23:40:24 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890027; x=1774482027; bh=WRWOr4bOqspFilOnrREUflTllQ5A/6LuLnTDO613usU=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Y3ehnzSx1n+yIFm2Mb1zI8Yn+nTfsbZ/d013ORYbk3lUPzANjJBZ6aDy05H6v8XgQxH5g7jLHXYwOBjCG1J9QxRc7DkdvHfwINhAQfDhqVI4Y7k6A/lvTmbk2of+sZFjAWKI1U4MIwgx4YHcL/5jRTeOGEJyWTgSE85pHmIebGWj1h59HsAuuTM7e47y+FK38NmP72EMBw+9tzqkfL5fm6t2ihemN06loaNdBFC/mRzRj5yR6hCVUbk4Y56wxNEqRze1bLDIxJICKU8G8ERwDbahN3deikwjQPQclR5efPMusDr1jxpw+xINPtnuzf0kWpZjnHgEjdpGb9xuEi8Kew== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 16/28] whpx: i386: saving/restoring less state for WHPX_LEVEL_FAST_RUNTIME_STATE Date: Tue, 24 Feb 2026 00:39:38 +0100 Message-ID: <20260223233950.96076-17-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: 1KP1NO_08rpMJh_V8-JgpBK8Y5FWRT1k X-Authority-Info-Out: v=2.4 cv=D79K6/Rj c=1 sm=1 tr=0 ts=699ce56a cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=pGLkceISAAAA:8 a=d1mOUhxfU30B8FCplPMA:9 X-Proofpoint-GUID: 1KP1NO_08rpMJh_V8-JgpBK8Y5FWRT1k X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX+GDr5mkouw8P ISFWUSVOQJWykwJuphs6eushay9suUfr/4GrlBgT/+CwBJA5nw4/zc0HYkCvWyF4GcVrQoPJz+w KBrB4ZdNFuctgCUS/kQOQtpqckAv5I3U04B2xDKfIIctT/AZ810DI7PMwEOCu974ojVOuX2FwX0 H1uHEkT8hBgxQPw+JMTtCbIcI7V71OBKfnE2NC2YaJO9WLKSQeMcXSEkGzN4iDZXGnEdQV3jsUC MkNPwOsAbsq4jPBo8lq8Wbus2/9X0H9zL6TlMq27bdsLY41QM3ovq2AzGCoZNFj2FzTV6itK3Zm R2PyXs7JN2xjHU8oqZ8mzwXSiKKdRQwj0GK90WcYr9l1F5l0LIrDMi4XakiueQ= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 lowpriorityscore=0 clxscore=1030 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 mlxlogscore=999 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABa6zGQpv6eGcHvZlmGTvAwtBETZ3uFmX1d2Fx7Ie1ivNVQykpalJKK5CB29u5tJRLGdOZBU8iNW7Etac/WgP4DV4CJgE7CfgbQFeoj0M6YlADgL66xSdDxrY3C9TzOACApwTptGK69ENaucdrYQZ1h3PiwK4gf4ush3TaBE35X6BYRxjrsrGeYvsn+kfdjetxfg+l3T+nTWoSwSTbA5Z1sDNtn5uswSoucRkLEFKzhaL782RG7A8e1Wq5KPZtTO9lK3Zukxv/K+im6YSL/FIp+ZXv7xNv651gFgf70MHXTbBKilFGv4g6PNHrAIB/YIUEF8JEibkong0ylIs7agxGrv0NNzn2bMZ17NuRVxQDSPUkQpJURi3l6Cs4uWzqyPEpt38wYFu6jY9xsr2wE/M7hJzwXgPnBUgx0yFgeBp6xirdkvAjPD+rj5q12hZKDZvExFiY0r7VisHyB8GyQUJeNxCbKQ0fiVPzWHpO+ACAwQdX4GJ8NE3btS/2oBts1Ey4LvMNfJA1I1pKUqpOGq8ElZPTsktnYMofcdYJNVCcFYNqYMBNQ5Dulkd3QOdKCDnl8UUDREPV8lLA/jtLLMmYUg14PAbYULKAC1/iW/G9pL7a79XA67q+vut13bb+1icGusfWYthqTHRZuyyz6A8+ypanUVWDXmj/YyHo7ymx0wCRdf28tSj9wc7aFfDLlJLG3Zptz8hqZT5DzvG+KlNgkL8Ept6/4Nul0qLAD7xsZgk4m3zGcS1lMjtDF3LEWbkA7V+3X/qKP/QM0umEWajNaOGMfoduN0Iw0UHO+IReZ3bMTaiP8sfJ 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.87.192; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890056007158500 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:54:28 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=1771890187; cv=none; d=zohomail.com; s=zohoarc; b=DE5BqNLjc2Edlru62xKqUS42N7Ag1b0cqrIuVUCFtxBkYY7g5o3IoUFWnTZlE0iEeLliikY698LSj2EitZTFlX2wsNIFEml/JxZloehYZEwTbn22pH1ZzpyKTQ/MEdllXMPTTEoZ5UpIW6tcGeVFzkDFfvqWG7E4eqyTSVQsXHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890187; 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=G6bqqwNLKiTM/3auHi31kdYUvcixeaDmfTHHeK5nc6jDz1ydy396Lko00A305YWzOhU9045TaRtE6+2jA5J6lOPSxZI2CJ3bHSz4te5fg04pRT/oCqyXIQ6v8I4iuav9FL4JIQ192eojVp6aS/bVSdCoxLFfPlcDDFLVgsYfNyU= 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 177189018780964.64946267545042; Mon, 23 Feb 2026 15:43:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXV-0006wo-B9; Mon, 23 Feb 2026 18:40:33 -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 1vufXT-0006wF-Ko for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:31 -0500 Received: from qs-2002i-snip4-1.eps.apple.com ([57.103.87.212] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXS-0004R0-5N for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:31 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 5DAE7180039A; Mon, 23 Feb 2026 23:40:28 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 69A9C180013D; Mon, 23 Feb 2026 23:40:26 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890029; x=1774482029; bh=XgFRpT3feuG6/cTAi1iAFTBe6D91Ph2uKDNsaSuHVhw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=OxRZ20k+JhdCKnlMR4OnBp81CfxLlfnW6+aY2X/Sf85N4d/dfyvK4Upls+U6Le4NkRjqc3fuU/BtgCW+ktU5sDmYy/VUNZ6C0V2vQYfsjJUV2HuSljpaks3c3GnxN2FnZihbWvWa24r9BAoH7M6Q8FuQ9S47aiMA1CfSonugYnkeBUy2nZ7gWsvr2qtrIOT5K+NynE3IyAmQNBc7FW+dzhP1lRjhqVMIOKYCrQuuRVgzFA73eIW5EoLBX50/Gn1JLMAVnfkMc+rYC8j0h9p2YLv7F4QqU34jb+3oRobcuhjacLVwG26IwYdX05TJS+DMIVLuWF7/HJuSdhkhDsWwbg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 17/28] target/i386: mshv, emulate: move the generic x86 helpers to target/i386/emulate Date: Tue, 24 Feb 2026 00:39:39 +0100 Message-ID: <20260223233950.96076-18-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=Crqys34D c=1 sm=1 tr=0 ts=699ce56c cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=BYAFF96DE6y5VNP45KIA:9 X-Proofpoint-GUID: YUN_NCllnVhhLAc4TovCUQiBNteu-2Ft X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX7nronBddq1L9 IMhbZ9qbd83CI6HhPzn8ISc8PTC8xqE+8VfaKu9T95AZOBPyPS+CEu+N917YWSHKJL+kJE5mBwf 3XIoKgG91uPpeaTFawYmCoyWfxngUtuTHKT7ffCaFn4+wDcEviJ2qjTZ9UkpTDCAtFtypnkjPoh HDYzg+vWXOndIWLQ393ytcHC6fEqfSicTmPpW9kXiDpRo2axwZJPJrUtpQRD41UZ0IQguq44mvH KdNlje0Sjyr7u3SK7tolr/vJHkr0+PPF49+T048GMnQvkjo72pwv81fj6UJczzeIuDec52PGsCO zK3poCIDsMtXaTbHKjgueq3d9nT77Q7ZSe5rlckpupL9kbZ8CrGLMCLK1PyfmA= X-Proofpoint-ORIG-GUID: YUN_NCllnVhhLAc4TovCUQiBNteu-2Ft 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 suspectscore=0 lowpriorityscore=0 phishscore=0 mlxscore=0 spamscore=0 malwarescore=0 mlxlogscore=823 clxscore=1030 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABv08g9+VQC3IZ2/cSsk/z28NZRv1isvvML1DpbgeROqY3ZpsEPBprUBb6jijk7WTZCZBTZcgL+GctoZe4EJrcw+NOrx9NwDF2Wh8EKO4p9K6LQP9TXYy9553ppUiv3A4lQN9XFvJeaqfJDJh2WzXMpcMXpVGJV0uSonHg+ZeodudlT9cRkpp5ULRZO6Vz4zVHtqKmi9gL/iS/Gee7j8cVTKhUZyV20XNn/kfLC1YNfnqbb+Znt9zRushxzMHeEGz3LC9zgIzJqb8wvTzCfGkq1HZpR+gnXEss4cOAs3z/+8PpQMcdQ78xL6kRZlykojNKKYOHrEO8/hPCkH919QMyPARNeWdOXMKteifXUVEpOXGQ11/wZKlZNjZLzFZ+wfAUcSv04z992q1ZnPNbuOmdjIPkRHq6pn0VWgkupPiBknwNNNwMqbNSio23ZI2kSfc1gogTdFnfbxei0ieG16sL9E026C+pGAtxLrMKJdVRcug5TujVafiGl2UggFRpt4H4l0evZpXG8JABnoT9HBGnrQuU+CTlSRqvRwYt9e6uDZjR+7XbF7X8ZRhsAXq6eeJpGjjvgkK8zhdD5LIRAHp4ZbXmx1vfe+TIB1iEKjh7GkxUVc9wi39p5H+4JR8P4LuZD/rxNPP6g1+DKiXvnZ2mC8poWOYifq7jI2QclFpbg+4nYyPBvwIRAxVVbdwKxWhQWTyGV5gV90cKq+rJ9iYVtQiyTFaNtjMAX5cTR6Im5kdNaK6HQTv4xqz7qnW6kvQ/mDZtVqYt3JtvwQO2is8JIWCQrJ52LlEol8M1jQ== 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.87.212; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890188183158500 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:54:28 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=1771890091; cv=none; d=zohomail.com; s=zohoarc; b=VwAUxX9id2X5PP4kUS4a3HxMbkL79jQB0DrtgyAXTY2bfw0H3ws+jC6eSBEw86kC4MWWd8Ak3XNSCYUrJwABymS7FCXhmdLIcEQtI6uI4LRzSCdcneICk/oGVKjmH65Ak7wj0Fq94oQ/egGQMvhRMlvHTxjAx95nG1NFd5S+21U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890091; 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=lLnnNB67x8Y+HbvOCLQubkzvrFUH16qYH10LbwY7OGHjfbo0Z/1kbg9ME/FprpcPaYVEwybu6NBdhCohey+1pm/WKdl2x62RpUj234M/BY4XH5VAJKGiv5mH96BaozGVvloY2BGnq0eTXtgJCpPbhrE4A8YkG4rpRhxye8zwaLg= 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 1771890091130923.5399191488797; Mon, 23 Feb 2026 15:41:31 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXb-00071k-Gz; Mon, 23 Feb 2026 18:40:39 -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 1vufXY-0006zG-TW for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:36 -0500 Received: from qs-2002h-snip4-4.eps.apple.com ([57.103.87.205] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXX-0004Re-BZ for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:36 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id CCB3018003AE; Mon, 23 Feb 2026 23:40:30 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 571571800395; Mon, 23 Feb 2026 23:40:28 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890033; x=1774482033; bh=IYoDu1Lf/5IVuiCOr/JCatr7nNqgDdTH9YXn2YCe0wI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=ZCsEWU2WBjlJlJORXETj42gcYbQq/BTa/MPaVfdYJKq2o0gzFjA6RwCmCKzoVV0Jrxl1gRklYlUW4Y3Ia8aXncW0yAfI6vHiOZ9i91EfzzKfemWj01RkGTRevPX/KZZFKEL213OMxN4Sy5H15K1VBpvAJ+B/ANt9T5b/qwJKsT+HJX9gMsxruc6smqlJNJSiV2OXY6l64fPLvh4Xu7m7GXANV9sYH9IdMRQW4AlLp8NuhmXnCY6hguOpaU+q3CqUt/ScX/bKjoLYPMnqQjri+utzr1Xh/1xMoukfvKDy32yQJiiMD1z4gkf3EldJiQYVW7eYoxK95y1azcSF9HeShA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 18/28] target/i386: emulate: 5-level paging for the page table walker Date: Tue, 24 Feb 2026 00:39:40 +0100 Message-ID: <20260223233950.96076-19-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX0c2lWgE76uzI 8wdeOUiounPL+tFOYmXImn6leI3RGDSr3zn94sELMY7WVEQzbBNXi0AxaGmhU0aTKZEI6ysduHC EL7diL21PfNeHXFXqcgkJMiwzJq93A4wDM74o/688VofZDjJLb2xHUj8CxCMsndVbDduUUCkZt1 9L9Ws5Kgb+I9GUcZPa7RBgMJUfuUd4G1Op2i3MPiR2FSpEQ/D3irKUYsHpiRJtgtZzPWoBfKggK +Ymn2vG2HOmj0Bz5+rIbDzptVfbgeWlP0LHZOPZVoOANYGhCYBYQ6skKs7HluDEb5iS4vxoeT8E h4S6bm7EttMGnLasoVAgu9++KQ2vls0UDppXitFlm5PnFxvRzzOhqtv1nhtOnM= X-Authority-Info-Out: v=2.4 cv=PZryRyhd c=1 sm=1 tr=0 ts=699ce56f cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=A61MTNvy9Chr7HSFv3YA:9 X-Proofpoint-ORIG-GUID: kI5Q1hNpvC8-IcxPw1xWngOrAhcIKrz0 X-Proofpoint-GUID: kI5Q1hNpvC8-IcxPw1xWngOrAhcIKrz0 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 malwarescore=0 suspectscore=0 mlxscore=0 phishscore=0 adultscore=0 clxscore=1030 lowpriorityscore=0 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABdImDRWC7hS7H8K7QAMIo6Xhv69XRtQrowP88b0tU3I2PgigQdcpVUMCnMRswLD8CYEAd6aom9mRCKYa2VvABaYcrRDXEElepzbSsi+Dm59+VmYR9FLV9Tbg+QPKg7lq6caTEaoBI6oIuKUPLpVafsNXKVVNtg/X+cc6cbNBDEelSPBubW2wMjnzn8oMSBeZmJjFxVaM9Cfv3M8NDYq6O9ENjKGIhDJ5z9PFxi8vQ4ct/jX0l0O9fxXv6PYFHdHPfBnLQT95IFGBVxi5wgn4jsR0koPaLsizmBqzomV9ut7pxjG/Zs27iNVWU2ZLir+q4V9DcG2w2ezL4GNom/zy3MABhsM2F4almHqp8fDWOiD2runLSuMVXvfDcNjA1wPDaQIgRtwNUpSM3WzgmUBQjMFi3UEU3dR/25iWj0PQObtpXJO+HqDc+n/gjsco6ip5n83t2Z3BmcBCQnmWV6kF5lj9owGPBhB79CR55/kKGFefmCd3FAiuI922uu9Oo/rQg+ASL7z4r2Zq1YS6ATDbGROb/ofpzEQjK5Jo4Ec77f1vJ48OQJ3gCa+E1yb5NxOKyCCEGabgwyMPcvVOKNZaHZmdE0ihULbx5QskacXK335qmR4WIm6D2yAUCT6IORWoO6PO9J+txxC44B18qmjtdrwYCes8NPKfi0x7j5o/drI3g09Aj6EV35RlL6uxFrR3se645gLG5HVcb+uDdKhxXlDHg9TWfEo3euOAFDvl7who8f8Mo0uACFGgIxiWCNKNo8vrLcvcIsyR7lji3gRTT5nSYDLZzw2F1Ng== 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.87.205; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890092019158500 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:54:28 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=1771890070; cv=none; d=zohomail.com; s=zohoarc; b=Ex9Jw7N7xtX81Yt1xqXytS41pPb7MHNnfb1mMdvPShTieJ6RZ/nx3SXReNIt1bN9SojBIJ1tZRuYsQ7E7RMUncsBkWaVmu+N8Td+fdQ8RDBQmbmZjLnpow4UYOwT1nOmcRBcXBDqlpAa3yu09CpTC2x7DCXANLHilzrxAcCRTEs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890070; 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=j5paisOQ1VFLkKAryqWQSX7Vkmcjkzogoegd50HGWeA=; b=WTyjJ1g2uGirbPpf3Bt/1p/lWZUMeq9mFJvNVzCUwzSYD41piB0DZgQ+3G31hpCCFYWHwz+fjDi1y5GDKoanZUqxoFQMr4aLL9eh6ZqYvjQmTvTfmWSrBEurdS+opgwSCP2OAmT8HubCCAXQ3m/H8JP+qLJ6/ge+gL9lq5wknE4= 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 1771890070450596.7865053824902; Mon, 23 Feb 2026 15:41:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXa-00071H-PT; Mon, 23 Feb 2026 18:40:38 -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 1vufXY-0006z9-OD for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:36 -0500 Received: from qs-2002g-snip4-11.eps.apple.com ([57.103.87.201] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXV-0004RY-Pr for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:36 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 4062018003A5; Mon, 23 Feb 2026 23:40:32 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 4EA5C18003A8; Mon, 23 Feb 2026 23:40:30 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890033; x=1774482033; bh=j5paisOQ1VFLkKAryqWQSX7Vkmcjkzogoegd50HGWeA=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=b66XbFS5JArAUKkZaOFnKOlFz9UBjPi6qTBsnORyMzqHvtZ+Tq0riq5J+b31AwUtO7AZI9sjRukuKgGozp367uoSm/NNFOsRL3hWyjF7yjH4Mk7g6sxWl9m9Dq9tpUVTvUzXHwXuZgZSJN8PuYlGmyXCTcEc5qM7yQffVmiZQm1UlGFEWYEpzCO7XBc3j3re7/T1HJ/ppCdGdJO6K+Htoh2MhEFrHw0o6iSsJUikFjec8QMkAzFL1GT9gLmBmNcIldITj8Gi1wrwclnAZjQX5YNThSX1e88xPyMqjcP9WAGQKyccPYYP85OdcY0IL+NhgGyZTE3WkjFDzu1wN7L1Lg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 19/28] target/i386: emulate, hvf, mshv: rework MMU code Date: Tue, 24 Feb 2026 00:39:41 +0100 Message-ID: <20260223233950.96076-20-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: NFf_su9-enqNl0bIDAGyUXkvEK0wor_y X-Authority-Info-Out: v=2.4 cv=GO0F0+NK c=1 sm=1 tr=0 ts=699ce570 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=NZS8YYHO3DlyE-T6x6gA:9 X-Proofpoint-ORIG-GUID: NFf_su9-enqNl0bIDAGyUXkvEK0wor_y X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX5alBW34s28OG rm2xO9ZIgL9FU9y5FqB/d1Waog6C6d/p0XAMonQ6dTe9oTGPZ7hTDdLEt37g6PSGXxsCwJsyrk4 UFufuyVVw3GDGhV9hQYjL87L7D6FCloZW8aSFbcTIX3++DrCIg8Xhn95tHGy7yjgePfRIOoSU/N WwVB3N3z9vWPnPx9sJzkBlit7VAC+kcrjrAPHtdxQAVOl5K459kqHsBg/8+rjCMsCHM8e9P9QNY +ydIRU6bsCwfZVPrhfDI/r5daCY+e9hKw1QBYSRLxZASRspXBRvTAQ6i/R/ag+Mrej9by+lrvrd KcrGX05b+6kxMwuVceHtyRc+mqBxnaV51VV90Y5E2fQBbbu9DBg06uL88WvzxM= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 mlxlogscore=999 lowpriorityscore=0 bulkscore=0 malwarescore=0 phishscore=0 mlxscore=0 adultscore=0 suspectscore=0 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAAB8klt1Zy12bjbxa1dbPA6/kUrPkLpUTU0IaO7lqT2ZHhP1RBYkU/IE7DEXaIUT5qmcSw9290hF9EWQ6TbZaKtpI++gGzIV4gCtVEv6PXbXcOcbw9iAkVV9jbR3kwLTgaLv1EiBpneC1+j2ES5KTMNhA+pJFh19JaGqpUfv/Gz5wvO7tFXndm/tGYbBd9PqER3DnlYaQr8Ahg5WW/Y0BT8dECbsad/2RDcSn2XY8wjkXzhnoXNW2aw6arVH31mIxJUg2PTHfFSEDb3TGfCpfWQT7Uou8/bCu72+a9Yf8lr7aLsVDoolMPbj08w5N9J89eyi1TtcOgcVAt4lEdLfAFQar2iqZUDA0991Ah8FoyB5wD7Xzf+LzagXPGy43AZDQybgvwRM5dI+NQspKazWBh5FlTM8P+kxxwI1DLNW/OqfNt9piWOrkcAGbCseDpRraI18SmdtxR184QrzabuCzRyR4ZYLhQB/E9Hzhs+30IkNctyvNuHRDiw/MwvLWrurS4iWI5mR+VScEo+oyh0ck7lsDVi0iLB0xfCvhLlfzBuAyoRJ+1vX48YxafmdI68DBaGmTuguQbDPLrokdkPtWnhsIeIfgzlpbAS5nT/gxnn4HXTEB7ZDJxbyACkbVncLoiPZiRypgCIH5MDAyTKrE42mFODAPcDm/umGGPuucewnt5eFZ+x+eAFwjhBcVQvZsJII2Hm19NesrYC/BR441oLdy3b8t6uyYfjhJZHtTVv3aMsdzpx/awlg0wPt7jJyj72ws3yI3wR8iOhzlQH 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.87.201; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890071733158500 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 | 146 +++++++++++++++++++----------- 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, 146 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..f9ef1070fb 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -21,7 +21,9 @@ #include "cpu.h" #include "system/address-spaces.h" #include "system/memory.h" +#include "qemu/error-report.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 +34,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 +47,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 +108,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 +124,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 +178,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 +187,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 +214,111 @@ 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) { + warn_report("write to unmapped mmio region gpa=3D0x%llx size= =3D%i", gpa, bytes); + 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) { + warn_report("read from unmapped mmio region gpa=3D0x%llx size= =3D%i", gpa, bytes); + 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:54:28 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=1771890070; cv=none; d=zohomail.com; s=zohoarc; b=EWhZHtov246aTgcjQTVxN1yTFhryF8Mem1seHOg1FIyeGorIsKB5TgXp/ogtqXHdnMYVO3XMgAX+kxKA3JhfDqhVdXnFhtfxS/RbK1847jyCIyn1HlgiLD7Kfw4PWG5i6LLeVFxZ4GNZ2uE12SFug2lM7FqLjD3qvB3eq6SeALE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890070; 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=EK881XYEdhIKGn5jqfABxFJs6bEyZh0fbLMAV3SJXH6BbZr0hLvGH3vZ0T7aNy0Q+CbLoG5R75ZMQf167Zjs7NChZPm8vJ7RK5aBaz1Dz2m8cB235yi2M+yJpH7IzpsnjwQ71x1fupFQYDo0+JIepfcx6CPZQuGSA5A/Aox+7mI= 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 1771890070012311.1013512477334; Mon, 23 Feb 2026 15:41:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXc-00072b-6i; Mon, 23 Feb 2026 18:40:40 -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 1vufXZ-00070W-Sf for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:37 -0500 Received: from qs-2002d-snip4-11.eps.apple.com ([57.103.87.171] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXX-0004Rh-J7 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:37 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 31B4818003AD; Mon, 23 Feb 2026 23:40:34 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 3D1961800149; Mon, 23 Feb 2026 23:40:32 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890034; x=1774482034; bh=A04BlxLz7/khJrSYJAsW3ORmDALVzlVjhIJh6HzuFL4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=WWHMCzCtVh0nISSgReieykXTIpLXNlak9hB91jaemVLPJwLqUaXphZotYDnxqOQh/l7aMg6SN3LuEMTGkVdtgHTMkozUEAxMCRRGqNBJSOnwjVNi68JNwDSRSCPuS5p0j/MDjPp75/3IbDym0e3F/Vh6HNCrUFxmUs3yANzmcih5yhifsLwqZQYPEHxt6IYLsjDM4aKWSwj7UW3bCqalzUy15IVMLc/BAe0uVd//i9SgR1QGqqR0bVxUMrvMQlPs1O3NPHe3sFmqGC2Z7F1L6KgaY+HKkZGo0ISjaM0YHT26BP1CxcCwymREJTt7RSrNHTeqefNWX992rNViFpN+Uw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 20/28] hvf: i386: save/restore CR0/2/3 Date: Tue, 24 Feb 2026 00:39:42 +0100 Message-ID: <20260223233950.96076-21-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX2krZbXSEOvpo ANOikxIzn7GKbyewMzptgx3Acwa6atw7E0FbORXe7zfiCdO81b5bIiyAIDHacXjbVi3fZ0ASzmK QxEdmqi07pQ+Kwb8JlYVMUmSmcY23BXwdLZPZKIgGqUDU3P3OyjZtg6CsDjqHenpCv/3nOrlvTo 4ty3nlgjQtJnUJm9W7HtIxG9+3lLF126g6Le7b3mSJM2ZeQuFTkrhuEs2SMjlPDd/pmzem4RvG0 muBAv8sYjli6lDe9dex47SPEDc/lIaLiEEA6H8tPosafhuryQAOWcx6bIdMieEQVs3hzn+/BhQi VemCxVzGT/Bs7hLRDGwh+ZBs9hjQpcEs4XCHVlPapgDI08Sf3HZPsDIPv1JldM= X-Authority-Info-Out: v=2.4 cv=VPjQXtPX c=1 sm=1 tr=0 ts=699ce572 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=8nbFswGFAu2En9I1cXwA:9 X-Proofpoint-ORIG-GUID: -4Hw4PnpnnNES3VH6PLfmsNBBQ217DVq X-Proofpoint-GUID: -4Hw4PnpnnNES3VH6PLfmsNBBQ217DVq 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 spamscore=0 phishscore=0 adultscore=0 mlxlogscore=747 suspectscore=0 clxscore=1030 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABAcRhMu8TKMajChsZJDFZWdgnwYEjzUfWzxXjaYeGsIVikJ1hCj631O+QZKvsDy6TyJVCGTgrX7DIuxTYAae/0w6qde2yco+4qRG3WtT/6j+pRL1RW9rBROvCeB86PXiTGK6eE6HFZ88LS3r3f//ZoRKGQAMKwcIAMSjnfSnvm3ef5up9zFUAOMqXRRDqWZgC5/mX3Uff0pvvraFPVI5Gac7bWhJ5zncy4ReyKAyS6yXVnie/ghmd6pgFOldXn6osBU2fDq6Q+inhcG23hb9yFknGy10X2zJaG/ryp/6R24/6vfLwuTicxdCLewOxjiyNUFPcFWRsKYiGkMdLw2fMwLt5N7LF4uTjv/R2qahj9s8T6cHEYDl0Nm0tV3xlFhx1aDaOmEB4EmsO+ZsIh0XKPMUACOHvecWO1nQL54wq9bu7RYXiU8tlAPXc6hbySeH8PRLeF9sQ+69L/NY+Nxr8kTeT+WH0z/nsU+FutcPEX0Eok8wkdfvjfw842EK5y64Gf+T32uHZFMn2+vcYOQTBJ/81iy64DmjxNeeq/ks9FuFcDvqJu+qMNrN8097uhoalBjAN8MIMho/83/B3kyNaEvw09KSTJMwYTQdTuI5o66aeLu0PKa8eNQuIq79NuTPUfw3OnFxmu9N/+Lqu2nP+t8m0YsqbJhAWBJrQx2N4qPAS/tZ2PoYNr4RGzqXrk1DbegOgDWlrjdWxO1aqf3NIVkjNGUzLTAglPB7vZzQQeAr9aK/8/ZDLP1Mc8ozovtV9kwxVUaVDKjLTAwJc0A== 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.87.171; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890071718158500 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:54:28 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=1771890122; cv=none; d=zohomail.com; s=zohoarc; b=LEnOKNGNf4IDK2+NodEF9mHkZ2ZdVW6+ENa1O3NS9yEel+y629od60T5nKn70/6kZS9E5DDy7ZKcYxGiuQWb82mGvHC2LrMrQT6V54XFk2cmQ/hjOw/ViCNpcsU56kLHWJRAc+TQop++hEur0E3cn5RATxsi1loGqo3jlPW++cw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890122; 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=PVfQEDsAB84UuvOPjvn26hny+NiwOyxPE/NvblwwUQl41EKhahYkr6B2HQmNZ+xGEk+2vbzRO/CA3HlOlbcjekwz4cmDgS07fdXrsI5O8ikuIAT8zgkTPXQ4ysIXqgJgr1MJiUxnshbm2DdI6KFriH4H+Sp6X2Opo+ytwuHwagw= 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 17718901226164.170027381423438; Mon, 23 Feb 2026 15:42:02 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXd-00074J-5E; Mon, 23 Feb 2026 18:40: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 1vufXa-00071X-VV for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:39 -0500 Received: from qs-2002g-snip4-7.eps.apple.com ([57.103.87.198] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXZ-0004S9-FO for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:38 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 1FC931800161; Mon, 23 Feb 2026 23:40:36 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 2AC2D18003A8; Mon, 23 Feb 2026 23:40:34 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890036; x=1774482036; bh=sec6CMnKYJJI9y5Wj8/7I6YJyCwv3268OSQx7dh58iI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=cCveOVcpednxcZYWpCo5EHKnqguYRFqRFxYi6p0cP81MZmjjHTLYGGZvePNtwPvDxKax4TZPJpWOzJTuKGHKGXnO/RGmztOFF+QuNQqzdeuVdQyAWaX1DIbjP3+gEiKL1vrJES5xmiHufh/PG079tCmGLmPPYdkyCWvUDO66o9MGxPA4KdAqXPM0Zb1reoGe3+UY3Mr9aq09ePOtxmes+Rx5y7ceaFkOonZYYd85kdJ8RdXhIBBwxfs6llNTRAV33F9WXBG5USE+ke6CKJwcY9h9l6nv8zBCiCPL6Wak6J1EeFt36EqGOhe9IGJ+iM9E8DLiJ+aA2N7YM1ijWJ+H/g== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 21/28] target/i386: emulate: get rid of write_val_to_mem() helper Date: Tue, 24 Feb 2026 00:39:43 +0100 Message-ID: <20260223233950.96076-22-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX6c2f7ysW+vHK LbNO5Xj00eCF33jrMX9wY7gZM/3ajPbb3KQ34vgG3ax8aMrLRsf44CJZc1l0eKfNQLbjWZqe8Be sN62R3rDLd1VyFN5TD/M4UwyytfzxuMne4+ifYzuBQ0VE0eK8O1s73e5z1xV5j1ul1ULBUqD1lK D6knkxbkThn1IzkYqj9UsDqMAJOBNa8eNcoXa+LzaoLAtkTYh84PfUQhnHACttoGyYpRi4LOitN J21LMkJ4ALwAFoyzR7bg7LIYijDdVbhQ/gZ1QxRL1DLfVaNiJHv2YdnOj/nlQjBfO8aY97zijP/ W5xB9WvO99ovko5I3m7cv3bKui8thZtzgHCWDLzTujrduyEUwXh6VqAhngyHFM= X-Authority-Info-Out: v=2.4 cv=VPjQXtPX c=1 sm=1 tr=0 ts=699ce574 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=X61gGJnvCjtZcTrZb8IA:9 X-Proofpoint-ORIG-GUID: RgFGYkRxe83aMsNj4ccOokBORpj8XFEr X-Proofpoint-GUID: RgFGYkRxe83aMsNj4ccOokBORpj8XFEr 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 malwarescore=0 mlxscore=0 spamscore=0 phishscore=0 adultscore=0 mlxlogscore=860 suspectscore=0 clxscore=1030 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABRBLcM7/ErXM3v5oi+lRGNiAvaKzthW9agut/019oMxs797nkrmEFvTre7ZPlU0rY4uBLNf6QhRXXir5LH0yKU2stWe3DOGe7FuNs6qKy7+hfr3aekf1d6h+SNkcMKrJKpdermXtQ0KvtZ5Bl3kz9wFAsMCgxVcYHADYdtsHlSh3sABoncdOM02Q1UhHEMO9mvTPRKBmw8NijcnmNIl9xa+EWhhALzi5vYA5ewcUYUtFw8CnoS+M064TR270ujeX7EMsaLB8HnPSOJI9MutX4gmsIond5IoIh6K6X1qjasD9Nw/f53HLB7S/hH6x5VvNg2eUnfdGa4/+pfCdi0AJVBP8NuckP08fjidWqcIeHMi3lPqA3CwQED4HbPp18FUWu8tuvRureSOv/bXmqzJl7ZVl8XJCrhtph2P8MgxNCaRTpVy5dJcCnHPd8jHrCiJLg8gBLrN+abSsrczKHnaVvL5zdn4Nv48phtQzyMai2BOEEESXWqYsu44OIjO+COQ7RUcSCF21FCShB8WjHSkwUrtFzkxy93AI+sPY0LlWMDc5WpJ+I6GtqEz/WTvo8OkmHrtkeYRFwEHiE1WsRDN9poAGNRJH7LVA8aBv3hlPAcgYo9BckpBZBIN4ct5KNkT/s08wdSiYjzbcc8FGqi76laFcGqbbcnW+RhlYScQkiaUx2HinU7mFpLVXUNAo6uM8l9kLoldkAbay0+1awIA0ecD249kT9MkBEMHcGckj7xLYCgV/Xh8pxjufRwD+JhtrFsHVSQjvmGnpSlWBc0Xi0Bw4WexkWvaMA1ALCoYYyPegOhmpayb1GqB8Hx5ondMqP 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.87.198; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890123916158500 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:54:28 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=1771890081; cv=none; d=zohomail.com; s=zohoarc; b=mxQyDIyMknwMIxRGGhcwTVM8CeiLn/lGCQLVDmF8PjtzXPOozoL6N1VsOuO0UbUPfo1Rj+6PTViSidJadyJU31usyjnf1BE1vBqxYu4cBADdGMdPsQSr0kKbCW6nQZD++YhQ13d+Mk8cv8DywJh7K18PLAGGB0Dayp03s5spRPk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890081; 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=/kVWj4k8zYPDJ4BsTjTUg1SFE+xR58WxAIkclcXxeAY=; b=NfxPJCOuIFaW005z2nADN7Wm8TkWvN3neyUkI3Am/kJ94eo2TYKC/4atH8fp7O4/Ws8KIcXH6eb7L+55NooSqPeaHmqcpnQmJvS1qVaFz1OgEZsg1BIY7w3fmCIvrrGBh6Bb4sKPv1BcHxcTzgBLa/gamA3vxrgRYbXo5bJqjwY= 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 1771890081550306.68017835230876; Mon, 23 Feb 2026 15:41:21 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXm-0007NR-8B; Mon, 23 Feb 2026 18:40:50 -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 1vufXh-0007DL-OO for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:45 -0500 Received: from qs-2003j-snip4-6.eps.apple.com ([57.103.86.99] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXg-0004Sn-00 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:45 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id D11C2180010D; Mon, 23 Feb 2026 23:40:38 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 1C4311800149; Mon, 23 Feb 2026 23:40:36 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890042; x=1774482042; bh=/kVWj4k8zYPDJ4BsTjTUg1SFE+xR58WxAIkclcXxeAY=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=TKN4k+6CMPdpU3L4hpXfb4BnTm9kjmt8b1xXwHJr0xwNFG72brsw8Jza+gRHoL+/uqx91ZCIiMTkV0u1HMowRe4ARZ0if/lqeVc2wV3vePqz8Set4I9TEMTs3IFKEPD4vS4qFNKhJ9ytRkw7fS0HGIgU+kmdRn6TnENHi7OTa12+MAvThOV+znm3TwfpV+kAKw2IBrd+rzvkn3qy/3tY9KLJSx6jEF9hMb24JPEBYun0qAGL69Km6fXFUTGaaXG1Bdh4S6WU9H73B/kusYdWEpD4G0afk9Jmrz1xFZ9PyZMkwA50iVkLPfDI+5nigtbhAR3b+Iy6BBwRK1cZg0YGqg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 22/28] target/i386: emulate: raise an exception on translation fault Date: Tue, 24 Feb 2026 00:39:44 +0100 Message-ID: <20260223233950.96076-23-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX8E7OxvzuXAPp A0dGCfxxai6TqHGEXmJYXX7uMCfwrzfozSoT7aHgsjGOcO7nywluokzTdA1Q95vtsIwN8EqdKtn 6oDQnsw44F4OLis7pxTZ8xzfVMDwkyVxf+RhAqIgoVLyg7Gf8BSO4gS77sOtohMVJwVWnhDsrQl M9C1fy92CMbbuCOCqe8rFXD5ULPDIoAqYhDi9pQecH7uFuilmst76lqNswLYtWxZx9aFhJpMt99 T8kqu5st3Bv2dBqo/Yij0bk3Axr2HXt7ZsrhLAW5ilcBrrxvmz/NMNm23YL88z0BQ65fTWzfW6p dA8hqYbElKIYUAKQRcuuwHwY0W6O3/CCQD4s6hbXLvJBTzsGH8br3K/5kGXniY= X-Authority-Info-Out: v=2.4 cv=Lq2fC3dc c=1 sm=1 tr=0 ts=699ce578 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=L5enj1CBYy6CaSJ8q-IA:9 X-Proofpoint-ORIG-GUID: dzRc6nKiRt-QYi1iehKvfYgBLvN-YnWA X-Proofpoint-GUID: dzRc6nKiRt-QYi1iehKvfYgBLvN-YnWA 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_05,2026-02-23_03,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=794 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAAB1yY9wUr2Yi0LqjD0CYnSMXwMtybEtLeFYKkjjoulRJ+lXBnPrAujg9G0nu/8pD2pEafnnwStEkjlDkQawwIJ6tQ1B5Ubbno3NRPb+WOC5ysUeNAckA9aqaIu+ET7Ui3lqv9O/yt3q+SNy9p9xzlgyTamlURot32e7vAISwSYpXIZCorBII1SEoJ3RGMMXcWoBzHZ3kWZm2YuHe3bybYCM5vI80tEvwmddClFe1WL9HUD/W72fSMJfGYBZlyr+cJ3f85P9tbxJrkEbuHP37XTZd0lHdmAAEotgoiSKUp0lppjpqoBzvz3gW1MZwceuuj+WXmogx03/SSEoAeeADDFQH+uY6+ZESnZmkvsRSLedhLqUnv02axhp3ydhCqFF1JlYpBF31bOtTSoeI1hZY1BwRG5OHafNz2g/oA6iwGAoMuQ8qGEAeEfXSLlAYGw/EPBQjf17PAkRdL9KA0XIO6WRnL8iXgjIImw+/BHD3kbnXBktZuMsgIVhOPJGy7r3YcIhzCBn57YgRz+g5HfNz5N5hIoH9oUiRxJpTu5Mp7z4IWY8NCmspj+5TSQUiFuWKTSVfBgqaXfGUqId15KUS5bekpofSHi05gQwxHdy52Dx+YGPXCrDfaZ5fjRTkydtcPJy6rIPQRo+3WrGhEDJfvHV+dRdjnJe//SlUhtNMi1LMmb+EVwi9XHyfd2GrE97Vj3g5mQld18qW8o8h5Y8Bh5lYAvqA7Yn2D2pR/Ss/A45hiH5I3NZ4nDPrDdbR41euOavnIXQcHRGPUpQAyATbgR/qFLxe4d Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.99; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890081786158500 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 f9ef1070fb..d30f6c4a3e 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -240,8 +240,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; @@ -252,6 +273,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 @@ -284,6 +308,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; @@ -294,6 +321,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:54:28 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=1771890170; cv=none; d=zohomail.com; s=zohoarc; b=ncd9/E3/MdeeHF6p7Gx1Y5KjQcSTr1gqYbZ/hUip61x0e3yDY7q1LbRCGkDiMsv/oh1nez706/TEQv6y3CQ/OuLcGG06VPPr0+uqFJ3Z6E2fga1B03tf3dscpv+NL0gXWuyiLfbqwTt5aLBVYHjaBIoyISmefVXRoW5yUmGrswQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890170; 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=iNyl5a+PGO9JBZ1CpzhbZH5QLrfeRQOerLOX7vqsy7s4BhjFBWmCWRHEO3koyWoSHzCG2WFH3lfeSQBOXNUqIMCftoODo/sfU1Z3USIv+1yqTE3mor5c36kyuscQnkk9M4GuPYoaZJOgazFjCBwOCxhsAfRr48J8f0VMyMQMfl8= 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 1771890170144362.26341075095127; Mon, 23 Feb 2026 15:42:50 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXq-0007ee-7E; Mon, 23 Feb 2026 18:40:54 -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 1vufXi-0007Hm-Um for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:47 -0500 Received: from qs-2003e-snip4-5.eps.apple.com ([57.103.86.48] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXh-0004T1-70 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:46 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id B9069180039A; Mon, 23 Feb 2026 23:40:40 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id 0F4731800102; Mon, 23 Feb 2026 23:40:37 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890044; x=1774482044; bh=JmJeyCNGmOwI1RRJYOEbtrFmR9IX358A6jq63HYV7u4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=BD8U9tXbVM26wFAtc5W60rPPgIGVkHZWgaRP9Ban3KzPo1tfD1ZsLcK96kt0ovq0NS6qPvV0/2V3uP7xegOgLAsWf8PHVf1t2whwHGNBgo+t3u4PoUoWjL5wVJXNyCNkOvjzyp+80RUFe86lEep0zvDyt80SDlu2EVe1aBa924Fg2RuGAlaC0k+djMACLrCo5ZcYOrdrJjl6RcejFeqBREL6FI296jm3MxvhThH1qtZgdBlpgdOw6J8YsIkX6J6WfsHRJ0oDf0vPPRWmT9IonorNSypE0CtVJAM6fohfXSxW456lJHTOhFrwqM5uTZiOUSCER1zuFbB/NmjrRrTS8A== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 23/28] target/i386: emulate: remove fetch_instruction helper too Date: Tue, 24 Feb 2026 00:39:45 +0100 Message-ID: <20260223233950.96076-24-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=BPy+bVQG c=1 sm=1 tr=0 ts=699ce57a cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=Mh07pQtNwjrl1AJ-msEA:9 X-Proofpoint-ORIG-GUID: DS5X4olcdTkPGk5-vnUnIbsYyaxo8Xrv X-Proofpoint-GUID: DS5X4olcdTkPGk5-vnUnIbsYyaxo8Xrv X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX3HTzihdi7BQv W0ghB+X9mC88yYdGSs3YtIJ3PXWyoSB569xBqIFF4cKMYuUWV4F1XrN2c1R4qUgkCBzasuXnmrj Td64cWyZ0pVTdlwtT9HBYrqPcKxMAe2gsVrM3QvZQx1P4qkpWWinKwAegEFMxGQrAg9UiNAjGfx HStrN++bMxWe6UnKRCbn0MRabbSVDZdGHK2xvZgQf8neLpduIW4v26mPiXrgI/8qC5JG3keiYZb kxcxrder6fWhbMuObYqK6MlgPauP9+cthEYmPL3PT74wZkdU5avnsDvDmuqgnkY4JiJIJKoBznG avTmUVT7SgYNG5SB+SnDPkBuXIDQGAy1yh6OE9+9thV7uL1wm/Qo42Jf38WF3s= 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_05,2026-02-23_03,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=869 bulkscore=0 clxscore=1030 lowpriorityscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABU4T0M2gYmVuQz96bjotoOPfWsrKyJrAq1WAsumPBQB8aQjQl6omGxoe6mWR2vb0U7dcJiwkAVkbtUFT8DZ+EusYKeB3SjbTYNiL+2czClfAnByST0nlZM6TdYQ2+pb2Shwc4diUKFaeXwoXX5tVry5DjTCeyrfodclK6Qy9lHw//7CdhT9R1unwz9VdsirsSWCx9O4BunI2xuQBSbila8NhU9VDR/j/xuXWoaCmxgg6Biz5wM3RS4ERIKD7xWorpQUlISbrcu1rORzMA6dgX/6j3cSL27p6TeXz7tlzr7TUFw3t4cVtrW24CxN0eTWyBD2hMERlhkJ0Pc+H0aFgAl+U+1x7lBXbwjN9wOIHFQCpxOZW2cSjpZbwHQsk4+BIEVSstqXGdfvDb2L6mjLzl9I/tm4wmbTb1H9dU2+Wz9SAkonh0glpmITlLByjwzT521peYE8Lp9kjScl+GQQNgwuMpKuyj9KOFHDI6zXUh6T/magq26JZnFeuJRgy/nEhqpaYKaytqvPORXiTduRqESFdA/2vFEHh+lavgsnHOexXDQYf2GX846IdiVIS+dLWeDdRwBQyea27LCHvp6ajhUGvBV5enxRnoNCYs+wUzErekZFxlfwPXPyBlMHhf0g0NCUNB49d8IUlHPOUgWNmJgKKtnoACB1HQFSJBDAKK1ZXm0dk8qIunlqChoZsMEBNXRcGimbZoGHwuQ6ZMe4nDCleGsTkq72wpB38mvjVRdD4iXXZVcAPL6eqw3XFdGqycZrM2GjLOH1G0ohwWBOUmo2jf Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.48; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890172262158500 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:54:28 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=1771890156; cv=none; d=zohomail.com; s=zohoarc; b=bks/pvLybqN1sshtWrCrkm/MIfuGkh6cg9I/FEIhJGGL1yonqyyACcuDpJbf/xwGNZS2pDLxiRUibxTHU34MjSeo86kqdvd0t/4FJuZzfJPVl136WrmpSiEhga01uhExtmrGC9bbxKmE33T+qpFvOgSm3p85mbcOgnwSsYn9DE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890156; 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=8lWyOuVCcGGioNbVw71HVs6bSP2v/9u2T1YesulTLJ8=; b=dg66Pt48yUcBYWuhbsO2gO5IU89f7vEIpPYbjXLPLdW547/Emh09TMSq9TMAmyRT1M603qcoTRAm550Tk7miSb2hw/yQThqf+pDpb2dn04uZFcQl+86GVUe+pZ6vF/sqjdose83YOojfAKggxGqiL0OLuu4ASqyI5WIfzO9fSWU= 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 1771890156192275.90115378290943; Mon, 23 Feb 2026 15:42:36 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXo-0007Uk-UB; Mon, 23 Feb 2026 18:40:52 -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 1vufXh-0007CA-EX for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:45 -0500 Received: from qs-2003e-snip4-11.eps.apple.com ([57.103.86.53] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXf-0004So-CU for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:45 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id DE93F180013D; Mon, 23 Feb 2026 23:40:41 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id F1B9318000BD; Mon, 23 Feb 2026 23:40:39 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890042; x=1774482042; bh=8lWyOuVCcGGioNbVw71HVs6bSP2v/9u2T1YesulTLJ8=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=g4hhUEv6lj7pHihZ6bp7WKpUUUPpBGb19LcolL+h6mzPArZy0F6zqVpG04XBJTgeNxWSWJYiSlar1yGUylwEFKtsyloYFc5DJOq1V0uX36C7hkrjiMz/zIlJ8Y8WEiGdcAiR5TvgpQD7OfHXGstSIYn0j/+ml8YCYfHK24PcFw1k5VQFAKWtkT/RvKFuyvJd2S1+9Qkmr4UGvEogjJrQnCs8pdPehaLqpe+7Xj2y6eXg+ZS+VjlsnH0q5OAc4iBye9fmPsI19WKBlo7yLEndpkmOP+EL8WX6FyB2W06ob4Xx2PofQTM/ImiGOLpgQRH2mYVsSX56wPEig4DnEkfUTQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 24/28] target/i386: emulate: propagate memory errors on most reads/writes Date: Tue, 24 Feb 2026 00:39:46 +0100 Message-ID: <20260223233950.96076-25-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: N_OyOp_tIbdH682L17foWDMHRM_m68iW X-Authority-Info-Out: v=2.4 cv=D79K6/Rj c=1 sm=1 tr=0 ts=699ce57a cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=yuK-eIj46yw4D_dHqGMA:9 X-Proofpoint-GUID: N_OyOp_tIbdH682L17foWDMHRM_m68iW X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX0umWNwi2hk/z +yGVJOx43F2dNX0my63VYWR2HOFg6wWjCvFMoxpJ30efKQca+s6SGOXiDae2TGljSrbjN+purfV LL6qagUbsCj+M+mbl1nk7P3aTR5hm6K4OS/Sv460r4SO4Na00xrfvMfVPhob/xR+YRt2IhTKYzs lRJck/JcTZxtaRVRKwdq+vooN+KGDkQ2ImjhrXiFx4ehLNOB3RbbQIasSxXZV5oqY1pleDFSS8y UNkYzEDq+awcmgVUjX0PxOpSwRZguP51/lo//4P9euLUH053I5TtQ/c6TaxuDaAKyqE5Wg0TZpJ gOxmRK1wKSy/Ax2T7sL+2NML2rZB1tAJx+HDdAzbrm47tSkr1+0RWg4zNknP7I= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 lowpriorityscore=0 clxscore=1030 spamscore=0 adultscore=0 malwarescore=0 mlxscore=0 suspectscore=0 mlxlogscore=974 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABLmFbh5V5N80jNAGzd/7493y9bHFm3o2og5Rh28v+1BhBnNsCjbcUX3x4Fgri6OdFTzwXW4t+QD1ElA+524xXb8XfdXtbch7kW9Lc3Qk01A8G5RUKZyFuZoZLpIYOPNXYVdItQ8k21WJE3e81PKUi4Or/lA7aOUwIa3OERJgc/pgKztHNIwPjOBZZ1ARpLQ9frWWJWpxgGHnOf4Hhez2cawbU9bze33uVYbRxgR21eet494WE3xPm4nFYkGh+MJzFC6wPo5aJaN7EZWB9DARYccRtm6Vhdw3vcwhwDpC65xcO+wGwBbGCXdQTSQ+BR/NKEgyJcLsnwcmQC7ZSFyKpitALwsTlzzPZWh8cpkC9zFbksmyEiY+5rNsyiRla8m2YCT8Ih5fncN1uwtypdn0rpXc6pbxVXRVZMLNV1xthTWC2lWnSActKfNHWpDL90GQGKi1+jAJ1Jz0bLdhvH0G079ac/xsH/FqSG07bAuuH5i6QLqvlBMVmN+XOcFw3SB6BcrOAHNeh1TKANuMl3sRuKQ/tJdPfF09VZ4eiaI7qlVZmHWwXMzlSzkXIMdZFvoNtVy99eSG1s9R2p6qFv+pvCcYhN21z7QncEq438DXh2SJeV+gPFv41xEKmgPLhtHlbd79//5SO143gRJVA3b0N3CJzi/7bwin5NSNgMDZKJ/vNx0kC6j5zbhNhTtESOkPf0WKdHhJrLKJKj9atm2a7Ra+pegF7M7PjMXwJgDmcCmE2740AjZ8CAgJbdKBglg/luOFxlXMgM6vs166F1+lNpNK3Ha6BiFJFW/QB Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.53; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890158238158500 Content-Type: text/plain; charset="utf-8" Use that to not bump RIP for those cases. Warn on read/write from/to unmapped MMIO, but not consider that as an excep= tion. For reads, return 0xFF(s) as the register value in that case. 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 | 119 +++++++++++++++++++++++++--------- 1 file changed, 88 insertions(+), 31 deletions(-) diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index 3aedd638a1..ec6bc798a4 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,56 @@ 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) { + if (res =3D=3D MMU_TRANSLATE_GPA_UNMAPPED) { + memset(env->emu_mmio_buf, 0xFF, bytes); + return env->emu_mmio_buf; + } + 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 +481,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 +501,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 +548,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 +615,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 +641,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 +671,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 +682,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 +698,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 +708,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:54:28 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=1771890114; cv=none; d=zohomail.com; s=zohoarc; b=T+ONpWKJODDGuS9TXkG0X766GmFcOLgP6O6yBTy65CVLj9JGGn7hW93vmVpqYkdbG+8bfayKd1i6oxMipJRtM+TBcNIXBAfs9AeEeF52ipQmykpAjJ4yKJbA9YbvckfaB/qDZ8t1CXlGInd/Wg9jwlBaIZ7AI/6LMYTj+XlEC4c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890114; 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=d+VeMv/ka4kGBHml1GOsf4wbPrXV5uqUKEn4UNnfxm3axnYIqZ7gi6r42uR6lMrmZKoMEMrTwSOsARxaZvb2uHRBR/MpJ9gw194CsdvZ/x5zZX0oCYD1EsYVtM0nizOcYzwzfGw5JNOfK4Vk/wtMK4OdafdY3JnorLPhd5Pzi28= 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 1771890114905203.88805679508494; Mon, 23 Feb 2026 15:41:54 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXp-0007bv-RJ; Mon, 23 Feb 2026 18:40: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 1vufXm-0007Ov-Dw for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:50 -0500 Received: from qs-2003i-snip4-2.eps.apple.com ([57.103.86.85] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXk-0004Td-1r for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:49 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 3194E1800171; Mon, 23 Feb 2026 23:40:44 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id DED451800168; Mon, 23 Feb 2026 23:40:41 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890047; x=1774482047; bh=hfNR82VI32cF33QTS3FopfW+BPdUa6X/9gAEMrrkmf4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=cVGvAHL/5tlKAZxj1qZEmNfKlIPuCbAXUzkVwbEY+KFUBbFnAl23PIyXn5Tewj2tfSp0iTui5zIqToMEOpoGRTjqrdKh80+4/sf5hDkiZdrCKvNK/LGlVSRqpDptjFNitIqVjbMjt/G5yU4HFbiflWTAAMGsLGus5SB9EUK/IAl6xjYHnaHL6BC41kS0WkeswWc7XXA5LuIBzb7AziqfBkFYydIPKs/P1UrV/+V8tTIiNFr0xxeocdt7JUbcxHQk5gr8aAyA003TP3U3yzor711vHuUoQ13XI3TzHNpN0kkUykbHE3+cqpkZp1qvn5ulKRXvv4LLohN+q5kcZL1yqA== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 25/28] whpx: i386: inject exceptions Date: Tue, 24 Feb 2026 00:39:47 +0100 Message-ID: <20260223233950.96076-26-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=NszcssdJ c=1 sm=1 tr=0 ts=699ce57d cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=41a--giXCHF2Chj7mBYA:9 X-Proofpoint-GUID: nNES_yIzQVcEctk2-nUZ--CZaQ7uLMQx X-Proofpoint-ORIG-GUID: nNES_yIzQVcEctk2-nUZ--CZaQ7uLMQx X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX/ReEPGUAWwF4 i3fUxyehWmz6PQEpyh9mcPFfJ1lSwblCyARHMVeik7LJLcW9S4KCGK4PtHsg4STIcslnOO+VY/u iIeV/iHppEHHYPvUz7Oxxa3l49DkV8QNjPrCG+gEaZ2eBcYHTjmFGAxzcFS/dmwQ0nsKTvk9m/1 24tEV/AouxoAPLECMaKXqM3D0bZfVSpB1ABS80ZwyZ/KTpfxo64KSZoebN9srx9f6Cy54HV/INN 3PUQjsYbj0vcUcIovXTmXDfWm46TOe0jpCoTkypxoMJk+/Oq5PLla7Ax1MQKHzpCfXk2sYePmtD I9OLK3HD/IcmlUZykhsPZ/642jXcDClb1ikkeN82zVfZDK8jeMSSiIFd4WTIzo= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 bulkscore=0 suspectscore=0 clxscore=1030 phishscore=0 lowpriorityscore=0 mlxlogscore=994 spamscore=0 adultscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABvRRhNHzOYfSa1IiCyDPKcnmEZiUAc6ar+eGLiRYIHyybiII2L0LGlm5kWmiCPhSWz9BfeJRCVEjKAMO9t8K1Js39bkOaw38pFAEAZnuuIctUu80tjoe68rNt1xC5nD4+i5yK5OTZUL3u/xukTpdlxFM2Sh2biWdaMHGSoV/F0Vr0UM/DOR2U7LgKImnSK3s0C6BjDYrzEC9sA4ikAAJh+fhwt+qYSZXC+1uTi/shAx+PYz3fwK4TmG5TOXrtMDKtmuZxnqiDfg3DKYRFTAJSge5D9zXjRtKG5qLQRmROLvHTqOpbqS5SkEBvH5qcZ/gYpvvZHx57bEHFO6HPrC+fnwvQlogwDRORbdDx1+PvLaIWtS36pQeqNkSdXFesHP9+4Aya3+7cCx02CGu5pO9PG0j3Fe1tcV3/2vYCy9F9iKWzpJ8a4BgQlJs4dvV/Se8ys6DegAVRB+KcpdPirPK4BXvqG/wN0OnOrrJ1DTRtbaKQPs8QBt5RoOQvkFKD2O2owuGh6lmLTpQtZvRcLnh5TnpWEAuJeoeqQWWOxpPBDTnV7OBtFMg1U4o9AZXubV7pfljIvOyjZwe1I/AMyNWgulBLtE6pJ8ZZ+ROknJDTvzpRHig9MPY9IOCKqKFrFbn8j3ZyQvhbROnd7LQuC1GkgCse8VZu8ESPUi0yTCHG/0hK6vUDGSSBiRuhMJb3RFP17lMpiar1rsGaehptVXB2kmoV8Vx0f02mrDlBCm5tcOemFeIOwj9KAcpWEp8+S6zRaIGcWlHPKROQ2TvTUA== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.85; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890116070158500 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:54:28 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=1771890157; cv=none; d=zohomail.com; s=zohoarc; b=TTOTZB3ll8Pzl04RKuk56+pDIolS92K5WcKLrMmJJdtRNg7WhsBH0AAKQHxDrVor5UA/38WHKXI3r8xl1TOsfKO0C1uOazZReucAiY6fmZZCiqnj9jcHfzgsXm8gZE0PXqsJPBR3IBzuTyS9sh2uznvsByIcL8VC2fZml9xCEYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890157; 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=YcXoMY0ofJDtLe6DKU8LNWqUyU/J+/mgT4YDCLGx9aGw546qXQ82JzxiwkdcVCaxv550T0N6t9bVqf2L3vmpx+B1QumON9g9BRBA/mFnyGt8Uo8gwWp450eHwZzd6qcUxpfbDVwTY4tznAMo9Ix7uHQyd2oNrJRybUPrcOZoAVY= 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 1771890157018894.03695196144; Mon, 23 Feb 2026 15:42:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXq-0007ii-TH; Mon, 23 Feb 2026 18:40:56 -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 1vufXk-0007Nw-U9 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:50 -0500 Received: from qs-2003h-snip4-10.eps.apple.com ([57.103.86.82] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXj-0004TS-EC for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:48 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id C8ADC1800169; Mon, 23 Feb 2026 23:40:45 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id CA67F1800149; Mon, 23 Feb 2026 23:40:43 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890046; x=1774482046; bh=gtU6O9Cu9XkEyzJz8skz8NQEIEN6lbh5ZiIRw855Hxw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Ipqu5P78rILbNxJrUIZUHvSUyNOlC/LapqreEJc4Itxyxr+ea64tFCIEsnjuB4B6rldOJIKkenIBYAmNiyVt7WLeEyZyEKWiREwLjiMmnBOf2bnYq7Xz7b10BxocbcutQZjycz5FXZwxXajzeVJsJAe7xbVzK0BZ1ThIo/6Qw6Qr/c6AXw5jiZupTVk1BTspis7OFP+vBnS8nkzIRypNhdfi2sQ9n0rLFjY+SZLwy68wcLlFp6FuICI5aw0uryFkpn/Dfz9lPcwQ2PfmEHsI8ED4eLV+HycQv09Jza0yy9HJ18kJR75bfSb6kNrunwI/PBH2/6u+tNmKJeOPURc5Uw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 26/28] whpx: i386: bump to x2apic Date: Tue, 24 Feb 2026 00:39:48 +0100 Message-ID: <20260223233950.96076-27-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=MvxfKmae c=1 sm=1 tr=0 ts=699ce57e cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=wF7mTIv5wlbhAN2AGiYA:9 X-Proofpoint-ORIG-GUID: oXDlnru7KDKyZdZxaZ7HFI-gR0-K79c1 X-Proofpoint-GUID: oXDlnru7KDKyZdZxaZ7HFI-gR0-K79c1 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfX7QYG10Bv1FiW uoWiXzyR+UesclY3g1EZ7iXeZ1YWH6LCOji+XEIvh4sL10LgJv1SbRaSoRv3OGuubsJ2UxbU9h+ oJmC7WSTIug5YQiXJegpKw7yT9aX+eQNkuzyluSMSpMQ+NGq6RMCxSq3zn8aNA+oM1/6/RgbY1k 5tuOU2Cki0VFTMHSyeONJJYtz8h1vTdnGx0QPE5A4vNbzp3uXTl5k0g7HU6oyUlC9x6d8e5dIOz O/M2xf/11GyTnpSg0qgPoBd+x9fkdooIswq/uXE7ovmmbBxtAd2RQ/3so4IpvbahJwfQsjTQMoR RJk+YR9lcie+Su0VSSRdHBVCHpT2xhAhjwDWVNFo8eApG2RffWc+BbsU4iCL9I= 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 mlxlogscore=740 spamscore=0 suspectscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1030 phishscore=0 malwarescore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABj/hE8VD9X4/hzaiJMwTNB9cvs91WOr+pHoponpi/3rZYyQPNxqQmxGOr5wD6j88Nmh4bwE6SOvctaeOEWR0Fl/9iHsmLQ0rZ+c4AOqlgqrL+v5h40hXkHNaLKCbyXfkTHJepxM1ifX+KDUjOLCZd461Zz1z7IOU5IB76VvWzs68Wz1LzNhIsdIlTYDSC9oyCRGSUi9u9vWZFtNka8tmCBFoUCP+WqUKeBZ21BnwTJG4SJ1j9hxzNdptcqVkYeybT74Z5FpiYIiV7E4FL7eRk+GlQibYalRZWzQ617cKjWLUYdZOooCgzAvRP8gj46vuC9CuLeTX6vCo7yYU2Jn6MpdTXzrqtA2ZwfViKeLDMGMWXEBf0heKpKwaMLmAPFCrq+igFLARInolpXEDLhT5P4cLXfmSRDfn6iemnqXM1acZuKh+UipeZ0PyChqsNT8CRfMMAhtUYIDXSWoqxIMonklAKKrYxqMuJ5hH5poTBYhUaLv4VjKwqwGshFfSi9dEqOCSEa3PiHQ2LPCXN2mAmuceZjUf90YEU7zTTHB0dexHyQ2/pgSFBkASv6UV63SSyk9O3x2FxsR27UppEzprRJyfDnEp8lHYOfMES0w1fBPWORjQRVLfjLQeisTogZ2xlx7B9VOWJv7sZ1f0Id8CmPlmJGTm+xHkR8sTiFGX8Faf6emDri122JDex57McwJ1dzggTtMf78iVKaxxlLRISAzJ1w9BwBDvHFw0/kXvmZvaIK0VfKS10c9WKhrxiLdOFkimll3OCgkUgMaEI+dhr Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.82; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890158336158500 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:54:28 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=1771890116; cv=none; d=zohomail.com; s=zohoarc; b=Fmc0iW1m62xcdHOliFTLl3eLtSU9r1xN/sDhpL8n1aVOXuMMg4gd6Wtp2aJiG/rSEwuj9hvpfkNomnRlNbwXsEJfiBgjHVcGubE1pYMA0p+bn4GP7PEWBkwUrvwAFhd6162tol4ts32KJ2CJn+qCyOluVzmIOx/jCrmPxmzfr5w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890116; 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=n4QxNwvZskYIA34ETgqJDj16WOILaAKhgPRrdBDC7Gmy5J8KuBKnts6RrpEIkac3RUIK6dQU4/3hJB9CZRAyKayOXh5GE1yEmyc7eOcicb5VImHTk5Lyj9RHqF3AHWjoqiYmSon1nuWmj05X7JouJvdqBOBDfJndg1gX0dWb/uc= 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 17718901167847.818346858829273; Mon, 23 Feb 2026 15:41:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXu-0007zK-ER; Mon, 23 Feb 2026 18:40:58 -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 1vufXp-0007Z7-4Y for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:53 -0500 Received: from qs-2003g-snip4-5.eps.apple.com ([57.103.86.68] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXn-0004UC-50 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:52 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 318DA1800395; Mon, 23 Feb 2026 23:40:48 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id C19651800161; Mon, 23 Feb 2026 23:40:45 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890050; x=1774482050; bh=9BGts0SO+ELvn9DPQ6ozA7TaG8Ww+N7E7c4pnrVSxIg=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=WuPiaSfSmXFMX53RCRmZeMpfr6ZQB7zwYfclsvc7SkjIhoEqrsYbGlkWCTouToDEOUSyPBls8rp9ugACbI08y3BU/jqB+Lh3qdHtgJVpKMRZhDivJ7jReB/D2jfu5weN0PbtG5ovOXL7F/+BiyuoHXIeVMNHpVt0iTaJdI4CL4AqhlNCsRBXqTsaOjWISowzXpjsVg+r1WmNlokyRkeIe1zZg7ve0QJpH0jCVN08UTBKu9up11QA9SKl/nrSzXDixJG3lDU8tZpXgWXVWokSPYZPw9Pv2wUEFXBaurhtElgtCCrh9jZWdLm39XOKsZWKrxPzBOtHZVh3Pz1lSgUxQg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 27/28] whpx: i386: ignore send_msi to interrupt vector 0 Date: Tue, 24 Feb 2026 00:39:49 +0100 Message-ID: <20260223233950.96076-28-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: Ds2OBX7QPwKU-qSa6fhIv3hqRn8fcs58 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXzITFXzLo7eFy mS0f+KHADNCG8dVt9n1gW6vQBKOIk6nEHK+ytMsFpPl7JVGWAIfxf+TIEyLNH9NkrZKw02dlqUy nVaGut41nc9xk4CpfRrWPQLFYGVivjzHTXUNFd75/mbX6/CFdchi9G5tehqLhk8VNikCXXmWs6U WBZYWuO2qbTbY8nfQfynDXzhzV25ZHuISTsdoIptjgmhoUvih+zDPVk46QP3H2RjsBTQqJunTyG mdQhTQiQsCt77pl6d1dkqxsVhg4Q8XDGbNV9xW1rYBmz3twqoN0Ygq3o6qD0L2YG/STbp7cvwEn h9RBqeN1k2+ckNgwVAPIAPbsSA9hq8SDPhvKQoMt8d75IgKz/z4xmAr3+BPV8A= X-Authority-Info-Out: v=2.4 cv=WItyn3sR c=1 sm=1 tr=0 ts=699ce581 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=P0CsU09aOh3OwRgeKFoA:9 X-Proofpoint-ORIG-GUID: Ds2OBX7QPwKU-qSa6fhIv3hqRn8fcs58 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_05,2026-02-23_03,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=999 phishscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABxZKCxX7kfs1ZGwZHA3iJ5G1HqnG1IL9fTspOy/w6ygMxg3voKQ2lDy7FLOU/njoE52y8o7+08S3RDnjoSXIM+qEv/c87pO7+/KYdR04PQgzX2Qybbr5mgMR/ZylaHlR5HXAwNptpVmrVlvbT1DuU8k5NO3mn1H6hfzJjlesbskuyek0CEacj/o3RaKX6k6gevjJpVJk7uUiJPAFBijv10CdeOP/aeHR55Gi0HA2l/7WXnv1Tx91WcD3AzQ+W7NTmp2GvJzsWRa9pHLl9OdazLjYQTBAKqeXvv9nh8iigZXzby+X2dp0F5XKIJVz8nw/QOxPyPRA6OjeDrGMP7bdBuwp7a3y6slYmiaH0CXej6Y7TuoAVTqQAQnD+iwGHngLPtb91B1kUq9mrUL0bCGIWVxh3EZXtdySB8fdnrkbaxKtj9jFeJQd+iexC36Bxe/iE9zuK8cHtlBxfj1X7Y8kl5/AF57hhi7zEbK2tkIydQBz/wBZCujaKM8h2Ad1eVSNEiApt5fmH/bw2onGeD4/Z9OEJUEICD4hQkp1QRum5EpmTQ50INLS8YS5IwFEwAO7x8oSGXAVDsIRnHPQST8Sh2YbN9P5KlGL1Ed22ey5dHyuwOsMzIxUR/vZ8XNkPn3G4QyUg5af12rMnx6nr0teONZd5MlsNRA6zh/L6DvxjFYo3gX/JBYD4iCH20z3jUhS6roNEVXGrHT5/A0YLb212kZjr774WdKeWsn1Pi7Uz/MnUmhumT3hYiM9hFT6QXXEXZX3mzizizZm6dBjSYznOXcGk5z1rHBvnpzpT1CkRWg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.68; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -1 X-Spam_score: -0.2 X-Spam_bar: / X-Spam_report: (-0.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_VALIDITY_CERTIFIED_BLOCKED=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890117904158500 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) From nobody Sun Apr 12 00:54:28 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=1771890070; cv=none; d=zohomail.com; s=zohoarc; b=E7CfWnMo2KOa965o8EwRF611Y25bXJ6i6RiJD9i1jcVjcBX49Fbky4iZEkwvWM6HcAs82ojzH6ZkmykIzfWZ7wql4jS30weodQbFWe77VjILZqu/szOZka8jlFJrTnHVvnFqRKtunberZyPc94s/eilt3Oz5ZyZGGxQEO+TspW8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771890070; 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=9dhd5fHzSOBpg7XkWlWLkc9SOXPVIZnS8i4FgPjGXEs=; b=AmxsSfPKHZB9jb4Ih6s5iNOrM5lkLXq4NgzXRbaeW9edwS7g6oiA2bs3mVzOExiBbNYr8RGjQqOpNlZTuYZ5dB3Il148qHSQ94M43sTSg2YBmGw6ST/4hrj78IrPdxnEhOW28eSNxKPGgIeg3S0j2H5Rs5nYN1KhopaYgNXmFSw= 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 177189007095461.28779140927054; Mon, 23 Feb 2026 15:41:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vufXw-0008M2-QZ; Mon, 23 Feb 2026 18:41:00 -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 1vufXu-00086I-IH for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:58 -0500 Received: from qs-2003c-snip4-11.eps.apple.com ([57.103.86.33] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vufXr-0004Vt-5c for qemu-devel@nongnu.org; Mon, 23 Feb 2026 18:40:57 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPS id 7833618000BD; Mon, 23 Feb 2026 23:40:50 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-60-percent-6 (Postfix) with ESMTPSA id B96BA18003A5; Mon, 23 Feb 2026 23:40:47 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771890054; x=1774482054; bh=9dhd5fHzSOBpg7XkWlWLkc9SOXPVIZnS8i4FgPjGXEs=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=dAnjrOBAXpbENhDtBc/u6ZpHWs9H3pRmA7uZhcvWLdGMEI5hqDyTOZFzC7hmxeR0o7UPXbX6SCa60jgQnwBsvUcrC0N9StmzRxbIylZpsiFz435EOIqZ+2/4VLZBIMMb27s/6B2eqNdmvelNtkoyvajiwXKKKljpnOxHfPsiJr4EtzASR+SrNORwVKzTpGtgleEycyS4CPMAY6UAg6VMr89jcbzpUUoyqqBoCv6EdCtIDr0IQwEJcQt2xRFpuDnH0pzN4af7ub0Ep4TF3qGgllQnWANJ3syAYVHqUt5HIicCdYJkwXCWF0AaSm9s+RGeP84UWksc+T7aibsIN/N0bg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Peter Maydell , Magnus Kulke , Mohamed Mediouni , Bernhard Beschow , Paolo Bonzini , Cameron Esfahani , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Phil Dennis-Jordan , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Pedro Barbuda , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Zhao Liu , Wei Liu , Roman Bolshakov Subject: [PATCH v6 28/28] target/i386: emulate: propagate errors all the way and stop early Date: Tue, 24 Feb 2026 00:39:50 +0100 Message-ID: <20260223233950.96076-29-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223233950.96076-1-mohamed@unpredictable.fr> References: <20260223233950.96076-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: UDnoxqFzbEL_Zb5XF68hDwBLnBi6Anb_ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDIwNiBTYWx0ZWRfXyL4uUS6YFnM+ mHeAlNH+ulBHQY7yNyyo7XP3Vb+rgXAH48cT08MgEXBsHkcT6ac5I3paTA+v5X3X1KoElChnboP KMNEgmS8HqES/gf3o/soVrAgZGsg6kZ0x5l38cD1z5Ratff9ymRzMNPoGuvaaiSUfbrTH9rP/1/ xo+H3G3GEFX1eJrFoBujGPvOW8VxoxQiMw1ozp93y/HtDLLamenX2RiF2VCmCeaeALr00pOlK6C xvxDb0/wk0PtX4IlqyM4CY/GurFlzkDaE0oEmWUsk2LbLJvnUlkMfeadYG9JUZ8AaFFD6iwGMCn cRzB5py3enuKdGvHcqsxk1v8tRy514UWywKsGPXS7pQi/uF7wf6spid3IBdCBw= X-Authority-Info-Out: v=2.4 cv=Tv/rRTXh c=1 sm=1 tr=0 ts=699ce584 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=NosfXZAncUfFzFm2AdAA:9 X-Proofpoint-GUID: UDnoxqFzbEL_Zb5XF68hDwBLnBi6Anb_ 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_05,2026-02-23_03,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 suspectscore=0 bulkscore=0 malwarescore=0 mlxlogscore=823 adultscore=0 lowpriorityscore=0 clxscore=1030 mlxscore=0 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230206 X-JNJ: AAAAAAABUtWIJe0RhnjQahhKaBD3OXztWDWq6CYYlgXDtd10PjYANYhMoJ4FTmKpnmVuY7qtu4/0vEqEsUC79l2GOuqhjeM2PbKTn/sTaF8czcFqzLp5fOYvdPrh7qpShn7IqSpY0AYpcpLo/aLPFpr4rRE/PJ73zCmDk4ub8O6Nn9dorYOUZj3IzDVq+MoU+60BxXgz5V0cgdJxFdSVqDKb3Qs0wAyPUQ9NBdERv3cPiA+H402+WNcd9j7cv0XqjXb+e58uP8m8W8LlT+m+vZqiGMbqOMrwx/zfh52I+OQpABqqaehm3bm/hUTzjBnxXm2rc7xZTwb7x9n/WkQeQpU5WKrKAByAnvGl4Uqrn1l/6vHwxPXN869GEfz81EnJeXhqpEtudhijOtfZcL2ffbd/X5fqcP0yIHB5bpCzJIxhwDCwbkYHLN4/xikyfOqU0uLmXSBNPeYm9KtFN2MG04BEcHC2MXo2CUdnkYgukg1nu+SWs/7ob47UrKimainD3A8dmL4YIhmFhA4TX7a+hxMT2qaNHxXF6Z09uV1xIjOYNzMXH2BEBKt4kjk54ScOyU6z93nZoOHdcwL/kmfKkAhcxV3vlgyT6MOYEPwFXJa5JH55W5HDyCGwVQ+VWlPx7T85NBlxZhAIra6RB6HXVVXe4xlNvnEku21dPbhhzgC5YFjW42dXzn/S7evfJh+dF0nYi3lLhbXsOHXI80sHfXyzC6wrrBE9pfm6f82cyuh8khYoIRpllQzyswvB2LIM89R04uSCDxO6YBookRfN5FIqUlXzYIBoTfdkI+ryvRo= Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.86.33; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 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=1.179, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.717, 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: 1771890071734158500 Content-Type: text/plain; charset="utf-8" This ended up being a bigger patch than I thought it'd be... Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_emu.c | 227 ++++++++++++++++++++++------------ target/i386/emulate/x86_emu.h | 18 +-- 2 files changed, 160 insertions(+), 85 deletions(-) diff --git a/target/i386/emulate/x86_emu.c b/target/i386/emulate/x86_emu.c index ec6bc798a4..8d35f3338c 100644 --- a/target/i386/emulate/x86_emu.c +++ b/target/i386/emulate/x86_emu.c @@ -47,7 +47,9 @@ =20 #define EXEC_2OP_FLAGS_CMD(env, decode, cmd, FLAGS_FUNC, save_res) \ { \ - fetch_operands(env, decode, 2, true, true, false); \ + if (fetch_operands(env, decode, 2, true, true, false)) {\ + return 1; \ + }\ switch (decode->operand_size) { \ case 1: \ { \ @@ -55,7 +57,7 @@ uint8_t v2 =3D (uint8_t)decode->op[1].val; \ uint8_t diff =3D v1 cmd v2; \ if (save_res) { \ - write_val_ext(env, &decode->op[0], diff, 1); \ + if (write_val_ext(env, &decode->op[0], diff, 1)) { return 1; }= \ } \ FLAGS_FUNC##8(env, v1, v2, diff); \ break; \ @@ -66,7 +68,7 @@ uint16_t v2 =3D (uint16_t)decode->op[1].val; \ uint16_t diff =3D v1 cmd v2; \ if (save_res) { \ - write_val_ext(env, &decode->op[0], diff, 2); \ + if (write_val_ext(env, &decode->op[0], diff, 2)) { return 1; }= \ } \ FLAGS_FUNC##16(env, v1, v2, diff); \ break; \ @@ -77,7 +79,7 @@ uint32_t v2 =3D (uint32_t)decode->op[1].val; \ uint32_t diff =3D v1 cmd v2; \ if (save_res) { \ - write_val_ext(env, &decode->op[0], diff, 4); \ + if (write_val_ext(env, &decode->op[0], diff, 4)) { return 1; }= \ } \ FLAGS_FUNC##32(env, v1, v2, diff); \ break; \ @@ -167,13 +169,20 @@ void write_val_to_reg(void *reg_ptr, target_ulong val= , int size) } } =20 -void write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size) +bool 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 { - x86_write_mem(env_cpu(env), &val, decode->addr, size); + MMUTranslateResult res =3D x86_write_mem(env_cpu(env), &val, decod= e->addr, size); + if (res) { + if (res =3D=3D MMU_TRANSLATE_GPA_UNMAPPED) { + return 0; + } + return 1; + } } + return 0; } =20 uint8_t *read_mmio(CPUX86State *env, target_ulong ptr, int bytes) @@ -218,20 +227,19 @@ static bool read_val_from_mem(CPUX86State *env, targe= t_long ptr, int size, targe return 0; } =20 -target_ulong read_val_ext(CPUX86State *env, struct x86_decode_op *decode, = int size) +bool read_val_ext(CPUX86State *env, struct x86_decode_op *decode, int size= , target_ulong* val) { - target_ulong val; if (decode->type =3D=3D X86_VAR_REG) { - return read_val_from_reg(decode->regptr, size); + *val =3D read_val_from_reg(decode->regptr, size); } else { - if (read_val_from_mem(env, decode->addr, size, &val)) { - error_report("target/i386/emulate: read_val_ext: reading from = unmapped address."); + if (read_val_from_mem(env, decode->addr, size, val)) { + return 1; } - return val; } + return 0; } =20 -static void fetch_operands(CPUX86State *env, struct x86_decode *decode, +static bool fetch_operands(CPUX86State *env, struct x86_decode *decode, int n, bool val_op0, bool val_op1, bool val_op2) { int i; @@ -251,8 +259,10 @@ static void fetch_operands(CPUX86State *env, struct x8= 6_decode *decode, case X86_VAR_RM: calc_modrm_operand(env, decode, &decode->op[i]); if (calc_val[i]) { - decode->op[i].val =3D read_val_ext(env, &decode->op[i], - decode->operand_size); + if (read_val_ext(env, &decode->op[i],decode->operand_size, + &decode->op[i]= .val)) { + return 1; + } } break; case X86_VAR_OFFSET: @@ -260,68 +270,81 @@ static void fetch_operands(CPUX86State *env, struct x= 86_decode *decode, decode->op[i].addr, R_DS); if (calc_val[i]) { - decode->op[i].val =3D read_val_ext(env, &decode->op[i], - decode->operand_size); + if (read_val_ext(env, &decode->op[i], decode->operand_size, + &decode->op[i].val)) { + return 1; + } } break; default: break; } } + return 0; } =20 -static void exec_mov(CPUX86State *env, struct x86_decode *decode) +static bool exec_mov(CPUX86State *env, struct x86_decode *decode) { fetch_operands(env, decode, 2, false, true, false); - write_val_ext(env, &decode->op[0], decode->op[1].val, - decode->operand_size); + if (write_val_ext(env, &decode->op[0], decode->op[1].val, + decode->operand_size)) { + return 1; + } =20 env->eip +=3D decode->len; + return 0; } =20 -static void exec_add(CPUX86State *env, struct x86_decode *decode) +static bool exec_add(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, +, SET_FLAGS_OSZAPC_ADD, true); env->eip +=3D decode->len; + return 0; } =20 -static void exec_or(CPUX86State *env, struct x86_decode *decode) +static bool exec_or(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, |, SET_FLAGS_OSZAPC_LOGIC, true); env->eip +=3D decode->len; + return 0; } =20 -static void exec_adc(CPUX86State *env, struct x86_decode *decode) +static bool exec_adc(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, +get_CF(env)+, SET_FLAGS_OSZAPC_ADD, t= rue); env->eip +=3D decode->len; + return 0; } =20 -static void exec_sbb(CPUX86State *env, struct x86_decode *decode) +static bool exec_sbb(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, -get_CF(env)-, SET_FLAGS_OSZAPC_SUB, t= rue); env->eip +=3D decode->len; + return 0; } =20 -static void exec_and(CPUX86State *env, struct x86_decode *decode) +static bool exec_and(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, &, SET_FLAGS_OSZAPC_LOGIC, true); env->eip +=3D decode->len; + return 0; } =20 -static void exec_sub(CPUX86State *env, struct x86_decode *decode) +static bool exec_sub(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, true); env->eip +=3D decode->len; + return 0; } =20 -static void exec_xor(CPUX86State *env, struct x86_decode *decode) +static bool exec_xor(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, ^, SET_FLAGS_OSZAPC_LOGIC, true); env->eip +=3D decode->len; + return 0; } =20 -static void exec_neg(CPUX86State *env, struct x86_decode *decode) +static bool exec_neg(CPUX86State *env, struct x86_decode *decode) { /*EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, false);*/ int32_t val; @@ -342,15 +365,17 @@ static void exec_neg(CPUX86State *env, struct x86_dec= ode *decode) =20 /*lflags_to_rflags(env);*/ env->eip +=3D decode->len; + return 0; } =20 -static void exec_cmp(CPUX86State *env, struct x86_decode *decode) +static bool exec_cmp(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, -, SET_FLAGS_OSZAPC_SUB, false); env->eip +=3D decode->len; + return 0; } =20 -static void exec_inc(CPUX86State *env, struct x86_decode *decode) +static bool exec_inc(CPUX86State *env, struct x86_decode *decode) { decode->op[1].type =3D X86_VAR_IMMEDIATE; decode->op[1].val =3D 0; @@ -358,33 +383,37 @@ static void exec_inc(CPUX86State *env, struct x86_dec= ode *decode) EXEC_2OP_FLAGS_CMD(env, decode, +1+, SET_FLAGS_OSZAP_ADD, true); =20 env->eip +=3D decode->len; + return 0; } =20 -static void exec_dec(CPUX86State *env, struct x86_decode *decode) +static bool exec_dec(CPUX86State *env, struct x86_decode *decode) { decode->op[1].type =3D X86_VAR_IMMEDIATE; decode->op[1].val =3D 0; =20 EXEC_2OP_FLAGS_CMD(env, decode, -1-, SET_FLAGS_OSZAP_SUB, true); env->eip +=3D decode->len; + return 0; } =20 -static void exec_tst(CPUX86State *env, struct x86_decode *decode) +static bool exec_tst(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, &, SET_FLAGS_OSZAPC_LOGIC, false); env->eip +=3D decode->len; + return 0; } =20 -static void exec_not(CPUX86State *env, struct x86_decode *decode) +static bool exec_not(CPUX86State *env, struct x86_decode *decode) { fetch_operands(env, decode, 1, true, false, false); =20 write_val_ext(env, &decode->op[0], ~decode->op[0].val, decode->operand_size); env->eip +=3D decode->len; + return 0; } =20 -void exec_movzx(CPUX86State *env, struct x86_decode *decode) +bool exec_movzx(CPUX86State *env, struct x86_decode *decode) { int src_op_size; int op_size =3D decode->operand_size; @@ -398,13 +427,16 @@ void exec_movzx(CPUX86State *env, struct x86_decode *= decode) } decode->operand_size =3D src_op_size; calc_modrm_operand(env, decode, &decode->op[1]); - decode->op[1].val =3D read_val_ext(env, &decode->op[1], src_op_size); + if (read_val_ext(env, &decode->op[1], src_op_size, &decode->op[1].val)= ) { + return 1; + } write_val_ext(env, &decode->op[0], decode->op[1].val, op_size); =20 env->eip +=3D decode->len; + return 0; } =20 -static void exec_out(CPUX86State *env, struct x86_decode *decode) +static bool exec_out(CPUX86State *env, struct x86_decode *decode) { switch (decode->opcode[0]) { case 0xe6: @@ -426,9 +458,10 @@ static void exec_out(CPUX86State *env, struct x86_deco= de *decode) break; } env->eip +=3D decode->len; + return 0; } =20 -static void exec_in(CPUX86State *env, struct x86_decode *decode) +static bool exec_in(CPUX86State *env, struct x86_decode *decode) { target_ulong val =3D 0; switch (decode->opcode[0]) { @@ -463,6 +496,7 @@ static void exec_in(CPUX86State *env, struct x86_decode= *decode) } =20 env->eip +=3D decode->len; + return 0; } =20 static inline void string_increment_reg(CPUX86State *env, int reg, @@ -523,7 +557,7 @@ static bool exec_ins_single(CPUX86State *env, struct x8= 6_decode *decode) return 0; } =20 -static void exec_ins(CPUX86State *env, struct x86_decode *decode) +static bool exec_ins(CPUX86State *env, struct x86_decode *decode) { bool res; if (decode->rep) { @@ -533,9 +567,10 @@ static void exec_ins(CPUX86State *env, struct x86_deco= de *decode) } =20 if (res) { - return; + return 1; } env->eip +=3D decode->len; + return 0; } =20 static bool exec_outs_single(CPUX86State *env, struct x86_decode *decode) @@ -551,7 +586,7 @@ static bool exec_outs_single(CPUX86State *env, struct x= 86_decode *decode) return 0; } =20 -static void exec_outs(CPUX86State *env, struct x86_decode *decode) +static bool exec_outs(CPUX86State *env, struct x86_decode *decode) { bool res; if (decode->rep) { @@ -561,9 +596,10 @@ static void exec_outs(CPUX86State *env, struct x86_dec= ode *decode) } =20 if (res) { - return; + return 1; } env->eip +=3D decode->len; + return 0; } =20 static bool exec_movs_single(CPUX86State *env, struct x86_decode *decode) @@ -590,7 +626,7 @@ static bool exec_movs_single(CPUX86State *env, struct x= 86_decode *decode) return 0; } =20 -static void exec_movs(CPUX86State *env, struct x86_decode *decode) +static bool exec_movs(CPUX86State *env, struct x86_decode *decode) { bool res; if (decode->rep) { @@ -600,9 +636,10 @@ static void exec_movs(CPUX86State *env, struct x86_dec= ode *decode) } =20 if (res) { - return; + return 1; } env->eip +=3D decode->len; + return 0; } =20 static bool exec_cmps_single(CPUX86State *env, struct x86_decode *decode) @@ -630,7 +667,7 @@ static bool exec_cmps_single(CPUX86State *env, struct x= 86_decode *decode) return 0; } =20 -static void exec_cmps(CPUX86State *env, struct x86_decode *decode) +static bool exec_cmps(CPUX86State *env, struct x86_decode *decode) { if (decode->rep) { string_rep(env, decode, exec_cmps_single, decode->rep); @@ -638,6 +675,7 @@ static void exec_cmps(CPUX86State *env, struct x86_deco= de *decode) exec_cmps_single(env, decode); } env->eip +=3D decode->len; + return 0; } =20 =20 @@ -660,7 +698,7 @@ static bool exec_stos_single(CPUX86State *env, struct x= 86_decode *decode) } =20 =20 -static void exec_stos(CPUX86State *env, struct x86_decode *decode) +static bool exec_stos(CPUX86State *env, struct x86_decode *decode) { if (decode->rep) { string_rep(env, decode, exec_stos_single, 0); @@ -669,6 +707,7 @@ static void exec_stos(CPUX86State *env, struct x86_deco= de *decode) } =20 env->eip +=3D decode->len; + return 0; } =20 static bool exec_scas_single(CPUX86State *env, struct x86_decode *decode) @@ -685,7 +724,7 @@ static bool exec_scas_single(CPUX86State *env, struct x= 86_decode *decode) return 0; } =20 -static void exec_scas(CPUX86State *env, struct x86_decode *decode) +static bool exec_scas(CPUX86State *env, struct x86_decode *decode) { decode->op[0].type =3D X86_VAR_REG; decode->op[0].reg =3D R_EAX; @@ -696,6 +735,7 @@ static void exec_scas(CPUX86State *env, struct x86_deco= de *decode) } =20 env->eip +=3D decode->len; + return 0; } =20 static bool exec_lods_single(CPUX86State *env, struct x86_decode *decode) @@ -711,7 +751,7 @@ static bool exec_lods_single(CPUX86State *env, struct x= 86_decode *decode) return 0; } =20 -static void exec_lods(CPUX86State *env, struct x86_decode *decode) +static bool exec_lods(CPUX86State *env, struct x86_decode *decode) { if (decode->rep) { string_rep(env, decode, exec_lods_single, 0); @@ -720,6 +760,7 @@ static void exec_lods(CPUX86State *env, struct x86_deco= de *decode) } =20 env->eip +=3D decode->len; + return 0; } =20 void x86_emul_raise_exception(CPUX86State *env, int exception_index, int e= rror_code) @@ -730,23 +771,25 @@ void x86_emul_raise_exception(CPUX86State *env, int e= xception_index, int error_c env->exception_injected =3D 1; } =20 -static void exec_rdmsr(CPUX86State *env, struct x86_decode *decode) +static bool exec_rdmsr(CPUX86State *env, struct x86_decode *decode) { emul_ops->simulate_rdmsr(env_cpu(env)); env->eip +=3D decode->len; + return 0; } =20 -static void exec_wrmsr(CPUX86State *env, struct x86_decode *decode) +static bool exec_wrmsr(CPUX86State *env, struct x86_decode *decode) { emul_ops->simulate_wrmsr(env_cpu(env)); env->eip +=3D decode->len; + return 0; } =20 /* * flag: * 0 - bt, 1 - btc, 2 - bts, 3 - btr */ -static void do_bt(CPUX86State *env, struct x86_decode *decode, int flag) +static bool do_bt(CPUX86State *env, struct x86_decode *decode, int flag) { int32_t displacement; uint8_t index; @@ -755,7 +798,9 @@ static void do_bt(CPUX86State *env, struct x86_decode *= decode, int flag) =20 VM_PANIC_ON(decode->rex.rex); =20 - fetch_operands(env, decode, 2, false, true, false); + if (fetch_operands(env, decode, 2, false, true, false)) { + return 1; + } index =3D decode->op[1].val & mask; =20 if (decode->op[0].type !=3D X86_VAR_REG) { @@ -769,14 +814,16 @@ static void do_bt(CPUX86State *env, struct x86_decode= *decode, int flag) VM_PANIC("bt 64bit\n"); } } - decode->op[0].val =3D read_val_ext(env, &decode->op[0], - decode->operand_size); + if (read_val_ext(env, &decode->op[0], + decode->operand_size, &decode->op[0].= val)) { + return 1; + } cf =3D (decode->op[0].val >> index) & 0x01; =20 switch (flag) { case 0: set_CF(env, cf); - return; + return 0; case 1: decode->op[0].val ^=3D (1u << index); break; @@ -787,41 +834,58 @@ static void do_bt(CPUX86State *env, struct x86_decode= *decode, int flag) decode->op[0].val &=3D ~(1u << index); break; } - write_val_ext(env, &decode->op[0], decode->op[0].val, - decode->operand_size); + if (write_val_ext(env, &decode->op[0], decode->op[0].val, + decode->operand_size)) { + return 1; + } set_CF(env, cf); + return 0; } =20 -static void exec_bt(CPUX86State *env, struct x86_decode *decode) +static bool exec_bt(CPUX86State *env, struct x86_decode *decode) { - do_bt(env, decode, 0); + if (do_bt(env, decode, 0)) { + return 1; + } env->eip +=3D decode->len; + return 0; } =20 -static void exec_btc(CPUX86State *env, struct x86_decode *decode) +static bool exec_btc(CPUX86State *env, struct x86_decode *decode) { - do_bt(env, decode, 1); + if (do_bt(env, decode, 1)) { + return 1; + } env->eip +=3D decode->len; + return 0; } =20 -static void exec_btr(CPUX86State *env, struct x86_decode *decode) +static bool exec_btr(CPUX86State *env, struct x86_decode *decode) { - do_bt(env, decode, 3); + if (do_bt(env, decode, 3)) { + return 1; + } env->eip +=3D decode->len; + return 0; } =20 -static void exec_bts(CPUX86State *env, struct x86_decode *decode) +static bool exec_bts(CPUX86State *env, struct x86_decode *decode) { - do_bt(env, decode, 2); + if (do_bt(env, decode, 2)) { + return 1; + } env->eip +=3D decode->len; + return 0; } =20 -void exec_shl(CPUX86State *env, struct x86_decode *decode) +bool exec_shl(CPUX86State *env, struct x86_decode *decode) { uint8_t count; int of =3D 0, cf =3D 0; =20 - fetch_operands(env, decode, 2, true, true, false); + if (fetch_operands(env, decode, 2, true, true, false)) { + return 1; + } =20 count =3D decode->op[1].val; count &=3D 0x1f; /* count is masked to 5 bits*/ @@ -878,12 +942,14 @@ void exec_shl(CPUX86State *env, struct x86_decode *de= code) exit: /* lflags_to_rflags(env); */ env->eip +=3D decode->len; + return 0; } =20 -void exec_movsx(CPUX86State *env, struct x86_decode *decode) +bool exec_movsx(CPUX86State *env, struct x86_decode *decode) { int src_op_size; int op_size =3D decode->operand_size; + target_ulong val; =20 fetch_operands(env, decode, 2, false, false, false); =20 @@ -895,15 +961,18 @@ void exec_movsx(CPUX86State *env, struct x86_decode *= decode) =20 decode->operand_size =3D src_op_size; calc_modrm_operand(env, decode, &decode->op[1]); - decode->op[1].val =3D sign(read_val_ext(env, &decode->op[1], src_op_si= ze), - src_op_size); + if (read_val_ext(env, &decode->op[1], src_op_size, &val)) { + return 1; + } + decode->op[1].val =3D sign(val, src_op_size); =20 write_val_ext(env, &decode->op[0], decode->op[1].val, op_size); =20 env->eip +=3D decode->len; + return 0; } =20 -void exec_ror(CPUX86State *env, struct x86_decode *decode) +bool exec_ror(CPUX86State *env, struct x86_decode *decode) { uint8_t count; =20 @@ -979,9 +1048,10 @@ void exec_ror(CPUX86State *env, struct x86_decode *de= code) } } env->eip +=3D decode->len; + return 0; } =20 -void exec_rol(CPUX86State *env, struct x86_decode *decode) +bool exec_rol(CPUX86State *env, struct x86_decode *decode) { uint8_t count; =20 @@ -1060,10 +1130,11 @@ void exec_rol(CPUX86State *env, struct x86_decode *= decode) } } env->eip +=3D decode->len; + return 0; } =20 =20 -void exec_rcl(CPUX86State *env, struct x86_decode *decode) +bool exec_rcl(CPUX86State *env, struct x86_decode *decode) { uint8_t count; int of =3D 0, cf =3D 0; @@ -1146,9 +1217,10 @@ void exec_rcl(CPUX86State *env, struct x86_decode *d= ecode) } } env->eip +=3D decode->len; + return 0; } =20 -void exec_rcr(CPUX86State *env, struct x86_decode *decode) +bool exec_rcr(CPUX86State *env, struct x86_decode *decode) { uint8_t count; int of =3D 0, cf =3D 0; @@ -1221,9 +1293,10 @@ void exec_rcr(CPUX86State *env, struct x86_decode *d= ecode) } } env->eip +=3D decode->len; + return 0; } =20 -static void exec_xchg(CPUX86State *env, struct x86_decode *decode) +static bool exec_xchg(CPUX86State *env, struct x86_decode *decode) { fetch_operands(env, decode, 2, true, true, false); =20 @@ -1233,20 +1306,22 @@ static void exec_xchg(CPUX86State *env, struct x86_= decode *decode) decode->operand_size); =20 env->eip +=3D decode->len; + return 0; } =20 -static void exec_xadd(CPUX86State *env, struct x86_decode *decode) +static bool exec_xadd(CPUX86State *env, struct x86_decode *decode) { EXEC_2OP_FLAGS_CMD(env, decode, +, SET_FLAGS_OSZAPC_ADD, true); write_val_ext(env, &decode->op[1], decode->op[0].val, decode->operand_size); =20 env->eip +=3D decode->len; + return 0; } =20 static struct cmd_handler { enum x86_decode_cmd cmd; - void (*handler)(CPUX86State *env, struct x86_decode *ins); + bool (*handler)(CPUX86State *env, struct x86_decode *ins); } handlers[] =3D { {X86_DECODE_CMD_INVL, NULL,}, {X86_DECODE_CMD_MOV, exec_mov}, diff --git a/target/i386/emulate/x86_emu.h b/target/i386/emulate/x86_emu.h index 6b69111822..0f284b0c3d 100644 --- a/target/i386/emulate/x86_emu.h +++ b/target/i386/emulate/x86_emu.h @@ -44,15 +44,15 @@ target_ulong read_reg(CPUX86State *env, int reg, int si= ze); void write_reg(CPUX86State *env, int reg, target_ulong val, int size); target_ulong read_val_from_reg(void *reg_ptr, int size); void write_val_to_reg(void *reg_ptr, target_ulong val, int size); -void write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size); +bool write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size); uint8_t *read_mmio(CPUX86State *env, target_ulong ptr, int bytes); -target_ulong read_val_ext(CPUX86State *env, struct x86_decode_op *decode, = int size); +bool read_val_ext(CPUX86State *env, struct x86_decode_op *decode, int size= , target_ulong* val); =20 -void exec_movzx(CPUX86State *env, struct x86_decode *decode); -void exec_shl(CPUX86State *env, struct x86_decode *decode); -void exec_movsx(CPUX86State *env, struct x86_decode *decode); -void exec_ror(CPUX86State *env, struct x86_decode *decode); -void exec_rol(CPUX86State *env, struct x86_decode *decode); -void exec_rcl(CPUX86State *env, struct x86_decode *decode); -void exec_rcr(CPUX86State *env, struct x86_decode *decode); +bool exec_movzx(CPUX86State *env, struct x86_decode *decode); +bool exec_shl(CPUX86State *env, struct x86_decode *decode); +bool exec_movsx(CPUX86State *env, struct x86_decode *decode); +bool exec_ror(CPUX86State *env, struct x86_decode *decode); +bool exec_rol(CPUX86State *env, struct x86_decode *decode); +bool exec_rcl(CPUX86State *env, struct x86_decode *decode); +bool exec_rcr(CPUX86State *env, struct x86_decode *decode); #endif --=20 2.50.1 (Apple Git-155)