Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp3978393iob; Tue, 17 May 2022 11:04:34 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwzuBbyxm6A/VRKFgsQe1Sib1PO9MthPW5iXBBZKpgnOQpR01gMHxH6faUPh87Uc5v0LUtq X-Received: by 2002:a17:90b:3c50:b0:1df:7b1f:8b79 with SMTP id pm16-20020a17090b3c5000b001df7b1f8b79mr6867545pjb.71.1652810674653; Tue, 17 May 2022 11:04:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652810674; cv=none; d=google.com; s=arc-20160816; b=GJbHgmvVn+iMtop3r+bgG4nNTtT67nuHQ68hyzsd98Mn+SOwTwl4P3MEAS+RaOP0rQ ccQKXbnq76MB2UhDXxy7roKgtrbhOgZMjTy2iY5PJBDlW5r9r5sOAXEi9DpgGUiEnBy7 Z6rucBFYBdnAhGPUzoFmO9nYsumks0Y/5ZQtkO571N3P8gYoUNnQ1E0MfzmbxAnK0bVJ jZmBxBtfmvXvi+D9G2TgCCnq/Foxa95KYlJzoWO1VdQrpA1Xhsyem141Lzh25CPZg2la XTfepQS0wI2hWLhrvUFttVu44MtsbZejGdo3+l4roSRRFUcQdrEHl/jUeNMtHV/8klOy U6LA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=sRnfXSYNJUJ/uzGK+o/C3GsRxzWY0vhCFoq9VkXagiQ=; b=Kf10dg/uEF81lBtUqiZNmfRzWD1NFp53P6vA16S3wkiM+WJ/1BNG7ZoXXWRkfBJBIX KOnc2aFQPYThgS0S/B79zJu+/DBaWBkIOD6xDJ0cnKXfvLTmBCRwSE7Sa8JKQOyCq8le jsZOo7CwDXvUhIpyycV+yZjyJUJ6arOYABIlQIem0AO09UQMb4TnfulnDiodRluh3GqL 25gBrQKzGCDZ9U9DnE9Mmxwuv8Y2P/zig/RwEqt9pzhWWcNECXUsEOXI/P6G9NdFtzKj 8RBazDzpQs/BZt7VJHHVLHRQpd3VIooerqtRf4YvdlOfQOLy876FwgBeF/AFXoDUBPr+ XwfQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id pg12-20020a17090b1e0c00b001d95105b9f5si4165544pjb.90.2022.05.17.11.04.19; Tue, 17 May 2022 11:04:34 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245660AbiEQKW7 (ORCPT + 99 others); Tue, 17 May 2022 06:22:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46602 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1344852AbiEQKWA (ORCPT ); Tue, 17 May 2022 06:22:00 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 66EAC4BFF7; Tue, 17 May 2022 03:20:29 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 38CE312FC; Tue, 17 May 2022 03:20:29 -0700 (PDT) Received: from e121896.warwick.arm.com (e121896.warwick.arm.com [10.32.33.49]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id C5C413F66F; Tue, 17 May 2022 03:20:26 -0700 (PDT) From: James Clark To: linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, broonie@kernel.org, acme@kernel.org Cc: german.gomez@arm.com, leo.yan@linaro.org, mathieu.poirier@linaro.org, john.garry@huawei.com, James Clark , Will Deacon , Mike Leach , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 4/4] perf tools: arm64: Add support for VG register Date: Tue, 17 May 2022 11:20:05 +0100 Message-Id: <20220517102005.3022017-5-james.clark@arm.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20220517102005.3022017-1-james.clark@arm.com> References: <20220517102005.3022017-1-james.clark@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add the name of the VG register so it can be used in --user-regs The event will fail to open if the register is requested but not available so only add it to the mask if the kernel supports sve and also if it supports that specific register. Signed-off-by: James Clark --- tools/perf/arch/arm64/util/perf_regs.c | 34 ++++++++++++++++++++++++++ tools/perf/util/perf_regs.c | 2 ++ 2 files changed, 36 insertions(+) diff --git a/tools/perf/arch/arm64/util/perf_regs.c b/tools/perf/arch/arm64/util/perf_regs.c index 476b037eea1c..c0a921512a90 100644 --- a/tools/perf/arch/arm64/util/perf_regs.c +++ b/tools/perf/arch/arm64/util/perf_regs.c @@ -2,9 +2,11 @@ #include #include #include +#include #include #include +#include "../../../perf-sys.h" #include "../../../util/debug.h" #include "../../../util/event.h" #include "../../../util/perf_regs.h" @@ -43,6 +45,7 @@ const struct sample_reg sample_reg_masks[] = { SMPL_REG(lr, PERF_REG_ARM64_LR), SMPL_REG(sp, PERF_REG_ARM64_SP), SMPL_REG(pc, PERF_REG_ARM64_PC), + SMPL_REG(vg, PERF_REG_ARM64_VG), SMPL_REG_END }; @@ -131,3 +134,34 @@ int arch_sdt_arg_parse_op(char *old_op, char **new_op) return SDT_ARG_VALID; } + +uint64_t arch__user_reg_mask(void) +{ + struct perf_event_attr attr = { + .type = PERF_TYPE_HARDWARE, + .config = PERF_COUNT_HW_CPU_CYCLES, + .sample_type = PERF_SAMPLE_REGS_USER, + .disabled = 1, + .exclude_kernel = 1, + .sample_period = 1, + .sample_regs_user = PERF_REGS_MASK + }; + int fd; + + if (getauxval(AT_HWCAP) & HWCAP_SVE) + attr.sample_regs_user |= SMPL_REG_MASK(PERF_REG_ARM64_VG); + + /* + * Check if the pmu supports perf extended regs, before + * returning the register mask to sample. + */ + if (attr.sample_regs_user != PERF_REGS_MASK) { + event_attr_init(&attr); + fd = sys_perf_event_open(&attr, 0, -1, -1, 0); + if (fd != -1) { + close(fd); + return attr.sample_regs_user; + } + } + return PERF_REGS_MASK; +} diff --git a/tools/perf/util/perf_regs.c b/tools/perf/util/perf_regs.c index a982e40ee5a9..872dd3d38782 100644 --- a/tools/perf/util/perf_regs.c +++ b/tools/perf/util/perf_regs.c @@ -103,6 +103,8 @@ static const char *__perf_reg_name_arm64(int id) return "lr"; case PERF_REG_ARM64_PC: return "pc"; + case PERF_REG_ARM64_VG: + return "vg"; default: return NULL; } -- 2.28.0