From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1030607AbdAKQCk (ORCPT ); Wed, 11 Jan 2017 11:02:40 -0500 Received: from mail-sn1nam01on0065.outbound.protection.outlook.com ([104.47.32.65]:50560 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1030578AbdAKQCh (ORCPT ); Wed, 11 Jan 2017 11:02:37 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Janakarajan.Natarajan@amd.com; From: Janakarajan Natarajan To: CC: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Alexander Shishkin , Suravee Suthikulpanit , Janakarajan Natarajan Subject: [PATCH 3/3] perf/x86/amd/uncore: Update sysfs attributes for Family17h processors Date: Wed, 11 Jan 2017 10:02:18 -0600 Message-ID: <1aea7d3c3dc25f12f33840c8ff90264bd14200dc.1484148262.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: DM5PR16CA0048.namprd16.prod.outlook.com (10.172.42.162) To CY4PR12MB1800.namprd12.prod.outlook.com (10.175.63.18) X-MS-Office365-Filtering-Correlation-Id: 09182cdb-dbb5-4e40-c40f-08d43a3b41a9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001);SRVR:CY4PR12MB1800; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1800;3:6bxozUrbMjQ9YLaeG2/RMi9xqwqYvidipx9x19AnkpbZLuzxa5Pls9/OO7+BVzu906uibb95iXTKs2546ojWVG7kjmIuFGmgVZe3FenVky3NN75mf7hIBCcUnjDSNo4Rj30usdhD2oqEAkabygBVhAq4sC7f4/6+S1BaTb5wm2Ap8NFzwP3aBNOwfIAiA5t0Cfj7LDQFOiNxKR5X1C6fIjrggMSD/LMklXk0XCYNLemBniFdPDrZnMzb3bCr+cVJY5qLH7Yha5CXw/aS8pVGSQ==;25:nfYQKZZeFQ0vktI3Qm3IBDqzNYzalyxuXvz4Rygi0K65PZJJrORXZw5CFqAGaLWUpEjODC1+UR6kjYy1WoqHX70uGnUfo97NngC+dSH+UgFDRo+DHC21l5jrHrfoDxlpPviHzJ/XeupvBsrNT5VYyO2QL/uAJPY7IRo8IIUpZdmzOcnQ/E/WQn5C7SswUddQQcQfW9Vxt2HajGEhv+WLW/y5Ow3cYYqIoNNtQWytyN8YDvOoxY949aaUSsOVSKh12Tuy6/Zvu7B8fiRjWnwPj2o7A4iiaNhl0Aq894Qhv8qgbFDrdE1+xm+xOsDeUhO5d1jEev95YV1Xj2HXqoy+5ZrPk5cVTAS5XKBIk2kKm2mGZx2LIed8ENqdLb8c7Zz3Wk3fzKKYHV4LoMb8u/Z8XLvfhPvfVuoSy+ETXNeyCG45QdMHNI4SG0jICYGXqQkVgCtsTsKExtSA9GbZzOJyrw== X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1800;31:FB1psxFKjwd0ztAFXeWPjSbroHl2PO4T1+dwIkCezUSmoFOv5a8naTDZSF9YE2FZAsRicOPP+1F0I8TYB1exfDo+LeY2ndKcAVnkYdQk/dxKl4OL7RBlK7dX2rIeN6C0G78Uxbn3CXYI0J10DnDhn2rBzq6iLgcJhMGkj8A40Wodr4/L4Csyvidn7zrrAm99y2mMWkK1M289QsMqD7RyFTkr1chMdujh2nWuky/5LDYB6MRX7tKeiM1KhUGX7oBh85K6ES20pNnO5dOgNO8XFA==;20:5Nqp0Bjj/XvWrAfiifBfpwVOcN1h4a/UCwetMKBnJQ4o/cRn9tpQQuc8wrWVHb08k1HtPEVcM5fRPAjjdo9D6Bd3NX0rCXP5iwQygRHt4ohFZ/6J8HGYFWyZ4YALRk6jMR22IWCBRIk1wRrE7m9nAxGTEhNRIDtkzOwhRTDgM+GcKyTwWUtIkte9PHMdTOBpjQk3NK9VJY7a1b/F71deumpUaSaMK0j8ZBf48cXH0F1BArir2X5/UtyABxv+tuvFz5zdmts8KLX0TRq9aMYD3daubiqcywnGehnpj+cY9OHlHY/O/dcCCOn69Rnm1Q+K7Hk1dEPQmWPrqrMfyqex2/8JelCYwkEMU/ptuzVe5737pp9fh5Hi0UoxcEh0Nyem+Jncwx+zVWxImzHeRaj6jz7mfziun7bo0CHUSYGK3oSQDN3a2mvsgEunGoAvKGARcMtQwR/+tlWHBNqn231tUvXiGE0WUQj3dI8s0ZQ+CWS2twvK+OYNxxggQ4YS5eo6 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6055026)(6041248)(20161123562025)(20161123555025)(20161123564025)(20161123560025)(6072148);SRVR:CY4PR12MB1800;BCL:0;PCL:0;RULEID:;SRVR:CY4PR12MB1800; X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1800;4:F2vctd9tdG8u3F1wtkIzz4ySS3fdPKgK0BqK8Lxd5Sc3cGD7H/SC8jW81QxixRDCVTwRElWk0GOc14yclZ/7vRLVei0qw51FaqI5n3hWmaU79wo38cB8EXINN9Nce6DsoArG6Ah6KdqJlYndmbG7ZU3WLrJseyjaC83XQlmmGxmG1nBvVC5TO/p4aXv9DPTNfewSRgyQ3i3gev7QOO1LwwhQPoFP6ECjcm+gzOu8LjuDVMEFjmmdT1VGV4VSYk/qbPRizAQRXDVNPnmpTywBbJPM5J34JXuOdwAfj97DayAfiTCInLVgvRV2evV5CK6D6qQwLAq5lqhGDHMW9Gv0E5WuNiR9jFMmGaM3EA1V+pPZdtVDMOstJgfedLA3ML9pG04AqnMKtlWGI9GMBuJ+NshG7gHlbiKDG/N0UNgxO5+mha8rRRAa29upIPGbzNYxL1c9CBl18fCWpRKZnrVOb5xnhsEkd9SvQuDNYtBK7lVcqRk9stD8VpSErMAhkTEDxnKD0TuH8QMuIJsuic7BAgSeJ94b2Z0lM8pPno2CxiQmlBb8fDqFotJvN8xgym5u8dS15Q9dsFuQE96ZQviv58NJZOHqQmCRMOX6XNGFTAA1vIRDCSuPnaF2UxNl2TG+ X-Forefront-PRVS: 01842C458A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39450400003)(39410400002)(39840400002)(39860400002)(39850400002)(199003)(189002)(6116002)(3846002)(50466002)(38730400001)(2906002)(4326007)(101416001)(48376002)(54906002)(50986999)(110136003)(2950100002)(6916009)(81156014)(76176999)(5660300001)(118296001)(6666003)(6486002)(86362001)(66066001)(7736002)(25786008)(2351001)(81166006)(47776003)(8676002)(105586002)(5003940100001)(42186005)(305945005)(53416004)(106356001)(36756003)(15650500001)(50226002)(92566002)(68736007)(97736004)(189998001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY4PR12MB1800;H:tworivers.amd.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY4PR12MB1800;23:7AiynONmAVXEF0KlhOaO1Z2NJvDPvBIqTifX+5cYy?= =?us-ascii?Q?2FlUONW55vp0KIKrYSD/8RaGIAeHYRC8vnKNbZh/u9UueWwoF8j9gL+kUpoG?= =?us-ascii?Q?rmE9rlfkEWDNy7Nyl0tOLt5tmK+akjmI/i9gS44uz//6k2N0Vs5HFG14TX0P?= =?us-ascii?Q?bL647kXKhNkDRmV9pEY+Mm6YF8h1tXukehZOdW3vTtGEX44NUoX+w9gPW83k?= =?us-ascii?Q?JATdEsz9K8yx1S48DGRN82AHgqfT+aNSa++uFgs+FGzk3mOgsDiMGGkva5e8?= =?us-ascii?Q?JOx927MQzR8Jw/Y2t/JTf4LVkl5qxehhpIvpF08LX6nCDBt9aq/ZUT6PhzeO?= =?us-ascii?Q?Pq0vLSe9SWp8NowBuU5AfyRI3tkHgD/Hq6trjKK5s4FCDM0xJTKLlH2yFIEG?= =?us-ascii?Q?/g/LdcnpbSs2SqwNjVyDa2pzhROU65oNtb/OsChtK33RKQULOe0nGvQx35x8?= =?us-ascii?Q?dac0VhHPmJIY7t+fAvZXaIZaVmPA7xljzUn/52KP5PThtLeqKUHTfMPyQ91n?= =?us-ascii?Q?3atQ3BB0/5F0DxS9df5eKW09SBWtav0QZdaE9opP+nVL5AQf0tktsE7lzGC1?= =?us-ascii?Q?A57/xBhv2ECUlPfZ3ZywtPZoL8ebh5HryWrSZx8YoLNNZqu7A3ktHeJjRShf?= =?us-ascii?Q?324DpnJOBVPPev7bgPzHZExZTjXKPIW8PizdeFB0E3XZsEf/GvAQpny5mbPI?= =?us-ascii?Q?ADHEadjsXoIFLk3Hdm7AyISWRTZc8KPxZQ7h8uJphAL+iYIgMaX4kLNcdWqG?= =?us-ascii?Q?UhdZ7zBO00CyRIdI28wOR62R1BBPg70PVb1SUsfr1TWkej1qsBmG8hbJZSyV?= =?us-ascii?Q?87Ne7R07Lwkgas3WjyxeQjU8Yf2zKHlcNVEn96xC+78pUteUpD9iNeVsJGKW?= =?us-ascii?Q?u3IDlMEWQKZIozOK5jLdpJaDwSOLyCQ83ciIPibTgfpmNpIL1AENORSKkOy3?= =?us-ascii?Q?ncp56/msgKJ3zd9GLtHEL9f1cwq4vctIYq0HLMnrqsGopbXgRiK/l1EFJyVK?= =?us-ascii?Q?ZdSFtxu992Nqjg5WL9cIv/L4SwqAwrGEEJlcgwpNXwuyHZ3xwZ3/GRLo7zzM?= =?us-ascii?Q?9Fzc5v7ZeOc3oP1c+on6lMImpcEs6+L06ZPV8McXwv1JTWOTiuu1LolzGawt?= =?us-ascii?Q?LXjKwr10NsHJFHrqmo/vq4J6jJgomUpWIt4HWRhXxuaqKf5XtnpOfq03WpTo?= =?us-ascii?Q?e/6TBcyjxZH+HM9VQxm15RotcQi9HBNRfeHmuIoazzjzXghaL7xH07f1g=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1800;6:Cl83+ZOhxfUDyFjgICUW6xSXEyjf3ACtn6YyO/Ez4Mc2YAyfSdfE26XDYPV/kjljVRH6LWp1lQq/rbt5VBdBzsAZh+34yQDXdDm6vcl1s5S/Up20VNgKqIDTodvCMCndJBBdO3rkwKZE8tzvHVeOxphrx6ECi6G8i9Kj4paYIvQE5fIskiVEPAgbdu2HI5h8Dkhv6nZbV0Ttq4C397ob0qIHY4pSlELDKC2tz6rPKFg4t/Po3ByTf7sDEc/eeGDltIAuO0+gkQAzmNa10YGGo/RlP/+Y5XI0b+6GWSgUOZbqc6b+oizp+5Lepyi8LWiimL6xRHv5Gce3+rTZBrenbmEiZJb1DQI5FlyL87YE4dGo7pYyMLDChftCnvj/MizhsfGYKAPFwIy7K5Z52OHVFv71bWKOCaDMaMCNyZeGK3jvGk+CAJ/avFIRkA534+Wvz/NiT9cFjx3aNDLT3c41QQ==;5:gTjCfks0FLp0WOMRt9sEG+tzEyaqNWPTzXMFH3WuC6CC0utcXCIBlXyRx2fWjFaFosnYMHEht0cUr47D+v5YWfpb+/692Lvz+7GWdrmOIGuc0B2joYS8hqmrLFV7vG/8g8VB7n5KsaqVTLBUCl7Tqg==;24:AIsOMe6qrSuqgto/6nUWQAw/TVZloZWC4Ai4W5x3EAagojEJpmeVBUizBdZsjTczX8Ao+08LOFSfFchRSChaikplEgERZ3HCE8tVk2lWGWA= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;CY4PR12MB1800;7:prGWj/qpPbYdVKJgM+sOXhOhOl+p/Ju6aENDxpOAwUbPOMJ+Cz7Qh1+WbcduGq0V2mxUJNYXw1/rXzObI8EXhbDsz/iwXcDGdHxc7b1dthDG/P4KBGp1/8FzAR/m3AogSVcMIiB+MzphZC/m5X6a909oykX7OWF0Ch9aEWqp1mb7+ys+baOCmoO5Kyy3++xxv+Ngu8lSzX5JTDa7ElRMaBSLp4Wb9HAC2gqh1O1nxD5cMu4hE+yC91+g+VQcBnSglJTH21Ig1LLypiud7hH2feBMT+cY+9zppJPvdnAYFPbQ7Ce0RZdqamEZMGmJa9MG5EQn/okURhQhjCqo2cDfNUcs1m3bmVRV5ewpdD8PmuzdQ8eA6SPFXENbW+idQZjECkbf1Uksiu0sW1kQhdY7d9amrUKjyGsrVhBr5mx/Glgujoe/z+SMUCoKPX5UN4PS8zXpS7YnVYZhJMW+pg6P3Q==;20:oLH1dtzeLhRsYKBHDiO3kEz5KkujzRzV59wdWtE0dbEchnKNHRC+g0O0HZfHSgdbaI/B5tJrAN+Ibfm6d7+SXr9cvKS8CXJE4Io80wD9WLt/K1fvznky9mxF9EpU3SEqt0p9SxwhALq/uFfFrcKD+KvDdUZWygU+ZWds7epb3x4/RqTAlcuzMrwcRbukh2dyKQg6F1WxHFZ6SlKSU6lZb45/3xqVYwIOA3Q/QTWjFnqLwTbd9/luEY1xfQM+4ser X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Jan 2017 16:02:34.1926 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR12MB1800 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch updates the sysfs attributes for AMD Family17h processors. In Family17h, the event bit position is changed for both the NorthBridge and Last level cache counters. The sysfs attributes are assigned based on the family and the type of the counter. Signed-off-by: Janakarajan Natarajan --- arch/x86/events/amd/uncore.c | 77 ++++++++++++++++++++++++++++++++------------ 1 file changed, 56 insertions(+), 21 deletions(-) diff --git a/arch/x86/events/amd/uncore.c b/arch/x86/events/amd/uncore.c index 7ab92f7..5644c20 100644 --- a/arch/x86/events/amd/uncore.c +++ b/arch/x86/events/amd/uncore.c @@ -250,30 +250,47 @@ static struct attribute_group amd_uncore_attr_group = { .attrs = amd_uncore_attrs, }; -PMU_FORMAT_ATTR(event, "config:0-7,32-35"); -PMU_FORMAT_ATTR(umask, "config:8-15"); - -static struct attribute *amd_uncore_format_attr[] = { - &format_attr_event.attr, - &format_attr_umask.attr, - NULL, -}; - -static struct attribute_group amd_uncore_format_group = { - .name = "format", - .attrs = amd_uncore_format_attr, +/* + * Similar to PMU_FORMAT_ATTR but allowing for format_attr to be assigned based + * on family + */ +#define AMD_FORMAT_ATTR(_dev, _name, _format) \ +static ssize_t \ +_dev##_show##_name(struct device *dev, \ + struct device_attribute *attr, \ + char *page) \ +{ \ + BUILD_BUG_ON(sizeof(_format) >= PAGE_SIZE); \ + return sprintf(page, _format "\n"); \ +} \ +static struct device_attribute format_attr_##_dev##_name = __ATTR_RO(_dev); + +/* Used for each uncore counter type */ +#define AMD_ATTRIBUTE(_name) \ +static struct attribute *amd_uncore_format_attr_##_name[] = { \ + &format_attr_event_##_name.attr, \ + &format_attr_umask.attr, \ + NULL, \ +}; \ +static struct attribute_group amd_uncore_format_group_##_name = { \ + .name = "format", \ + .attrs = amd_uncore_format_attr_##_name, \ +}; \ +static const struct attribute_group *amd_uncore_attr_groups_##_name[] = { \ + &amd_uncore_attr_group, \ + &amd_uncore_format_group_##_name, \ + NULL, \ }; -static const struct attribute_group *amd_uncore_attr_groups[] = { - &amd_uncore_attr_group, - &amd_uncore_format_group, - NULL, -}; +AMD_FORMAT_ATTR(event, , "config:0-7,32-35"); +AMD_FORMAT_ATTR(umask, , "config:8-15"); +AMD_FORMAT_ATTR(event, _df, "config:0-7,32-35,59-60"); +AMD_FORMAT_ATTR(event, _l3, "config:0-7"); +AMD_ATTRIBUTE(df); +AMD_ATTRIBUTE(l3); static struct pmu amd_nb_pmu = { .task_ctx_nr = perf_invalid_context, - .attr_groups = amd_uncore_attr_groups, - .name = "amd_nb", .event_init = amd_uncore_event_init, .add = amd_uncore_add, .del = amd_uncore_del, @@ -284,8 +301,6 @@ static struct pmu amd_nb_pmu = { static struct pmu amd_llc_pmu = { .task_ctx_nr = perf_invalid_context, - .attr_groups = amd_uncore_attr_groups, - .name = "amd_l2", .event_init = amd_uncore_event_init, .add = amd_uncore_add, .del = amd_uncore_del, @@ -543,11 +558,25 @@ static int __init amd_uncore_init(void) /* Family 17h */ num_counters_nb = NUM_COUNTERS_NB; num_counters_llc = NUM_COUNTERS_L3; + /* + * For Family17h, the NorthBridge counters are + * re-purposed as Data Fabric counters. Also, support is + * added for L3 counters. The pmus are exported based on + * family as either L2 or L3 and NB or DF. + */ + amd_nb_pmu.name = "amd_df"; + amd_llc_pmu.name = "amd_l3"; + format_attr_event_df.show = &event_show_df; + format_attr_event_l3.show = &event_show_l3; break; case 22: /* Family 16h. May change */ num_counters_nb = NUM_COUNTERS_NB; num_counters_llc = NUM_COUNTERS_L2; + amd_nb_pmu.name = "amd_nb"; + amd_llc_pmu.name = "amd_l2"; + format_attr_event_df = format_attr_event; + format_attr_event_l3 = format_attr_event; break; default: /* @@ -556,8 +585,14 @@ static int __init amd_uncore_init(void) */ num_counters_nb = NUM_COUNTERS_NB; num_counters_llc = NUM_COUNTERS_L2; + amd_nb_pmu.name = "amd_nb"; + amd_llc_pmu.name = "amd_l2"; + format_attr_event_df = format_attr_event; + format_attr_event_l3 = format_attr_event; break; } + amd_llc_pmu.attr_groups = amd_uncore_attr_groups_l3; + amd_nb_pmu.attr_groups = amd_uncore_attr_groups_df; if (!boot_cpu_has(X86_FEATURE_TOPOEXT)) goto fail_nodev; -- 2.7.4