Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751304AbdFEQOH (ORCPT ); Mon, 5 Jun 2017 12:14:07 -0400 Received: from mail-sn1nam02on0055.outbound.protection.outlook.com ([104.47.36.55]:19200 "EHLO NAM02-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751077AbdFEQOD (ORCPT ); Mon, 5 Jun 2017 12:14:03 -0400 Authentication-Results: vger.kernel.org; dkim=none (message not signed) header.d=none;vger.kernel.org; dmarc=none action=none header.from=amd.com; From: Janakarajan Natarajan To: linux-kernel@vger.kernel.org Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Alexander Shishkin , Borislav Petkov , Suravee Suthikulpanit , Janakarajan Natarajan Subject: [PATCH 2/2] amd: uncore: Get correct number of cores sharing last level cache Date: Mon, 5 Jun 2017 11:13:19 -0500 Message-Id: <42ddf980f25ffd0ba585f3cf3a7ca9ade4fc7bee.1496418338.git.Janakarajan.Natarajan@amd.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [165.204.77.1] X-ClientProxiedBy: MWHPR12CA0027.namprd12.prod.outlook.com (10.172.49.13) To CY4PR12MB1670.namprd12.prod.outlook.com (10.172.72.142) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PR12MB1670: X-MS-Office365-Filtering-Correlation-Id: ac5564ff-ec51-4a20-44d5-08d4ac2dde46 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081)(201703131423075)(201703031133081);SRVR:CY4PR12MB1670; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1670;3:1OBnFHJIXfZiVZzR4a2yIIBbsL84HpIVtc0PkzmPqQaXfiWaGutzla4QiikSchXyw7oMIb1zlLK8WXfeByJTpmxNlAcX5nngAPl4yJxHa9dNexuirZ6KTa/bLZdcS8xwDyZ+ZeOnnWKLPhLVqVDlqjcZRaIVgfIR3/8VJo+tE4um+MchivVKYH7yfegWAxt6+8kdFuDCCnKyq4agAwrC+MraOH7xD4jmwO48fLWEIXq9XpMHeP3/WIVAzdN15hiLfeEMSRrKoVGObLk19lp69RWU7LhMcSra9QmUsWXmjkZE/1an0vBlOypgEKi8OP6f3nFvDpZhf5T60UZjC/DlGzYvHHQRv/NMmT3PJZHDbpA=;25:eDAw5dc8TXl7Klv0w16j9J1rdI9sde9+wilC70TWITb2MqHw1eZcESsOBap1qgKbXdX0cn4y2Y6zdx2B4PdzbfOP1LoEgyT6m6/K/8Ywl6nBUgqwplqUiKY2IqkG13MtHz1E/iMXoNmgcWJ7wbmGthRh4bNROWaUfyK9g53vuDaDFR0Z1ptxbOvfvSVXLPpPuTcyIksNIuHyZVSEaOFm3vO+Ko6chVLyK5Rp6vmDwWX9vnGjv4cBM5EPMsdDEFYXleFuQtgCDA3SthO3ypJPTHWSeqX+toYxb6pOVjKawrVynVNla20AW6K1+WIFYEcbZej7YCw5HRMfwfPV91+MB01CAArVpngLQzYFHuSFGvjjq8XhXyapd/izXQBurC/LjNrfMTHM3ShG2DI9mW4tpbVWzCaOoqxiERBYQIGjI/LiA19oIT/ZiHBsYdve5MnMQTINcug1lkde2nK6roL660E5/i6cB/TnQ9H8LCrz4B8= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1670;31:ioWnvL6lp7MmoPGqNZ8Bupaiw7c1pJjmLbChDgr5rxbin/B1IHeXplUH6dsWriZTo/zMdXmQe+7quJJGIEi6AkdcgT97dlU7kLoT3RS4E4+1xgT65/WZlcNWzmth9A7VWN34l4sCZeamhmNcdql7MMSQ7Axvk1bK4+p1CpTwqWHKQ3V8Trsac2LOyOuxuWWYTvliIAuzbTUcpXdIXXd6hHYn3XjNIxrSaycEs8DwsVY=;20:7WQ6p/G0DfTO8Ww5lT2q1nSnErVcS25CQ2ooK4BJrD+ui3BAAHI7CEVAwawTaJj3ig8ER1ouWgXGcEo69O49h5PDUnFp01UmoE/Piv1mMwVt/1ADKleXVNTu+VR9i+/Gk8aOWqPcHildKh8lxMxWeHv9PADqMhqmebUby7U0FEqp3CNLiqKL02LeujDVT4jgmEFVCzMmmSG90oGss53wkh0nl2jVOHhIGlcG/0eYHtCT4PBJowqxEaeQl9vi6ruj3xjvIDWvz584M0aKDjcQ7xC54zJjpAMaGlewaCNvQgwqSKRGs6ZMZTOTbXyT/AWbV368FUQNcGd1aUIJV3iz7805IneKB7ZAgpisdHC97ob6iqUaIBaHNYqAL0cw5Z/9oiAxkfTKxmMXWI0FBFG8hba555ktfCtgzea6FG+/O6u0SKL3ylLZG6T8SwetgHHqFaYqsQIjLHjMY7MkV2t5LlGZKaQYUyQOhKK2RWRY0qQihnSiR3gebpMMTzYYW8aS X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(10201501046)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123560025)(20161123558100)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY4PR12MB1670;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY4PR12MB1670; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR12MB1670;4:u3g+9Zpq1cET7EVRn01H7m0ZMCKctyrdUPdfhDPRqH?= =?us-ascii?Q?aZgYbwuSlwn9Qb6m9n2AO6e3wbynd3hLUrAR0OXe0PaCMXE3YTMmoPGNRBwf?= =?us-ascii?Q?ooPOkfEF6CU69EC+CMXF8SjeH4DhoChZ3KFMY4hQ8FmkShe4ATbIPUQxWY5K?= =?us-ascii?Q?kVDGhwZdRMXnNFNW8I6uxiV+23Wdlc18Sv7jcRgTZuplz4v/pkVgfz8qsAC+?= =?us-ascii?Q?BSQpNIHpNbp4B0hbf93bEvh4G0iv6b3BWD4Ad5mznN92+QGL3/x4596gIG4J?= =?us-ascii?Q?Ruie5C757Gy/9dAzarxHdtjK2gLKTSIPP9mTHqqkupVsv5EluV2IZP2eQdVy?= =?us-ascii?Q?slkOh432f36SkUiGhbHgUJ4CxXKpK90Rthql8dua4wcCgKQzbt+QNvmnjZ/Y?= =?us-ascii?Q?YAs6lmCw9N+2tEyYH/+xqN2RFW3dOzLSW/RYYTp++zSxT4RoodswNkgyzEEN?= =?us-ascii?Q?sbV7nRvVs/nGjaP9ScjmSz+AKLFd+T7XPthngw73ACPu2MieA/wQrOJ1dfMs?= =?us-ascii?Q?gAKQiwyObC8L0pBUfmFtcoBpGeDfBzd/0+rCeqD7J2fliT9EHooRqUKzqsjs?= =?us-ascii?Q?ym1w1kPZllGkJA5nw91RCkN+4whMIniDhfo5/FF1XpH5Xeg0eMlZWE+5r/5r?= =?us-ascii?Q?WwUPNph/op+9vrUuIkACMvNBdgLm8tfXFEwJxTu7K1EUyuaI0f0M3+ITa2tX?= =?us-ascii?Q?J/knUeKnx7a0G29S1q+cRemzTJToNpbV5BuYtfMPyF2chBN6nzhtfqzWSApd?= =?us-ascii?Q?fk4HCtWVHZMtanyq/ApA4AA9MbHCrKVJpRAi+IdHKcif0X+6ojnIuB4xF3qr?= =?us-ascii?Q?LVLYvwc5DYn8+w9ovEHcJ49cHuFHeqIMZF3DK3+NrqXVq16lQSUc0K7DsktT?= =?us-ascii?Q?t37BM6pPbhtpxAFdvkpiMFerhR56ZaUUlXFJSUsVKEGVlu/r+VRHUGCzccUf?= =?us-ascii?Q?a/kDPwGstVJFqS14MCrTudwfWwX74t1R3TXX4l0COGJ11397HEBv9skPFqH/?= =?us-ascii?Q?0xAsr9HFNR559YebfGJychAFlYp2KGurqvHmFvAQe2qA5b2TpjO+r/nJ+BaM?= =?us-ascii?Q?tAheX1uSEdft1oCm0Pt8BaobaJQp7+7/YsbYgsqml7BBowNEuKyyZKBKFOgj?= =?us-ascii?Q?4C5lBcSbnSPivB8QXLcz5v/RBEhuCwZapjCw0wXlU8nEPcpdQG1DV+dCjaXF?= =?us-ascii?Q?MZZLM+3IXApEdphWEPXsi+ePhGlB/2lvYK?= X-Forefront-PRVS: 0329B15C8A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(39860400002)(39840400002)(39450400003)(39410400002)(39400400002)(39850400002)(54906002)(4326008)(2351001)(6486002)(86362001)(36756003)(2950100002)(38730400002)(110136004)(6916009)(7736002)(50986999)(5660300001)(5003940100001)(305945005)(53936002)(6666003)(76176999)(25786009)(50466002)(478600001)(48376002)(47776003)(53416004)(42186005)(8676002)(189998001)(81166006)(66066001)(72206003)(2906002)(50226002)(3846002)(118296001)(6116002)(2361001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1670;H:gi-joe.amd.com;FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR12MB1670;23:OcxcUHLBJYLUEtISJBSToFP4/ksaiaLTTxKOj82Ju?= =?us-ascii?Q?WKvw/AmaG7iHipVnEKB7wviuSrl2JeSNHyxgnJRRUOr+C9r7embF7ujK2YPR?= =?us-ascii?Q?1ozKotkV/+QU8B9CKu4n3UNoa3PiJ2hW5+hgpqPHRrssb/Qo7kx5NLTHsy2/?= =?us-ascii?Q?BRFlFiihYl0R5EptHV0AbSVA8XWsntXG5hGrrm+uzS3rjzj39ve+dNPklhp8?= =?us-ascii?Q?oElF/j3zoBUNhAlhKPfUJ/HtP8WGSs7fF1eHWslUFlzvj48mn5qRUljm1QYW?= =?us-ascii?Q?jD/xvZLYM6ab/mhf4T5ttN4sEjyzj+sRvB0P9F5hADcf8btwJZgwH9L1Fsep?= =?us-ascii?Q?+XEyFQt5COQtJ2xnp4pxCjk/flr9fcB85ZbUOP46shs2D9QPRgWFLC+CY+Yy?= =?us-ascii?Q?HVMcW3kn4gwwXtxbWLxoi9TG+HhdLFnKNdNU+FzAPhmamItKzLc5WvXTBj+0?= =?us-ascii?Q?i2n9wM3Drq+6M2X06SQT+CXW9sGgalUfmOU3XKvLYOPQlt7G7jFrxGJbVPQU?= =?us-ascii?Q?Dc2N/ZKMM1Iq8LpqbJPu/BPL7yLz7UzU5ny/XsNzdHXHGbx7uHN1JP9YBRuF?= =?us-ascii?Q?+52pbKjviSNVYsirIawKoKfnfH2xz1w5l7qd8KAGaGGneJf0wHHL+JCLK5pe?= =?us-ascii?Q?Z3MgZQU3OGTuK2xxojc3IwfE7Vckp82iTNyriZeuRblgpuoh7KdlKlwhJZ4Q?= =?us-ascii?Q?gQHEOCUGjnW3B5Wx+zjsjl4PBBVBjQNA9BlusuncISE3NXr0PeYTUvZWjGWi?= =?us-ascii?Q?IPbDjjNstT1uGBElELOPJBECKcV7QyKH2twKx+p865hMiYBegbPhkAvkZaap?= =?us-ascii?Q?tojBVVk9IKXGStA7tDudiRruH8JRxuZEXskhqgCOjZotb8tfmQ41xO0joxVx?= =?us-ascii?Q?n1rL5rzHOf+aH1kkpFFJ785xLt4IyhldKE2oUhhfvc/C+FECm4J6ZZ/Xt622?= =?us-ascii?Q?4J8nKgC70hZ8RCId8L7iiiwZ+1IgvUCEOY3JqCl+7VQB7i6Flwjm2mdeUdn3?= =?us-ascii?Q?JGRFfvTqoGGw8LoAMqv3UJDHbaYdEWthNOIHklmYFV6Vlpy81vZOgBsA3Byd?= =?us-ascii?Q?uuCE52sPPryYlzdsxnIBX2zkPk2q3hgWyjXsrWL2ArM7jVIfA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1670;6:QQqrcl4GBhZ0dCq0gWCnudwAeVyP89AqvWoty4jAJET+AWpB5b0OVa5L4Wzu8+GTqoXObAe5VYtVnkiYVcu9Nwe6f6gcjPvKX8Pu+Jyo2+HGhEbXgH4l98qidpU2ODpCftsneRAr4hCdBp0Pb4mzjltl3MFgcMYAf5T+60tH9ECQGBaVLdpDhdygxC7e477VsaWqXx1INzQ5k7GO5N0/sevI0kIxdztfiJP9dCQ3y23cZsZ9QB/HBeg0s+Fim+4ejFqWc61V8bziLkCmQtJaVRXICfN9Eu0UA1lVcTcChNWEqHC5Vcnq4FSCrRKUbTaBxTFBVWIP+WP3737noamZM9sndIOEyMRbIU8o8RpEShtb3gn8Hw1gyr8hLELk79y2S97SbQ072dkcXpcSwE0t8paxh6X+P0s9AE2cXnT4yjml/nmhH50E6HZCDOYSM9L+k1oTsX5tOxprR/kWCIE/JGXt0rQghc0VPbGdWBUx4jQZp43KAugIKeia9fgXlzchGolKCyREaKDwmua6A0DrdiV5jZ9vE8Jo0JuaGLLmYRY= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1670;5:VjFdY7jMiwQn18Gc+yZuj73menKPYJp33HVeBJXidcdYuPdpcu5apygwv+ARxcR82y5ObyKMDiF51c6pW6e/7OhBPjS4leRS/NeN1/X4DJDhw9C6qA+MD9AbSeOlwhs5qQzLDe9a/fcpviLMSl6COlCFJyjfcXRUjzau/aEqAjioM1jZiBVv3PEFBboy0ah6F+MXXPsoeA3v49hoLmUmbIZO66sM/s6qwzHn6Q4quc4V6R6gSdzeG7JKmzyUDPvuUdLA+J5zajSARloP2Lgfdtnmhl58BlA7f42iZYdPuZTjx4nc8aNKFilxTl9YNRlaj0aLwTihSmZgaqIZMZehw1kbB+B90lvZphSK4wAz+ssckS6s5hcel6ni9zSTaEkwBklglHSRsmiuGXxjNYm82cwODl1FT2MQ0bZrJmMDj7tcId5LTW9U75e0JTRIIpWQhU434+Rol4rQoILuiIDWSZI9rR3Fs2OXJyijWgqbuJHJ7a7GV0uHObSSUFprLyua;24:39fW41gaDEbpwnFjQXNDCfDSjwOJIBoyUNJ596Ak5Yi1DqTUiqLHSl20JnZJkaWY8Kmf2QJj+BwXPRY6flvYMXvOzddvKFJFs4L+za6yGyA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1670;7:2icu5qV6FNbIPD+WnaSI9xTpug62ViaB8Ls4LqnQ9hwY4B6DaWSn3/BeK0vgUXKvvgarXJZT55wkki/qmtO6iDNxSaxkCxdbRZnQ9ZZ+a9hJOo5H0TzvQXJE+P1CYLL+6jMT1Oh5onb8EAl4GhisXb9WrI4MMjFZvjDvQPl6QtiQXL0Y4l13QZmw/zGJabqTGLU+9/mtnlH+LTslfcYZxEi447Y3wkm6u6UAs9YNN8XqyqS0Z6/3UdX0JyXYt+9AZ9Uk7I2X09DoLn8bWwPb10HkYxJspdzdF+pG8OTx+s62shIWfg4pz6XqDuUGY5nwCDNpyhnxFoLwGyVeOAtytQ==;20:V+ZWm9hE4gOTyz0lg8IgXkzOuvam3GMlkYKb19sCfkJb8HFW80w8aT6eCgmSR+Sktw1pMR9BuJoj47uFaXyH4cJI5LjtwZTs6RC4Qq3b0dNRoUli/lP6K2Hd4agWlaVwPh8XZHZX4U0CkaUR6RgvvswGBk7d4nQ6ptwPDHNGuNmRdAGW8khFL/8vzoDujp53VunlRy5lgfQ6jZh2hDXHi8k0lrm9bopnfzunAO5z241jZCimDYs4J3eOP3W5FiSp X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2017 16:13:55.8947 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1670 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1678 Lines: 49 In Family 17h, the number of cores sharing a cache level is obtained from the Cache Properties CPUID leaf (0x8000001d) by passing in the cache level in ECX. In prior families, a cache level of 2 was used to determine this information. To get the right information, irrespective of Family, iterate over the cache levels using CPUID 0x8000001d. The last level cache is the last value to return a non-zero value in EAX Signed-off-by: Janakarajan Natarajan --- arch/x86/events/amd/uncore.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/arch/x86/events/amd/uncore.c b/arch/x86/events/amd/uncore.c index 8fea711..e5458a9 100644 --- a/arch/x86/events/amd/uncore.c +++ b/arch/x86/events/amd/uncore.c @@ -397,11 +397,25 @@ static int amd_uncore_cpu_starting(unsigned int cpu) if (amd_uncore_llc) { unsigned int apicid = cpu_data(cpu).apicid; - unsigned int nshared; + unsigned int nshared, cache_level = 0, prev_eax = 0; uncore = *per_cpu_ptr(amd_uncore_llc, cpu); - cpuid_count(0x8000001d, 2, &eax, &ebx, &ecx, &edx); - nshared = ((eax >> 14) & 0xfff) + 1; + /* + * Iterate over Cache Topology Definition leaves until no + * more cache descriptions are available + */ + while (1) { + cpuid_count(0x8000001d, cache_level, + &eax, &ebx, &ecx, &edx); + /* + * EAX[0:4] gives type of cache. 0 = No more caches + */ + if ((eax & 0x1f) == 0) + break; + cache_level++; + prev_eax = eax; + } + nshared = ((prev_eax >> 14) & 0xfff) + 1; uncore->id = apicid - (apicid % nshared); uncore = amd_uncore_find_online_sibling(uncore, amd_uncore_llc); -- 1.8.3.1