From nobody Sun Apr 5 18:10:40 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=1774294642; cv=none; d=zohomail.com; s=zohoarc; b=Kcucy2czmde324fyUgVBrLOrVZ9256UOX7ui1oFpHalpxSSU42H5sBF1W5I0zZ8PMINuyZ3ZcB2CP5rG5/5nRQFTkDboAYa+l8weuF0ReD4vbHamIGO++MlP1985Y2f/4S2+jvFgvwDC3HbP5KM+NrRm0MI0q7NfQmUcSXAU4MQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294642; 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=2GvRGzc1MRHwmLUZVIfY+An7ZJn+U4NKEHF+iW/SlLc=; b=bvQANcBZBD9qeuXMFFubHbOItvu9BEu1D38KhYfueDkUg8aOjPlWLimcvCQy7gEuobwYeuDN29G4xCWaTg2RajK08yp+273JY5xZMR2T2sdCvaWV2eJcqsjqaNJrSGJuoNUtj4Q6pLeGqOB4k7IHg6VUNqiQb7Ptp+ek25tI+yY= 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 1774294642304407.4431945972259; Mon, 23 Mar 2026 12:37:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5L-0005mh-OV; Mon, 23 Mar 2026 15:37:11 -0400 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 1w4l58-0005lm-Ge for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:00 -0400 Received: from p-west3-cluster3-host5-snip4-10.eps.apple.com ([57.103.72.141] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l56-0004WW-CP for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:36:58 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id A74561800100; Mon, 23 Mar 2026 19:36:52 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 9E73B180027A; Mon, 23 Mar 2026 19:36:50 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294614; x=1776886614; bh=2GvRGzc1MRHwmLUZVIfY+An7ZJn+U4NKEHF+iW/SlLc=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=dCIeECaR1uNbkJm7inmdln8hPKfQqSFsX9pjr9g6uIma73qpjbA76NnAVG8QfGSwStRM/5yiE4x4O37UWtqnxddBFirs7Zw28LRpuW5SlDJBLLFy1pKS2hFZiep6sT8LRtN2/fAn6HZUhu24tI93CXTlqmpTBuC/0NczU9mTURLq44vAjc/1hiyNyPcbNC+H8imtvR691hTXYsFiImCHzgClJiO9/cOQb/VOxVLH3/Yn/sD0EBsNHJwWFGkXQ0znubyHCs54CROKJ2PXtq1h3HO9YxD5OUp38iKwd3J3cVnCUkagH/VDmzN8eVaPpy9j9JKSF+RSnZdM+Mtvl4hWbQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 01/12] whpx: i386: workaround for Windows 10 support Date: Mon, 23 Mar 2026 20:36:34 +0100 Message-ID: <20260323193645.82602-2-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: WPomYIkuBVq4q9jw7EHdTZbCebTNoswa X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX4q0uOw5RxVp3 xPp1XjomQWqOXNfLTQnHWq1IL5dq7NswrwVu1P7PvIPN1XAtbd8rXbe7xJo5ixUaAFMLmMEM4qy N2Fm39qQCl5Xz38TlvKgE08ghdlM0xBBaYurpz9BY54WHB1JIZ4kLEUPINnuPH5EZGsKxzs7MKQ Mj5Y+IeTqkFJLR0BtJbgNh76LhmNDC9BS0/FcDO9vAR4ZQYVc2ihmVqfuzTV5FLGKCrqkFUjlvF O8WPQynPt+8ZdEgQjqGcVfG2hyp/ITcaBQTG4rrXJVikLiuzDZu9zrrY0KPHGRT/r7houw7JXk0 +ictLhptZU7iq7beyeTXZmBZE1ilLmblT7YkYkFpk6fsYaQer55fEmYLS2L1vA= X-Authority-Info-Out: v=2.4 cv=TY6bdBQh c=1 sm=1 tr=0 ts=69c19655 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=0RUPog5Yt9CtxV4tMQEA:9 X-Proofpoint-ORIG-GUID: WPomYIkuBVq4q9jw7EHdTZbCebTNoswa X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 mlxlogscore=999 clxscore=1030 spamscore=0 mlxscore=0 suspectscore=0 malwarescore=0 lowpriorityscore=0 phishscore=0 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.141; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294649619154100 Content-Type: text/plain; charset="utf-8" Windows Server 2022 and later support WHvCapabilityCodeProcessorPerfmonFeatures and WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks. Windows 10 supports neither of those. As the QEMU executable doesn't have a manifest, OS version queries do not return the actual Windows version but 6.2.9200 which corresponds to Windows 8. Windows Server 2022 and Windows 11 still use the 10.0 number, with distinction being the build number. As such, use the absence of perf monitoring feature query as a cutoff to detect if a legacy OS is present. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 43 ++++++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 4d5d3dbd24..015c0f1dc9 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1948,6 +1948,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) WHV_CAPABILITY_FEATURES features =3D {0}; WHV_PROCESSOR_FEATURES_BANKS processor_features; WHV_PROCESSOR_PERFMON_FEATURES perfmon_features; + bool is_legacy_os =3D false; =20 whpx =3D &whpx_global; =20 @@ -2096,21 +2097,29 @@ int whpx_accel_init(AccelState *as, MachineState *m= s) hr =3D whp_dispatch.WHvGetCapability( WHvCapabilityCodeProcessorPerfmonFeatures, &perfmon_features, sizeof(WHV_PROCESSOR_PERFMON_FEATURES), &whpx_cap_size); + /* + * Relying on this is a crutch to maintain Windows 10 support. + * + * WHvCapabilityCodeProcessorPerfmonFeatures and + * WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks + * are implemented starting from Windows Server 2022 (build 20348). + */ if (FAILED(hr)) { - error_report("WHPX: Failed to get performance monitoring features,= hr=3D%08lx", hr); - ret =3D -ENOSPC; - goto error; - } - - hr =3D whp_dispatch.WHvSetPartitionProperty( - whpx->partition, - WHvPartitionPropertyCodeProcessorPerfmonFeatures, - &perfmon_features, - sizeof(WHV_PROCESSOR_PERFMON_FEATURES)); - if (FAILED(hr)) { - error_report("WHPX: Failed to set performance monitoring features,= hr=3D%08lx", hr); - ret =3D -EINVAL; - goto error; + warn_report("WHPX: Failed to get performance " + "monitoring features, hr=3D%08lx", hr); + is_legacy_os =3D true; + } else { + hr =3D whp_dispatch.WHvSetPartitionProperty( + whpx->partition, + WHvPartitionPropertyCodeProcessorPerfmonFeatures, + &perfmon_features, + sizeof(WHV_PROCESSOR_PERFMON_FEATURES)); + if (FAILED(hr)) { + error_report("WHPX: Failed to set performance " + "monitoring features, hr=3D%08lx", hr); + ret =3D -EINVAL; + goto error; + } } =20 /* Enable synthetic processor features */ @@ -2138,7 +2147,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) synthetic_features.Bank0.DirectSyntheticTimers =3D 1; } =20 - if (whpx->hyperv_enlightenments_allowed) { + if (!is_legacy_os && whpx->hyperv_enlightenments_allowed) { hr =3D whp_dispatch.WHvSetPartitionProperty( whpx->partition, WHvPartitionPropertyCodeSyntheticProcessorFeaturesBanks, @@ -2149,6 +2158,10 @@ int whpx_accel_init(AccelState *as, MachineState *ms) ret =3D -EINVAL; goto error; } + } else if (is_legacy_os && whpx->hyperv_enlightenments_required) { + error_report("Hyper-V enlightenments not available on legacy Windo= ws"); + ret =3D -EINVAL; + goto error; } =20 /* Register for MSR and CPUID exits */ --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294678; cv=none; d=zohomail.com; s=zohoarc; b=T43sbmuZ/fJQ4e/bCpzXzDNTToXnPdzxz3iyiIGSP4a1dm3B/td1IcF27QsrEtdNOGf6nmgyTIBv3B13IqmsC9KFxS7wZs2SVY9QuY7UzNiJkv4OeyPjVGZgl3nyVkIbGPaNh3Uf7VNeoP4yajEI27XsEdr+q8o4XGGXfCZL6vY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294678; 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=z2ljL8wNGZuOd0h+jeGsCuyzoynr3r/rNkBTVv1fgB0=; b=OwVcZdeMulNAhPwYDrCF/o+otPTwwFZxyzHyIemT2qkCVfruVOWxeOzZba/S2bSjX/gp1ByLYcpWXvzJFc6HiPaGAsE1sAllMoYLxUdfuwxQhVqbOo3ikiTySZzcO4B/8Ash6+3DwRR46eRBXnVyFhKnk9+FEKuNQXTcDRrR37g= 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 17742946784296.765885521391851; Mon, 23 Mar 2026 12:37:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5Q-0005oH-7n; Mon, 23 Mar 2026 15:37:16 -0400 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 1w4l5A-0005m1-Bm for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:01 -0400 Received: from p-west3-cluster3-host2-snip4-10.eps.apple.com ([57.103.72.171] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l56-0004Wf-U4 for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:36:59 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 92FDF1800241; Mon, 23 Mar 2026 19:36:54 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 8037D1800275; Mon, 23 Mar 2026 19:36:52 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294615; x=1776886615; bh=z2ljL8wNGZuOd0h+jeGsCuyzoynr3r/rNkBTVv1fgB0=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Z8v458xNoTz351qwyH0X5fiHNij0gFTC7bvu73pPohiLtJ0Lg14n9yL60dhuRYu6jQVVB8wzdi0pBWkqhQnxW/wWc+Yo6QHjsm7j766cfJOdeTapFLYsWDHPg++/+HuzwovCAAMxyogj4FOREbZyN5NXwyQU5MYYLY1Op9wTqPE4p4NA12H0z93LfN9dFwuocen487iaeKaPPTthqihL84kIE7p/hQmF3GCUp5ZhwSq5A9VY4NrsOLy6PUEXQpooqrA/ufmwIYDKPvNMEA8aviILIVIflASRSDHkOT5z8OUBBhsDVXJJ5EkSadVWbR1KyeognE0LTKQv32KgnCIhGQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 02/12] whpx: i386: enable exceptions VM exit only when needed Date: Mon, 23 Mar 2026 20:36:35 +0100 Message-ID: <20260323193645.82602-3-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX2+pml8t1b3Da kmsK23gVNYXuCCwh89cZU9UAJLoh7WqjKU3PRn5KZoIqV+V4MiMmGcU7CHs25Hs+v2szp5T2zdW vQ4ATGGpWDUVgb4jY5/9xLrtD+jJ+H3/pDly3yEesVqm0/O2GmyJiQhXBRCDRziRYUzPmHPcHNO I7PexymaGTxvLZbZOfu7gwIPGRw2emv7BpMI7eSeElBqdQ4UU/rVXj7xsngixil4mldaeFgNXLA DQa4ximYWlZgpCYtufvrnSeUVslA9w7vGws5aIJrDdqBJ7hSV8ywBxOq1FcdN0O4npn0gBk4KIk YNUzlwitmPK0AKReUA91s4kwv19iY+fytf5JMx0rqa5vGCHtvFXsPLQOgb4r6M= X-Authority-Info-Out: v=2.4 cv=JNQ2csKb c=1 sm=1 tr=0 ts=69c19657 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EmEGBKFVNSqW8m1RzRwA:9 X-Proofpoint-ORIG-GUID: rddMkaxQ1EUjFfAbPg1RmI5WWYqazOcf X-Proofpoint-GUID: rddMkaxQ1EUjFfAbPg1RmI5WWYqazOcf X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 lowpriorityscore=0 mlxlogscore=903 spamscore=0 mlxscore=0 bulkscore=0 clxscore=1030 adultscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.171; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294681204158500 Content-Type: text/plain; charset="utf-8" The exceptions VM exit was enabled with an empty bitmask even when not used. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 015c0f1dc9..8f1835ee95 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -903,13 +903,31 @@ static void whpx_init_emu(void) HRESULT whpx_set_exception_exit_bitmap(UINT64 exceptions) { struct whpx_state *whpx =3D &whpx_global; - WHV_PARTITION_PROPERTY prop =3D { 0, }; + WHV_PARTITION_PROPERTY prop; HRESULT hr; =20 if (exceptions =3D=3D whpx->exception_exit_bitmap) { return S_OK; } =20 + /* Register for MSR and CPUID exits */ + memset(&prop, 0, sizeof(WHV_PARTITION_PROPERTY)); + prop.ExtendedVmExits.X64MsrExit =3D 1; + if (exceptions !=3D 0) { + prop.ExtendedVmExits.ExceptionExit =3D 1; + } + + hr =3D whp_dispatch.WHvSetPartitionProperty( + whpx->partition, + WHvPartitionPropertyCodeExtendedVmExits, + &prop, + sizeof(WHV_PARTITION_PROPERTY)); + if (FAILED(hr)) { + error_report("WHPX: Failed to enable extended VM exits, hr=3D%08lx= ", hr); + return hr; + } + + memset(&prop, 0, sizeof(WHV_PARTITION_PROPERTY)); prop.ExceptionExitBitmap =3D exceptions; =20 hr =3D whp_dispatch.WHvSetPartitionProperty( @@ -2167,7 +2185,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.ExceptionExit =3D 1; =20 hr =3D whp_dispatch.WHvSetPartitionProperty( whpx->partition, @@ -2175,7 +2192,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) &prop, sizeof(WHV_PARTITION_PROPERTY)); if (FAILED(hr)) { - error_report("WHPX: Failed to enable MSR & CPUIDexit, hr=3D%08lx",= hr); + error_report("WHPX: Failed to enable extended VM exits, hr=3D%08lx= ", hr); ret =3D -EINVAL; goto error; } --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294730; cv=none; d=zohomail.com; s=zohoarc; b=hjoYjwn83vb9TrQKSE4mt5n9NcRBFl0YlTy1sxo1yYOs/Zw6GYWG/UWcY4i2IaPO6i+W29Me1I5TyxshbdbnplA7z1XMt2gx9NiyZpLn/Nn3gjOULFH9F9z5EMW8luqNiU0BxJcyl5VMV3incnvT+4vgdITIxg9PRCGvPpxfLas= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294730; 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=vnPfBYcDBT/4rVJAt76jW+6cbBD4K0JEvtoQvDJO0ok=; b=HzOIpE0Hood5JTPE++kHcSwuNN+q8bwX8X/XhZmgGgEH9JWu1zxxzm5CfQF8mHg0IMAdOIjJS5lmIjLaPXqUjkFwTzuE2wsexbSG0g/92TYM4+HTjPCbhR87YZ20i3uWGr9hM08tW1WWRHqGJimwGSzkrmyc+LXiAFQmdmP1MtY= 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 1774294730236701.1229875071942; Mon, 23 Mar 2026 12:38:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5R-0005qZ-1B; Mon, 23 Mar 2026 15:37:17 -0400 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 1w4l5I-0005n4-0B for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:09 -0400 Received: from p-west3-cluster3-host4-snip4-10.eps.apple.com ([57.103.72.191] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5A-0004XF-4X for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:03 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id AD9221800275; Mon, 23 Mar 2026 19:36:56 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 8AC9F180013A; Mon, 23 Mar 2026 19:36:54 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294618; x=1776886618; bh=vnPfBYcDBT/4rVJAt76jW+6cbBD4K0JEvtoQvDJO0ok=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=W6X4+Q+ckuJCZV6maqUCOVVxvXxDK2EmcL/VZURZhj4e91bdsbrVbLJb8qjVh7/C/dWuXx+DnQhUIZR2N0qEvHUCcDS+IT4RM0X90iebN+hMPaIjFLQd/5RK3aeKrZfFFCon6GW2+LzVN79qTclDudpe7yppWzloXJ1COi12BGGM2i9Zy1qqXQiUidOc4GNz4kJo5TMZcm18j4yKG9qs/2U/aEWaP3jm8xRrdZE+tj8FLCU5N0GVVKbM5tnGdgt0OAiYw5YOB7yd3CmrOd5ppShTbx4FHC3jg5oae9fwTETgwPlpvzwHYlQvnyJjg8GrSYftSuEMvqarCvglTzroAw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 03/12] whpx: i386: skip TSC read for MMIO exits Date: Mon, 23 Mar 2026 20:36:36 +0100 Message-ID: <20260323193645.82602-4-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=IZeKmGqa c=1 sm=1 tr=0 ts=69c19659 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=NP4je1IWzm4tDGSucAQA:9 X-Proofpoint-ORIG-GUID: _XeI8KjePg5BDZ-NXO25DAuv8q7tS7Df X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX9wFt0VMoFVXK 0ys6j133ljdLG1pYs5vJfQPPV4gtHYhONG+kz+kZjyZYlz1B0zcsmQ/i7HTYzvkdG1892A7hQTA JCfZC2WTLYQUMiicifUG31jrWJdOdXlPHlc7xjnjw7Q9+1JjGV6a4txQtjEsAftEkAJnAKzl2F6 X/dtJKfLA28A0yx1ooEjgMR8kodcca/tlnkJDRB1/nRFsMWagRPodtAshW6B9mczWf03C2ED2GS S/pDrZV1bxmPn7jOWCLIAc3k1Z7vmiit6dFMs82CWtAVcGummnRE2ZnoVKQuaG/a3YCb7tyX243 WrMnHQ4fB2gdA8Ci6WwwqLmSIuToFO78dsEr6lyCjnOtBtySAvSf7MocI6+aBo= X-Proofpoint-GUID: _XeI8KjePg5BDZ-NXO25DAuv8q7tS7Df X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 adultscore=0 phishscore=0 lowpriorityscore=0 bulkscore=0 mlxlogscore=677 spamscore=0 malwarescore=0 clxscore=1030 suspectscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.191; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294732415158500 Content-Type: text/plain; charset="utf-8" The TSC value isn't needed for vmexit processing. 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 8f1835ee95..ac03445d9d 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -606,7 +606,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) =20 assert(cpu_is_stopped(cpu) || qemu_cpu_is_self(cpu)); =20 - if (!env->tsc_valid) { + if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && !env->tsc_valid) { whpx_get_tsc(cpu); env->tsc_valid =3D !runstate_is_running(); } --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294730; cv=none; d=zohomail.com; s=zohoarc; b=Wwt0INoM57HEhUlalvi7nB7sQ8VIHSt88fv/tYcx6yctHokoKzlT8P2fL7CE02sbB/gAkfWS0hZNyAHPim5/JI66M4iZRJYZKsDTIXLidsIIFSs/NEilyGOelCoavjesQhtaS84DIctcMlkK0J7SChckUXehereLAosvY9UKa2Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294730; 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=p3kP/TgGy9+75EyKQX7zRo14kGVxvhzT6oqhUrcGhLI=; b=MdbqPeJ7bqXBV5Rlqq93vgKWBIUE5AQ+GISCQUoNbmelIMbvRO+YDo4a9ZiodAJuXY8NJJjyclaAmBJT1Hx6EkGxqow/VUqS5TXvLgea3lNS9BLU1uRFQ1H2Ll3fQdsUkvwOGANpvgiidwzczOZRflU7msct9t4rSL3W2N+mDxE= 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 1774294730452333.03712886681456; Mon, 23 Mar 2026 12:38:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5R-0005qq-RI; Mon, 23 Mar 2026 15:37:18 -0400 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 1w4l5L-0005o2-Rh for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:11 -0400 Received: from p-west3-cluster3-host8-snip4-10.eps.apple.com ([57.103.72.211] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5B-0004XN-W7 for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:05 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 3222D1800116; Mon, 23 Mar 2026 19:36:58 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 5F102180010F; Mon, 23 Mar 2026 19:36:56 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294619; x=1776886619; bh=p3kP/TgGy9+75EyKQX7zRo14kGVxvhzT6oqhUrcGhLI=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=db1wTPC9H7Y0oKzPbymY7+QNdfush/vy+w4d898uObF+mSmEsJxNuKwwlpOThP08dy96bKk8xJvU4faFq17HrsrQUGFGJ4uSTW54Eiowdv8c2OqHxC2vQdHFLXrDDUD6CIGCeAsS9K7EJov/sIVi2TiQGlO4DX1ik9lnVnL+Orw5EpYqnx+BIRqj7yYzS5nXeCdxTx60Akc8ZZ91LekuAWtVpVVPUsXnOX7rNewrij5w6wBS3cBfzRWYRNSrbjCo8BAQhq7Ph/jB/HVCAsyvu1u6j0eXfYsJutjtXTdkM9OXRKBZ32Mz+433s/k0oou3N4ths4phD8oHHfHQDyxw1g== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 04/12] whpx: i386: skip XCRs read for MMIO exits Date: Mon, 23 Mar 2026 20:36:37 +0100 Message-ID: <20260323193645.82602-5-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=MsRfKmae c=1 sm=1 tr=0 ts=69c1965a cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=ytqdvofJqIjuNepkJhYA:9 X-Proofpoint-GUID: bSc9j1QX27p-j5ToTgkUU-b8RWFLqVBS X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfXyj0vp3Fk7Bod jHAiC9zXwtrcOyr3ScCX+WmidrghK5qoOOHn24C9KL077qlZH/uNJV7MyznPLG/MJ6UnCmF8yKV H3FMEOdxOK1B7lotmM+92QrSr9JtFnu7soKn8R4NPCl+wD2NfDf8r19gmARFU32/7M94geOogln 5MQ7dg00YyMQ8Zaiz5rL1Gk4rU00Hzy1+xv01BFSC9dxPbhJ7TV+BsexZ/YQvfz5tekg1gkXkmZ Ur6sTihrno3B9x9TWrjJndmWzO21pMXWPPxMlR0nFgCFmDCfnLxik9XlwW104fNAKOcwPrceCQs 62YvmAs5VFE+HUWreJ+8dgynB0KKFp3xACCveVqrlh+MG3T1IPZZNVlBHZ/CNg= X-Proofpoint-ORIG-GUID: bSc9j1QX27p-j5ToTgkUU-b8RWFLqVBS X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 mlxlogscore=762 clxscore=1030 bulkscore=0 phishscore=0 suspectscore=0 mlxscore=0 lowpriorityscore=0 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.211; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294732420158500 Content-Type: text/plain; charset="utf-8" The XCR0 value isn't currently needed for vmexit processing. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index ac03445d9d..c0c7ba9177 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -689,7 +689,9 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) * Extended control registers needs to be handled separately depending * on whether xsave is supported/enabled or not. */ - whpx_get_xcrs(cpu); + if (level > WHPX_LEVEL_FAST_RUNTIME_STATE) { + whpx_get_xcrs(cpu); + } =20 /* 16 XMM registers */ assert(whpx_register_names[idx] =3D=3D WHvX64RegisterXmm0); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294658; cv=none; d=zohomail.com; s=zohoarc; b=TLhkaf6lzYbijbBwyPrWDyTvi+idb2GfF1SC5JmrT4BNiqpVr/7EpWpH7bLWs2MWxlicGhBkNnL3UGBPSJZn+OpQWfBGq9+niJ4HlH9uhYRGsHVyBTUyEBa7zmTkuAD5N6JyfsUm1xfF3z84DMLBNPmsJ1OdUF57+qD1nDFFjbo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294658; 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=uAJ51zR7R15wIVlC530LHyYmi+UTEudXXGcCdwby+0E=; b=gHsYyt6+aV/C2qejnhWa6MuyYkd6ooQznlDpaEPaMG34I3cqhX29bBXLhwvIDT9PU1PJ4YwBeSBCPxYQz5MzJNGzQD+yggDv8veuXFcXcg4dKjuQHidf7YRF3B91rqml5/daRX8EglneWHAHMqO56v3/2a6z+Uh9pC2KfEVdmew= 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 1774294658114797.15983730727; Mon, 23 Mar 2026 12:37:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5T-0005sU-SG; Mon, 23 Mar 2026 15:37:19 -0400 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 1w4l5O-0005oY-4g for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:15 -0400 Received: from p-west3-cluster3-host6-snip4-6.eps.apple.com ([57.103.72.147] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5H-0004Xh-Pf for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:12 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id B05E71800139; Mon, 23 Mar 2026 19:36:59 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id F16111800349; Mon, 23 Mar 2026 19:36:57 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294621; x=1776886621; bh=uAJ51zR7R15wIVlC530LHyYmi+UTEudXXGcCdwby+0E=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=eBcoB/kZVY2pj/3hXlWbAgeeXCBrbxMGPCs60uCQLCcAH4SrtIvBJapPCbDkKQjxfcPLxV+wCZSXqJ0g5ctJQrwND2797Oqj/udmQYI/8Qupz+jQPCAiLDMN4+m0bd6CEWnJnUEADYvhHG00e03wPVvHy9AbBOuTGpgGPj1viio9ldNB6308UdIKc9jCr5n9fY/S/mxfky9DwYUlgJouPU6QHM1iEIr7gIA9Gv84QJVlVnCi1DNzgSZhPXPCz4hs6eOz5+Wwlj536UEt1/LuDSxlgFDHnUlM+RjTRX75vZY3xhMjSJ2prWnQZtdhaO8YheWTn7ndbrpMBHs2LlQFzg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 05/12] whpx: i386: don't restore segment registers after MMIO handling Date: Mon, 23 Mar 2026 20:36:38 +0100 Message-ID: <20260323193645.82602-6-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: GqHy4PuT02SD8aqlmo5uuDqelRaDUrJt X-Authority-Info-Out: v=2.4 cv=fKA0HJae c=1 sm=1 tr=0 ts=69c1965c cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=-4eTQGsHVEe5RITbnwAA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX/DUXo2WweLu4 JJ2NX904mAewHM6mYV6wBTQ/BfL4huaHfOvCBIv+dehS9ewKSOYqiYpNANV9aRImp5dEgyQWvue cXEQLw+4jrKJPgf0vsWaJmOI+y78ZMCBDnqotD0rsrrIP8IBYqZSJukaSImvl6MWPOjMvf87hjI EsnSO6+TrhG5HHQ6OFMcknu0nn1NMY76xRRgJhAV4OT/0JOMG4DcXvtKZvy0pUShlR2Q8aBEhv0 OjPY2HcOTlBwTFz+HQ43mWx/f8kM0WhbW5iqEuaHPYOWpSoTITzS1/UEBVPzfPchSHY675TwZ/Z 1UB7d1O5LpL2O7By+U5mPi8fN3xf4Xb3c0Zzg56CV1Vapuk5rXRVONMaZ8gvPg= X-Proofpoint-GUID: GqHy4PuT02SD8aqlmo5uuDqelRaDUrJt X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=801 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.147; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294661380154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index c0c7ba9177..69d141e7cc 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -416,19 +416,21 @@ void whpx_set_registers(CPUState *cpu, WHPXStateLevel= level) assert(whpx_register_names[idx] =3D=3D WHvX64RegisterRflags); lflags_to_rflags(env); vcxt.values[idx++].Reg64 =3D env->eflags; - - /* Translate 6+4 segment registers. HV and QEMU order matches */ assert(idx =3D=3D WHvX64RegisterEs); - for (i =3D 0; i < 6; i +=3D 1, idx +=3D 1) { - vcxt.values[idx].Segment =3D whpx_seg_q2h(&env->segs[i], v86, r86); - } =20 - assert(idx =3D=3D WHvX64RegisterLdtr); - /* - * Skip those registers for synchronisation after MMIO accesses - * as they're not going to be modified in that case. - */ if (level > WHPX_LEVEL_FAST_RUNTIME_STATE) { + + /* Translate 6+4 segment registers. HV and QEMU order matches */ + for (i =3D 0; i < 6; i +=3D 1, idx +=3D 1) { + vcxt.values[idx].Segment =3D whpx_seg_q2h(&env->segs[i], v86, = r86); + } + + assert(idx =3D=3D WHvX64RegisterLdtr); + /* + * Skip those registers for synchronisation after MMIO accesses + * as they're not going to be modified in that case. + */ + vcxt.values[idx++].Segment =3D whpx_seg_q2h(&env->ldt, 0, 0); =20 assert(idx =3D=3D WHvX64RegisterTr); --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294730; cv=none; d=zohomail.com; s=zohoarc; b=FlqQ6zJ26bbYl7u7YGOH6ElxRPBnPB5PART7YTkm4bJWjcDFueb+XqOu6bSMwTvjBHC7UmkXtYIWB7s0jbcLTND2tWV1O1UAIROY7R97TT99t3+FY9nvcDekenhrqYhXLv2/HwDtQq3IuDWODO3tCMq3K3vjJ8vtBKm1ACimcpE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294730; 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=NZnj8yCbumSadExeNcgwgqV2muxnORrhx0HseCqyro8=; b=Vcc9IOPxFE9j4Gg4ujru1xgm+o88n+K9CdcCTgG3n1oxjjXh5xqV75cf3GpK28+7kgIp4BpQwjHlPt36ZNMNNc/g7f8+8dWec2qgE1OoOR4nmSBzY5qDspMsHM22zosGI3hFOaDr+MZ65NuvDUZgCCt/1Dh6JFNFLTBAwo4qUA4= 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 1774294729815927.6783646005155; Mon, 23 Mar 2026 12:38:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5S-0005qs-1r; Mon, 23 Mar 2026 15:37:18 -0400 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 1w4l5O-0005oc-8F for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:15 -0400 Received: from p-west3-cluster3-host3-snip4-3.eps.apple.com ([57.103.72.174] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5L-0004Xj-Mm for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:13 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 3BABC180027F; Mon, 23 Mar 2026 19:37:01 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 7D47D18000B9; Mon, 23 Mar 2026 19:36:59 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294622; x=1776886622; bh=NZnj8yCbumSadExeNcgwgqV2muxnORrhx0HseCqyro8=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=ZDnMXfYGtBvNv4kkrxgq0G2RA9R0ei80pQXwCPjwa3IHBO1S/KUb1/CvKwaB5iddFolCHFQM73BEZ0O9xBEd7C9n2H4XEkp2toAbCpesaE4mHydG+4UeofsmBMUrptm0IZ94EnsUehABS+k0D9m2DmocPN1c6/sFPS59RIcMODBAYJIyKLQMbnLXOAFflQ97Mxv2t1+o687YZ88Y6oSnIkNtUqYBizajAUD9q/VdjLD9v5+EejajPy9iRD6ivt/W/711ZB7tCHFtfJoLsKZvzH0hUGsJGRSEDxSw3St2cIQKh1XR2F97obAKA9AtcNtVEW5Efpl7dK+i1IppFv2pLg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 06/12] target/i386: emulate: add new callbacks Date: Mon, 23 Mar 2026 20:36:39 +0100 Message-ID: <20260323193645.82602-7-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX226ODl567RVx Pwr7r5KlJVNA/E6OFQReI6QQBVrAORhvOFcVdgcoLgXNEUo0VwL1OMSLQyxnzSV61VodwgTtztV f1gxK1VkdlxCKMoFovTSfY1AarFiz8V17+uEePbJlxZjs6fJywAsJexOQ8NHPCeLPmfHPj+Dg5F 7EQA0cPBan80hFOrAc6o20ztb94b5rVSuvL6PBTwlKdOvLSlIER5/JPoIxjRkuJAgUkLf8UfY/M I9TCTNAQRT4B3wX7PiLcjElchx9j7plJflWfjLxhH56vKW+/7EIlYo8pzMCLFIs84VhR42wmxOt J8sDXjYUyfUcmDK/N/ZTbk3WPMped+qi+uqCHLmyM0VpXZbmq3NhnHyOQVrkCs= X-Authority-Info-Out: v=2.4 cv=Os5CCi/t c=1 sm=1 tr=0 ts=69c1965d cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=AM0uniIKGEjy2BpxYl4A:9 X-Proofpoint-ORIG-GUID: TNes1wm4c2GyxwEmV5l8JgWG4AACr9X8 X-Proofpoint-GUID: TNes1wm4c2GyxwEmV5l8JgWG4AACr9X8 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 mlxscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 clxscore=1030 mlxlogscore=855 suspectscore=0 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.174; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294732712158500 Content-Type: text/plain; charset="utf-8" On Hyper-V fetching some guest registers is really expensive, so add a way to query some state from information provided by Hyper-V to save time on vmexits. Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_emu.h | 3 +++ target/i386/emulate/x86_helpers.c | 6 ++++++ target/i386/emulate/x86_mmu.c | 3 +++ 3 files changed, 12 insertions(+) diff --git a/target/i386/emulate/x86_emu.h b/target/i386/emulate/x86_emu.h index 0f284b0c3d..4ed970bd53 100644 --- a/target/i386/emulate/x86_emu.h +++ b/target/i386/emulate/x86_emu.h @@ -32,6 +32,9 @@ struct x86_emul_ops { int size, int count); void (*simulate_rdmsr)(CPUState *cs); void (*simulate_wrmsr)(CPUState *cs); + bool (*is_protected_mode)(CPUState *cpu); + bool (*is_long_mode)(CPUState *cpu); + bool (*is_user_mode)(CPUState *cpu); }; =20 extern const struct x86_emul_ops *emul_ops; diff --git a/target/i386/emulate/x86_helpers.c b/target/i386/emulate/x86_he= lpers.c index 024f9a2afc..ebbf40f2b0 100644 --- a/target/i386/emulate/x86_helpers.c +++ b/target/i386/emulate/x86_helpers.c @@ -211,6 +211,9 @@ bool x86_is_protected(CPUState *cpu) X86CPU *x86_cpu =3D X86_CPU(cpu); CPUX86State *env =3D &x86_cpu->env; uint64_t cr0 =3D env->cr[0]; + if (emul_ops->is_protected_mode) { + return emul_ops->is_protected_mode(cpu); + } =20 return cr0 & CR0_PE_MASK; } @@ -234,6 +237,9 @@ bool x86_is_long_mode(CPUState *cpu) uint64_t efer =3D env->efer; uint64_t lme_lma =3D (MSR_EFER_LME | MSR_EFER_LMA); =20 + if (emul_ops->is_long_mode) { + return emul_ops->is_long_mode(cpu); + } return ((efer & lme_lma) =3D=3D lme_lma); } =20 diff --git a/target/i386/emulate/x86_mmu.c b/target/i386/emulate/x86_mmu.c index 4e39bae025..670939acdb 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -49,6 +49,9 @@ =20 static bool is_user(CPUState *cpu) { + if (emul_ops->is_user_mode) { + return emul_ops->is_user_mode(cpu); + } return false; } =20 --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294692; cv=none; d=zohomail.com; s=zohoarc; b=hESdm8BaZofC4O2nycjofT3KJ/KJaDA+57vnzAvmC74dVPfpo9jRG98ssAh232/Z6Dlt8haW8MjqADNPzTZh3kmwufcMezvo/3W5JMFzhK9gZYLOYDU3xgC4EsZbaOOEpc7NQjglI/oeo5fQj1QV+kAqEl4RSkVb35b9T4pWX5Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294692; 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=2nLpn0O/CnlM8jHVd/S21trgTmB4bL47YrOHN68V7Uw=; b=Kw95P0rHhGN+4ZUXfMmsTSC3DfygDEn1SFbmyWLKBJ/IVbQeMO7Pd+4PdzIu8qn7LmN5qz1WWGGo6IjTOUfIWzNTSSrvwD+dE0cnUlYFfxeyE2vYesr+khcal4bYikJOQgc6kUQuYRr93uriGM9KOgD+xxJpSt6hjfpXBA39O6c= 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 1774294692564617.7440269133443; Mon, 23 Mar 2026 12:38:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5S-0005rM-EJ; Mon, 23 Mar 2026 15:37:18 -0400 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 1w4l5Q-0005os-5H for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:16 -0400 Received: from p-west3-cluster3-host6-snip4-4.eps.apple.com ([57.103.72.145] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5L-0004Y9-NV for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:14 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 25EFA1800273; Mon, 23 Mar 2026 19:37:03 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 25DD7180027E; Mon, 23 Mar 2026 19:37:01 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294624; x=1776886624; bh=2nLpn0O/CnlM8jHVd/S21trgTmB4bL47YrOHN68V7Uw=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=LQowyuayCdABptHq3SRUlvmMmDQIq6pBPP+ywhRT477ldCm6wtY/xzfP3/qO8Qrd3HRqZRelqE7ary6tft3FQxeDqCQQsMoeAJGiUCxfgY8qNOp342ylPVqvjSzv41F7ygITv1PzZgG8Xt1YLDRhxuDO1VNJni4Sg6gp7a+fQ2lmDkxsasjgcJX2KFcoUABrFEizqQ2EVknsLQhoTwQIKUUSb05al4ggL29STCHdvuRP53jK5jS9U6JnuBnq5bJiUDqj8jzorZ48ZRPIPqq5X4Wewic9+5pjgfwRqmSkVFN12JrWGQtoxxwWfQtmPvuoqtWfrG3MUB7Z23l/3P/7xw== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 07/12] whpx: i386: add implementation of new x86_emul_ops Date: Mon, 23 Mar 2026 20:36:40 +0100 Message-ID: <20260323193645.82602-8-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX+ypluZYSq3Hz a4jV/WCEfzypGV3rU0xS7n6bFZN7i/47klgHmKqx0uQH3aMYQ37AwJ5HyXBgxArWk6PUAycxXEG pAJNlNq5ZfW7TLXbtfceL5blc0eU0b4jpP2eigw9pOBEq9ubGF5YpKLoiuwMPRXB9S5Qk152PdA 0No9/gu/YBItsW2HZ9OGR3Sor8+rkF4WLtUjqaDuWBdGu3vWyhD78lvDdzoZ3rQwwsE/ubiNHsd fQUlm0RAalg9cXS95JCyA04byfis19pPKz75W1GoBPWfH3BDhg/jJCtbkj6n3nVJitmjxLtNmAc TBu7zFooVmVvmKEi7k53FDBqsPzhDOoad0mjWMRtl0XneJoCXjTgn255UXAU3E= X-Authority-Info-Out: v=2.4 cv=PfPyRyhd c=1 sm=1 tr=0 ts=69c1965f cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=od5n6cu0qASRTXmq4OYA:9 X-Proofpoint-GUID: Uxq_mH9ICMBW0fuzYtT3f8d9B90N-6v- X-Proofpoint-ORIG-GUID: Uxq_mH9ICMBW0fuzYtT3f8d9B90N-6v- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 malwarescore=0 phishscore=0 clxscore=1030 bulkscore=0 spamscore=0 adultscore=0 mlxlogscore=890 lowpriorityscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.145; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294695562154100 Content-Type: text/plain; charset="utf-8" target/i386/emulate now has new ops for fetching whether the guest is in protected mode, long mode or user mode without fetching control registers. Use those for faster vmexits. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 69d141e7cc..3484c33c02 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -885,10 +885,32 @@ static void read_segment_descriptor(CPUState *cpu, } } =20 +static bool is_protected_mode(CPUState *cpu) +{ + AccelCPUState *vcpu =3D cpu->accel; + + return vcpu->exit_ctx.VpContext.ExecutionState.Cr0Pe =3D=3D 1; =20 +} + +static bool is_long_mode(CPUState *cpu) +{ + AccelCPUState *vcpu =3D cpu->accel; + + return vcpu->exit_ctx.VpContext.ExecutionState.EferLma =3D=3D 1; =20 +} + +static bool is_user_mode(CPUState *cpu) +{ + AccelCPUState *vcpu =3D cpu->accel; + return vcpu->exit_ctx.VpContext.ExecutionState.Cpl =3D=3D 3; +} =20 static const struct x86_emul_ops whpx_x86_emul_ops =3D { .read_segment_descriptor =3D read_segment_descriptor, - .handle_io =3D handle_io + .handle_io =3D handle_io, + .is_protected_mode =3D is_protected_mode, + .is_long_mode =3D is_long_mode, + .is_user_mode =3D is_user_mode }; =20 static void whpx_init_emu(void) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294731; cv=none; d=zohomail.com; s=zohoarc; b=MkSSFqp2SKWIkex9qkY4Lpg6UWZ6SPK98MA7Wz+J6PWg7CJYxna95Pfam4UPdUZC9mgZbO9JZQrAKoWL2wyX46zDYHtuNO+LgyyNQtvAMUH0hiXZmRFFlK6nidZTvq1i0sI++zEppQPZE87tvPXBfOUynxhadDofFOW95Q60ew4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294731; 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=smBsWnev5xk/yGxYEYZGOEvcw9uuZ3xnQx5lHO3QAy0=; b=S0pvb//1jd1HWDPLau6ygUb5FxzQZyofvx/z310PnFUzSiNrVLp2OTNljCKQRdwD49eGlwlXZDWIxxp/TgK+eh5RpuTy31oUsLI8rl4JDG7hhI/graiu1nH/EBWIcx4pPvaRIpfvhKB2zwBE2gN0bVI2hIU4J2XhaGAOK4WQlxw= 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 1774294731624465.5053636196777; Mon, 23 Mar 2026 12:38:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5R-0005qg-NU; Mon, 23 Mar 2026 15:37:17 -0400 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 1w4l5O-0005oW-4L for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:15 -0400 Received: from p-west3-cluster3-host10-snip4-7.eps.apple.com ([57.103.72.248] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5J-0004YE-Mk for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:12 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 2443F1800130; Mon, 23 Mar 2026 19:37:05 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 08A39180013A; Mon, 23 Mar 2026 19:37:02 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294626; x=1776886626; bh=smBsWnev5xk/yGxYEYZGOEvcw9uuZ3xnQx5lHO3QAy0=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=O4VN1N9SkKlTG3GQNC4agsa39hKDxOQH2P/UhwkxE7/KcgY6/MiJg1/80q0j5k5Fva7P9oLsX268mZZ0NNBMwrKAHRO+fYo/clySS29AGA89MrDpphM7YtKtI24pvAdYcl+o3yhPSvTvXy1O9UjhyZKjP8o5drAX71Pgbewspvs87KwQeb9erUi6CJmRdEWg/bhW6OeCFf24YWwObL8VYZCwpE7UxAxEzdxzJWBDlhOuKw7xCkncI3EpZKtUgcMtYrYkk6p0AFaZm+pvD0upbezjRynmck0zXU2y/qB7lX2YTWOfOspxw3yTmGviEAUtOH6Zd05pNCfkmXPDDVhO3w== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 08/12] target/i386: emulate: indirect access to CRs Date: Mon, 23 Mar 2026 20:36:41 +0100 Message-ID: <20260323193645.82602-9-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-ORIG-GUID: ZCBhnlyDN-MaZm1K4pyDYkNJMKegtO0m X-Authority-Info-Out: v=2.4 cv=fKA0HJae c=1 sm=1 tr=0 ts=69c19661 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=ToLE8C9ZhuJGCwTcI3oA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX+vZtCV/RrdYw hvLNA2scrTDP6kILpDJ63oQN4SSV+RWgro+yo+Ut7VGajwIBmEgh8ZDJjp9/maTmj3sKCCFVXaI TcAN4PzpN5VqWdU+nuyVtLJqItIfDWtAfmGe4TI/W1XEZxtOmESoVIHmC6AjNY++DDgKh5s6vyX oAsmm/KmVZZaqbBgFSQA9sG6H0QFn2Lm4fkq8esPZpo5hNe6P3jH9L3k+mV6vDqS78OJ5+/de5p Ri96rceepgDOMDy5EVdRonfSEidxTCPoI7qPlvGE6tC657fLLSduS3B3dSuq+3kaOT+ZQNVgZT0 bFQTSOA90kEiesbyZruxceHi1x6M6w7IXZfDg/3zNTnMdlNFAO9pqwWb+7uYIc= X-Proofpoint-GUID: ZCBhnlyDN-MaZm1K4pyDYkNJMKegtO0m X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 suspectscore=0 malwarescore=0 mlxscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 mlxlogscore=822 clxscore=1030 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.248; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294732407158500 Content-Type: text/plain; charset="utf-8" Prepare to have on-demand fetch of registers from the backend during faults Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_emu.h | 3 +++ target/i386/emulate/x86_helpers.c | 28 ++++++++++++++++------------ target/i386/emulate/x86_mmu.c | 8 ++------ 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/target/i386/emulate/x86_emu.h b/target/i386/emulate/x86_emu.h index 4ed970bd53..a8d4c93098 100644 --- a/target/i386/emulate/x86_emu.h +++ b/target/i386/emulate/x86_emu.h @@ -28,6 +28,7 @@ struct x86_emul_ops { 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); + target_ulong (*read_cr) (CPUState *cpu, int cr); void (*handle_io)(CPUState *cpu, uint16_t port, void *data, int direct= ion, int size, int count); void (*simulate_rdmsr)(CPUState *cs); @@ -45,6 +46,8 @@ void x86_emul_raise_exception(CPUX86State *env, int excep= tion_index, int error_c =20 target_ulong read_reg(CPUX86State *env, int reg, int size); void write_reg(CPUX86State *env, int reg, target_ulong val, int size); +target_ulong x86_read_cr(CPUState *cpu, int cr); + target_ulong read_val_from_reg(void *reg_ptr, int size); void write_val_to_reg(void *reg_ptr, target_ulong val, int size); bool write_val_ext(CPUX86State *env, struct x86_decode_op *decode, target_= ulong val, int size); diff --git a/target/i386/emulate/x86_helpers.c b/target/i386/emulate/x86_he= lpers.c index ebbf40f2b0..336862e2c4 100644 --- a/target/i386/emulate/x86_helpers.c +++ b/target/i386/emulate/x86_helpers.c @@ -206,15 +206,25 @@ bool x86_read_call_gate(CPUState *cpu, struct x86_cal= l_gate *idt_desc, return true; } =20 -bool x86_is_protected(CPUState *cpu) -{ +target_ulong x86_read_cr(CPUState *cpu, int cr) { X86CPU *x86_cpu =3D X86_CPU(cpu); CPUX86State *env =3D &x86_cpu->env; - uint64_t cr0 =3D env->cr[0]; + + if (emul_ops->read_cr) { + return emul_ops->read_cr(cpu, cr); + } + return env->cr[cr]; +} + +bool x86_is_protected(CPUState *cpu) +{ + uint64_t cr0; + if (emul_ops->is_protected_mode) { return emul_ops->is_protected_mode(cpu); } =20 + cr0 =3D x86_read_cr(cpu, 0); return cr0 & CR0_PE_MASK; } =20 @@ -245,9 +255,7 @@ bool x86_is_long_mode(CPUState *cpu) =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; + uint64_t is_la57 =3D x86_read_cr(cpu, 4) & CR4_LA57_MASK; return is_la57; } =20 @@ -259,18 +267,14 @@ bool x86_is_long64_mode(CPUState *cpu) =20 bool x86_is_paging_mode(CPUState *cpu) { - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - uint64_t cr0 =3D env->cr[0]; + uint64_t cr0 =3D x86_read_cr(cpu, 0); =20 return cr0 & CR0_PG_MASK; } =20 bool x86_is_pae_enabled(CPUState *cpu) { - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - uint64_t cr4 =3D env->cr[4]; + uint64_t cr4 =3D x86_read_cr(cpu, 4); =20 return cr4 & CR4_PAE_MASK; } diff --git a/target/i386/emulate/x86_mmu.c b/target/i386/emulate/x86_mmu.c index 670939acdb..ba0ebe4268 100644 --- a/target/i386/emulate/x86_mmu.c +++ b/target/i386/emulate/x86_mmu.c @@ -114,8 +114,6 @@ static bool get_pt_entry(CPUState *cpu, struct gpt_tran= slation *pt, 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 (!pte_present(pte)) { @@ -130,7 +128,7 @@ static MMUTranslateResult test_pt_entry(CPUState *cpu, = struct gpt_translation *p *largeness =3D level; } =20 - uint32_t cr0 =3D env->cr[0]; + uint32_t cr0 =3D x86_read_cr(cpu, 0); /* check protection */ if (cr0 & CR0_WP_MASK) { if (mmu_validate_write(flags) && !pte_write_access(pte)) { @@ -184,11 +182,9 @@ static inline uint64_t large_page_gpa(struct gpt_trans= lation *pt, bool pae, 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); - CPUX86State *env =3D &x86_cpu->env; int top_level, level; int largeness =3D 0; - target_ulong cr3 =3D env->cr[3]; + target_ulong cr3 =3D x86_read_cr(cpu, 3); uint64_t page_mask =3D pae ? PAE_PTE_PAGE_MASK : LEGACY_PTE_PAGE_MASK; MMUTranslateResult res; =20 --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294684; cv=none; d=zohomail.com; s=zohoarc; b=inZCGfCoV+kZC/eD8g35MNesy3l5OkxJVVP54aa1jxPaefbEQnz7c5xXVAJiZR67MHQZgi1vQSleflxRqHzydJSh6SOEnAJGY5Xw8wom//2Lng4/XjWdKi7/57W6hStYbMB487MXdzgnJULrh/bPqEo0JqcDcokS4L9fceQzsGg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294684; 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=7tlXE8XDGj2kvKBxePF9x7GibMqita798tBBZD+buV0=; b=R9DR29bf2spw22S6Xubct+/sznNQ5JoKQr84QCv5+ysgKqbeq9TeyKSKYdjEmKT69m+AoEQiRfMDPMLogcIh/FQflfdsF+N2PjeHL5EqKOxlgscgo2YwssnVVjEKsnlNkM+D3wt1bC8GOd5eOZAcjJ8bJ8MrcpCZrXZ99AUTfXk= 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 1774294684087274.02221089251975; Mon, 23 Mar 2026 12:38:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5T-0005sJ-AC; Mon, 23 Mar 2026 15:37:19 -0400 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 1w4l5O-0005oX-4c for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:15 -0400 Received: from p-west3-cluster3-host6-snip4-3.eps.apple.com ([57.103.72.144] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5L-0004YV-LG for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:13 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 06389180010F; Mon, 23 Mar 2026 19:37:06 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 1519F18000B9; Mon, 23 Mar 2026 19:37:04 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294628; x=1776886628; bh=7tlXE8XDGj2kvKBxePF9x7GibMqita798tBBZD+buV0=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=cmhMS975zrf1zQxJtVvWbe/cbDJU5vt5Y1XgKY1AtLjcsvVnYP88PJa/UFXZXCP6nlhgNPrnkwm9RwCQzKq77Sh0ST+95hfCbZKi/Xk3NK7zcIDbXSKoggVjr/oYDEftD5L4uC/8nlBC/a5aG52wQXH+t8oY99inBJUQkTYztHQK17+x4MFXp5+OzAYPN7oSwcyzMgUhUCYMz3N4X6mi7FLmVQiJ3VG7NMm62kCv4tahAO/ScfRnpFao87nf5TKRFqXm4A1Rv7PCK+hul5OmL6FeR90AmQ7C6M1DkZ/+eVqr/Wd2wrTXUmB8ySvtfxGt7Z6JY4Jo5RjEr44QZuA1Yg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 09/12] whpx: i386: indirect access to CRs Date: Mon, 23 Mar 2026 20:36:42 +0100 Message-ID: <20260323193645.82602-10-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX0mESrA4ICWrY ctSaux9hTNFVNvBqoE7DkYYqiBfHm4a6h3MntIov0hIjAAA1jGPImKaeD6/ld0gIZDq87A3pscj R2CPCNTe/fumHMPLDvaq/+GUuXclaNoDy2Ax6zMRmhZ5xsgAh1TE68BqpncDWZfiDpbIYWU6VvW DefY1mK4NGotUT+6KMX08HZw8pIb6948LqfwsRW8fM0RCblBbcFEzJ1IIHt+sNfJwY1I9xFZYhA 9VKthMtnVCAzVbjVLewmL930QbkftqJLB+MnoGD7/iDFsLQnf6CnsI18Bei1GdaON4yjTgbgEMV IW0TV/JpsWKye4C7Pdczj8WR0eJiA4In2kp9W0KkJ7eSirgFSAnG6aAv5EzSRU= X-Authority-Info-Out: v=2.4 cv=JNQ2csKb c=1 sm=1 tr=0 ts=69c19663 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=kcTmfTs-UkjvTY61EfIA:9 X-Proofpoint-ORIG-GUID: THuzm96cbPMXdDbc_ShpU9GRRhQgZYlc X-Proofpoint-GUID: THuzm96cbPMXdDbc_ShpU9GRRhQgZYlc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 lowpriorityscore=0 mlxlogscore=849 spamscore=0 mlxscore=0 bulkscore=0 clxscore=1030 adultscore=0 malwarescore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.144; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294687475154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 3484c33c02..32f01682c1 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -905,12 +905,42 @@ static bool is_user_mode(CPUState *cpu) return vcpu->exit_ctx.VpContext.ExecutionState.Cpl =3D=3D 3; } =20 +static target_ulong read_cr(CPUState *cpu, int cr) +{ + WHV_REGISTER_NAME whv_cr; + WHV_REGISTER_VALUE val; + + switch (cr) { + case 0: + whv_cr =3D WHvX64RegisterCr0; + break; + case 2: + whv_cr =3D WHvX64RegisterCr2; + break; + case 3: + whv_cr =3D WHvX64RegisterCr3; + break; + case 4: + whv_cr =3D WHvX64RegisterCr4; + break; + case 8: + whv_cr =3D WHvX64RegisterCr8; + break; + default: + abort(); + } + whpx_get_reg(cpu, whv_cr, &val); + + return val.Reg64; +} + static const struct x86_emul_ops whpx_x86_emul_ops =3D { .read_segment_descriptor =3D read_segment_descriptor, .handle_io =3D handle_io, .is_protected_mode =3D is_protected_mode, .is_long_mode =3D is_long_mode, - .is_user_mode =3D is_user_mode + .is_user_mode =3D is_user_mode, + .read_cr =3D read_cr }; =20 static void whpx_init_emu(void) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294728; cv=none; d=zohomail.com; s=zohoarc; b=RG2RcsM/lZVlbJ7qm6UA9tuBFb12PE6D289dR+oawc0Osvc7ZzTDYd1FoVM6JcxElhycdGfLhQvE1NIDIfhFIK5LxOzoFSyBVYNubUUesU+L0uu/w5xAFQZAxyXzlvex0T5VYyVohyb5kCNDIuaydRxBF0loPTgVRMOTPR73Dtg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294728; 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=9Dqqk2yZAyABYphmGizHsmJzmxD2S1tNqnW1N8M6Mt4=; b=fjD5MpTBlCuurbEcGn+Hw5u25ZJi9W4tvvfWRJDanmf858Ryf51y30TDKJAVJrOY7kNniXfrNZkdXR+0L+6Vc37cc4cPkuNehROYEWqCSAxkO6+atqQiNUWVwXBe8l2cmY8ZJ5c3nyBnXCu7YfL5fmNFWhOl93r/OgERXATYQWU= 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 1774294728455841.1589292055709; Mon, 23 Mar 2026 12:38:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5S-0005rZ-Iw; Mon, 23 Mar 2026 15:37:18 -0400 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 1w4l5O-0005oZ-5N for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:15 -0400 Received: from p-west3-cluster3-host5-snip4-9.eps.apple.com ([57.103.72.140] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5L-0004YZ-LF for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:13 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 75FE51800136; Mon, 23 Mar 2026 19:37:08 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id A81BA1800263; Mon, 23 Mar 2026 19:37:06 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294629; x=1776886629; bh=9Dqqk2yZAyABYphmGizHsmJzmxD2S1tNqnW1N8M6Mt4=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Bm3UDZ3yk+Jxzn/NtExzJZhbkASHtNdgt5eir0/IehTNmdKZs+D3AEcxTNQaL0L+P48NuFl3AoDpri7ZvWCLZHkK5B4RfMgsKr/7FCl5XoQkeho6nF583lbD99rDNeRT2CWJaPkXywtQPVmpYDiGVVd26sjXaht/WQNnE0ndxF3erGRB82OzRoW4UH14CH6vTCZR/VzBq3KJeWReLnP7EvDBjNjV+kYoppNBTdGqe4Ni+f6CzyC3km/E/if1Xk4j8/1+7igr87kubIEF63Yre6RfXXyLXBqIOr2v0i10/UKZ1SI1LRuqhUUzkEdgrLVCm0CmbD5uvO48f7xdGXdnHg== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 10/12] target/i386: emulate: segmentation rework Date: Mon, 23 Mar 2026 20:36:43 +0100 Message-ID: <20260323193645.82602-11-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfXyYD1V9V6sn2R nrh67Cjq1RwqxboOWS7/IIRVuEaDUYc1LvzpcshsZm+5bO8Dcgic3Ci4S4gl1ML85lHA3QjcEw3 0mZZ0CZUnadtSPRCnnIFcxZwZB4+oK6Dqm58VaGK8cS4s+e/H7drYWaSWKSIRMRZkNtKTgzO2XO BNhhHm7wUJOqdZpLiDf3gucw/HAsDQfyD/ZyvFF+DJdxxoRn0FOxF49cw0fOKDXKZptng+tfKcq yT2LIER8aVOcszp7mjUkU0At1nqyzQX2x9ePyPA3j95G9RnjqV2lG8UvkgD6SS+ix/qQG8mF9Fk J64/RpxE4vuWAy7u+z1DjN9oRI7bigygaN1tDR9VJHdSK32KgHOKzgtxCSr8h0= X-Authority-Info-Out: v=2.4 cv=UZNciaSN c=1 sm=1 tr=0 ts=69c19664 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=vJJf33RnEMvZLxG4ysEA:9 X-Proofpoint-ORIG-GUID: NopjLp_i2B5kAniknWkm0WSc8CctfmRi X-Proofpoint-GUID: NopjLp_i2B5kAniknWkm0WSc8CctfmRi X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 phishscore=0 clxscore=1030 adultscore=0 suspectscore=0 malwarescore=0 spamscore=0 lowpriorityscore=0 mlxlogscore=991 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.140; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294729987154100 Content-Type: text/plain; charset="utf-8" Make accesses to segments all go through read_segment_descriptor to be able to fetch segment state on-demand. Switch away from SegmentCache to the x86_segment_descriptor that is already used by read_segment_descriptor. Signed-off-by: Mohamed Mediouni --- target/i386/emulate/x86_helpers.c | 50 ++++++++++++------------------- 1 file changed, 19 insertions(+), 31 deletions(-) diff --git a/target/i386/emulate/x86_helpers.c b/target/i386/emulate/x86_he= lpers.c index 336862e2c4..d594af539b 100644 --- a/target/i386/emulate/x86_helpers.c +++ b/target/i386/emulate/x86_helpers.c @@ -43,49 +43,37 @@ static CpuMode cpu_mode(CPUState *cpu) return m; } =20 -static bool segment_type_ro(const SegmentCache *seg) +static bool segment_type_ro(const x86_segment_descriptor desc) { - uint32_t type_ =3D (seg->flags >> DESC_TYPE_SHIFT) & 15; + uint32_t type_ =3D desc.type; return (type_ & (~RWRX_SEGMENT_TYPE)) =3D=3D 0; } =20 -static bool segment_type_code(const SegmentCache *seg) +static bool segment_type_code(const x86_segment_descriptor desc) { - uint32_t type_ =3D (seg->flags >> DESC_TYPE_SHIFT) & 15; + uint32_t type_ =3D desc.type; return (type_ & CODE_SEGMENT_TYPE) !=3D 0; } =20 -static bool segment_expands_down(const SegmentCache *seg) +static bool segment_expands_down(const x86_segment_descriptor desc) { - uint32_t type_ =3D (seg->flags >> DESC_TYPE_SHIFT) & 15; + uint32_t type_ =3D desc.type; =20 - if (segment_type_code(seg)) { + if (segment_type_code(desc)) { return false; } =20 return (type_ & EXPAND_DOWN_SEGMENT_TYPE) !=3D 0; } =20 -static uint32_t segment_limit(const SegmentCache *seg) +static uint8_t segment_db(const x86_segment_descriptor desc) { - uint32_t limit =3D seg->limit; - uint32_t granularity =3D (seg->flags & DESC_G_MASK) !=3D 0; - - if (granularity !=3D 0) { - limit =3D (limit << 12) | 0xFFF; - } - - return limit; + return desc.db; } =20 -static uint8_t segment_db(const SegmentCache *seg) +static uint32_t segment_max_limit(const x86_segment_descriptor desc) { - return (seg->flags >> DESC_B_SHIFT) & 1; -} - -static uint32_t segment_max_limit(const SegmentCache *seg) -{ - if (segment_db(seg) !=3D 0) { + if (segment_db(desc) !=3D 0) { return 0xFFFFFFFF; } return 0xFFFF; @@ -96,15 +84,15 @@ static int linearize(CPUState *cpu, X86Seg seg_idx) { enum CpuMode mode; - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - SegmentCache *seg =3D &env->segs[seg_idx]; - target_ulong base =3D seg->base; + struct x86_segment_descriptor desc; + target_ulong base; target_ulong logical_addr_32b; uint32_t limit; /* TODO: the emulator will not pass us "write" indicator yet */ bool write =3D false; =20 + emul_ops->read_segment_descriptor(cpu, &desc, seg_idx); + base =3D x86_segment_base(&desc); mode =3D cpu_mode(cpu); =20 switch (mode) { @@ -116,21 +104,21 @@ static int linearize(CPUState *cpu, break; case PROTECTED_MODE: case REAL_MODE: - if (segment_type_ro(seg) && write) { + if (segment_type_ro(desc) && write) { error_report("Cannot write to read-only segment"); return -1; } =20 logical_addr_32b =3D logical_addr & 0xFFFFFFFF; - limit =3D segment_limit(seg); + limit =3D x86_segment_limit(&desc); =20 - if (segment_expands_down(seg)) { + if (segment_expands_down(desc)) { if (logical_addr_32b >=3D limit) { error_report("Address exceeds limit (expands down)"); return -1; } =20 - limit =3D segment_max_limit(seg); + limit =3D segment_max_limit(desc); } =20 if (logical_addr_32b > limit) { --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294692; cv=none; d=zohomail.com; s=zohoarc; b=Vg+astvP9pyOaRyoJM8A70Hwka8vd2D+S2Pu2KixGw9ETmlvzSeg4r3eZzMuRr3w0pbEH/hFiepwRZmI7Xi5vxdKG++pZqsNBu/YrCmtkuRtEltpXUmI+EYUWj9hxsfPkMneberwP3xOG052iPOddENziS9qnhc05U+2TzBUspc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294692; 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=MqpqpdUGs8CctxdR49DovRlSwoA+XzDCB5guol14wf0=; b=MxCsyGH4iIrTji/Z8nGvX60eVfrSE/MjnnMoYWED2mVAeqBsYbJaMuiz3Q8vekVdrakB3e0m3Gx/ZL5tXw+wdnkYYb8/SWR1ycAQXd1/sDV90Qu5IiGmRTlHlwgsNRgdWel+FwH1XWXwRdo5ospu98bCHs51o9F+Y3TVzC6Uonk= 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 1774294691673697.7919110577374; Mon, 23 Mar 2026 12:38:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5X-0005v4-IZ; Mon, 23 Mar 2026 15:37:23 -0400 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 1w4l5R-0005qd-B2 for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:17 -0400 Received: from p-west3-cluster3-host2-snip4-9.eps.apple.com ([57.103.72.170] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5N-0004Yg-SJ for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:17 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id 12A841800135; Mon, 23 Mar 2026 19:37:09 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id 47EFB18000AC; Mon, 23 Mar 2026 19:37:08 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294631; x=1776886631; bh=MqpqpdUGs8CctxdR49DovRlSwoA+XzDCB5guol14wf0=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=bG/beMTvvUWaCmZXxDee1cr6dAhj/9H1sBy+2UQmqyhq3cD/FIWoljLRyMHKuNcrA4pxKvnI1nY0U+9EwRjBaErxjbNhwWy1M6d23F+NWvnxRgxe2dP17jC3D6EWuNG8Pq9qF31inyfeZZU73G/pVjpcWhMjuhG8It0WaZrjWj5JCbbTbPWvTjeyFrZZW4NaJHljQswbQ4ig1HuYIWLttKWSvS2UpDP8u7p+LPkkQKNoVZC9wQPfgmQKXthKcz7+4DCsQryzNc8ffrQCvZuzRiZQDRgWZXziaowsd56ybSTl1Fph+n7hORiT917gnrA3XJac8Cy17L93h9HgX1gnoQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 11/12] whpx: i386: fetch segments on-demand Date: Mon, 23 Mar 2026 20:36:44 +0100 Message-ID: <20260323193645.82602-12-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX77acICzGfKkV fvmFNmS6WwAlUm6fnRIazudPMpeDnkS/l6PFBpywBxABk0+dAVCEirS7Sjrbim9U+drAcBhOVke M1RQd3cnWat24/VeySqugeubot5RwRxNgQdoxAC/zp5ZvY+YGVe/NXsT0rRNo7gtNvMyJKVueXc glkhmcDMAZE+BvtwBom8GBMWAWZlxPN87Ru46ljVSr+Bb/z7R8srU75NvVbSaEuhkKxFwM9N0Vn C5Z7So5H+C6THm2FXpt84THYTnW/UzaleaF7g0L/nm29rNTw1TDe9qQrq43EUfoS5ELXTQfQwIS +3wB17k/J67MT8cMh+irJgLLUcWpz3cHsqrGdyqJ70Wpskrusok/iY85BH5C8A= X-Authority-Info-Out: v=2.4 cv=Os5CCi/t c=1 sm=1 tr=0 ts=69c19666 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=-8Qz9FHPj4oKPzLrWQ0A:9 X-Proofpoint-ORIG-GUID: zNwv9ktW4ncmOXClGmXu6-57Mp8Jmg8- X-Proofpoint-GUID: zNwv9ktW4ncmOXClGmXu6-57Mp8Jmg8- X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 malwarescore=0 mlxscore=0 phishscore=0 spamscore=0 lowpriorityscore=0 clxscore=1030 mlxlogscore=858 suspectscore=0 bulkscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.170; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294694549158500 Content-Type: text/plain; charset="utf-8" Instead of save/restore, fetch segments dynamically. Rely on the fetched state instead of loading from memory. Or, if available, on the VM exit context. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 54 +++++++++++++++++++++++++++++-------- 1 file changed, 43 insertions(+), 11 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 32f01682c1..623bfb0105 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -868,21 +868,53 @@ static int whpx_handle_portio(CPUState *cpu, return 0; } =20 +static void whpx_segment_to_x86_descriptor(CPUState *cpu, WHV_X64_SEGMENT_= REGISTER* reg, + struct x86_segment_descriptor *desc) +{ + x86_set_segment_limit(desc, reg->Limit); + x86_set_segment_base(desc, reg->Base); + =20 + desc->type =3D reg->SegmentType; + desc->s =3D reg->NonSystemSegment; + desc->dpl =3D reg->DescriptorPrivilegeLevel; + desc->p =3D reg->Present; + desc->avl =3D reg->Available; + desc->l =3D reg->Long; + desc->db =3D reg->Default; + desc->g =3D reg->Granularity; +} + +static void whpx_read_segment_descriptor(CPUState *cpu, WHV_X64_SEGMENT_RE= GISTER* reg, X86Seg seg) +{ + AccelCPUState *vcpu =3D cpu->accel; + WHV_REGISTER_NAME reg_name =3D WHvX64RegisterEs + seg; + WHV_REGISTER_VALUE val; + + if (seg =3D=3D R_CS) { + *reg =3D vcpu->exit_ctx.VpContext.Cs; + return; + } + if (vcpu->exit_ctx.ExitReason =3D=3D WHvRunVpExitReasonX64IoPortAccess= ) { + if (seg =3D=3D R_DS) { + *reg =3D vcpu->exit_ctx.IoPortAccess.Ds; + return; + } else if (seg =3D=3D R_ES) { + *reg =3D vcpu->exit_ctx.IoPortAccess.Es; + return; + } + } + + whpx_get_reg(cpu, reg_name, &val); + *reg =3D val.Segment; +} + 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(); - } + WHV_X64_SEGMENT_REGISTER reg; + whpx_read_segment_descriptor(cpu, ®, seg_idx); + whpx_segment_to_x86_descriptor(cpu, ®, desc); } =20 static bool is_protected_mode(CPUState *cpu) --=20 2.50.1 (Apple Git-155) From nobody Sun Apr 5 18:10:40 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=1774294714; cv=none; d=zohomail.com; s=zohoarc; b=I3Jmkw6w4auX5+S85zr61bEbACX+JQDIdhPpZQMRVTRDNJUjp7ttlsOF6QFAAnXi4m4VkyKqHH4tJ1TP+/2a/NCo5FkEZ+F38Q6QvlFvAB/4EcUSBdafVmCufn84ewh29wR93YgA2OlAfQB6LPUTmPn3xLUPUf9bnCN/W2k02Jc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1774294714; 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=O7bv60w0UvYYo2pAak90SAs20MfD3p1ZThvHIrFn3bk=; b=j6h9DYWvfCvl+sKz92qMjj6bXIJKLvs2aPlpiJeFaHkh6n/WTXnr6qc5yOSJNodcWKIZQ4HHnkgOB4anGZGV3MnqKgiIwI4NUZ2dTx0pCX854V5QAK7n/cRTCj2czHUl72/DqTpEHZ56tU2UECVzUelt5mz8AjvvYN48WVGWG7o= 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 17742947146258.71072981602083; Mon, 23 Mar 2026 12:38:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1w4l5Z-0005w9-7w; Mon, 23 Mar 2026 15:37:25 -0400 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 1w4l5R-0005qm-Jv for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:17 -0400 Received: from p-west3-cluster3-host12-snip4-10.eps.apple.com ([57.103.72.231] helo=outbound.ms.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1w4l5P-0004Zg-U2 for qemu-devel@nongnu.org; Mon, 23 Mar 2026 15:37:17 -0400 Received: from outbound.ms.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPS id AD7041800100; Mon, 23 Mar 2026 19:37:11 +0000 (UTC) Received: from mac.home (unknown [17.57.154.37]) by p00-icloudmta-asmtp-us-west-3a-60-percent-7 (Postfix) with ESMTPSA id D79351800101; Mon, 23 Mar 2026 19:37:09 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1774294633; x=1776886633; bh=O7bv60w0UvYYo2pAak90SAs20MfD3p1ZThvHIrFn3bk=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=JEs5RMkIWT/0hL2TJZUeqKH1SD9sDTz86QbjTjEmJVO6XWUDAFk5QclFvN/gE55CIE/h58iLkv+T27AJj0nsK3Vmou2/EA0Wk7sF55VXGQCHoKqiV+UpvX55BCn8SL3n6jKSf1mqx2Hbrc0/dOW6mIkm9z125YjWz5ySoZMNbUeNpsnqwHof02n0NThLbq5gb6Ue29rrP2reALw97iLdMR1oHxDZwCF9HrgRMKsPvUhponyQUeYYxag/k9lfN1/3+tAErnWmfX7kzuPmmK9VC2rLO/KRTN67un/c2x53vUkGpJ/XsISRWk15JZcurpWsCeRPLIkorvQF5ylsRNtD3w== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , Wei Liu , Phil Dennis-Jordan , Pedro Barbuda , Roman Bolshakov Subject: [PATCH 12/12] whpx: i386: fast runtime state reads Date: Mon, 23 Mar 2026 20:36:45 +0100 Message-ID: <20260323193645.82602-13-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260323193645.82602-1-mohamed@unpredictable.fr> References: <20260323193645.82602-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Authority-Info-Out: v=2.4 cv=MsRfKmae c=1 sm=1 tr=0 ts=69c19668 cx=c_apl:c_pps:t_out a=qkKslKyYc0ctBTeLUVfTFg==:117 a=Yq5XynenixoA:10 a=VkNPw1HP01LnGYTKEx00:22 a=WK8LibQvd4XDxIxmQ_8A:9 X-Proofpoint-GUID: YDjA3Nqse8yiy_CaBfLpNH7x6_cOtsIH X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzIzMDE0NSBTYWx0ZWRfX0Tf93dJjoz06 ZZZ6hVEPMtMZ13+0ohVGePv5q90DiEwj0+tErXQb2chBvX4KCbrv083DxDZEUvGP7WsHuc5uMwi 2GzWBNs6NOaw2kxAsE1iULuJMJ1bM/TuGJCNE05iTLCq5dE1X/2oaf9emjVeg+R/HrFlB4TMmSN JR3mNxVQ5z1hvVItQAxEXgIiiNyQokVpvo5I3fHwjEGeX4k2vUIk0s6iBepTYOYX8nRFd/yeZP5 aPyvHtF0z17bqWyfY1iubNb2skBaB76MTs3NtZ3Npttw2juVPIlNW0qZdkUOqZap1RUHfTUe/e5 j7psW42AJAQrjQIYTNyktFKHjI5PwvQH5amUrfK9vOnDVRhM3UJEs2t58O5DP8= X-Proofpoint-ORIG-GUID: YDjA3Nqse8yiy_CaBfLpNH7x6_cOtsIH X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-23_04,2026-03-23_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 adultscore=0 mlxlogscore=761 clxscore=1030 bulkscore=0 phishscore=0 suspectscore=0 mlxscore=0 lowpriorityscore=0 spamscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2603230145 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.72.231; envelope-from=mohamed@unpredictable.fr; helo=outbound.ms.icloud.com X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 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_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham 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: 1774294716229154100 Content-Type: text/plain; charset="utf-8" Now that there's an on-demand interface for fetching CRs and segments, only query GPRs and query everything else on-demand for vmexits. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 77 +++++++++++++++++++++++++++++++++---- 1 file changed, 70 insertions(+), 7 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 623bfb0105..021398e5bd 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -156,6 +156,26 @@ static const WHV_REGISTER_NAME whpx_register_names[] = =3D { */ }; =20 +static const WHV_REGISTER_NAME whpx_register_names_for_vmexit[] =3D { + /* X64 General purpose registers */ + WHvX64RegisterRax, + WHvX64RegisterRcx, + WHvX64RegisterRdx, + WHvX64RegisterRbx, + WHvX64RegisterRsp, + WHvX64RegisterRbp, + WHvX64RegisterRsi, + WHvX64RegisterRdi, + WHvX64RegisterR8, + WHvX64RegisterR9, + WHvX64RegisterR10, + WHvX64RegisterR11, + WHvX64RegisterR12, + WHvX64RegisterR13, + WHvX64RegisterR14, + WHvX64RegisterR15, +}; + struct whpx_register_set { WHV_REGISTER_VALUE values[RTL_NUMBER_OF(whpx_register_names)]; }; @@ -593,6 +613,47 @@ static void whpx_get_xcrs(CPUState *cpu) cpu_env(cpu)->xcr0 =3D xcr0.Reg64; } =20 +static void whpx_get_registers_for_vmexit(CPUState *cpu, WHPXStateLevel le= vel) +{ + struct whpx_state *whpx =3D &whpx_global; + AccelCPUState *vcpu =3D cpu->accel; + X86CPU *x86_cpu =3D X86_CPU(cpu); + CPUX86State *env =3D &x86_cpu->env; + struct whpx_register_set vcxt; + HRESULT hr; + int idx; + int idx_next; + + assert(cpu_is_stopped(cpu) || qemu_cpu_is_self(cpu)); + + hr =3D whp_dispatch.WHvGetVirtualProcessorRegisters( + whpx->partition, cpu->cpu_index, + whpx_register_names_for_vmexit, + RTL_NUMBER_OF(whpx_register_names_for_vmexit), + &vcxt.values[0]); + if (FAILED(hr)) { + error_report("WHPX: Failed to get virtual processor context, hr=3D= %08lx", + hr); + } + + idx =3D 0; + + /* Indexes for first 16 registers match between HV and QEMU definition= s */ + idx_next =3D 16; + for (idx =3D 0; idx < CPU_NB_REGS; idx +=3D 1) { + env->regs[idx] =3D vcxt.values[idx].Reg64; + } + idx =3D idx_next; + + env->eip =3D vcpu->exit_ctx.VpContext.Rip; + env->eflags =3D vcpu->exit_ctx.VpContext.Rflags; + rflags_to_lflags(env); + + assert(idx =3D=3D RTL_NUMBER_OF(whpx_register_names_for_vmexit)); + + x86_update_hflags(env); +} + void whpx_get_registers(CPUState *cpu, WHPXStateLevel level) { struct whpx_state *whpx =3D &whpx_global; @@ -608,7 +669,11 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel = level) =20 assert(cpu_is_stopped(cpu) || qemu_cpu_is_self(cpu)); =20 - if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && !env->tsc_valid) { + if (level =3D=3D WHPX_LEVEL_FAST_RUNTIME_STATE) { + return whpx_get_registers_for_vmexit(cpu, level); + } + + if (!env->tsc_valid) { whpx_get_tsc(cpu); env->tsc_valid =3D !runstate_is_running(); } @@ -623,7 +688,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) hr); } =20 - if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && whpx_irqchip_in_kernel())= { + if (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 @@ -680,7 +745,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 (level > WHPX_LEVEL_FAST_RUNTIME_STATE && tpr !=3D vcpu->tpr) { + if (tpr !=3D vcpu->tpr) { vcpu->tpr =3D tpr; cpu_set_apic_tpr(x86_cpu->apic_state, whpx_cr8_to_apic_tpr(tpr)); } @@ -691,9 +756,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) * Extended control registers needs to be handled separately depending * on whether xsave is supported/enabled or not. */ - if (level > WHPX_LEVEL_FAST_RUNTIME_STATE) { - whpx_get_xcrs(cpu); - } + whpx_get_xcrs(cpu); =20 /* 16 XMM registers */ assert(whpx_register_names[idx] =3D=3D WHvX64RegisterXmm0); @@ -768,7 +831,7 @@ void whpx_get_registers(CPUState *cpu, WHPXStateLevel l= evel) =20 assert(idx =3D=3D RTL_NUMBER_OF(whpx_register_names)); =20 - if (level > WHPX_LEVEL_FAST_RUNTIME_STATE && whpx_irqchip_in_kernel())= { + if (whpx_irqchip_in_kernel()) { whpx_apic_get(x86_cpu->apic_state); } =20 --=20 2.50.1 (Apple Git-155)