From nobody Tue Feb 10 17:08:23 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass header.i=@intel.com; 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=none dis=none) header.from=linux.intel.com ARC-Seal: i=1; a=rsa-sha256; t=1687257107; cv=none; d=zohomail.com; s=zohoarc; b=gOp0uBLbbh+/U24d0pnO/LMxasI6HQPyhPebXvfa0Yb11Thc8Pzr0watFrj4PVO70fTagj2hAHTDsOamE/P9Mb5ZlFei8ahY7LN/UhkeD444DzOJvGfTgmDwaWjrYS18CkDYvUcRUQoaCSppfhOTTzW28mpsVdg6wUAdTId7yNE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1687257107; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=lBt5qHvRd+/tr5EdOUruTFeKBii3ko3/XXiThNPmt6Y=; b=GQKDLmELrwkqep4wyjD+dJVKTc6XaBQRzsMUnkJHIkYDbuAOhAy4RZEXIWVmWDan1iiDmNJXSH6H1KYLCxw0SHeFnFGIzJLyQUqNEIP8F0hRT/IvS2XhkmFfGz+Zf0XHIjn1DIL7Na2hWQluySLBpXvC8LJo5tCaRdFpu4sIPsE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=@intel.com; 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=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 168725710784656.90144900735379; Tue, 20 Jun 2023 03:31:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qBYdD-00061e-1e; Tue, 20 Jun 2023 06:30:39 -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 1qBYdA-000610-Ot for qemu-devel@nongnu.org; Tue, 20 Jun 2023 06:30:37 -0400 Received: from mga06b.intel.com ([134.134.136.31] helo=mga06.intel.com) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qBYd6-00026h-KZ for qemu-devel@nongnu.org; Tue, 20 Jun 2023 06:30:34 -0400 Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 20 Jun 2023 03:30:31 -0700 Received: from liuzhao-optiplex-7080.sh.intel.com ([10.239.160.28]) by orsmga002.jf.intel.com with ESMTP; 20 Jun 2023 03:30:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1687257032; x=1718793032; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=g0xkDP4DSu/1LV8YnYWekriD9z+4GqXRLryqeqpPXFE=; b=YS+Zj5yz2EhRsZMrvXVyOtMzgSQJiaAIKBWXBGHQihKgKEKkuXVbozS8 UNaXhDNVq79Od64FrEnouZGpQ061oZ414N8Wx0RpmGvovDF+EBxzfPkeo 2ESnIXpwAJccEdYqRyaCb/iFBgFjlVDHKGSqYb5kXf24wSFDh8hRMS8/W hxMZ9lmlrHdYlapUUuk0n+L7oam9LdwFD2R2FQZq4oK+zwfxgPxZr8S5k +nmfKvGQz55G+u9lNc9ywq9giDqTK5DNyDjeDqopKuU8METxQtPj3hukh U8mwhOZJKOZLvv9TU9xdO78IsQ6m//kCCP4kabjPY+OH5SoM7vKtPHoHV w==; X-IronPort-AV: E=McAfee;i="6600,9927,10746"; a="423488491" X-IronPort-AV: E=Sophos;i="6.00,256,1681196400"; d="scan'208";a="423488491" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10746"; a="714002278" X-IronPort-AV: E=Sophos;i="6.00,256,1681196400"; d="scan'208";a="714002278" From: Zhao Liu To: "Michael S . Tsirkin" , Igor Mammedov , Ani Sinha , Eduardo Habkost , Yanan Wang Cc: Marcel Apfelbaum , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-devel@nongnu.org, Zhenyu Wang , Zhao Liu Subject: [PATCH v3 4/4] hw/smbios: Fix core count in type4 Date: Tue, 20 Jun 2023 18:39:58 +0800 Message-Id: <20230620103958.3907565-5-zhao1.liu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230620103958.3907565-1-zhao1.liu@linux.intel.com> References: <20230620103958.3907565-1-zhao1.liu@linux.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: none client-ip=134.134.136.31; envelope-from=zhao1.liu@linux.intel.com; helo=mga06.intel.com X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: 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 @intel.com) X-ZM-MESSAGEID: 1687257109333100003 Content-Type: text/plain; charset="utf-8" From: Zhao Liu From SMBIOS 3.0 specification, core count field means: Core Count is the number of cores detected by the BIOS for this processor socket. [1] Before 003f230e37d7 ("machine: Tweak the order of topology members in struct CpuTopology"), MachineState.smp.cores means "the number of cores in one package", and it's correct to use smp.cores for core count. But 003f230e37d7 changes the smp.cores' meaning to "the number of cores in one die" and doesn't change the original smp.cores' use in smbios as well, which makes core count in type4 go wrong. Fix this issue with the correct "cores per socket" caculation. [1] SMBIOS 3.0.0, section 7.5.6, Processor Information - Core Count Fixes: 003f230e37d7 ("machine: Tweak the order of topology members in struc= t CpuTopology") Signed-off-by: Zhao Liu --- v3: * Use the wrapped helper to get cores per socket. v2: * Calculate cores_per_socket in a different way from threads_per_socket. * Add the sanity check to ensure consistency of results between these 2 ways. This can help not miss any future change of cpu topology. --- hw/smbios/smbios.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 3aae9328c014..10cd22f610ef 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -714,6 +714,7 @@ static void smbios_build_type_4_table(MachineState *ms,= unsigned instance) char sock_str[128]; size_t tbl_len =3D SMBIOS_TYPE_4_LEN_V28; unsigned threads_per_socket; + unsigned cores_per_socket; =20 if (smbios_ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_64) { tbl_len =3D SMBIOS_TYPE_4_LEN_V30; @@ -749,8 +750,9 @@ static void smbios_build_type_4_table(MachineState *ms,= unsigned instance) SMBIOS_TABLE_SET_STR(4, part_number_str, type4.part); =20 threads_per_socket =3D machine_topo_get_threads_per_socket(ms); + cores_per_socket =3D machine_topo_get_cores_per_socket(ms); =20 - t->core_count =3D (ms->smp.cores > 255) ? 0xFF : ms->smp.cores; + t->core_count =3D (cores_per_socket > 255) ? 0xFF : cores_per_socket; t->core_enabled =3D t->core_count; =20 t->thread_count =3D (threads_per_socket > 255) ? 0xFF : threads_per_so= cket; @@ -759,7 +761,7 @@ static void smbios_build_type_4_table(MachineState *ms,= unsigned instance) t->processor_family2 =3D cpu_to_le16(0x01); /* Other */ =20 if (tbl_len =3D=3D SMBIOS_TYPE_4_LEN_V30) { - t->core_count2 =3D t->core_enabled2 =3D cpu_to_le16(ms->smp.cores); + t->core_count2 =3D t->core_enabled2 =3D cpu_to_le16(cores_per_sock= et); t->thread_count2 =3D cpu_to_le16(threads_per_socket); } =20 --=20 2.34.1