From nobody Sat Sep 26 20:52:38 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=quarantine dis=none) header.from=qq.com ARC-Seal: i=1; a=rsa-sha256; t=1788422231; cv=none; d=zohomail.com; s=zohoarc; b=XOfaXxHq+fI8V6y30HKHhDctjK3Czu/72Gco3Y0G4XLEabQ0vtBUBqLN1LxjRkRbIdPaXovv+3xjjEO2MTvfNh6ABfZ2dxQwHZzfWoIQta4hQKm8sTDAmZAyrJFf7Nug570J7AnEt3t9WTYefedjbPIRO+B2E7Dppt7ur9YZMMg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1788422231; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ecihUJvTXqtI8yMcYIIzf34Sfa1kpNexUvrECdtHbdM=; b=J/mqUAvI44q26Inq57cShBn8lwWo3B94Hzwl5C0hzbEcoeha8IDdX16/qM4wrXRPuu+aVgAy58prHmlunzwKTBcv+NyU6TY5ItVVauPs9c+NHwgdt7Agpy7UiPGjPxPcRsCDBgpAuw/gWRx4IE3urgbuE9lw+UeXahI4PtgzcDk= 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=<3138947285@qq.com> (p=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1788422231311705.8506023401574; Thu, 3 Sep 2026 00:57:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1x22Jh-0000dP-6Y; Thu, 03 Sep 2026 03:57:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3138947285@qq.com>) id 1x22Je-0000cv-Di for qemu-devel@nongnu.org; Thu, 03 Sep 2026 03:56:59 -0400 Received: from out203-205-221-149.mail.qq.com ([203.205.221.149]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from <3138947285@qq.com>) id 1x22Jb-0005jy-EP for qemu-devel@nongnu.org; Thu, 03 Sep 2026 03:56:58 -0400 Received: from Win11-9700X.localdomain ([240e:398:adf0:2560:dc86:1426:97f0:785b]) by newxmesmtplogicsvrszb51-0.qq.com (NewEsmtp) with SMTP id E2E3F2E2; Thu, 03 Sep 2026 15:56:46 +0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1788422208; bh=ecihUJvTXqtI8yMcYIIzf34Sfa1kpNexUvrECdtHbdM=; h=From:To:Cc:Subject:Date; b=retA50Mg9HeYO1IZjr110w8jh7r+IW0UCkUbKbLO02oFY2B6nBubCk5CXNSWfDEuG Mt6w5PDXsRVTAAbVsc1vaNphxtuLbRnc71Ce/qQRxq0MgA5MOwuasXwO2q0eBSMzzd RkudCqLRwIONfSzOVxuynBy1SOjHNsiR3Wp/xAWM= X-QQ-mid: xmsmtpt1788422206to5dkrs1n Message-ID: X-QQ-XMAILINFO: MOnz+xTS1+9i381h+Lwe0b6rxKsXg3AeVrJ7M75v5tx3kbpagQUM2P9+I7rUUZ lyY4vv15ncZr35wzNx9qjALlFv5vtaD+YPspzmcCoxhmpqISkX3Mi+rZ7+wQAgoBqVF5oV+z1nU/ iHyEzMnNn18d+Gc/OM1qDwSYykA8G74AKkagLdmYPMuUwiEhQJkjC4AYnltERr/2RHpdZYmVAe+X eLh5+gRgAcNg+MYwvSEgkSmx1uCZj1sxwiO8Ck6yfNC/pUT8CxBGGIK08D8wVNb1YrSZwLYnK8Re NvuYDYd+OI+ikKPY0lWQXPrEYjEKB7WbQn/QwXe7LyePf+OuNYFSOhlfix3pKeZZkK/h1/FF9oCe XrQniEizTzySzLwO1q7VmKGfby6gkF+sFonifZUoxUkpGV9psEC4768/9QgIDN/vDz19QKaeeCNC gWi4MremEuPtfYo9JB1ewjU2pMsL+aFvr6+2gERYcITXQcrC/YZqKPaWPPAfE32yDjtFxtVyOQSD mN6W+Ew35biRdCs8wZVk/eCYP65hnysp+B6sXimXodAswpbjO5B7osVPDHlsu3aC2r3lA7Ps9ZxZ nLZinmV2gO+jIwSQfglCJ8tDfCw6zQpGy8YEUi0t7muFSVHZcMoHrDhdWiVyoNG2qBzr70EhbkLO iR3afGxAGiDwtnibj0eNYToqQGFpfG/fDev6wSA+0eHFikKIE7rL6+QeGs+BD5jFpytUM7G6ida+ GuF0fUxbYM6/QtvwEv8IwzkJMoGS3190igb1qN2IY0Hwjl+YPOeO8hFtTMOdWOuQLzC4cNDzyLJY i7eOXEBOaQcIjdo2PVKhDlHpOIZ2ySa5b+WA0hl3pPBM+h8b1NHgnvFaop5Ct//JadulXxAbZRhY oYYWt7dd5VqbcOSfjVkIO7zhdgfmmMhd/hDuo+EN8Txg2WSr3txM0Vd2+cFgD1SGKJ30QNvJ6dJi 4ExDsYXP5YH47BXVufdnOEwyxJ499CGBSaypE3vhb3xraL6WaqyBEVkesjDcy/GulJtDY5y/zEv9 Num6dJUvbj+ZHV3zmhZ+dehDM5mmQ= X-QQ-XMRINFO: NyFYKkN4Ny6FuXrnB5Ye7Aabb3ujjtK+gg== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Jiajun Liang <3138947285@qq.com> To: qemu-devel@nongnu.org Cc: pbarbuda@microsoft.com, mohamed@unpredictable.fr Subject: [PATCH] whpx: intercept CPUID leaf 4 so guests get the host cache topology Date: Thu, 03 Sep 2026 15:56:46 +0800 X-OQ-MSGID: <178842220603.9862.3674685426630821508@qq.com> X-Mailer: python-smtplib (git-send-email equivalent) 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=lists1p.gnu.org; Received-SPF: pass client-ip=203.205.221.149; envelope-from=3138947285@qq.com; helo=out203-205-221-149.mail.qq.com X-Spam_score_int: -17 X-Spam_score: -1.8 X-Spam_bar: - X-Spam_report: (-1.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, FREEMAIL_ENVFROM_END_DIGIT=0.25, FREEMAIL_FROM=0.001, HELO_STATIC_HOST=-0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=0.001, SPF_HELO_NONE=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 @qq.com) X-ZM-MESSAGEID: 1788422232664158500 From 89c868408a2b71f838c6964d4461c480a108d0e7 Mon Sep 17 00:00:00 2001 From: Jiajun Liang <3138947285@qq.com> Date: Mon, 31 Aug 2026 18:44:42 +0800 Subject: [PATCH] whpx: intercept CPUID leaf 4 so guests get the host cache topology The hypervisor answered CPUID leaf 4 (deterministic cache parameters) itself because leaf 4 was not in the partition's CPUID exit list. Its answer degenerates on this setup: the first subleaf reports cache type 0 (no more caches), so a guest deriving its core count from leaf4.EAX[31:26]+1 falls back to 1 core per package while leaf 1 still reports 16 logical processors. XNU then computes nPThreadsPerCore =3D 16 / 1 and divides by zero downstream in cpu_thread_alloc during smp_init (kernel panic, divide error). Add leaf 4 to the CPUID exit list so QEMU's cpu_x86_cpuid answers it with the configured cache topology instead. Contract: Intel SDM Vol.2 CPUID leaf 4 defines EAX[31:26] as the maximum number of addressable IDs for logical processors sharing this cache; QEMU builds that from env->cache_info. Verified on the x86 macOS / WHPX pathway (Windows 11 host): the guest now queries leaf 4 (previously it never reached QEMU), cores per package is derived as 16, the divide error disappears, and the guest advances past smp_init through VM bootstrap, scheduler init, and Mach object setup. Signed-off-by: Jiajun Liang <3138947285@qq.com> --- 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 113f79a..a9e74c9 100644 --- a/target/i386/whpx/whpx-all.c +++ b/target/i386/whpx/whpx-all.c @@ -3039,7 +3039,7 @@ int whpx_accel_init(AccelState *as, MachineState *ms) WHV_PROCESSOR_FEATURES_BANKS processor_features; WHV_PROCESSOR_PERFMON_FEATURES perfmon_features; =20 - UINT32 cpuidExitList[] =3D {0x0, 0x1, 0x6, 0x7, 0xb, 0xd, 0x14, 0x24, = 0x29, 0x1E, + UINT32 cpuidExitList[] =3D {0x0, 0x1, 0x4, 0x6, 0x7, 0xb, 0xd, 0x14, 0= x24, 0x29, 0x1E, 0x40000000, 0x40000001, 0x40000010, 0x80000000, 0x80000001, 0x80000002, 0x80000003, 0x80000004, 0x80000007, 0x80000008, 0x8000000A, 0x80000021, 0x80000022, 0xC0000000, 0xC0000001}; --=20 2.55.0