From nobody Sun Apr 12 04:21:24 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=reject dis=none) header.from=unpredictable.fr ARC-Seal: i=1; a=rsa-sha256; t=1771836217; cv=none; d=zohomail.com; s=zohoarc; b=W7TAS8cYxSGKeiEmVHnZFKmhRdjixXmKRyMWbeQA8IZstxF/bv9BrpnRYBiTKowAW3xMKxRQTCBro08aV3wm+bVJcu8h6IfZlOnNv1tajfvVBEFFLj9fV2jo3A1ARH5RxDI1k0VZctyiRZZS61TJug69GGtlsiYpyJDv6xvNHwk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771836217; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=op64aUwd3kHeSL+XTt7uxWfJ6n/JYbXZSlN/Ec+uOgk=; b=k5+C2xY5Llms1+uigM0cMYEp3YOVBJzJi1Ev0tpnz5nLdPrNEpOED30O78L0nfLhemVzDJqElkRo7gGZZZcDvpECP0F5aScacAdlzCEBzZYYzUkjjsEtRY81fGPt0VNQDXu+p1TotbluzvLY+r9kvl1IQURuR71KgAJjRIZv06M= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1771836217165705.5556033634253; Mon, 23 Feb 2026 00:43:37 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuRSX-0000mJ-G3; Mon, 23 Feb 2026 03:38:29 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSP-0000Qb-UO for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:22 -0500 Received: from p-east2-cluster3-host10-snip4-1.eps.apple.com ([57.103.77.142] helo=outbound.st.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuRSN-0002G1-07 for qemu-devel@nongnu.org; Mon, 23 Feb 2026 03:38:21 -0500 Received: from outbound.st.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPS id 126A3180021B; Mon, 23 Feb 2026 08:38:12 +0000 (UTC) Received: from localhost.localdomain (unknown [17.42.251.67]) by p00-icloudmta-asmtp-us-east-1a-60-percent-12 (Postfix) with ESMTPSA id 53F851800210; Mon, 23 Feb 2026 08:38:10 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771835896; x=1774427896; bh=op64aUwd3kHeSL+XTt7uxWfJ6n/JYbXZSlN/Ec+uOgk=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=Lg9QjPe1R5NZFsyMJGBfswkyqlZz5fjDflrdjYpWuU1EwyDU5RZuM8Nsmdo159qchJpCkdd/6LaLKm87iXxKFSyTooPxflYEIWQJGc6sAOllmR8wFuwxif6wqdoiHRkTOQXQbSMNyc/QuXA3TzoctWvAvxyBl8DcfWUKsWYxoRT+BQILqehWGQT+zoBd7G6SyiQw6fsaejV4oIbjl3nwt2s05upqRKLtmfqNjJPRqUlkwIUIlHrt41RLqTVu4D1cq0iQGhPpDXuY3CLM1IdvD63pp1GWQ4ny12oSGDTHGEzZCWFYHnTkY0Est41QlMQ/dmXRFzIjwTJRrmJd2SfuYQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Cameron Esfahani , Magnus Kulke , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Paolo Bonzini , Phil Dennis-Jordan , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Wei Liu , Roman Bolshakov , Magnus Kulke , Peter Maydell , Bernhard Beschow , qemu-arm@nongnu.org, Mohamed Mediouni , Pedro Barbuda , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Zhao Liu Subject: [PATCH v5 14/27] whpx: i386: remove CPUID trapping Date: Mon, 23 Feb 2026 09:37:20 +0100 Message-ID: <20260223083734.48533-15-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260223083734.48533-1-mohamed@unpredictable.fr> References: <20260223083734.48533-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-GUID: l1N_nbsWPFKQYnXxjLFyLwNsq7FxTso3 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIzMDA3NiBTYWx0ZWRfX2v8QppCai7rr KCoSS5VurzPICii2i1NVGOBqCgtpl/dC+Te7Owss2NqQKbfwDjlH219BqNuuiI+v/KaMuIsmbSW DTF2iQu46QBdSKsLjqSFdmRgx7hAa/hIfFNCRv+OZa3sWTBxM4b3KAaUUz8mjusn+pRvSfLtI/Y 34nPN3iiu6iceSKfbj9Ifs5fW3YDmgf6Pywa/nFiqXdAKa6npX4SiwzFenVzxvXFBzB+8GAQdfq A/A597E5lONDAxBCkvBVPsAUuwoNX5AD00+GtApNfflbTPm2uqZAVYzq7cWR0lxPrGjJGW09LOd eVNi4TeBPmO9aNCdJ8UxX6io9kLkZ/8gI30WtQRpOiGevj4i0WxbtZEKXlbSjE= X-Authority-Info-Out: v=2.4 cv=fPw0HJae c=1 sm=1 tr=0 ts=699c11f6 cx=c_apl:c_apl_out:c_pps a=YrL12D//S6tul8v/L+6tKg==:117 a=YrL12D//S6tul8v/L+6tKg==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=Gk9p9Fe9aJpBGj35TJ8A:9 X-Proofpoint-ORIG-GUID: l1N_nbsWPFKQYnXxjLFyLwNsq7FxTso3 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-23_01,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0 spamscore=0 lowpriorityscore=0 phishscore=0 malwarescore=0 clxscore=1030 suspectscore=0 mlxlogscore=999 adultscore=0 mlxscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602230076 X-JNJ: AAAAAAABjZIOkB16XhAZZZeRFP73N4EZi6JfWkD6Gi5Hx8aNHXjcpS415u1XW/iKlUcOtJGtgBgysZpXrHA2aWUygqIUsWga/O7XW74I6ynQN6F36PPDV/g1ZtM71Y+CZgEZB5aQhUpfw2TkcO/0OJJ22NJGtV7MDIGzq9Tzj6ixEQ7saJZXK4BDcWwcoq8B3nikt1hquz+YvdbgysHhsxOlJU2rpbC92Wgt0d7lF1cpFcXwztLp6O+f9Xk51Et+DrgcJvgNO4W3QCTP0I4+kVCdLHcwARiGIDDdsaRAj/wiO6B0ap+8E6CK8jdWjYsgfATYdFRNgsZ+kZ+jrdOw8yb5C1qeoX2TdcP6SSNNUvuFy7k9N3vhePEDyQ+p3RqePzU3gjPMcJo9Aki2NV0ghs/ex36wZCji1IsE0JWbnzwstm8g2FK8Vux6Lv6TLC1LMiFKyXTesuaszXiznxIkY/kL95xdc0Uo6wYwZPzEIJUgkIIZHR05RBfPvkL4ObZiqJxuCRvztJ0I0SJKXR7fjNH2y+iiLBuXHPKqk/xOKCDU7iGrDFzczuibe3mfsAmWhbVp3bFn400HyKI3puMmjsJhL8ikBE3EwxpNDeUk+j0Kq0JUvYg/kAm3EfgSUm7Y0pMzhDG6otmVu0RVQOCGIQ5+hQITW6EOFIOMN1hhpHlKWx38c4GBut5GHvd9HAaamEg144/+X77Bp/lID7Xt8UwwJkNFCQqD804qMcAhfekLQ/vacw/72/p8GwdXItqQ8KiBhtVJx+MaatRYr3GENcZD0K7BrzYEmaIBpBBKuoZK3tueLc7Jg1YFXldJDx44KHVFz/GpWg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.77.142; envelope-from=mohamed@unpredictable.fr; helo=outbound.st.icloud.com X-Spam_score_int: -11 X-Spam_score: -1.2 X-Spam_bar: - X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771836218864158500 Content-Type: text/plain; charset="utf-8" Very partial in its current state and results in significantly inconsistent CPUID data. Remove it until it's reimplemented later. Signed-off-by: Mohamed Mediouni --- target/i386/whpx/whpx-all.c | 104 ------------------------------------ 1 file changed, 104 deletions(-) diff --git a/target/i386/whpx/whpx-all.c b/target/i386/whpx/whpx-all.c index 2f2c613eda..baa3169c55 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -1795,75 +1795,6 @@ int whpx_vcpu_run(CPUState *cpu) ret =3D 0; break; } - case WHvRunVpExitReasonX64Cpuid: { - WHV_REGISTER_VALUE reg_values[5]; - WHV_REGISTER_NAME reg_names[5]; - UINT32 reg_count =3D 5; - UINT64 cpuid_fn, rip =3D 0, rax =3D 0, rcx =3D 0, rdx =3D 0, r= bx =3D 0; - X86CPU *x86_cpu =3D X86_CPU(cpu); - CPUX86State *env =3D &x86_cpu->env; - - memset(reg_values, 0, sizeof(reg_values)); - - rip =3D vcpu->exit_ctx.VpContext.Rip + - vcpu->exit_ctx.VpContext.InstructionLength; - cpuid_fn =3D vcpu->exit_ctx.CpuidAccess.Rax; - - /* - * Ideally, these should be supplied to the hypervisor during = VCPU - * initialization and it should be able to satisfy this reques= t. - * But, currently, WHPX doesn't support setting CPUID values i= n the - * hypervisor once the partition has been setup, which is too = late - * since VCPUs are realized later. For now, use the values from - * QEMU to satisfy these requests, until WHPX adds support for - * being able to set these values in the hypervisor at runtime. - */ - cpu_x86_cpuid(env, cpuid_fn, 0, (UINT32 *)&rax, (UINT32 *)&rbx, - (UINT32 *)&rcx, (UINT32 *)&rdx); - switch (cpuid_fn) { - case 0x40000000: - /* Expose the vmware cpu frequency cpuid leaf */ - rax =3D 0x40000010; - rbx =3D rcx =3D rdx =3D 0; - break; - - case 0x40000010: - rax =3D env->tsc_khz; - rbx =3D env->apic_bus_freq / 1000; /* Hz to KHz */ - rcx =3D rdx =3D 0; - break; - - case 0x80000001: - /* Remove any support of OSVW */ - rcx &=3D ~CPUID_EXT3_OSVW; - break; - } - - reg_names[0] =3D WHvX64RegisterRip; - reg_names[1] =3D WHvX64RegisterRax; - reg_names[2] =3D WHvX64RegisterRcx; - reg_names[3] =3D WHvX64RegisterRdx; - reg_names[4] =3D WHvX64RegisterRbx; - - reg_values[0].Reg64 =3D rip; - reg_values[1].Reg64 =3D rax; - reg_values[2].Reg64 =3D rcx; - reg_values[3].Reg64 =3D rdx; - reg_values[4].Reg64 =3D rbx; - - hr =3D whp_dispatch.WHvSetVirtualProcessorRegisters( - whpx->partition, cpu->cpu_index, - reg_names, - reg_count, - reg_values); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set CpuidAccess state regist= ers," - " hr=3D%08lx", hr); - } - ret =3D 0; - break; - } case WHvRunVpExitReasonException: whpx_get_registers(cpu); =20 @@ -2017,26 +1948,6 @@ int whpx_init_vcpu(CPUState *cpu) } } =20 - /* - * If the vmware cpuid frequency leaf option is set, and we have a val= id - * tsc value, trap the corresponding cpuid's. - */ - if (x86_cpu->vmware_cpuid_freq && env->tsc_khz) { - UINT32 cpuidExitList[] =3D {1, 0x80000001, 0x40000000, 0x40000010}; - - hr =3D whp_dispatch.WHvSetPartitionProperty( - whpx->partition, - WHvPartitionPropertyCodeCpuidExitList, - cpuidExitList, - RTL_NUMBER_OF(cpuidExitList) * sizeof(UINT32)); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set partition CpuidExitList hr= =3D%08lx", - hr); - ret =3D -EINVAL; - goto error; - } - } =20 vcpu->interruptable =3D true; cpu->vcpu_dirty =3D true; @@ -2073,7 +1984,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) WHV_CAPABILITY whpx_cap; UINT32 whpx_cap_size; WHV_PARTITION_PROPERTY prop; - UINT32 cpuidExitList[] =3D {1, 0x80000001}; WHV_CAPABILITY_FEATURES features =3D {0}; =20 whpx =3D &whpx_global; @@ -2183,7 +2093,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) /* Register for MSR and CPUID exits */ memset(&prop, 0, sizeof(WHV_PARTITION_PROPERTY)); prop.ExtendedVmExits.X64MsrExit =3D 1; - prop.ExtendedVmExits.X64CpuidExit =3D 1; prop.ExtendedVmExits.ExceptionExit =3D 1; if (whpx_irqchip_in_kernel()) { prop.ExtendedVmExits.X64ApicInitSipiExitTrap =3D 1; @@ -2200,19 +2109,6 @@ int whpx_accel_init(AccelState *as, MachineState *ms) goto error; } =20 - hr =3D whp_dispatch.WHvSetPartitionProperty( - whpx->partition, - WHvPartitionPropertyCodeCpuidExitList, - cpuidExitList, - RTL_NUMBER_OF(cpuidExitList) * sizeof(UINT32)); - - if (FAILED(hr)) { - error_report("WHPX: Failed to set partition CpuidExitList hr=3D%08= lx", - hr); - ret =3D -EINVAL; - goto error; - } - /* * We do not want to intercept any exceptions from the guest, * until we actually start debugging with gdb. --=20 2.50.1 (Apple Git-155)