From nobody Sun Apr 12 02:48:34 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=1771783496; cv=none; d=zohomail.com; s=zohoarc; b=SbtjOT4Azsmx33JYqhR5NGum+T74HDAS+zrF77tM7v9NzgizUW1d5Z/67UxLYVAXddTxmS06PuAS9CDA5YMmzTzyCilpAzj9IZ/r4opoOeIq0p+rR4FbTQyu1I5U4bLSoL5hGuVkhDUunVhbS9xsdRMj1e6gZfafiJKfuD78KwQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1771783496; 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=k2xlx1VmQhqeIrFyXpjt7ZfD66BUlQZlbcdqmLZC48N5ohh5bZQhVDMCVT+owcsq4Y4IoMZKQ1m2VgzLB/Yvn1MZXUVWEE8cFmCdCgJoq54NUO9RwXFvg/zVPNBgLx77fX12KICmK//M18ZhhsC8idJhyWJk0QzDmUMZwFiSO+E= 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 1771783496379533.7114129446646; Sun, 22 Feb 2026 10:04:56 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vuDnf-0000OX-Iv; Sun, 22 Feb 2026 13:03:23 -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 1vuDnd-0000MY-PH for qemu-devel@nongnu.org; Sun, 22 Feb 2026 13:03:21 -0500 Received: from qs-2007a-snip4-3.eps.apple.com ([57.103.84.134] helo=outbound.qs.icloud.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1vuDnb-0000XI-8o for qemu-devel@nongnu.org; Sun, 22 Feb 2026 13:03:21 -0500 Received: from outbound.qs.icloud.com (unknown [127.0.0.2]) by p00-icloudmta-asmtp-us-east-2d-100-percent-12 (Postfix) with ESMTPS id 5802818000F1; Sun, 22 Feb 2026 18:03:14 +0000 (UTC) Received: from localhost.localdomain (unknown [17.57.155.37]) by p00-icloudmta-asmtp-us-east-2d-100-percent-12 (Postfix) with ESMTPSA id 8758F180050F; Sun, 22 Feb 2026 18:03:11 +0000 (UTC) Dkim-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=unpredictable.fr; s=sig1; t=1771783398; x=1774375398; bh=op64aUwd3kHeSL+XTt7uxWfJ6n/JYbXZSlN/Ec+uOgk=; h=From:To:Subject:Date:Message-ID:MIME-Version:x-icloud-hme; b=aYvlitQHvu5K64rPZJmrzHfgkPVz/K6TuHJY2QskirR/lCsK/+NCR6X/Uim+6r9lq+uDo3ldqK4jz+gXOMtam5HzQA4OUCxedDq0eNBihVsAOhqvs/NcNxL4gTT11pukUT2pDmhz0fzYBNTgeZxEd1GzkVySg7u5Ipiu5GXhih4oJMjfP1zMNOucRwe24EzGXJ4OlduoWxFiMH9xeeuWHgFUq3DXJzoEVGpjDxVzTBZSiISOde2CDk4hm1AUyyRYShrVD/KwVi2QUmLSPcn7Q/vkwfNEPNn+w0oDWgz/L4liasfphe/3NOO4Ad9y36dUH2bHhJ7At5PLCXjS83swGQ== mail-alias-created-date: 1752046281608 From: Mohamed Mediouni To: qemu-devel@nongnu.org Cc: Mohamed Mediouni , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Peter Maydell , Cameron Esfahani , qemu-arm@nongnu.org, Magnus Kulke , Paolo Bonzini , Bernhard Beschow , Pedro Barbuda , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Zhao Liu , Roman Bolshakov , Phil Dennis-Jordan , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Wei Liu Subject: [PATCH v4 14/16] whpx: i386: remove CPUID trapping Date: Sun, 22 Feb 2026 19:02:38 +0100 Message-ID: <20260222180241.14621-15-mohamed@unpredictable.fr> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260222180241.14621-1-mohamed@unpredictable.fr> References: <20260222180241.14621-1-mohamed@unpredictable.fr> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjIyMDE3NCBTYWx0ZWRfX1hL1m2B/UzN7 ixsZEfNisziOPVtAP79lh0scM9sMNSfm00Dv+1qYbk3nQ+Lu5d5I/cXcRY0r3MZgNi51EOxYMO+ nR2APkn2jmn/wpogxyW6res/0Ak49ZusrBj+vPUFrB66d3ZhNOAVgqTvBon1PLkXveSwYYBuTBs nEvnjaTfh27ZBQM2j+a5A0/owUwjMqc6TrS0/AsQc2M6DKVnweSyh8vSaqqp8OgKYDlCmsfL0FA 4Rmr48YwBj0qRa84J2QdHDXSVTgqUsr450R4+0Uj8XjGTVKNrt/tXz2LGjYVDmKl0j0giG3txZs mDyFVu2zFZEA4m1CuTC+6L5FeOAkY0nCp2thy87Oyh+7XdJV1ZX20Ydb2JQsps= X-Proofpoint-ORIG-GUID: L_olmCvjamoa2va_TP__cBeS0sJXUaFg X-Authority-Info-Out: v=2.4 cv=YOWSCBGx c=1 sm=1 tr=0 ts=699b44e4 cx=c_apl:c_apl_out:c_pps a=bsP7O+dXZ5uKcj+dsLqiMw==:117 a=bsP7O+dXZ5uKcj+dsLqiMw==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=Gk9p9Fe9aJpBGj35TJ8A:9 X-Proofpoint-GUID: L_olmCvjamoa2va_TP__cBeS0sJXUaFg 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-22_04,2026-02-20_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 clxscore=1030 malwarescore=0 lowpriorityscore=0 spamscore=0 mlxlogscore=999 phishscore=0 mlxscore=0 suspectscore=0 bulkscore=0 adultscore=0 classifier=spam authscore=0 adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602220174 X-JNJ: AAAAAAABBzGkQg3dunA9Q+MgspLNavd3TFxmlpZs0csvjSwIFCfiCxaefMKneULvfjY8pUb6XgZ1ShMLZpkZlO3MDchwE4/JeynaVnZZm7fHwPyj8YCkPjrzILlQNRgBaWntQXLeTBbLCTi0Wv/+kazaUm11zHL//KBCC4fB+bV5MUKPkk3zH1ZSyuDaBb1IEYnCElp7WJT70zKNsnTTTsWEtyd2PfgmPCWjPQ3lzg9Z3HrRLluo2MjtVv6pXxGnHn32/PE9ES4zHygcFOntd6pT3BJBVaGg1GyxW4fG6bqD3zljets9QoJV1ko+IQACbYkRWE0CMl76IsKWNA2w5OQzX5vJujZbJYNJJkhZEqkbmJAEv7UBWCVXmlvXliNw4INk/1jwtlZasKn2fNUDreGEOVVcI+reR5u2gBuWK914I0pb4NA+6cSNIpXIACt/fKmu65/7xMhISO9G6XaNvbBcPHSryfRpZEaotLBezU1XyUof9Tjd88q78KFX1lXORVVBg7Rr8x7RJLfk16ZhyIh3LqfK3LA4XhbUxKJtKOZjfP1+kP3iQrHl65XQWusUr9MGGWi16HE6OaZYQlHWOjZx6OLSNdRSnPq3AFpj1YiwfMdcPewNFdfUWrsqhilDaGWWiLoBTI9iIV0s8wVinzZ+s/kKfB0PrPkNYljdpYcYUsGefX1Gb9jsmzEnDf7qAo3GXl3SLosTWxg87wlF/eqEvshK+REp3gUeAhfLqhENAx4VDOrMTeZargimFe4AqDBJ21alZ8LvyH7lQ2DQLoOWFl3cDe8fsYuvPG+4RSGrdymmrvaOdVRe8wBd5P73IR4kIg== Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=57.103.84.134; envelope-from=mohamed@unpredictable.fr; helo=outbound.qs.icloud.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.798, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.79, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @unpredictable.fr) X-ZM-MESSAGEID: 1771783498468154100 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)