From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752159AbcCUDHk (ORCPT ); Sun, 20 Mar 2016 23:07:40 -0400 Received: from mail-bl2on0095.outbound.protection.outlook.com ([65.55.169.95]:22752 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751490AbcCUDHi (ORCPT ); Sun, 20 Mar 2016 23:07:38 -0400 Authentication-Results: spf=none (sender IP is 165.204.84.222) 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: 0O4DCOE-08-EGS-02 X-M-MSG: Date: Mon, 21 Mar 2016 11:07:46 +0800 From: Huang Rui To: Borislav Petkov , Sherry Hurwitz CC: Peter Zijlstra , , , , , , Gang Long Subject: Re: [PATCH 2/3] x86/topology: Fix AMD core count Message-ID: <20160321030744.GA26269@hr-amur2> References: <20160318150345.146716865@infradead.org> <20160318150538.551407299@infradead.org> <20160318164101.GG7817@pd.tnic> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <20160318164101.GG7817@pd.tnic> User-Agent: Mutt/1.5.21 (2010-09-15) X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.222;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(24454002)(164054003)(106466001)(47776003)(1076002)(4001350100001)(1220700001)(54356999)(83506001)(76176999)(5008740100001)(50986999)(33716001)(586003)(97756001)(23726003)(77096005)(86362001)(11100500001)(92566002)(33656002)(15975445007)(5001770100001)(50466002)(105586002)(2950100001)(46406003)(81166005)(4326007)(189998001)(87936001)(19580395003)(19580405001)(101416001)(107986001);DIR:OUT;SFP:1101;SCL:1;SRVR:DM3PR12MB0859;H:atltwp02.amd.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-MS-Office365-Filtering-Correlation-Id: 2a92624b-1fbd-4284-3a9c-08d35135f2e5 X-Microsoft-Exchange-Diagnostics: 1;DM3PR12MB0859;2:pE12fAnUnd5mTTWiSrggwPxbxd1xkIi+mHeYrz6uYUhA1JddN9BMbVYQolsxblAyB3KZeASGhjr6E7jyRdgfWoCwV8bo3YVSotxDYTqQ7JbU4ZKmmT5NkFHRkvq4GsHyUZf9wF9hs8jQmnk5c3S8wtJ8WAdKqckjfFlzd+RlpTUZj5GlhAduUNr5palPO2Xq;3:1Mi7B71kkkh5h4EKmLaiZGstUGTFN9ZNnkFC/Cumoqdo3NGfZjPMW6+S7FKqY0doS0xsm58nO3SL4PkQmYvQNHJUPkZ1tGwG8zRFOmMoMq9X6CeoVm9hANvm3gCwgt3oEC5QY6Iv+v3hmxfLIzdguCKhTpv28BDfaXTJ3l1eX7ed31fJqwe1Ss3Yh/tLeXxKvqx9Wx+3B2s3Mks9M8eJ+LOmAbtZ5UKDGwymoLxXsic= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM3PR12MB0859; X-Microsoft-Exchange-Diagnostics: 1;DM3PR12MB0859;25:FKBQ6Yeh+h9fltgWOCz75L8afX4ID7uXva2tmc5A2XEq+cPT6NpoKXiSrc9UGfaOlVccuacnESTA1nPyPtF6XWTVt+c9fB83qGvbJU8GOI33rnY67P1Mf7KWLs45kU72SM/6CD2UXFhgG6l9gGmQEyJT2HistLpYN0b1+5Rhzk3vrlw96qWAJgH6OT5CImylsIa10T0t0ZVv+YUMCCqJc/Ts4cO7JUk+Mp7K1Odn8Zw7falQnVXhJUrbQJ03/2mrPwi5YqiKJT9W1o3UK40BPrMXEZG6859X1oiCwO4E9iBZGyZicI3joSlegDZ9JSGIobbx0yKDNWHzyHfr4LtrxydR557M2Gssj6kPpdEkSZgoiiFucnUJmQAyV7LSciyAVh6j4rxhdKwPEf86RKiHqRczpWuCwRNGY5A+1cDc9FG/RiKb7yvhTBUsCK3NBqwkF+dY+3onOp0x3SRDT9cMiiNee/uOAhTvjS/bliQ8C1alzLewW/zQdhOOiavlwnq+Anm+P7wjP8PyrllQX07Q/8SI26vxCE6Ei9HxYHRAeWfV5O+PkViBG0KflZmgRfFs5p0UR794uVVrWPAYzT59G2ItKjC2Md2Q2n6Zb6zIAC8= X-Microsoft-Exchange-Diagnostics: 1;DM3PR12MB0859;20:niaTzHWI3deWRqIIAnFMOXFm6XCIIhz+LEnAKz7O7cNYF4//Ar6oEg3kFn+yjWyxcQdt9jZUa8qFFVY3uQNk/BkgUnq69BQ8xZpKTdaN3MvXapYNaNbGgPUH151L+WOLHGEe1k9eLOUBX3pyWGZSwEfXGwFdQz53gi3DWyYJaDOkfM+ZUey0ugRHheUs3JaHI+uzH9K9vHeYsxawGeAj3Yrd+C1Vl9DAH4L684p9gKejijUxc2kIhzzZT7F4oxTiyCSchvCj8Evuz/loLO9nKD6EgFPh2NMbU8Z+PXqDOJ5l8XG/bPsfL9RQf/K9jjLe8KU2MLBskz1Oy/MQCpDTPhQ7YU2VfVVOCL+JE3mSv56si3nFK0OSJMHyExQKmuFEJWO9CphKFiAHk+bVmc4eSENKUvKwL99Vvdq2z0thN8oo6F0kaG+UM+lyeKH5XRV3D1zmuIxXhcvP9zh/aLfv1+tDRbrKD58yz4/+KCE8hIpKAlIk0PzCEugjw9rytyk3 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13015025)(13017025)(5005006)(13024025)(13023025)(8121501046)(13018025)(10201501046)(3002001);SRVR:DM3PR12MB0859;BCL:0;PCL:0;RULEID:;SRVR:DM3PR12MB0859; X-Microsoft-Exchange-Diagnostics: 1;DM3PR12MB0859;4:FpIjQIjYqNfofIx2k6fq9w5gh+bjZuIbdkI+Ys0usYuJXoZ9mfEupsZX1RN2bvB1+I7vqRZitdNkS+RuaNZIEVK+ClqN3BltX7jTmb/SfGEjBhPupqor40DRfA4CZrsHN6nBOdC1PrICfGn2NiUaDNVxWkV+wA7wFgpYY4zo1Ef6OWeX1Q/SGCZ0Cp7pUkREY8wAxVZf/74GEfQ50fv2RQjZndyCC4lF6+XWe5WFEbtzQSa58lbz+9d7Qdl6+fTtUtHCUsqGZlXHVk47VBrxdUj/kzKTRBf1MB96RUzKh/HhjwUMRtq4i0eLufsXQVGg7S9TNhvlV9FMmS5oPZfLumC61QOdHGEFmJtWy/dNKrsbVD1u2ckNdTgET9KprxcAOUrrDGjb1mIiHGUDoCz6JYKiNUcG+I3D68R1cdl9CCWBafxdub9NVs+PVeEk/aFCn/EWxyDW7Fy8syVEAJyTtQ== X-Forefront-PRVS: 0888B1D284 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM3PR12MB0859;23:o+yzKr2ifJUuKXrralJ9XPWCdXVoaWtPVIzxvCwFa?= =?us-ascii?Q?e/5zMERGgwuVwkoX/AgvBaTqvp38GO7txEiKwAqnFgoKq+GbLGI3LjqkyAx4?= =?us-ascii?Q?AkFzEe2pQW5qBqCGw/70JDnJhZUtHLjRG4sRA8sAkSUg6mZV/0qeERo7Fyql?= =?us-ascii?Q?ai3J18SHEkHakS/z7bgeXrlr+4tLPhsF9f6PEWO3Wj/AyRcrVqljzjd3epqX?= =?us-ascii?Q?KTU3pypJMPjuihwQdiqEqzcMGBoAFdE3T5m35cccuFwqbDDaZh16nhT3oy2P?= =?us-ascii?Q?xxUJzK4aRqHVCNbpaNv2p9PRVxYfaHMhdtyhMUsuUPxcO4V+e78vePXQnwE5?= =?us-ascii?Q?O+18UbSdyFXTTcQLVYCPl45ZO73AJeJHa6BQ0fEMcLyPC0W/a5InBY6u1CZ1?= =?us-ascii?Q?JiTVHfkYA1xckVQOE/0heqcdRLVfh6yxfLAe1+cY7zM0j1q513CAY6xsjN4W?= =?us-ascii?Q?+vwt7b0XVaDTlfCUITHslRRVadGbrkIZgjxqNGwYYQI9p9pttDtK5IndXMTj?= =?us-ascii?Q?TDmxUW9IoYwqTPRbrdEo54b4ghYX7cE4Lf9oyxWYiqTWLq8+uZitTQrKuDyx?= =?us-ascii?Q?wExVkcKMjBV4UI1ufDUzSoRpsOJvDfjYZ/IZKnkvEQ39VSe2bUTGL7RGEcq/?= =?us-ascii?Q?cGGSOulPEbM3NQrHwD+eVenMxMU+rMv+k1Sd7OLgE/o6+VBIw6+gd+OZs85/?= =?us-ascii?Q?Es03VkWxNgsqpl/24o73HUwCm4uw9cjfk/FkJukynAx7qVVU2VdNFVhXfGjd?= =?us-ascii?Q?30HSTtfVGkpsiWGb68yZNEOv92+mkZT4zFt0INwF8h8/DKeSKFvkiWT7cWg9?= =?us-ascii?Q?KBPlVzSjXTTu27+7dwTUZuXyUWkCjqPf1lqeXFIHnRpr7R54zsWzkVnm6keG?= =?us-ascii?Q?OZVaMwekCzWrGHXk5ilznwrjoif98c/OJu1gk07ngrFmc20YfRY6Tl5cbnff?= =?us-ascii?Q?bivX4pWuW28YY7OQScnywfVfFBXU/FImRTbAsYhrj8hzcjD9drdqDj+Th6Ix?= =?us-ascii?Q?zaKdn1no9fzFTWG0Gub8BfKFcdB3rAgi5ggiagCP3+2fA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;DM3PR12MB0859;5:svNDIAxtHJrr+GYG2LKQ+2Izp5oohUMBvlNmuFcFtB9/WbwkW62U8kMLCwunvns0W1QhP9FMSoKjX1o+mYB2Llk1aRIUtQ6pOU9+sq5pveDgVsAPC0rF+SWqP5Ro9x192l0ZySI/2MHPMf8UXxnnaQ==;24:qAevkDM9NrKD18UTbfTKiSAryIQpr5mlRyegon6h3FTD9QLoysoB3H+zT5kMOxZirIcIIzlj2Pe9UIuq95Kosc5LJwZte9PzZEy/wIrbP/M=;20:c/2aA2sIA0dDO1QQJwFzgI/+X/Xm7uK7CzJ/v19pMHoWo7K6AjJzPo6/GnHI4scEM+A438M4TNlgb5Hh2A/XUUAzpzvnvyHU/otq40nFMK/iQP99vyIXOJVVXmbVxozHcKYv5kTZBhSDHv8E15mR/0P5cBWICMIQk+OVlh5/PgjtiTyB1oLbLtzOMkV0yrb/qm7pqbD3XAPyKKK3IBRW861kFvjm5YDZxHP535IAhK7uflDRhYilMTcJM2R9F+92 SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2016 03:07:31.1628 (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.222];Helo=[atltwp02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR12MB0859 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 18, 2016 at 05:41:01PM +0100, Borislav Petkov wrote: > On Fri, Mar 18, 2016 at 04:03:47PM +0100, 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) > > 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; > > Looks ok to me, however it probably would be prudent if AMD tested it on > a bunch of machines just to make sure we don't break anything else. I'm > thinking F15h and F16h, something big... > > Rui, can you find some time to run this one please? > > Look at before/after info in /proc/cpuinfo, topology in sysfs and dmesg > before and after might be useful too. > OK, we will find some fam15h, fam16h platforms to verify it. Please wait for my feedback. But I am confused with c->x86_max_cores /= smp_num_siblings, what is the real meaning of c->x86_max_cores here for AMD, the whole compute unit numbers per socket? + Sherry, for her awareness. Thanks, Rui