From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754405AbcA2IbH (ORCPT ); Fri, 29 Jan 2016 03:31:07 -0500 Received: from mail-bl2on0090.outbound.protection.outlook.com ([65.55.169.90]:44996 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754333AbcA2IbB (ORCPT ); Fri, 29 Jan 2016 03:31:01 -0500 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: 0O1PGZJ-07-BIF-02 X-M-MSG: From: Huang Rui To: Borislav Petkov , Peter Zijlstra , "Ingo Molnar" , Andy Lutomirski , "Thomas Gleixner" , Robert Richter , Jacob Shin , Arnaldo Carvalho de Melo , "Kan Liang" CC: , , , Suravee Suthikulpanit , Aravind Gopalakrishnan , Borislav Petkov , Fengguang Wu , Huang Rui Subject: [PATCH 1/2] perf/x86/msr: Add AMD performance time-stamp counter support Date: Fri, 29 Jan 2016 16:29:56 +0800 Message-ID: <1454056197-5893-2-git-send-email-ray.huang@amd.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1454056197-5893-1-git-send-email-ray.huang@amd.com> References: <1454056197-5893-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.221;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(428002)(189002)(199003)(4326007)(33646002)(53416004)(50466002)(19580405001)(92566002)(86362001)(87936001)(2906002)(3470700001)(5001770100001)(48376002)(11100500001)(77096005)(229853001)(189998001)(50226001)(2950100001)(106466001)(19580395003)(586003)(1220700001)(76176999)(50986999)(36756003)(1096002)(5003940100001)(47776003)(5003600100002)(101416001)(105586002)(5008740100001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR12MB0855;H:atltwp01.amd.com;FPR:;SPF:None;MLV:sfv;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;2:GIDrAkEqKI17uE1K3lFJRH4iY9hBA9Vt+VjJ6qjBLp2ctBwcWbCIWD21GVXKQB7AXuZsM9lN1N3ZjFOakLlht5zFxzPRDRlQemmu0wuiFjK2lRu8fFQofALDbSRHx5vM8bei3fYxJ5X5MyTifhpK8w==;3:XY9RSwAYmlp4A/b9ojtSxWC/usW7aYf79IDLGxIAZUILwhYgbm2xdUBiFh5UoVP7+rX9JUOh4u5fwQ4RqaHHF34+COEvsM37Rwk3ZbonLb88MlwhicsIOCf7q2YBybmOXn1kUXL1606sbzF1utqGPFtWnxUC4vPfhfAGULa899LLAIyaURVnPcK9uYNPtGHHSGww+XAuawGnS018hJeOHJpmhxzTg9QzlzS4jj9q7b0=;25:6mb+2fLtZsGZWpWPC0HwsQ2Xb5U7ohwMqrOFBStHfd8ooWv7pqEFFNeQQ6mq936pvYuX8VFfKa74dMaXAnGZwIFFYRZsPjk0lfrbxTVSXfgie45dqDG/Dbl46u2P34Gu+1MIMCguCFXDk2syBiPVIfGF5czfITzXzqr7/pNoJPEL0NUpkkx25JJHe9aVycNVAsTfcQD5gQi4fBWHYYs8kg638cKuP5ivo6P27MIs2phcVqcBGiGDlcMjiRxmxaoG X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0855; X-MS-Office365-Filtering-Correlation-Id: a022b7c3-81da-401d-8155-08d328868379 X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;20:kU/Ikhw4S1MNXs1myAGIUC7vEQQL93jYX20ULsgHVz6jphAMOmMee1UgISqoHZzYNkHT5z0JuAXmWxpEwipmSx9THVMqSuub06fU/TTg2iFSM4hHgLx9ldraZxEUHwUQMNLSqRUd8KIPTrJ1EX7m262HlC/X0dRjYsziaccG52A3Eo6PTAuF7iEaeWMTQbrrpLkAgdQV0sECK9uMO4fnq0C6jiBFVzibyMiCfmuIbctPQ/yjykv8UZqxGRIc31ZXSlBy4JRwm40bURlSus+VUUbcmHdEF9JA97pDz7SZZ7zOWbJWcrbhBvZML5xIXez8SHIrv7k9pNkqCzQmMjF8EER7YMFHHuysG5DQoAmZDAaympnxqWNQB4J2T8A5QcXUyMJN5gQEKGRvcXpEuFQQIJGxjjdFBYsU6qDMrp1YGtFtykct0w1vCZzNnFauIuobgoir1NMNlYckfeZ5WMvdw1NPEo8L3CxnX9NzDrt2qjNJkNOUnIzmm7nuf9Xqsy+R X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13017025)(13023025)(8121501046)(5005006)(13015025)(13024025)(13018025)(3002001)(10201501046);SRVR:CY1PR12MB0855;BCL:0;PCL:0;RULEID:;SRVR:CY1PR12MB0855; X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;4:H11ycuFnECrlsyQhM0BAd2A6n2m3828zeQjOAtY7jwTpd55DlgugLcCbebqG6xcAMb23MJyqU2MdVfSbnw+HzR4W2jHSqs0tNVK/ZM0STNEFxYFsbq2DgJnWUIkMvNslDty0BgCz3DLhhmNpyN+PgxFnbgWWPM4JEEZ6H8N74ldw4SX4U5N2AAXl/6IF5agzTngn5/oDinGNhUo9uh2zhnfT9eMNjzrYx76nCYZCZpzxnffnYRBR9MxDSr5RvUR+EGUdL69Np6PrLbkFxxxg7tMFOLDR8wiEm40UN4V+zwk14IO3da9IMH/TVZ8zrJjP3qiGC3QEjGoT1mYVKOuIhipxnQbXiugE6/bTSLKOimrWKn1WjoP36lnWZ34UPPR1ScGPm94mUPmcq4Dgur7FEre4LM9Bbej1uzV9SwR43f76+StXYq0p7aI1Vh+gN8SzbYULurxEJHDVHLLAHd8hVFqzIupkGHLkOHZ8Vf3T6T2TFKuaWCntHZKegBg7W4TS X-Forefront-PRVS: 083691450C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR12MB0855;23:9fqfnlTExmfMd3dPXC7UYg0/aOcKD6oBl+1v6EbUA?= =?us-ascii?Q?+sTLyt3e2wyXCglT/o0eZn12nkb9vX7HSwMOOlpRnyMdicXGSqBcWmXKbhCy?= =?us-ascii?Q?/kaUaS+t4elCTqxM+RL7ApXeIpgahj/vDiWC5jyg1ORLL5kS2OXUISRT9A/L?= =?us-ascii?Q?6Qeh7QwburVPQUlA/x3MpMwVsr13kbTLCrbrHzeY8kz/R09mSikjPwE4kOUJ?= =?us-ascii?Q?fOKPrej3srto9fO92P8pSwTQZNieTqax8dpsWlqC5eRSGbM85oWjeLD/XhR8?= =?us-ascii?Q?ZcM2h90cIgqCteZ1w2BGd+Ot2FmnY7w9Y1ro/pIggv3Yr6TWZ42C9gNvEqof?= =?us-ascii?Q?MuuUuzHpyk8llYytvslivCyRwnfqrCTAxGTDf7LZ9afMAx7zkgIGbBJV4E6L?= =?us-ascii?Q?xHmmf5t9s1JXryZukC/wWK85n5p0mtyljCLQbHPlEquYiSs7/gMDzINCTx2m?= =?us-ascii?Q?fHRCokQzyGYsILNxgiSZwHhi0zTZmJxjJeZkBl9cL39TinEd6oMuzAcnsjq8?= =?us-ascii?Q?u4KJ8MwcHzjzKuJEMaKj/BXhV+iKuJ5bz8ezlErpK16GAX39mixFxEoNDHHU?= =?us-ascii?Q?HDKefKTFdo/6tM+pvk1skYS2KeN5bne6XlSzTzoTeJ3oQcren4dQzH3TLrd+?= =?us-ascii?Q?Hdfx/Cx1lv89VAold2G34upNB4EiExNjbiNfgfC9Tah+A4gqFyvw06SjQ9Mr?= =?us-ascii?Q?7OR1vTejixocujHEo8ReqgeUyLsi8VVk0/vZY8wF18Y2IwRZYmGHBH/OW4Ls?= =?us-ascii?Q?k8sqO11/nTmTl/Y0Sn5Uw5kPdqHDSbQeKMl0QJcBlZF+x+VowY4YFcGw+nuE?= =?us-ascii?Q?W0gFJVKhU8plTbhRM7MPj2Bqq/dfd/weLcYklVEHaONahUWd88OZ8fuzADQ+?= =?us-ascii?Q?10mUKLaj9e/gJlCnALK93aB7l2dIRoV6R2dDNQRCbaHHIrmpt5Q99vBEXAda?= =?us-ascii?Q?YVPCG/7cD3YicLFUx87IoL6lGTIJijmQNbFu+MuAV5JKk9s9SApFNzVEiRwf?= =?us-ascii?Q?SNKAmeTW9JZJkLWVZuoLhb7?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR12MB0855;5:9CwB0z4izsLis1nzvGkGZBD2uMY3QUpL7i/s9a9n5HrLKL3QQFsYrQ2LT1c892bn1dXQVATZBfREO1B0IySwixxUQHuePFtlI4yFmL66nbG9CJS3zOQkDO9HOm1RMiqT61WVEwxDRkNQHLMHx9qziw==;24:IEvnpqb0U5sRTGgpwpEjwQfDFhXriybXYFCAYb8KNRUF1rABaRQLNmKmt9r2mlOmQf5bnETuasQnJRVJF3zQmXVCwzi3fOBaok+mAS3Iul0=;20:7/5bwYjyJF6oOk1SPBFaYwAkRuwnYxc2NY2WvXuHW5KM2aheZw+Qg1v6+wQ8n7FO2d30PNtiPrijBtj8OAlLlt932kcDbpMLIezYiXF6fvP/O8evyvL0KkMjvR+Pp7I4VyIuMnsnlFzmaz3TdpC6YlKB8b/uJ36JxYxtrp3iZbSc8NtrGYoRBgslXqu94NLKxM9EjU9fsRtLZmh2m2n4nnkvt7fg7kMa/HXZX7cU1etRR2m7s/y9t8htVlwPRHhD SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Jan 2016 08:30:57.0566 (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: CY1PR12MB0855 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org AMD Carrizo (Family 15h, Model 60h) introduces a time-stamp counter which indicated by CPUID.8000_0001H:ECX[27]. It increments at a 100 MHz rate in all P-states, and C states, S0, or S1. The frequency is about 100MHz. This counter will be used for calculate processor power and other parts. So add an interface into MSR PMU to get the PTSC counter value. Signed-off-by: Huang Rui --- arch/x86/include/asm/cpufeature.h | 1 + arch/x86/include/asm/msr-index.h | 1 + arch/x86/kernel/cpu/perf_event_msr.c | 8 ++++++++ 3 files changed, 10 insertions(+) diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h index f7ba9fb..1f9d682 100644 --- a/arch/x86/include/asm/cpufeature.h +++ b/arch/x86/include/asm/cpufeature.h @@ -176,6 +176,7 @@ #define X86_FEATURE_PERFCTR_CORE ( 6*32+23) /* core performance counter extensions */ #define X86_FEATURE_PERFCTR_NB ( 6*32+24) /* NB performance counter extensions */ #define X86_FEATURE_BPEXT (6*32+26) /* data breakpoint extension */ +#define X86_FEATURE_PTSC ( 6*32+27) /* performance time-stamp counter */ #define X86_FEATURE_PERFCTR_L2 ( 6*32+28) /* L2 performance counter extensions */ #define X86_FEATURE_MWAITX ( 6*32+29) /* MWAIT extension (MONITORX/MWAITX) */ diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-index.h index b05402e..0e873e3 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -321,6 +321,7 @@ #define MSR_F15H_PERF_CTR 0xc0010201 #define MSR_F15H_NB_PERF_CTL 0xc0010240 #define MSR_F15H_NB_PERF_CTR 0xc0010241 +#define MSR_F15H_PTSC 0xc0010280 #define MSR_F15H_IC_CFG 0xc0011021 /* Fam 10h MSRs */ diff --git a/arch/x86/kernel/cpu/perf_event_msr.c b/arch/x86/kernel/cpu/perf_event_msr.c index ec863b9..6f6772f 100644 --- a/arch/x86/kernel/cpu/perf_event_msr.c +++ b/arch/x86/kernel/cpu/perf_event_msr.c @@ -6,6 +6,7 @@ enum perf_msr_id { PERF_MSR_MPERF = 2, PERF_MSR_PPERF = 3, PERF_MSR_SMI = 4, + PERF_MSR_PTSC = 5, PERF_MSR_EVENT_MAX, }; @@ -15,6 +16,11 @@ static bool test_aperfmperf(int idx) return boot_cpu_has(X86_FEATURE_APERFMPERF); } +static bool test_ptsc(int idx) +{ + return boot_cpu_has(X86_FEATURE_PTSC); +} + static bool test_intel(int idx) { if (boot_cpu_data.x86_vendor != X86_VENDOR_INTEL || @@ -74,6 +80,7 @@ PMU_EVENT_ATTR_STRING(aperf, evattr_aperf, "event=0x01"); PMU_EVENT_ATTR_STRING(mperf, evattr_mperf, "event=0x02"); PMU_EVENT_ATTR_STRING(pperf, evattr_pperf, "event=0x03"); PMU_EVENT_ATTR_STRING(smi, evattr_smi, "event=0x04"); +PMU_EVENT_ATTR_STRING(ptsc, evattr_ptsc, "event=0x05"); static struct perf_msr msr[] = { [PERF_MSR_TSC] = { 0, &evattr_tsc, NULL, }, @@ -81,6 +88,7 @@ static struct perf_msr msr[] = { [PERF_MSR_MPERF] = { MSR_IA32_MPERF, &evattr_mperf, test_aperfmperf, }, [PERF_MSR_PPERF] = { MSR_PPERF, &evattr_pperf, test_intel, }, [PERF_MSR_SMI] = { MSR_SMI_COUNT, &evattr_smi, test_intel, }, + [PERF_MSR_PTSC] = { MSR_F15H_PTSC, &evattr_ptsc, test_ptsc, }, }; static struct attribute *events_attrs[PERF_MSR_EVENT_MAX + 1] = { -- 1.9.1