Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753395AbbH0ILM (ORCPT ); Thu, 27 Aug 2015 04:11:12 -0400 Received: from mail-bl2on0071.outbound.protection.outlook.com ([65.55.169.71]:8029 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752696AbbH0ILI (ORCPT ); Thu, 27 Aug 2015 04:11:08 -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: 0NTQEQA-08-9NA-02 X-M-MSG: From: Huang Rui To: Borislav Petkov , Jean Delvare , "Guenter Roeck" , Andy Lutomirski , "Andreas Herrmann" , Thomas Gleixner , Peter Zijlstra , Ingo Molnar , "Rafael J. Wysocki" , Len Brown , John Stultz , =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Weisbecker?= CC: , , , Andreas Herrmann , Aravind Gopalakrishnan , Borislav Petkov , Fengguang Wu , Aaron Lu , Tony Li , Huang Rui Subject: [PATCH 09/15] x86, amd: add accessor for number of cores per compute unit Date: Thu, 27 Aug 2015 16:07:40 +0800 Message-ID: <1440662866-28716-10-git-send-email-ray.huang@amd.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1440662866-28716-1-git-send-email-ray.huang@amd.com> References: <1440662866-28716-1-git-send-email-ray.huang@amd.com> MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:165.204.84.222;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(3050300001)(199003)(189002)(86362001)(101416001)(5001770100001)(68736005)(36756003)(5003600100002)(48376002)(77096005)(5007970100001)(46102003)(229853001)(50986999)(106466001)(53416004)(105586002)(62966003)(50466002)(33646002)(47776003)(77156002)(97736004)(64706001)(50226001)(92566002)(5001860100001)(2950100001)(5003940100001)(76176999)(87936001)(189998001)(19580405001)(5001830100001)(5001920100001)(4001540100001)(19580395003)(921003)(1121003);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0853;H:atltwp02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0853;2:fsq7Y8eJ75ADoeHHiIQqp0Ke0txHs1Xy1bvgsJyZtryoltQvs2PQT42b1aAdBQXgXl4s132faNiLqmvkjPglJqervXwhJU9USqlDU35z7jfGdJe/pyMSja/KkgbBqv9iD+aICLNI88WhtImxoSdHQd78mqNDIvUDOzIcjl61gWk=;3:+NreQMmaVAKhddSlUdidVE6s/uLC+U6K7ZjDbzynqi++gS535eNGPxNYJ1yp9aoKoJAxjynhUGZvI/VBDEYfehOYZu6fiuuSOXzC2+Tsj3KVsEGD9dyOOFmWlpaENqnevGFuoCBw0KrnOPN4upQ7a0/D3BMSR6fx5rMO89KmQ+QuM+3VLQYVVISEWQNObBVbsS2B4Kanm00vhyi0dPhQu6KMg82t9I41Jvx+FHOwC9cmAXCkmK0lmNUARxHK7yB8;25:ZmvRKXoyD4diiq8m11PIzI8dwxgEPStLk9u633Cqav432tm/WZ32LQiZJltUhIOQycKs9+dyRAhZX82gGzijwGZEZBy7R3wH44uvxUYqccAA9ImJYsBp8bZmmCytfcKV+3Fy9nlZzrYfz2TmxZNkAsvTQUDyiPzI98Ls/YXa1k7vrnRbIhv4u05Bk6LzZZLAvYoJ7s981p7hu7SgVkX3salvvXinY/Ni+uENbnv5AJk+SAAlhLaFjTFpWB2FbajU X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0853; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0853;20:rw9G3vniIdbx+ziPlts2cayR8Bh5Lb+pqQ2lAGxs/XL3RbbVAVSLbQ+8mrazn1ijeStQO6f3D6vH9bN9brMXDj6CIHVQezPyla8VBq6o1vy8XGb+dlE4kg8g/0ZU651fSZ8BJLoqIY+/UNtD/XOLAVHcc/ZQAp4H7aafu1SppcEJg0D5f3Nb5LMTpizvHdmwfgKbI2hct27Bbc4qvXmV4hXs/TNbBQQBIxEd492v88PWU2SNQaB7UDOFPYVQ4kp0ttIR65WvEuxZbR18VCwmQ5+NF47U2PnsD+GWT14H1dFzhj0Iw4QStcChFrMiUiYAxAfbRedaJ7ZDGdpI2IK18ig2mlV0vJFhTHLlhTujcLOIoFHUaEH6ERKxpZYT5+fC2FF3ta6P8ponLuar2GjbqS18zusLRjORVeXxOUT4gw+85hzw5Ha32Jxzi038gwcHq+Gk6rJ6IFDe2IHqrMhLLK+uv44b/wYx8M7qdwCTDZgrgWHQ9GrjUi7nUJ0/3IHi;4:/m83RztWMJBR2Ep7UXLq6r2UGxxiPh2UOuc39BAsK5ldFgBfEN/Bk8yOgIcon035lyh7CN9DSbTSKuDOcymyi8I5f/ZGtYXUVAk9wIV+FvRXlmVGGmuEJQCk7zTXbWY+pI6PYH12q1J8CSqAp3h4d08jbLpwHcEkVhXYZ1b74O14H6INNQe7Yyp35BqIrzDM4smiSU/qdCpz4wQpnFIWKQyPZhX08NSNwbJKSBpT2/z2qrbXHy/VcE1odU3iRj5pLDxD84PRfEzsgFyD5ZWBmXh7I8Xj2BDKwkr6P30zGElpuJ6QZ+O5hAhuG1yfcJ1c X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(8121501046)(5005006)(3002001);SRVR:CY1PR12MB0853;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0853; X-Forefront-PRVS: 06818431B9 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR12MB0853;23:CYMN2tsEKpGBq2z0aXm1oVlYyR1ZsPM87LDEyI775?= =?us-ascii?Q?jS1Z9IPKV4LhaBber2qcr8XxSNquuu8WJ/r1CcJWrRlR+XsbC9vcx2k7eFxM?= =?us-ascii?Q?nP503WivxLBNgaNgg03+HxOrEl587yP58GF96czgqSQVaN99BUArsStAmGcB?= =?us-ascii?Q?9qcvuOZR6E6oT8TEXgfGMi250E4R5U6RkUfJhnvLSJ7x4H0WVLiTqu+tZnqB?= =?us-ascii?Q?LUsmW2V38wzM4Gn+RrlLavJyepqo58fHEO0GLabfUtjM0AM7nBJUELjx3PvB?= =?us-ascii?Q?oZGB56R2ze8pIpLwFBVxlGBdfXRMnwbnK0rtR5iYHlxAcxo09sbE2C12ldd3?= =?us-ascii?Q?EiHvn5G+QDqEAgVjLeQ3GsU5ue7BKwyU6qU2rVLepj+Zlyr+6nh3S1roCfHk?= =?us-ascii?Q?z3cNmbYP8EmjlWcAUQiiUrzbaggDqdAqyB0lYyt5RmIvK7Yu6R2cpuqV74r0?= =?us-ascii?Q?CF9W5thPC9lVdXna0dadnSj49V2SnPV/Q4dmRsR0rqM6EPJS2p/hAsznKIh7?= =?us-ascii?Q?p/a5VYPk9sH6vydfVZlqyAg25G1skuntXEpte4MywkDu27+sIyw4tLp0QDSv?= =?us-ascii?Q?e4iFObrNTRfwln/Osp3doIlZpGVYI1yn4Fn3N62oghA80CFVkDTfUJsSpLWQ?= =?us-ascii?Q?Sk/FeiQBUGfwNUFrcivuM2JqraMz7CZSROyPtQvVWM3ypB53dev9bAdvbePo?= =?us-ascii?Q?DbStCa9ojWVFH11kmWvdy8pN07t/pGDvf/aedyXKyIZSfeRaoMPvHyOoTNks?= =?us-ascii?Q?EGiox3+gs6eXQKAMK570yKLoXrpaSMjGGT2ivsyOjRiwssDRErb/yrB0fYGO?= =?us-ascii?Q?r8mqTrSB4daca+3d3ab8Omr4iWpB3r2QNjFuydIsvBkOsCsGvLnmYteLMOh5?= =?us-ascii?Q?nnJ0dYuT6lq9xMIeJs7BD27LQ7T/emrWPl3/AREZXhNpY7aIJ2KCN4j4XAkT?= =?us-ascii?Q?BGXCeszjGabmyHH7F3OCfeA2TvwHT1q5bcH54EpdxtO/yM7M3pVB+YL0yf5h?= =?us-ascii?Q?NNNHzRi+gS3xPHMYmRMHPlO0hhtn3xajUsyiGBdu+D7ExfpU4sRrJwE0Nofw?= =?us-ascii?Q?/No/GOhOIo6xPntf4RN3pVK1o+5rq+gFatmyqtde/R92JLRJcrZDYoVclJfC?= =?us-ascii?Q?2Cdk3ZwR28rJDJW4KLxXKnpGQl1kKhUztf5OAH1bGIo23fDmUrA5zKxsfMy7?= =?us-ascii?Q?tH/ABguuFh3+Ro=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0853;5:wSvRtqu4X3UoayOd+vr90S9jylKOAkPGG1UtfJS+UXveLzb25LQXx0+UdoVT6fhEMy1vHZ9r+OpxTISkBpIN2bmIo4Th66baUJKQHh0GbvlMnkAV7GMTcWRRhUZpvQqIa9Jnshy9Kf8O+DcrSzZEZQ==;24:TIsVWqQCW+zyDwJzta7hiDQETKsKAT1ZIGbxNDgtUzAFtZ+6eJRyNthGkmBk7stb/Gz1qmQ8Dy7Dalq7+18nh5X3Av/KejLOKR7wz1ij79M=;20:5JvsIWzywUFd8WLvgWJWsv7dEIn1eSu/v64mtSKGrM1UZjH04DSPE/VzKYftOVPlhSNtpbLsieKmcQnx4XRDIg== SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Aug 2015 08:11:03.1896 (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: CY1PR12MB0853 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2725 Lines: 90 Add an accessor function amd_get_cores_per_cu() which returns the number of cores per compute unit. In a subsequent patch, we will use this function in fam15h_power driver. Signed-off-by: Huang Rui --- arch/x86/include/asm/processor.h | 1 + arch/x86/kernel/cpu/amd.c | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 19577dd..831ad682 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -810,6 +810,7 @@ static inline int mpx_disable_management(void) extern u16 amd_get_nb_id(int cpu); extern u32 amd_get_nodes_per_socket(void); +extern u32 amd_get_cores_per_cu(void); static inline uint32_t hypervisor_cpuid_base(const char *sig, uint32_t leaves) { diff --git a/arch/x86/kernel/cpu/amd.c b/arch/x86/kernel/cpu/amd.c index 51ad2af..8ab939a 100644 --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c @@ -26,6 +26,9 @@ */ static u32 nodes_per_socket = 1; +/* cores_per_cu: stores the number of cores per compute unit */ +static u32 cores_per_cu = 1; + static inline int rdmsrl_amd_safe(unsigned msr, unsigned long long *p) { u32 gprs[8] = { 0 }; @@ -298,7 +301,6 @@ static int nearby_node(int apicid) #ifdef CONFIG_SMP static void amd_get_topology(struct cpuinfo_x86 *c) { - u32 cores_per_cu = 1; u8 node_id; int cpu = smp_processor_id(); @@ -313,7 +315,6 @@ static void amd_get_topology(struct cpuinfo_x86 *c) /* get compute unit information */ smp_num_siblings = ((ebx >> 8) & 3) + 1; c->compute_unit_id = ebx & 0xff; - cores_per_cu += ((ebx >> 8) & 3); } else if (cpu_has(c, X86_FEATURE_NODEID_MSR)) { u64 value; @@ -379,6 +380,13 @@ u32 amd_get_nodes_per_socket(void) } EXPORT_SYMBOL_GPL(amd_get_nodes_per_socket); +/* this function returns the number of cores per compute unit */ +u32 amd_get_cores_per_cu(void) +{ + return cores_per_cu; +} +EXPORT_SYMBOL_GPL(amd_get_cores_per_cu); + static void srat_detect_node(struct cpuinfo_x86 *c) { #ifdef CONFIG_NUMA @@ -506,6 +514,13 @@ static void bsp_init_amd(struct cpuinfo_x86 *c) /* A random value per boot for bit slice [12:upper_bit) */ va_align.bits = get_random_int() & va_align.mask; } + + if (cpu_has_topoext) { + u32 cpuid; + + cpuid = cpuid_ebx(0x8000001e); + cores_per_cu += ((cpuid >> 8) & 3); + } } static void early_init_amd(struct cpuinfo_x86 *c) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/