From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753048AbdJLKff (ORCPT ); Thu, 12 Oct 2017 06:35:35 -0400 Received: from mail-dm3nam03on0072.outbound.protection.outlook.com ([104.47.41.72]:51264 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752620AbdJLKfb (ORCPT ); Thu, 12 Oct 2017 06:35:31 -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 v7 3/4] perf utils: Add helper function is_pmu_core to detect PMU CORE devices Date: Thu, 12 Oct 2017 16:04:18 +0530 Message-Id: <20171012103419.29824-4-ganapatrao.kulkarni@cavium.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20171012103419.29824-1-ganapatrao.kulkarni@cavium.com> References: <20171012103419.29824-1-ganapatrao.kulkarni@cavium.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR0101CA0024.INDPRD01.PROD.OUTLOOK.COM (52.134.136.162) To BN3PR07MB2562.namprd07.prod.outlook.com (10.167.4.151) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4586728e-a30e-4b15-7094-08d5115cf51e X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BN3PR07MB2562; X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2562;3:dps4N7+Fh74niwSlDMyuTGzlDQJNm9CYVcEQTC6cZptLZdddMaxdNYZtfOhEwQvWgarBWfCIkB+cc/6d3VUzAypvFf5hhmN9yZChRs0valo056/Bx0bYHwI0FK/ntOcNljzJdci0oU3o9W5l07DGo5VgtAIZ7/e9oAb4q9AcphSy2Azg6vGJWEQMTW6jVqtoZGgeJbApqAaObzlWWW1m+rHGCpoI5OjsKfhork0TIZqPpgL83EccjzkrWD0o8rws;25:zBn+d+u0waMK7V2XP2OWrK0KHDT0oiG+fMz4ncaXXNxIyYu5Z59h7iCoaGOzQKZv2eji8SgmOoBiOVdjdFXQLCH5RlROWTJQFBzmeCxS+QqTAthR5afJHQWltkAu8JBCy8JJhfGIk8k9QegI4L3D59rcKMVO3GqmSulG0fR2fCz5r0N9UXQ5kbCVwcTzOfFx7kBxSpZM5eM7p5og0FqgERTapZ800jey4FdWg8nznh+QIZ37lwQJg64SkSrDioVbaeaxJ8ndVsiTgTtfDJ4zb7Ui6b8CAzAwR6wm+vB6H4/v8z9boDUqQ/G4eP3ozekblpceuXg0qfew8Ol42D9kXQ==;31:pIrKi/vaIkHZSRZ1YNU74AV2QI2YvCBy0AptGjuzygCSmv/MOynJcufGj9Khe0lcw7RdfnW62hyxWpXczg4+nKnFaps+e0j0OE2iu8meUGtHZAUYqOP1KiqGDSwP1M0vF+rYi6B5mu3QOEt0td2e118rUHpwhB4jkbiMMiKFwaY3QEjW7obV85CJKK/lf8cDpr4Bvl6oVcMS7ZKfHYxPpoX21wQkvVRb8Brns57QWn8= X-MS-TrafficTypeDiagnostic: BN3PR07MB2562: X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2562;20:kEZA9x3+IJN/tJOpnpcNrMIXPQcqRTPiZoIDNUnKOesDLE/fAEV28yS2gEnuOXRlD7cSLZTVg/Te9Fo/FPzGHG7sDcjXyLOSrX/GyK++5NRsiJtB8/D4JwqxShPNqyv+5uaYzStT/lxjsyq6HbvuTSoRqj+xFaqVRi7gGYD2dclSQXStCy/9I1O3HpIOgYkek52yxRTOjK+nGejB0PcZlykl//YopSuwMUmVcuJFi9KW4ERYQpWvARzZPJx7mL0+EKwvkHs0rdFGn0Nwnhvb2BGi4YxMdX6ce0dkRBhQt6Vhq/qRntU57ph9Z5Q9gP2qF5mKJhA6fxM/j728bX6W0aV+cgCIiTAARoq/CarKfeykMSFJiBiGmZaKYhH2G3lFMz3NoJHeBhqrAc/R++vPSTjcBiL/tBk72lyUmRNvAxZ+Ozy4aBGoMnE0RXGmkT+XybC3VDKkQYJFRzHRjELMIfKrHb4WJvi1jOVQEuN256YtBXnp8XcVX7ukE4aIXATK;4:fTR1OAsmmUYjJLdTNAloiLeIRu8ltj4Jj4U8pL3Oru6RPcTtu8/ZkHxbS6Et6jAso6YscLLhniYK1+J0m8h8177G2+SPfz7IgOYI55TffJsnJEXr1XL5Qv8UGcJrIHAdCfXQA42WNmDnb8agwg5lpu5Bi9y1f8j8+sLWdbGGgTLu/2ohBNpY/hcwGNPBioO2dunOKQRemWh6d2gTPyi9lD+om68zGpNVtgPYkJZRkCbXMWMqOe55M/tFfmgfGUWKjWIRXpYtO5AzFFns9lRpYT6WARJE1h7bjQu+ucD6B7Y= 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)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123558100)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:BN3PR07MB2562;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:BN3PR07MB2562; X-Forefront-PRVS: 04583CED1A X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(6009001)(376002)(346002)(199003)(189002)(7416002)(4326008)(68736007)(3846002)(5003940100001)(33646002)(81156014)(105586002)(47776003)(25786009)(66066001)(106356001)(2906002)(86362001)(39060400002)(189998001)(8936002)(5660300001)(8676002)(2950100002)(6666003)(81166006)(6512007)(97736004)(50226002)(478600001)(36756003)(316002)(76176999)(50986999)(72206003)(53936002)(50466002)(6506006)(16586007)(305945005)(1076002)(16526018)(6116002)(6486002)(48376002)(101416001)(7736002)(5009440100003)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN3PR07MB2562;H:mypc.cavium.com.com;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN3PR07MB2562;23:Eb6ERk2SPAy98EyeTMHCWcbrpAftS0DCN8Qte0/U5?= =?us-ascii?Q?A1N5V+AYg5kDqJalbo2+RVZ/4gwcunJOh/aRPhsZ/E00EYHeTHoWksNoS4Ol?= =?us-ascii?Q?FiT4s1cpw+KwxWvfANOlS3RjCjfwX/55VkeLHjt83m7MOMQLoqm5uChAku0+?= =?us-ascii?Q?G4m0rJID8VDhPewKGYBu+ze7lV8sZJ3O+EJLHg820i5Bz24Xk9eP/+8D/gSk?= =?us-ascii?Q?sMPsE2TpH2CbA2KkYUhBYektSldLjsZ/3mVoQ3neUsfB5Es7AtgL9ZAvlIyt?= =?us-ascii?Q?Rk/ncOt/TzmCYYAaqz8s126yWE2AITOzIx7DSqqR25cazvLs8r90q0oTOw2X?= =?us-ascii?Q?KsNp9hLFbiAeXloe/uLN1ZjHyaTJXw5X18Jydjy9qUhqslT1bcmStzZvOPnP?= =?us-ascii?Q?HPBfJCbjk/+bu0jSHcHxboFFiB4eNIpxeVK/zEY7iJFGzew4692HXDAWT/4c?= =?us-ascii?Q?LVO1ykEz0K18TwbsN+MPEXn/Oi3vuIJuV7Nu9RgM5OTwwuvtIF6+WJj4wJwN?= =?us-ascii?Q?pEKAkHgx0TRzUXvDtj71asZjR0sMVADh9lnBnlC5In3nErMWEjhTh0+Ux7vb?= =?us-ascii?Q?JIX35/dgC9M95dW/f2kn0oSgI6zxC/odos7ZwHcxHvBIG9MrJdW8EVaE8tJ2?= =?us-ascii?Q?G8FlTBU0qKEgckQ/Vdy+bUkmdCOYETb29QGjv7w1symEttZRT+o3FDdelTqW?= =?us-ascii?Q?Z6EmD+gAnAoJ6QdYXoE67VTlWFEaE0GwxTJ5SHJMVHJyGlanDHCdCr9pUq47?= =?us-ascii?Q?AImmg4D9Xl5wAs5tR2eOsVSObs09KLpp46XGVC06xBdcjvFg0KLVa+rp/NMQ?= =?us-ascii?Q?s5KplD2+la/Aep5EieKgco3RS/MAAu0zO9nJO4Th7PKZgIU60d0J6qe56Xf8?= =?us-ascii?Q?BO0VfMVN5MsdyjmyZiGcxeQrP9oWGFlwaeA3hLcz/83+dSEKNKU30sc3Kj8V?= =?us-ascii?Q?rdyGEgO/8gBYXPDB/FTsqaoaYMyq/oX10gPoFr5JUbJc/zB+xa883LlGXKpl?= =?us-ascii?Q?Tp71lrtFUCe3RfcNOFNh+EN3FufTst2UfMrKCiqnNzH0lxxXmV2eTNknpwjH?= =?us-ascii?Q?7kEIBSxXw7Ndt9/TOyFJ9prxVvjk6BVJnixTj20AsykjiveMmJHY3QhL3T3m?= =?us-ascii?Q?FWzYk1XWUQFGyf5s9fV2XwMVxXYUiAO4GOJaWEDfk3PBUPTiIs2595uhF+k5?= =?us-ascii?Q?C7diB3ZZM+iu0s=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2562;6:Zd5McMXYwExEmxL7k8Zu8bAzEHMXvBSFRp/x+q7xVhRaZfwF0/AnsUgFdoeArL4O1ncFimUWR3QVoc0TzLWBD4trUTsgwKYNfqwXM+6HQws83v7qljhVxE6MValQU3w3WHnuQk8yY+WJ950EkSwgYOZ/IAcdALUwNnQ0PCZ+SAyDK8Cb2IpxW3Qssvm31kFlkDWORuOC/QtbwSt7AfZaf3ALLXAHstMn7YIzrBbM9OWeZEoN8XWf80CKNmalE9BgsM6MuMF7gkWJg2SKARqjM42p5jQGII4CuU5uZwGccJxY2Q01Fii65E5Y3iPIie0sNX9S4hyVGvCURXNJHeyOJA==;5:BZWvG23zq1EdBnzodyjcrQtE3ZMVgbWCs40o/n4I/ldBn+7koKNqtqyp4/nH97ai/E1TV6n4+LX4ewrrDZpjL/aerCRy9IBb3/AdQEIJiC9Roj55501EVJNIWbsHuKa+jQH/NdNfNzxl8e+O7KG6oA==;24:FWnK/ADqwGq5DMJAPLEKHllsJ0BagfeYQ94QVOe3R8HsN80jVwKnqP6knb4ic1dpCBKA4ec7LYnQX1hpCRVZoa/x8KsMXOLEgLfjRZ5ojH0=;7:GwRAhBMWClGzVkNDWaDPHlpV5a0c1AVaUGjebFTHZW4u8C8F1QjaFg7SqnuJWvecnZR7BtZRnvzZmw8EgRwbp4TR8Xmq4xeZhSnyJisYlgcDTTfOVunK4TsQJqQ+faNtCkBPaNsk7M96bl5pds0rtJH2oV7+8t5GATedqTqzWA6Z0BvNaXxr5QFXplDHsZ+2tvNqLUIT2j52/ItotEZvGoLa8KVUu0PCCtZXWsnfpBM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2017 10:35:24.5962 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR07MB2562 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On some platforms, PMU core devices sysfs name is not cpu. Adding function is_pmu_core to detect PMU core devices using core device specific hints in sysfs. For arm64 platforms, all core devices have file "cpus" in sysfs. Acked-by: Will Deacon Tested-by: Shaokun Zhang Signed-off-by: Ganapatrao Kulkarni --- tools/perf/util/pmu.c | 39 +++++++++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c index 18edf86..153f92d 100644 --- a/tools/perf/util/pmu.c +++ b/tools/perf/util/pmu.c @@ -506,6 +506,34 @@ static struct cpu_map *pmu_cpumask(const char *name) } /* + * PMU CORE devices have different name other than cpu in sysfs on some + * platforms. looking for possible sysfs files to identify as core device. + */ +static int is_pmu_core(const char *name) +{ + struct stat st; + char path[PATH_MAX]; + const char *sysfs = sysfs__mountpoint(); + + if (!sysfs) + return 0; + + /* Look for cpu sysfs (x86 and others) */ + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/cpu", sysfs); + if ((stat(path, &st) == 0) && + (strncmp(name, "cpu", strlen("cpu")) == 0)) + return 1; + + /* Look for cpu sysfs (specific to arm) */ + scnprintf(path, PATH_MAX, "%s/bus/event_source/devices/%s/cpus", + sysfs, name); + if (stat(path, &st) == 0) + return 1; + + return 0; +} + +/* * Return the CPU id as a raw string. * * Each architecture should provide a more precise id string that @@ -558,15 +586,18 @@ static void pmu_add_cpu_aliases(struct list_head *head, struct perf_pmu *pmu) */ i = 0; while (1) { - const char *pname; pe = &map->table[i++]; if (!pe->name) break; - pname = pe->pmu ? pe->pmu : "cpu"; - if (strncmp(pname, name, strlen(pname))) - continue; + if (!is_pmu_core(name)) { + /* check for uncore devices */ + if (pe->pmu == NULL) + continue; + if (strncmp(pe->pmu, name, strlen(pe->pmu))) + continue; + } /* need type casts to override 'const' */ __perf_pmu__new_alias(head, NULL, (char *)pe->name, -- 2.9.4