Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp873106pxf; Wed, 7 Apr 2021 13:50:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwe08b4W5+VJSrmj6k58mkWn06+xqUKEHav5ran5WsmS8nUvdNh6U/KmJbf82r9io1uNuQC X-Received: by 2002:a05:6402:31b4:: with SMTP id dj20mr6808207edb.45.1617828642835; Wed, 07 Apr 2021 13:50:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1617828642; cv=none; d=google.com; s=arc-20160816; b=tc5PyqLDo2eoIqIlQHw4ek0gBp1tTPgyqldyAoYEp1EGz2yY+1B4pUEhO6dLHvI0sG CmhMmV2DtWaybCocPf/KuZDjD5LxhZQu886VGsMH20auurN28fhZzsjllSNi/9pI0gYN W0Jz03OJ7OZ4IVhRigIMQ8XqzOju5aMxP7BywJdhZSZKQvzcQ3cNeDq6i4QyAqajZ2Qh WAze0RkDgSdcaDMuJSzyy2cXU6AmRwMR4tO98nXc4SelDemZAxjoDy6lEDNDqvZX/TRI DRju4ByE45TxeI+LX54y1s1um9CDs4sNHpt3b7o3GEt91JazsEkX74f3yM/K0UmGfw8M ULyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:message-id:date:subject:cc:to:from; bh=ixwFX6HZT4IbtzeyPOaw5ZMhIjxEiB9BpTzSyT14MF0=; b=xzorZtESB2wwKvdqru/xoYPw1XIpcKioWTg2Iw54+BcuMCiyNZM35yvJOyufysMkKP KD9wuwrpZ81sQCGlaUZSmRf/AQQygLNJio1EHbemOhmCkZG1iH7rJNIdcQxD2MfIRuNO oiAIaWPap34Lom1AssxyT69rUIh+zmjy74Xz1HtPcucHbPi5qIv7wW92lKCO/Vp3ZQuX AUymY/F3Jl9bI8AYxxpj2Eo5RuOBnUEUI10dGHZFy2CDflLXVNC7Z8I+zLkrX8E4sH7D Kqr8c/hrk8C2/FYToTaEYT1k1d0P8zpHQiDf+P0OikAtvkzP7s8UqcySaR6f2/ux2r5g NCLw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id i33si21611294edd.421.2021.04.07.13.50.19; Wed, 07 Apr 2021 13:50:42 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=huawei.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1351130AbhDGKhg (ORCPT + 99 others); Wed, 7 Apr 2021 06:37:36 -0400 Received: from szxga06-in.huawei.com ([45.249.212.32]:16385 "EHLO szxga06-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1351055AbhDGKhb (ORCPT ); Wed, 7 Apr 2021 06:37:31 -0400 Received: from DGGEMS403-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4FFglR2G6JzjYhj; Wed, 7 Apr 2021 18:35:31 +0800 (CST) Received: from localhost.localdomain (10.69.192.58) by DGGEMS403-HUB.china.huawei.com (10.3.19.203) with Microsoft SMTP Server id 14.3.498.0; Wed, 7 Apr 2021 18:37:10 +0800 From: John Garry To: , , , , , , , , , , CC: , , , , , , , John Garry Subject: [PATCH v3 0/6] perf arm64 metricgroup support Date: Wed, 7 Apr 2021 18:32:44 +0800 Message-ID: <1617791570-165223-1-git-send-email-john.garry@huawei.com> X-Mailer: git-send-email 2.8.1 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.69.192.58] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series contains support to get basic metricgroups working for arm64 CPUs. Initial support is added for HiSilicon hip08 platform. Some sample usage on Huawei D06 board: $ ./perf list metric List of pre-defined events (to be used in -e): Metrics: bp_misp_flush [BP misp flush L3 topdown metric] branch_mispredicts [Branch mispredicts L2 topdown metric] core_bound [Core bound L2 topdown metric] divider [Divider L3 topdown metric] exe_ports_util [EXE ports util L3 topdown metric] fetch_bandwidth_bound [Fetch bandwidth bound L2 topdown metric] fetch_latency_bound [Fetch latency bound L2 topdown metric] fsu_stall [FSU stall L3 topdown metric] idle_by_icache_miss $ sudo ./perf stat -v -M core_bound sleep 1 Using CPUID 0x00000000480fd010 metric expr (exe_stall_cycle - (mem_stall_anyload + armv8_pmuv3_0@event\=0x7005@)) / cpu_cycles for core_bound found event cpu_cycles found event armv8_pmuv3_0/event=0x7005/ found event exe_stall_cycle found event mem_stall_anyload adding {cpu_cycles -> armv8_pmuv3_0/event=0x7001/ mem_stall_anyload -> armv8_pmuv3_0/event=0x7004/ Control descriptor is not initialized cpu_cycles: 989433 385050 385050 armv8_pmuv3_0/event=0x7005/: 19207 385050 385050 exe_stall_cycle: 900825 385050 385050 mem_stall_anyload: 253516 385050 385050 Performance counter stats for 'sleep': 989,433 cpu_cycles # 0.63 core_bound 19,207 armv8_pmuv3_0/event=0x7005/ 900,825 exe_stall_cycle 253,516 mem_stall_anyload 0.000805809 seconds time elapsed 0.000875000 seconds user 0.000000000 seconds sys perf stat --topdown is not supported, as this requires the CPU PMU to expose (alias) events for the TopDown L1 metrics from sysfs, which arm does not do. To get that to work, we probably need to make perf use the pmu-events cpumap to learn about those alias events. Metric reuse support is added for pmu-events parse metric testcase. This had been broken on power9 recently: https://lore.kernel.org/lkml/20210324015418.GC8931@li-24c3614c-2adc-11b2-a85c-85f334518bdb.ibm.com/ Differences to v2: - Add TB and RB tags (Thanks!) - Rename metricgroup__find_metric() from metricgroup_find_metric() - Change resolve_metric_simple() to rescan after any insert Differences to v1: - Add pmu_events_map__find() as arm64-specific function - Fix metric reuse for pmu-events parse metric testcase John Garry (6): perf metricgroup: Make find_metric() public with name change perf test: Handle metric reuse in pmu-events parsing test perf pmu: Add pmu_events_map__find() perf vendor events arm64: Add Hisi hip08 L1 metrics perf vendor events arm64: Add Hisi hip08 L2 metrics perf vendor events arm64: Add Hisi hip08 L3 metrics tools/perf/arch/arm64/util/Build | 1 + tools/perf/arch/arm64/util/pmu.c | 25 ++ .../arch/arm64/hisilicon/hip08/metrics.json | 233 ++++++++++++++++++ tools/perf/tests/pmu-events.c | 83 ++++++- tools/perf/util/metricgroup.c | 12 +- tools/perf/util/metricgroup.h | 3 +- tools/perf/util/pmu.c | 5 + tools/perf/util/pmu.h | 1 + tools/perf/util/s390-sample-raw.c | 4 +- 9 files changed, 356 insertions(+), 11 deletions(-) create mode 100644 tools/perf/arch/arm64/util/pmu.c create mode 100644 tools/perf/pmu-events/arch/arm64/hisilicon/hip08/metrics.json -- 2.26.2