From nobody Thu May 9 01:53:28 2024 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=1685611282; cv=none; d=zohomail.com; s=zohoarc; b=OTJ7Ss5ODjycL+YedCFsejsw8e9aUuBoPJpbMsXoRpSLFTlO/Yq3dabg9/ZQB72OrL0QrqrJlpmRTtCovXdacwca2zk0OCxBfw7ObI+p3QU+K+4wdQUMCeb9Wa75+3oweSvJm9wQssOeF3p9D6dRQ6u1dXzvihchq4wgWjerX/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685611282; 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=qfeyIkfFAr5AZqbTRIVxcHNkUWjZkhSXQl0W5yCglzA=; b=ADINb3Wca8NxgailW5W/+M+Q06BtaRuT7mO2sbBetuwaagNYpjTeIM3MR61h2NACyNch6u2WVel0/zob30lAuFYaLhU153FSaVuFhzO3AO2lpqlRCNnvR8XIAZnAwjizYblFwzrXPiPL4Bds0FRa/t8j2Fcz52NpvDR70u0yXMY= 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 1685611282203291.3155795543951; Thu, 1 Jun 2023 02:21:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q4eU4-0007sx-8w; Thu, 01 Jun 2023 05:20:40 -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 1q4eU2-0007rz-HD for qemu-devel@nongnu.org; Thu, 01 Jun 2023 05:20:38 -0400 Received: from mga04.intel.com ([192.55.52.120]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4eU0-0004eq-Vd for qemu-devel@nongnu.org; Thu, 01 Jun 2023 05:20:38 -0400 Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2023 02:20:35 -0700 Received: from liuzhao-optiplex-7080.sh.intel.com ([10.239.160.28]) by fmsmga006.fm.intel.com with ESMTP; 01 Jun 2023 02:20:25 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685611236; x=1717147236; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=gbgnB1zu57ADLHW0NaG4NBp7Kwj1jx45mnQ8rIdMkvE=; b=PpoMOnHsFr2PBwRdERS7xOxC0uI+VVZHbXrgKvgr+WPgY7kNX7ktd/N+ 9XqeMB8fh0UOuvVumfBU7Ik6I92O3OEtTaBjy3lW4n7GDHtKfqTl1BPMZ kvB3HdtHTFLdKIRATJRtXWYlEcQJHEal/WdlslXjw7dQT4/skpWEzHVL+ zP5H6gMnJwMRnXbqryiraa4mXbNFSufdm91U4eDTRUyxU6IgUYOd5NnVq zDUNLxs+3kQ9qEF6WqGcdHRWjT0w/FxYYHSGfXwG1LGO7w5OhQVI1lGXm 4nEXx06MBrpWgGjnFB+J9IXtlXYhfh3xTgBHNGOG66aGiXtnXz6r7vOTE Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="354359867" X-IronPort-AV: E=Sophos;i="6.00,209,1681196400"; d="scan'208";a="354359867" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="953995705" X-IronPort-AV: E=Sophos;i="6.00,209,1681196400"; d="scan'208";a="953995705" From: Zhao Liu To: "Michael S . Tsirkin" , Igor Mammedov , Ani Sinha Cc: qemu-devel@nongnu.org, Zhenyu Wang , Zhao Liu Subject: [PATCH v2 1/3] hw/smbios: Fix smbios_smp_sockets caculation Date: Thu, 1 Jun 2023 17:29:50 +0800 Message-Id: <20230601092952.1114727-2-zhao1.liu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230601092952.1114727-1-zhao1.liu@linux.intel.com> References: <20230601092952.1114727-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=192.55.52.120; envelope-from=zhao1.liu@linux.intel.com; helo=mga04.intel.com X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.163, 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: 1685611283275100003 Content-Type: text/plain; charset="utf-8" From: Zhao Liu Here're 2 mistakes: 1. 003f230e37d7 ("machine: Tweak the order of topology members in struct CpuTopology") changes the meaning of smp.cores but doesn't fix original smp.cores uses. And because of the introduction of cluster, now smp.cores means the number of cores in one cluster. So smp.cores * smp.threads just means the cpus in a cluster not in a socket. 2. smp.cpus means the number of initial online cpus, not the total number of cpus. For such topology calculation, smp.max_cpus should be considered. Since the number of sockets has already been recorded in smp structure, use smp.sockets directly. Fixes: 003f230e37d7 ("machine: Tweak the order of topology members in struc= t CpuTopology") Signed-off-by: Zhao Liu --- hw/smbios/smbios.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index d2007e70fb05..d67415d44dd8 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -1088,8 +1088,7 @@ void smbios_get_tables(MachineState *ms, smbios_build_type_2_table(); smbios_build_type_3_table(); =20 - smbios_smp_sockets =3D DIV_ROUND_UP(ms->smp.cpus, - ms->smp.cores * ms->smp.threads); + smbios_smp_sockets =3D ms->smp.sockets; assert(smbios_smp_sockets >=3D 1); =20 for (i =3D 0; i < smbios_smp_sockets; i++) { --=20 2.34.1 From nobody Thu May 9 01:53:28 2024 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=1685611290; cv=none; d=zohomail.com; s=zohoarc; b=WOO3AnjqP6/RMbO6U4r4LIQkXddSdOhnScCrqryR4tWkvhyo9Jvi1sctZdQusMwQaqEw741QFS34KFxW7sJwMMjGO3uAyXI6oXMXWfMMvwvH/bgYzqeALtJuu3ahAadTPT1TS/dnPFjH5Ou0b6Z/xYLI1QTNFEHCqfm77EHozBA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685611290; 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=oY1GChn3a6F2iS+9bI9ZOl86pZHYZASy/ry4Ac+7fj0=; b=Ls9AiXu64hF1HdKorZA8ib0lNZzOQ1RWWLVBHpnY+uKUgVEposEyx/OT+98j0JFkwHWUtxOvvK/Grqon84OwCt+BTF21ZG/YE0zScwhmTTpdQoC2r5mHhFCzEOZU3ZcnHxHobhyc+D1WiolS6s5g20i8oZkzalUmSWNNrhreF5w= 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 1685611290622559.2438671216509; Thu, 1 Jun 2023 02:21:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q4eU5-0007tT-8f; Thu, 01 Jun 2023 05:20:41 -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 1q4eU3-0007sv-WA for qemu-devel@nongnu.org; Thu, 01 Jun 2023 05:20:40 -0400 Received: from mga04.intel.com ([192.55.52.120]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4eU2-0004ef-Bt for qemu-devel@nongnu.org; Thu, 01 Jun 2023 05:20:39 -0400 Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2023 02:20:36 -0700 Received: from liuzhao-optiplex-7080.sh.intel.com ([10.239.160.28]) by fmsmga006.fm.intel.com with ESMTP; 01 Jun 2023 02:20:27 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685611238; x=1717147238; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=TenYkCSJGAYG6vndeCXgN52jDW+vKh7tZ6foDGnmN0c=; b=cfOAzGuI/DDwgMCNU1/BIL4MDiRJTKfPktdFphqrePMMeDxUqBMPk5kH UDOgZIRyaiIfE3KEfEJcnL/1WEsTHWioxHmTpawuVD4x3v46++jSKjodY DkwlX1rWc2paI+EfvCLQWMzjNUDg0j2AF2wG1wAMkrW9YU0SF9sXpfyZo DqYDoW2y3LmH04JBcjJxr7iEdUJ++UwrCM+J5CRkEMrjwH8hnOO/nZ/js bGLeoKkNwwBk66wxeR5RZoK2pZfbj4uZyGiCY42kbduos7syN7BGc+un2 Gn+aL4ThVb8fm2j2bOFUDwogS7pxcV7YDWMRUtzSwPt7Phm98QTIRizDF g==; X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="354359870" X-IronPort-AV: E=Sophos;i="6.00,209,1681196400"; d="scan'208";a="354359870" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="953995725" X-IronPort-AV: E=Sophos;i="6.00,209,1681196400"; d="scan'208";a="953995725" From: Zhao Liu To: "Michael S . Tsirkin" , Igor Mammedov , Ani Sinha Cc: qemu-devel@nongnu.org, Zhenyu Wang , Zhao Liu Subject: [PATCH v2 2/3] hw/smbios: Fix thread count in type4 Date: Thu, 1 Jun 2023 17:29:51 +0800 Message-Id: <20230601092952.1114727-3-zhao1.liu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230601092952.1114727-1-zhao1.liu@linux.intel.com> References: <20230601092952.1114727-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=192.55.52.120; envelope-from=zhao1.liu@linux.intel.com; helo=mga04.intel.com X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.163, 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: 1685611291307100003 Content-Type: text/plain; charset="utf-8" From: Zhao Liu From SMBIOS 3.0 specification, thread count field means: Thread Count is the total number of threads detected by the BIOS for this processor socket. It is a processor-wide count, not a thread-per-core count. [1] So here we should use threads per socket other than threads per core. [1] SMBIOS 3.0.0, section 7.5.8, Processor Information - Thread Count Fixes: c97294ec1b9e ("SMBIOS: Build aggregate smbios tables and entry point= ") Signed-off-by: Zhao Liu --- Changes since v1: * Rename cpus_per_socket to threads_per_socket. * Add the comment about smp.max_cpus. Thread count and core count will be calculated in 2 ways and will add a sanity check to ensure we don't miss any topology level. --- hw/smbios/smbios.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index d67415d44dd8..faf82d4ae646 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -713,6 +713,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; =20 if (smbios_ep_type =3D=3D SMBIOS_ENTRY_POINT_TYPE_64) { tbl_len =3D SMBIOS_TYPE_4_LEN_V30; @@ -747,17 +748,20 @@ static void smbios_build_type_4_table(MachineState *m= s, unsigned instance) SMBIOS_TABLE_SET_STR(4, asset_tag_number_str, type4.asset); SMBIOS_TABLE_SET_STR(4, part_number_str, type4.part); =20 + /* smp.max_cpus is the total number of threads for the system. */ + threads_per_socket =3D ms->smp.max_cpus / ms->smp.sockets; + t->core_count =3D (ms->smp.cores > 255) ? 0xFF : ms->smp.cores; t->core_enabled =3D t->core_count; =20 - t->thread_count =3D (ms->smp.threads > 255) ? 0xFF : ms->smp.threads; + t->thread_count =3D (threads_per_socket > 255) ? 0xFF : threads_per_so= cket; =20 t->processor_characteristics =3D cpu_to_le16(0x02); /* Unknown */ 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->thread_count2 =3D cpu_to_le16(ms->smp.threads); + t->thread_count2 =3D cpu_to_le16(threads_per_socket); } =20 SMBIOS_BUILD_TABLE_POST; --=20 2.34.1 From nobody Thu May 9 01:53:28 2024 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=1685611303; cv=none; d=zohomail.com; s=zohoarc; b=h2FCmpKaiWv1kyZKBgin257DEqZ62ROFheUzWoLuvSfUVtvm6mkfWdFNf+I9IEbl2YRzPuJT7gec2K+LOFcpOF5d48VQvRowGwu6B7WSIRtO2BByOf0Wlp3cET4ZpxVfQCaXjGPnRT8nN0g6RK7Hrt6kz2WpmrkJ+toGTtvqXFs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1685611303; 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=562fHmTxqGtCr13gZp5JN7+zXZTgHWe45gvQeoIQWT0=; b=CTEu/47e8UkMAUgAbES+XB40Y6SfWl0YJYDBjIdIeExbKAWI/kKKDGhypq09PZHGHKZG1TPGZq5NScNZFjWxmOcChry0hF8DG6cElQgT9Gvt9DGVQCqplhsfPHjZnY3dUJ/uHDWacc5R9/F0eOkiIKs0uHHioIldce001JYsVII= 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 1685611303546889.1801859373068; Thu, 1 Jun 2023 02:21:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q4eU5-0007tk-TD; Thu, 01 Jun 2023 05:20:41 -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 1q4eU4-0007tI-Hm for qemu-devel@nongnu.org; Thu, 01 Jun 2023 05:20:40 -0400 Received: from mga04.intel.com ([192.55.52.120]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1q4eU2-0004eq-R7 for qemu-devel@nongnu.org; Thu, 01 Jun 2023 05:20:40 -0400 Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Jun 2023 02:20:38 -0700 Received: from liuzhao-optiplex-7080.sh.intel.com ([10.239.160.28]) by fmsmga006.fm.intel.com with ESMTP; 01 Jun 2023 02:20:29 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1685611238; x=1717147238; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=pwFQKZy1ANvQqxrZKuban+jk49J7lZcU4BzHYMzhEYU=; b=K6nUW0JYFuAEUNDCyTw01qqTYDGX9g0Y5AvKAHLh+lXGMkUftdvoR9Xl pH+xsMqDOQ/VV8z3zGZqXYHFBgRgUh50twFXfpu8n4QnuPRlG7pyOlEkK Rb9g7ud4bz/XOdcCtALvqzpT44+6FxISZtKst3VCbxHbsu+eU5iLmdej8 nL+ZTazkRvrF4n2NUtrYTmFdIJrG8maYVkaCkWCttqoEgWuntkh/xBCc+ eSTmToLfOYJ73SomJIiNU4LOzUZm1R/ivRp2B91BgeaqGXdXQREGXr28f D4izvabeF1CWYkSsu23rwAaFfZ2tHSpZ/9p4t7T/bd246LhwIoSvVbeAc Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="354359878" X-IronPort-AV: E=Sophos;i="6.00,209,1681196400"; d="scan'208";a="354359878" X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10727"; a="953995756" X-IronPort-AV: E=Sophos;i="6.00,209,1681196400"; d="scan'208";a="953995756" From: Zhao Liu To: "Michael S . Tsirkin" , Igor Mammedov , Ani Sinha Cc: qemu-devel@nongnu.org, Zhenyu Wang , Zhao Liu Subject: [PATCH v2 3/3] hw/smbios: Fix core count in type4 Date: Thu, 1 Jun 2023 17:29:52 +0800 Message-Id: <20230601092952.1114727-4-zhao1.liu@linux.intel.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230601092952.1114727-1-zhao1.liu@linux.intel.com> References: <20230601092952.1114727-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=192.55.52.120; envelope-from=zhao1.liu@linux.intel.com; helo=mga04.intel.com X-Spam_score_int: -44 X-Spam_score: -4.5 X-Spam_bar: ---- X-Spam_report: (-4.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.163, 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: 1685611305404100003 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 --- Changes since v1: * 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 | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index faf82d4ae646..2b46a51dfcad 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; @@ -750,8 +751,16 @@ static void smbios_build_type_4_table(MachineState *ms= , unsigned instance) =20 /* smp.max_cpus is the total number of threads for the system. */ threads_per_socket =3D ms->smp.max_cpus / ms->smp.sockets; + cores_per_socket =3D ms->smp.cores * ms->smp.clusters * ms->smp.dies; =20 - t->core_count =3D (ms->smp.cores > 255) ? 0xFF : ms->smp.cores; + /* + * Currently, max_cpus =3D threads * cores * clusters * dies * sockets. + * threads_per_socket and cores_per_socket are calculated in 2 ways so + * that this sanity check ensures we won't miss any topology level. + */ + g_assert(cores_per_socket =3D=3D (threads_per_socket / ms->smp.threads= )); + + 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; @@ -760,7 +769,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