From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1758383AbcCVH4t (ORCPT ); Tue, 22 Mar 2016 03:56:49 -0400 Received: from mail-bl2on0089.outbound.protection.outlook.com ([65.55.169.89]:36850 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753978AbcCVH4j (ORCPT ); Tue, 22 Mar 2016 03:56:39 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.221) smtp.mailfrom=amd.com; alien8.de; dkim=none (message not signed) header.d=none;alien8.de; dmarc=permerror action=none header.from=amd.com; X-WSS-ID: 0O4FKQ3-07-5B2-02 X-M-MSG: Date: Tue, 22 Mar 2016 15:56:50 +0800 From: Huang Rui To: Peter Zijlstra CC: "tglx@linutronix.de" , "linux-kernel@vger.kernel.org" , "mingo@kernel.org" , "bp@alien8.de" , "aherrmann@suse.com" , "jencce.kernel@gmail.com" , Sherry Hurwitz , Gang Long , Tony Li Subject: Re: [PATCH 2/3] x86/topology: Fix AMD core count Message-ID: <20160322075648.GA30748@hr-amur2> References: <20160318150345.146716865@infradead.org> <20160318150538.551407299@infradead.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20160318150538.551407299@infradead.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.221;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(24454002)(199003)(189002)(15975445007)(5008740100001)(50986999)(106466001)(76176999)(77096005)(92566002)(110136002)(189998001)(2906002)(2950100001)(4001350100001)(97756001)(46406003)(105586002)(4326007)(11100500001)(47776003)(81166005)(19580395003)(83506001)(1076002)(33656002)(1220700001)(101416001)(87936001)(1096002)(19580405001)(54356999)(33716001)(86362001)(23726003)(50466002)(586003)(107986001);DIR:OUT;SFP:1101;SCL:1;SRVR:SN1PR12MB0862;H:atltwp01.amd.com;FPR:;SPF:None;MLV:sfv;A:1;MX:1;LANG:en; X-MS-Office365-Filtering-Correlation-Id: fca83aac-34b0-48a7-5726-08d352277b04 X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0862;2:dfaLb/l3yH0EiwXmhOrM6wvT6B3GEBqDoVGxSFOCdNTlx5TNb/LHoW6ukc4CSiBjL+HN00KO3OwBcLVPbZXTRMULTpqaxWK8gvQU3eVKX5McpQs7fZm+bG74iKF03oby57oJf3TCUwqIIED+tiJtX+fdJWb5RZpnt/u+tWljvf60Rx+Ahozja6+VSbBiPD+/;3:q2hCVWwbRQpeuikFZu1RaMFMdXuIG9mMkkPvGC+kbYKqC3L/y4gbcgrD3RBK2cPWNz8RQzP7RRPTVbPapBHj05H2uOjnR1aFK5L7MU2SV/N4nUDFW3f0AoglJdKExv3PzbJTurLfEIWexd4x8twbLzWf5KPy5Axs3LjkwbkYjg/Q7U25luTimRNnJhXftowlxZNbEysVd0CY9YDmfBKuF14XYtB3OmaNTwwV2DMW+d0= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0862; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0862;25:oIGtX14aoh+aV5DGuj3I5e6qDuYQOQxWbttfi2abqf0X930Wd9Wa5jb65jxpcd0buk52+38+K+HFZVT5Jfun0ZHg/aEFPj7LfJVkIvC5tTUhb4lAO2FMQgUgHqxArP+sSuh6VnoDQO7HvI84ua67ftJayHye4NEA4MOjL3qXWdbYjKaW0OHRmHSeJtKCQSSvvrmXOA7MctMf5jHtG31LwMAs8LGjnoYTq3eyZix63ti7JBBVeDHNvXcU+CKHqBJF8lW/UPnK2vtoVYRy2bR46gji0W9cUXtvm8X5mKXmAbP7VA4uc3XdEsTRb8w1ynyYIjtlPtxEzHP7SNE2I+jqASKLTg5/Iom4udYu1nC3OFgSCJnONNnLQ1PwygyDtgA7d/wNN/VnamXPdCQjN9mcjSk+CmmqQ+LfobhwHsWgJ556u/xw00/hzoX9quXq8raLN599537z+D5j77BXEGIUhVNsvRjrhxt0RJr5vFft9SAmjRzi4HTv5imzt7SjA9k+LjAefsfnEsareXaQK9hxoF0ejmCQcnolyLFP401atI59KimTDr4j/B3LPWl17Woa X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0862;20:K85anszJSo50/aRqKkjyMwvE70h8M0crSqqfrBsVh0CLb/nQjIcpP+d2a2238lp25DYv0wweBmamiWLi6X7d/Hj3Hhlon6DsiKFlfFs0jHAR9sZKbNhVeoQB8C8NAN8nzsS80AwpfX0Kll9YG4MLu2yDdqihVYB9fUVD5kP2p9UjCk6wu9eYPcU+vXQPKiANd7MVZbsMoA4FYU3hQAXbdJvHN/UJy0esa+Lk4OyKqfH6pSgmDRBsq9wFTQWckXl0+cEl//+QClZczyCelNxTqjBvL7fMczYkmro3LLTgXFSNgqG9A5ozSgTVNzu00cAAx0HFSDgttaGbK0QzohX7c8PpFoscqpq2vpUGFB3a4pJX0/HcPvD/JHzhq8/V3+NFhhgr3av3sxmtmT6VBc7Q6mycyT07Xm+xOMrX4bg0LmVK7fzQxqDxMlgzp57eFRtNqGKjblg3BRTvYE6LIIunyeAPA7HoaVuwwRBvf3OMBQbVO8BoyNiallVV+R+T3Muj X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(13018025)(13017025)(13023025)(13024025)(8121501046)(13015025)(3002001)(10201501046);SRVR:SN1PR12MB0862;BCL:0;PCL:0;RULEID:;SRVR:SN1PR12MB0862; X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0862;4:gylf+jYVyCwHeL6ccR+MHBBkGztGTp49Z+asUP9CUBrWURGgKmDXf8NWuzDMLnuqHQm2H3na85axt7Wmhbt9evr+yRW0n+vzyI+TdoRjp+5SGubpaZZwt4UDkvUe7vmfSHvPLYsAgCbzUZ0P2oBS1QF9jUGXm/Dw19R9MulxBLURvnatdBPrn4mGgknujUchguw2sL426o4ju8XI9kAWaPRYETEleArHx80zp2c3d32g1Kx3XxIQge7hJkcT3LhL0SbsZYRLENStZLRFrpk1ap6UJUGaEIT5ubjn+E28IHmH0aS2xVW+eUYAtENz5N7ThnqjqS/Rdwp3eeCSkSLxXTkYksGeukuX63jtUyocuEOiXPQgoKfXca5LECWZw0HY8LporUkhwvIJZodGVHD/vOTMwq9NKSb2wZu2MAFPVlts9ObrxnzrDYcWegKO3nqeCwjrpOsjEQbTxWgvvA1F3g== X-Forefront-PRVS: 08897B549D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;SN1PR12MB0862;23:5nePsqf3NfzNiAWTpEfyOqc4CVwrHQ44rn1nYH55Q?= =?us-ascii?Q?JZXcTVwigJ5mi37TeXkmdMUphh+41M/k+sKJXgqktkhK1eeJn2s7SegJpgwQ?= =?us-ascii?Q?Z0D9vFoW03aa9m1ydY45SHzkLZVq7Z5sjCP3mNT3mxmPj/R/cww90A4xMvOa?= =?us-ascii?Q?AVvCOq6kGxUbt/vvPv+x6yS8G1rHO/1ihwaz5m9xWePgpIIptiDshuG+mEtu?= =?us-ascii?Q?0X2j7sx2RfXMMkwd2QwCSzkSx/2tCzCpQpzMX+nJICC0vxekDwlyDww1XZ8O?= =?us-ascii?Q?KiLBXD2J+nKYoW/T1U9pjTnNAjc1cqYR3lrWZWBwDYvC9u7S/YZy6WbogaH5?= =?us-ascii?Q?idOxdWcF5QUocWBztaDRjiWTotaDRO4p6LVaQAFwiGm83wQpIvqraCkeI/OQ?= =?us-ascii?Q?OIAhPSzJAxc+8gB6WK6rWhRA7kHBss17QU/pP+Z+bq33F4dbfC9gCsYJhxF1?= =?us-ascii?Q?DcAp7uAEyY5/N+0UjpMF/w/feWmrk15A9UYrEnP8UXUTSr/b4YWz8Tyln/KE?= =?us-ascii?Q?s8JYUr9HRfgBkNNEjXuSEZLLMeOpi6tQQF04cCRG6jz2hODOiElgVw2xyBwp?= =?us-ascii?Q?ZSq4rab8ULtJcmbla+hgA67SE5qCUkOGw8zrLLPXY3cyXTH34uy97Ki1LweE?= =?us-ascii?Q?Naa2A3IAQKcNEAHa52WQRPkHHX/PNHpLuP/EUsZ+wBSxlTcyf7Ast2xNeebZ?= =?us-ascii?Q?DXnciwgnTzF6pliAxe7/nUtfvrIVt5E5gY5G8YJZyjYutjAOQ9AHFmwv+PsV?= =?us-ascii?Q?bKo5m56hbNtZ+TO+tL44pqQx4qINv9H6MfWhl8EptwtNvcj/v7xvXGrM+hIs?= =?us-ascii?Q?V2/wTfFTKeslPKhZ0pNmp8yDaUTGHStl7odHQF3i1/4+5yJCSeMWt0LN4a94?= =?us-ascii?Q?mk3YhZ+o/FjrcFwWgS+iQF+72+owyIE9aiqaLjb5hTXNWgJIBqrbc9vh8xkQ?= =?us-ascii?Q?OgQRNrvw+U/X2wNU3QCjzqcsADX59GSsjgPCDWZPVRX4dQNj9mK/vKvmb2KA?= =?us-ascii?Q?rbAG++ZXb2258s9RJ6HPpiuuxPtnS/14d9ue45EtiUDVf0l/5GqMPpMro7y6?= =?us-ascii?Q?VSpJ92TyJXUwfXJ8QnRTYFaoJw1?= X-Microsoft-Exchange-Diagnostics: 1;SN1PR12MB0862;5:auyuv8He1vw+f0wpS12bsWGhcKO7utOx0PkpCtSOS1gajXMCXXwm9LPuFwvMdHJM5WyTtUTO7S9eDr6RW/PxQK78RFzAiGYNSa2Ncdl+fqCfZYj7t3eB/TVlTbTqlPNODtbL9tpYg+a5Nb2AyC6LKA==;24:cBgdchwQZULhVjfkwTZdwZ8hB2MGjKMfnahx4pnWywTfCMTKsciPd7yqMKCB4JTQnVXZKf3BrXQGSKX4QOTtFhci4ZRkGpzRMj5mmXiSRh4=;20:zkeGUtXy3mP24qgAwq1xqf/OVOsaZZ/X2xCbQQsRrqttwlnIG0pgEIUWD63ZXHvMgJeHX5821Waga0GL825fMIF7XtVecwbD5ILNBefn27IVizV40JFKE23w0peQky5rHMGsK7XmeeO3rlcl66z7Ljy4w7OuUPd21hs7B7OxR01erzcITiSAIonM7dXTzqB9lHctoeU/Cbc8Ck0isxyxH2RO+QG+eGA2lmfwYDhIW0XLLz8QiK55HRVSxedxVaDw SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2016 07:56:30.1549 (UTC) X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.221];Helo=[atltwp01.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR12MB0862 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 18, 2016 at 11:03:47PM +0800, Peter Zijlstra wrote: > It turns out AMD gets x86_max_cores wrong when there are compute > units. > > The issue is that Linux assumes: > > nr_logical_cpus = nr_cores * nr_siblings > > But AMD reports its CU unit as 2 cores, but then sets num_smp_siblings > to 2 as well. > > Cc: Ingo Molnar > Cc: Borislav Petkov > Cc: Thomas Gleixner > Cc: Andreas Herrmann > Reported-by: Xiong Zhou > Fixes: 1f12e32f4cd5 ("x86/topology: Create logical package id") > Signed-off-by: Peter Zijlstra (Intel) I tested this patch both on fam15h and fam16h platforms, x86_max_cores can report correct compute unit numbers. And /sys/devices/system/cpu/cpuX/topology/thread_siblings_list /sys/devices/system/cpu/cpuX/topology/core_siblings_list are also right. Thanks. Tested-by: Huang Rui > Link: http://lkml.kernel.org/r/20160317095220.GO6344@twins.programming.kicks-ass.net > --- > arch/x86/kernel/cpu/amd.c | 8 ++++---- > arch/x86/kernel/smpboot.c | 11 ++++++----- > 2 files changed, 10 insertions(+), 9 deletions(-) > > --- a/arch/x86/kernel/cpu/amd.c > +++ b/arch/x86/kernel/cpu/amd.c > @@ -313,9 +313,9 @@ static void amd_get_topology(struct cpui > node_id = ecx & 7; > > /* get compute unit information */ > - smp_num_siblings = ((ebx >> 8) & 3) + 1; > + cores_per_cu = smp_num_siblings = ((ebx >> 8) & 3) + 1; > + c->x86_max_cores /= smp_num_siblings; > c->compute_unit_id = ebx & 0xff; > - cores_per_cu += ((ebx >> 8) & 3); > } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { > u64 value; > > @@ -331,8 +331,8 @@ static void amd_get_topology(struct cpui > u32 cus_per_node; > > set_cpu_cap(c, X86_FEATURE_AMD_DCM); > - cores_per_node = c->x86_max_cores / nodes_per_socket; > - cus_per_node = cores_per_node / cores_per_cu; > + cus_per_node = c->x86_max_cores / nodes_per_socket; > + cores_per_node = cus_per_node * cores_per_cu; > > /* store NodeID, use llc_shared_map to store sibling info */ > per_cpu(cpu_llc_id, cpu) = node_id; > >