From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753221AbdJLKfi (ORCPT ); Thu, 12 Oct 2017 06:35:38 -0400 Received: from mail-dm3nam03on0053.outbound.protection.outlook.com ([104.47.41.53]:62176 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751418AbdJLKf0 (ORCPT ); Thu, 12 Oct 2017 06:35:26 -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 2/4] perf tools arm64: Add support for get_cpuid_str function. Date: Thu, 12 Oct 2017 16:04:17 +0530 Message-Id: <20171012103419.29824-3-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: d2c419b5-677c-4b00-930d-08d5115cf217 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075);SRVR:BN3PR07MB2562; X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2562;3:1aoLav+poZy5stT7Sk6FQuenAai7I+LepkTmbOYkCmlesWc8Ytv/NFsjW25iv9iM5wGnprA0cHY6Yn3ap4igBNefOhSQnJu6j3eV0UiUVLfFnROL7yLQvrCLEFD6qAesfAQKd6b3cWFwXdX2pneHGuJfYsQFcVvZzCgeGJjJRi+lSlpkxmw5O3h8Y0IcKLhrruBsFYlr27GqY1V0UzrcUfNqlLnaM0gduN+nVtCUraz7iHoEdaNgn0/DYcDcu7Ib;25:zuSGMke/qjvlXyfAIALsl7pYE+0hbQvxz9OjvwUcMGOvUuKaJRwDmT9uwc+C8NTqlA/7bPZu5RDspoCGFufq8HrWRU3zmxxzBLHbRee0gYGz7dT1aQ+JjcS19bhs1/AUleQWGfjavA1S9DmEvguhx8iZgM3tQcrDjzP2Ker18HuhGcEp1TROAxK2WbgPj04X1gjihOPYd9l3G6pdl54ehdZjxZqhKyNkxic6YUc6W+WgU8oO1Se50uU90BZZxuhtzSxKBsotZlSve2JgrcVDwhpzEVcuBCJMXv1F7JwRvvmKgm/IPknTZuq1UaoWZWsCdNluxE+LTzEzosv00hXd2A==;31:OfM6+eiiQk8DhHRIrH71FcPwogtwlLZKBOs0nnQDbXVM7kzWoOuQ9D05AXlSwNUBjv7mBbk6/RL8pF8OotyrgqYM5yebnVRvrsVfTaJ2mfHwVEmaKtLtQig2v+1OEUsXxzr4E16cOCvsbqWnFjmviqJYa+kxt2HpzUlU0sifyRc/YGulEXS3LTZOk9E8Q0ZjAcq49KdQIW+UL0GCNhkPo62sSkEZ2oyUOPyaoBj+bCE= X-MS-TrafficTypeDiagnostic: BN3PR07MB2562: X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2562;20:N1RK+OSt15fT2cRG0LV0ZoPNm4cnTM37TdYGuXnYTzBl/DbtQbvIXJ/a5D+w/BYyaCWesH2AGcWv3uMr+vt7QEH3kxV0nAl3HsAoQrH7i9Bu93qohVwnIG9/uzBV9vL/aJCv5Nshq6EWos+TirA2INcO3/9ZxXarHxlM1YITvRcuCqtkOtdqA9Bk98mvhyuEEXNoDzzZxf2zTMvUQ2FofBGMBlB/mjp1ZXRU2UdxCJSCcn+NwMeWpbCQONv/zeygQYuCPAvBUXzFD5bMSyWjO1qMBHSpM9hGpAqxcOEYfXl7c1TtUfNEBib8TZqoNBs3VBkr+nw2NO13hR7SJyjCjMDO4tM2vTtstG82BZik4fHEN2mG36qXxBa2Xg2B2fdebnQVsANcz8I6wAukHsmYUm5DkJJtVZ7BpScUsOYNPFVq9xxfkBp+NkY4uCNQVhu1gnZhc5jR1L+HNp+7GgEhpX3aGnHu+vteI9NFXEABpt6IKCH4TH1UCQKBaZgo2/m6;4:CoP2wvUZEA011HjkZrExh9BTpDxTMME/v3V+CIIkL1qjKlGWyMOaOr7DRDpLrYlmXdBRYFwg3JVpCsODBrQYQsu2Hps3zmXe8AvHuIxsyZT3/S2FSIS/7Q73RqffXc0KdoBOAb168IZEu+LRDCtdx4zdMbnvUTQnjEtnB99sPOFDcqNRSKq9Kvb7cpuzgN2YrIiTkV49NPgEs+NLCl2GzN+Q3F21U9SLvhahxG+1knfnhFUBp7B7pnajSrl68n9z80KgkfnKWZK0fOgzZ2M/5otv/+oC3s5kZ9vssBQTH7g= X-Exchange-Antispam-Report-Test: UriScan:(209352067349851); 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)(81166006)(6512007)(97736004)(50226002)(478600001)(36756003)(316002)(76176999)(50986999)(72206003)(53936002)(50466002)(6506006)(16586007)(305945005)(1076002)(16526018)(6116002)(6486002)(48376002)(101416001)(7736002)(5009440100003);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:+DlYaxRxEmW1UX9RaVsNERM2PALZ657EiziZT7suW?= =?us-ascii?Q?m9e+0nCul4rd/WRYCCTFIx7COvebeWlFmtq2s6TF7d3q7JCA8/ux/5EF8qTU?= =?us-ascii?Q?x0hIICqQIFCLtn5kmusYELSTZTs0KGc4H9jTV1T5HkltJP+Lvh4KeOhwRRvs?= =?us-ascii?Q?PD+HBBsKoFZBlHYMgyJtTAvy5La9GXYbLR5izyt//2w0bxjE4lUNo/qBEBvX?= =?us-ascii?Q?uToDcZsTijlfYSNaKgU3eI4dTCW+9D2dp4BM3EVIRm/InF05U8dN0HAoCDyK?= =?us-ascii?Q?M0VEoH2jdcdj92nuLhnKPrKFHB84+c5ILynw4HlD2wgo3//aHOnymDzxbq6G?= =?us-ascii?Q?zFZZhCa0WTHBQLf8ByKzueytDbdJ0apswObQ6/7Msx0jmJhbu7y6hin4dbLQ?= =?us-ascii?Q?GXb1H8UlokGSjZMQ7IumKC0YgHNo4berdAZmfmMAfQhWcxOk6Fo/zSleWzCF?= =?us-ascii?Q?gAAAHbUkQ8F0cucxE6zLAF2s04oecXWValQY0dtLkVNBcA5WXAXIFtlf7wne?= =?us-ascii?Q?VXVAp3/Kk0Z6o1M2uDbYjZoDQwbm9eocZBcHlBsowA9I6ztl+NJYgD3NMgeF?= =?us-ascii?Q?qgSdSnQtOKQyiyAbkzUu6Z7yrvJdjkDPMcuaZ45DG4c+oQB0O6Rj9P60fBY8?= =?us-ascii?Q?ksCraRan7G3mt9VacLZhQhXezbGC1yEeAzqGUr0HLhq0MSWok7h98yn6WDwL?= =?us-ascii?Q?Ep0Z9sX+z+bbpev8JkJb6gmIslDcRv529rRMW8PYtKiObhX0Fh7HouBEbon6?= =?us-ascii?Q?uKBuNIEhA+XDz9P1/jzyANxLV3FpBLrCs12weMRRHlEl9SIYJX1//1Gj30Rc?= =?us-ascii?Q?BT1Boe3gf2JHS4OAtpH94SW+6RMg5mLrj5ytr5p5BRixxDu0b2WtiQq1Yv3o?= =?us-ascii?Q?Uy3WeXuaXN6NGogQIY1LExCyoZ5jDzHNg3odr4fpfJoi4yCGttH8rlfTBEM4?= =?us-ascii?Q?lKPacr7T+hJBE5ZxpLau7/ZX8oSdtdkKgeiU6lG6tgwS9L7J4eoj9Ac6AeBd?= =?us-ascii?Q?RXtIIiU13ynCV17hf4kl+Idw9bSp1t201I49r0V470eOtblmRm3jqKSf3CB+?= =?us-ascii?Q?B3x+95Xf85j9aKozKvqpaeauYTJV01/B+Yl01EShrxV3oT7aooIw5YLjX/u5?= =?us-ascii?Q?wZMBvdCCJbga3zfxkryPn3y5hL8E+m5?= X-Microsoft-Exchange-Diagnostics: 1;BN3PR07MB2562;6:KNcc/MzSCufhx2JzaSIurDIwFGuzSgRx7rcylmYAAOmdBchf5Ru6uiLG7icoMkL4p8hbCIaAih4IY6iHMaPz3ASJVy6CbDlI2vZU2RRHfpK3LctpN9MdMTpu5g/Mbv1upIFoPJ9IgOhCCSFZAqiUmIP4FcIlNHDenq6zBEX1rRQaiM3W698q8mlgnmmYBVpexbtJUkVqOm2OmyykRZBB/7RFxP5Bb9v8EmGRaWRK2nqLV6hCIndgVQbA96IGLK4rFRMv82duynwu2ms27tgkwkMzfOicniUxvFvNpXKluFZVLB6bs9qHW7vss1HgtiFEs+QUFvPNmmIL4N66IM1+Lg==;5:WXOarZrNzKQmme/LVibVP8u5RlSoh4itbZeaORMRekl/ZWXdYON5vkYySvZL4jJHSpccx4+E7VpeBm6IE++moRbdatBrY9mVXqBPM7cvG8FjXVqSUwG5OqjVhVWa4Ct2wfk3W2opl7Gmi09CtY+IdQ==;24:vVDQajPrBj1+fwfHsynKkJOejKJlsC4HOKpbGvlHABZO733SyxlGzUC7r1y0HQdlrW2vs+AhVj5j0h0AAugItOGnH7mFfcSq/A35f9ObtTU=;7:mWpQhdV2TLaqttDfJcgMIoAlFBezLYGtgJrnx/rR9FBQEvLNdlR1zVXKw18GmzJguLmJZjSTdHwttaEVMeKKEL0VxhW86qV4P3tnThZQwJPE50NczSrwiQD8kIExjdz7UXvx3HJxTOI/n281kpoQHYJkSjFj22EYFHFMD3RQND+wU89jft1pbr11LtJQw4YpJLKOid7IWmDLClfdstQ6QdllKLuSGViOM1H8sy1BXTc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Oct 2017 10:35:19.3306 (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 function get_cpuid_str returns MIDR string of the first online cpu from the range of cpus associated with the pmu core device. Signed-off-by: Ganapatrao Kulkarni --- tools/perf/arch/arm64/util/Build | 1 + tools/perf/arch/arm64/util/header.c | 65 +++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) create mode 100644 tools/perf/arch/arm64/util/header.c diff --git a/tools/perf/arch/arm64/util/Build b/tools/perf/arch/arm64/util/Build index cef6fb3..b1ab72d 100644 --- a/tools/perf/arch/arm64/util/Build +++ b/tools/perf/arch/arm64/util/Build @@ -1,3 +1,4 @@ +libperf-y += header.o libperf-$(CONFIG_DWARF) += dwarf-regs.o libperf-$(CONFIG_LOCAL_LIBUNWIND) += unwind-libunwind.o diff --git a/tools/perf/arch/arm64/util/header.c b/tools/perf/arch/arm64/util/header.c new file mode 100644 index 0000000..74567d7 --- /dev/null +++ b/tools/perf/arch/arm64/util/header.c @@ -0,0 +1,65 @@ +#include +#include +#include +#include "header.h" + +#define MIDR "/regs/identification/midr_el1" +#define MIDR_SIZE 19 +#define MIDR_REVISION_MASK 0xf +#define MIDR_VARIANT_SHIFT 20 +#define MIDR_VARIANT_MASK (0xf << MIDR_VARIANT_SHIFT) + +char *get_cpuid_str(struct perf_pmu *pmu) +{ + char *buf = NULL; + char path[PATH_MAX]; + const char *sysfs = sysfs__mountpoint(); + int cpu; + u64 midr = 0; + struct cpu_map *cpus; + FILE *file; + + if (!sysfs || !pmu->cpus) + return NULL; + + buf = malloc(MIDR_SIZE); + if (!buf) + return NULL; + + /* read midr from list of cpus mapped to this pmu */ + cpus = cpu_map__get(pmu->cpus); + for (cpu = 0; cpu < cpus->nr; cpu++) { + scnprintf(path, PATH_MAX, "%s/devices/system/cpu/cpu%d"MIDR, + sysfs, cpus->map[cpu]); + + file = fopen(path, "r"); + if (!file) { + pr_debug("fopen failed for file %s\n", path); + continue; + } + + if (!fgets(buf, MIDR_SIZE, file)) { + fclose(file); + continue; + } + fclose(file); + + /* Ignore/clear Variant[23:20] and + * Revision[3:0] of MIDR + */ + midr = strtoul(buf, NULL, 16); + midr &= (~(MIDR_VARIANT_MASK | MIDR_REVISION_MASK)); + scnprintf(buf, MIDR_SIZE, "0x%016lx", midr); + /* got midr break loop */ + break; + } + + if (!midr) { + pr_err("failed to get cpuid string for PMU %s\n", pmu->name); + free(buf); + buf = NULL; + } + + cpu_map__put(cpus); + return buf; +} -- 2.9.4