From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756677AbdJPSdC (ORCPT ); Mon, 16 Oct 2017 14:33:02 -0400 Received: from mail-sn1nam01on0053.outbound.protection.outlook.com ([104.47.32.53]:51127 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1756671AbdJPSc5 (ORCPT ); Mon, 16 Oct 2017 14:32:57 -0400 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Ganapatrao.Kulkarni@cavium.com; From: Ganapatrao Kulkarni To: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Will.Deacon@arm.com, catalin.marinas@arm.com, mark.rutland@arm.com, acme@kernel.org, alexander.shishkin@linux.intel.com, peterz@infradead.org, mingo@redhat.com, jnair@caviumnetworks.com, zhangshaokun@hisilicon.com, Jonathan.Cameron@huawei.com, Robert.Richter@cavium.com, gklkml16@gmail.com Subject: [PATCH v9 1/5] perf utils: passing pmu as a parameter to function get_cpuid_str Date: Tue, 17 Oct 2017 00:02:18 +0530 Message-Id: <20171016183222.25750-2-ganapatrao.kulkarni@cavium.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20171016183222.25750-1-ganapatrao.kulkarni@cavium.com> References: <20171016183222.25750-1-ganapatrao.kulkarni@cavium.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: DM5PR2201CA0043.namprd22.prod.outlook.com (10.174.180.160) To CY1PR07MB2570.namprd07.prod.outlook.com (10.167.16.25) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 03170c55-a22f-4842-ebc7-08d514c451ac X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:CY1PR07MB2570; X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2570;3:lufP499drSKZ3g6dkRAce0Ui1RSQHDRAQ6UpYc0zx95uSSUtQc4BouNXcCNJg/vr+T8hl/IyAjzH4Xi061jhlq5e2CRfn2EOIiPWIY3T9hyMkstwMfdg33WYQIulxoEizRtBUkn/eSFFYwgXOTGbG33HgxT+ZYdBRMIWthlg2c923kyqYK4S5U4FM7DWR/ic4gIJOpa5hKINruoxswy5MfTUaYzhZ4QEbyu5yiu/Wby7AKcCwaBEn10qRmqJ9iFv;25:VrYp/Vr4O0krWKwVv3cVPVD6nauE6n+S4k1S2WrF0k0yUN4S26Nwyn/GQNEFILfk6kJuAaylFGvnHQlIp4htFUtd6hdIkxAqeCtfO88ts5sbj/X8h7i2xxFRSzJFCaoAgSkP0vgex6g1UgQPKhHzRUmuxlhR7oOq93quUndPdUJUScrDHK/hDgbRSNbso98YCQHvKGvJcu47pz/PFetAbTmLwwYx4OUqbTaFEfu5Bhfb7HIjrwjM7JvynyEVTCwInD/lJybpcCGYOwChUBapNIFgMwSXKSQmMBn6QRiJzTD2B8y2xk78ltlMB1i6JlB/MxvFcec8XPDgppEqR7Fi0Q==;31:m7T1yzvsYuLkd8K8+L5r8qFKhII5pHVe/V//cvPxq2mlD9BuxTqiDYN+Mlm8uTPbt1b8dPqlDSdeGUXHna70Vt8pA6sZubFjt5YiXRk/sHgSwHO0L/eiJU2wvdR6CA+o+VEjCE22hjovraQZtdWopAkXKxAEcbbhyBkzDMxZG7ixLGUfsCmNmRAYqnklWu/7aRkk0zZSu8WHplynrUxScSXgwwUvuU6y+Y6poALin08= X-MS-TrafficTypeDiagnostic: CY1PR07MB2570: X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2570;20:mk32qHYyXE3YLwqOLDCAn7Ey/A6FjhVv2pC8Xy9vrq7X7erObdNVdnn/SLCqQIThlBnpqfd4WgG+bxFc9gLTqLhlziNwwX0G9ZCw/c4d84j8znDE99K1mH3maG3fIRAsQV675TQvUYLmP6IMpDFjFPjF+pgwBg3emv4cczeQ2cZXtV2WsvILQYDQZqWzAVMFp9a0CzXL0Z/CIg1RsE1h4ifO5/Im592VE56wK/ijhy5gb39OBRrRtQizDKIN+eEK9IfbLrsaigZuEGeTRsC2o7e9RYYbdyOxQFV4fWXEnonIncb6mCHa+UXckQpPQz2kG+A4KWPreHvQ3a+RPEYr3/zJBlAWkzZc/Ku+H5564xB5l343URflnafhjtvZVtTMELGyZpDu9Qd/9O7F0+BghAYjJUtJmcdnnabd9joHvk8SC0zgl1aYiYR0kUaNqo00cRwQ1ESHluEErgCunuPQTh/2o5BIKoR7qa7b5Om22PmSIKtUL0oUWgC+EmalPidE;4:8E6OxNxyqcvDgJhGV32J4JrBG6WBN3/Hisly3Cfxxaia7hw6CdnoslN/zSdnebvOGnR7nZKNb/lFwl1G0M0rJtCGtDKJq7kOpOjxFqwazhi38Vd3X8HO/ZhARepsQ0SufKdpJ3KGqY4uNVXUH08qiV59N9LvbCcnsPS301U5/EhfoU81YaLALTITza8LXaM/ogUAt0qILHhCARqm7lP9DPMl1x699KI21FuDnZDWKrbf0yfDWpEnj2swNIneIBr+BA+oBUTwUqOU8BNyqXUvm4odzmzni8XuJhec+nqpId4= X-Exchange-Antispam-Report-Test: UriScan:(180628864354917); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(3002001)(10201501046)(93006095)(93001095)(100000703101)(100105400095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123558100)(20161123560025)(20161123564025)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:CY1PR07MB2570;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:CY1PR07MB2570; X-Forefront-PRVS: 0462918D61 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(189002)(199003)(5660300001)(86362001)(33646002)(7416002)(25786009)(2906002)(36756003)(7736002)(16526018)(305945005)(81156014)(81166006)(316002)(69596002)(48376002)(50466002)(97736004)(16586007)(8676002)(6116002)(53416004)(76176999)(5009440100003)(50226002)(8936002)(101416001)(3846002)(50986999)(1076002)(106356001)(72206003)(105586002)(478600001)(5003940100001)(6512007)(189998001)(39060400002)(6666003)(6506006)(68736007)(2950100002)(53936002)(4326008)(6486002)(47776003)(66066001);DIR:OUT;SFP:1101;SCL:1;SRVR:CY1PR07MB2570;H:mypc.caveonetworks.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;CY1PR07MB2570;23:Fl4QVlf/idSarMussG1j5yl/B3ZDbRpq6P0i8OtQu?= =?us-ascii?Q?w86rPx3va3WyImJrws3mUEWeAF47gux/VEzG38R8hVMvuSqErzelG3Tn/gzb?= =?us-ascii?Q?JlM+1wM27wS0peb3eCfNr9uvYDgUi9+jWrkBbUVR9GnXI/jqSMmfB2dxESoc?= =?us-ascii?Q?GfbZtPEv/n5PA4OoPMFBfX9d1hRqF+JDBzdoGpVkCr4jWHj3A+fLdGZnihTY?= =?us-ascii?Q?M5EDkJCIQFAF0XwrU2DJ3uYHIc7ZnCwVFZV+CqLyB7tPSrXnXgnT7/yDcRj/?= =?us-ascii?Q?illza0+Pwi0FY8xKN9yYNFbgYVQDXmkk961pd9K+zR+V8GSKfxA6l9ySt7CB?= =?us-ascii?Q?SJDIB4Vuv4/VprQJvlsvfEwiYBo3q5eyEp3/YPsqI5y5tTxOAg+JhyoderUr?= =?us-ascii?Q?mvcUgo0IbAdtH2as/J5m4SN5eY9DI6X4blTZ9TEh9NiP6xKsyIaUd+0yDbqR?= =?us-ascii?Q?l3C4GlpFkbhJU5LOd/GOGXUTrffbNAu+JqQDa87H9WWsK+ke18g8XeeVb5f8?= =?us-ascii?Q?uSXHcp4Oh+TY1GkN9E4orI2eJEFVfS9H8X6Icrv068y+37cSNYKjd/bpKHPX?= =?us-ascii?Q?bvIAPOUL7+ruR0bCiGTRNFyVp2h/Tq1lXNkGHFF26pP3LbjzGuWn3y9+w8CT?= =?us-ascii?Q?XoMU80J2+aA3Nz5cNPsGy6NyFkmeOZ93aPsxJ9e9Gqy0pgnanUWx1SlEiosh?= =?us-ascii?Q?Vp1ff+izdSBry/Go20kTuZJSPVVY73gfblkEhRiqc9RSGL4x4odW+KzcRy3y?= =?us-ascii?Q?5lPPwrvaKTgGoAK48+DeG8584v3rQkSa7L03YJO6iCWn4buLBBOrPrs6TO0w?= =?us-ascii?Q?AKh1mncvVlN4coutHQHsHGijMI6hFE4bTbRiAjYyc8AwuaiRckON+8XGLEh8?= =?us-ascii?Q?ZWiVTuftT47YkecF/0K83sbD40zPuH8ibtc1Kn74eXjR/kmYW1ENzYFOSAID?= =?us-ascii?Q?RUioiA4Jsqk2thpab2Gd2Ee5B4sphuuWLWaTrwad+g5JwE2KeauazssBrg8o?= =?us-ascii?Q?/13RSiVoe43VXEn0qledVFKTBDmuPLVQ5aOLQ9cVqhdcEP2yo9xaNDJphi45?= =?us-ascii?Q?05WBDcjcSIbuGSCwTymc83cG/8DZkDQZ5aCekDpvq75g7MRliJJKs2JGoE+f?= =?us-ascii?Q?lm/Byj/v8ecvN6FfpxWcTSQYy1XlFg42h2on++/EI5cY4TokoroQ2jch89F2?= =?us-ascii?Q?QErdmx1tjuh9anWp0lAvi9h/YanMDlKMHR/?= X-Microsoft-Exchange-Diagnostics: 1;CY1PR07MB2570;6:DtDXxzv0XPKWs7feuNcWRGdGkNk84bLrlGVPw1IoKSK1UMBfJrhr2YYYVXyujQi4poc5viHxQ4ycEogtuI1KTkiEa29Wfy/GfUEXQUJEp0OMD5mmSlcQxC/VIKq62XRP3etVWiNf7XagcD8iO1H4SxuKgj8r1YSSn5AT4Q5hoSj8uW7SiAYM95IPs6Q2xegpgF13L6NKV675UlWslmxcXZKDzdSFCne24P7bKknjupVgwqH5D5nJMRb3y5/DTQtDa/9N+WDRMbi8r9Q1bCFOzaH4oZHFCHVQLkhDn1KaaMVTDJcoPI0i1R6EJjfAube/avbVgdi8CNwjLIzizlX+BQ==;5:WKTnbgAa1x+/rqbNHgeFTAdotFmRNXa1nQfZgcBsQgf2Xxas30jk1CWrevi/w5vfaOv7zblLwgczx4QabBZUN1uEcC0b2hdFKISbyPuWY8OLMA6OrMZEN7kRwKR9cLLF7nQXsHj4abgnt3lbojtrSIc0qtxSI9AR8JFv0qFpGE0=;24:d8/6GYalznRN0QWdLpUYCPZ5Be1psJLqSPN9g3EMSon8t7fc6T/NdzDxAxImV5PhtNx8cS7AeNT8izPrGaXb4KnzPeJRIivIhC9LVKfnjFU=;7:teb9aeAJwOKw/kNupYTk7iRbW5O7vlnWih+wXFs7M7O+fESM+IY3MxFe9Hint8E5Z7PSYw79nxzoB4TqmPc3wEVym39BLuj6ruo1NpooYUnvWZpEQFxTo3G5qOHS8rNYRUvPFNlqpicvYzZ1obzoxq5m1c1aguPlsg20JsUiwb2RZGQ9Ie33oOhqcjMHGAAW3YkSHL95VCjsnk0BAOd2kls0yge7hC8/A4upDtlq3TY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Oct 2017 18:32:51.5319 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR07MB2570 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org cpuid string will not be same on all CPUs on heterogeneous platforms like ARM's big.LITTLE, adding provision(using pmu->cpus) to find cpuid string from associated CPUs of PMU CORE device. also optimise arguments to function pmu_add_cpu_aliases. Acked-by: Will Deacon Signed-off-by: Ganapatrao Kulkarni --- tools/perf/arch/powerpc/util/header.c | 2 +- tools/perf/arch/x86/util/header.c | 2 +- tools/perf/util/header.h | 3 ++- tools/perf/util/metricgroup.c | 4 ++-- tools/perf/util/pmu.c | 22 +++++++++++----------- tools/perf/util/pmu.h | 2 +- 6 files changed, 18 insertions(+), 17 deletions(-) diff --git a/tools/perf/arch/powerpc/util/header.c b/tools/perf/arch/powerpc/util/header.c index 9aaa6f5..2953681 100644 --- a/tools/perf/arch/powerpc/util/header.c +++ b/tools/perf/arch/powerpc/util/header.c @@ -34,7 +34,7 @@ get_cpuid(char *buffer, size_t sz) } char * -get_cpuid_str(void) +get_cpuid_str(struct perf_pmu *pmu __maybe_unused) { char *bufp; diff --git a/tools/perf/arch/x86/util/header.c b/tools/perf/arch/x86/util/header.c index a74a48d..d52bc27 100644 --- a/tools/perf/arch/x86/util/header.c +++ b/tools/perf/arch/x86/util/header.c @@ -65,7 +65,7 @@ get_cpuid(char *buffer, size_t sz) } char * -get_cpuid_str(void) +get_cpuid_str(struct perf_pmu *pmu __maybe_unused) { char *buf = malloc(128); diff --git a/tools/perf/util/header.h b/tools/perf/util/header.h index f7a16ee..3de4be9 100644 --- a/tools/perf/util/header.h +++ b/tools/perf/util/header.h @@ -8,6 +8,7 @@ #include #include "event.h" #include "env.h" +#include "pmu.h" enum { HEADER_RESERVED = 0, /* always cleared */ @@ -165,5 +166,5 @@ int write_padded(struct feat_fd *fd, const void *bf, */ int get_cpuid(char *buffer, size_t sz); -char *get_cpuid_str(void); +char *get_cpuid_str(struct perf_pmu *pmu __maybe_unused); #endif /* __PERF_HEADER_H */ diff --git a/tools/perf/util/metricgroup.c b/tools/perf/util/metricgroup.c index 0ddd9c1..9b8b671 100644 --- a/tools/perf/util/metricgroup.c +++ b/tools/perf/util/metricgroup.c @@ -270,7 +270,7 @@ static void metricgroup__print_strlist(struct strlist *metrics, bool raw) void metricgroup__print(bool metrics, bool metricgroups, char *filter, bool raw) { - struct pmu_events_map *map = perf_pmu__find_map(); + struct pmu_events_map *map = perf_pmu__find_map(NULL); struct pmu_event *pe; int i; struct rblist groups; @@ -368,7 +368,7 @@ void metricgroup__print(bool metrics, bool metricgroups, char *filter, static int metricgroup__add_metric(const char *metric, struct strbuf *events, struct list_head *group_list) { - struct pmu_events_map *map = perf_pmu__find_map(); + struct pmu_events_map *map = perf_pmu__find_map(NULL); struct pmu_event *pe; int ret = -EINVAL; int i, j; diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 94cf2c2..8b17db5 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -536,12 +536,12 @@ static bool pmu_is_uncore(const char *name) * Each architecture should provide a more precise id string that * can be use to match the architecture's "mapfile". */ -char * __weak get_cpuid_str(void) +char * __weak get_cpuid_str(struct perf_pmu *pmu __maybe_unused) { return NULL; } -static char *perf_pmu__getcpuid(void) +static char *perf_pmu__getcpuid(struct perf_pmu *pmu) { char *cpuid; static bool printed; @@ -550,7 +550,7 @@ static char *perf_pmu__getcpuid(void) if (cpuid) cpuid = strdup(cpuid); if (!cpuid) - cpuid = get_cpuid_str(); + cpuid = get_cpuid_str(pmu); if (!cpuid) return NULL; @@ -561,10 +561,10 @@ static char *perf_pmu__getcpuid(void) return cpuid; } -struct pmu_events_map *perf_pmu__find_map(void) +struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu) { struct pmu_events_map *map; - char *cpuid = perf_pmu__getcpuid(); + char *cpuid = perf_pmu__getcpuid(pmu); int i; i = 0; @@ -587,13 +587,14 @@ struct pmu_events_map *perf_pmu__find_map(void) * to the current running CPU. Then, add all PMU events from that table * as aliases. */ -static void pmu_add_cpu_aliases(struct list_head *head, const char *name) +static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu) { int i; struct pmu_events_map *map; struct pmu_event *pe; + const char *name = pmu->name; - map = perf_pmu__find_map(); + map = perf_pmu__find_map(pmu); if (!map) return; @@ -655,21 +656,20 @@ static struct perf_pmu *pmu_lookup(const char *name) if (pmu_aliases(name, &aliases)) return NULL; - pmu_add_cpu_aliases(&aliases, name); pmu = zalloc(sizeof(*pmu)); if (!pmu) return NULL; pmu->cpus = pmu_cpumask(name); - + pmu->name = strdup(name); + pmu->type = type; pmu->is_uncore = pmu_is_uncore(name); + pmu_add_cpu_aliases(&aliases, pmu); INIT_LIST_HEAD(&pmu->format); INIT_LIST_HEAD(&pmu->aliases); list_splice(&format, &pmu->format); list_splice(&aliases, &pmu->aliases); - pmu->name = strdup(name); - pmu->type = type; list_add_tail(&pmu->list, &pmus); pmu->default_config = perf_pmu__get_default_config(pmu); diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h index 7ca6755..abc4728 100644 --- a/tools/perf/util/pmu.h +++ b/tools/perf/util/pmu.h @@ -91,6 +91,6 @@ int perf_pmu__test(void); struct perf_event_attr *perf_pmu__get_default_config(struct perf_pmu *pmu); -struct pmu_events_map *perf_pmu__find_map(void); +struct pmu_events_map *perf_pmu__find_map(struct perf_pmu *pmu); #endif /* __PMU_H */ -- 2.9.4