From patchwork Mon Dec 21 08:35:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Leo Yan X-Patchwork-Id: 11984341 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.9 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6066C433E0 for ; Mon, 21 Dec 2020 08:38:37 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 8BF9E22BF5 for ; Mon, 21 Dec 2020 08:38:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 8BF9E22BF5 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linaro.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:MIME-Version:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:References:In-Reply-To:Message-Id:Date:Subject:To: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=fmryfqzKjAmfg1cTmYxxMMvk/vj4DkHbTjQlDPONaaM=; b=KFnQUHrhicKOrmiPTKtVFTPuTu Y4XIQh0xEVWp3Y7c/HfbEihq32HQv7ZfwlZZEoRnmU12ReLdPbUf6v6K9RQR8PZdqAxA8/B9LVkt6 Fyqh/lp8cMlRA6WSJQ/5fM3WC3h46XHXcsg+LvVD4Xpj1lm0fVQQXwnIOdCzcWEmL0kqteo+PAgQx 5rpjmrbbCFq0mLhzL2dH83k70l1WtrV+kmaG7W/b1/R7gB5ZKZSZ1H+1p2ZbCWnZWQCKaULok4qH/ 0GPW/RxKY5C/TkmH3SjRMLk0yqwbPlHrN1D95ILrT7+rGRNsNvkDbqfPONKkbP5kc6TayWa3ovJ3U yJVT193w==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1krGgs-0008Pj-M4; Mon, 21 Dec 2020 08:37:14 +0000 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1krGgj-0008Mt-KF for linux-arm-kernel@lists.infradead.org; Mon, 21 Dec 2020 08:37:07 +0000 Received: by mail-pg1-x530.google.com with SMTP id n25so432950pgb.0 for ; Mon, 21 Dec 2020 00:37:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EtaTARPLuxNd9yp7QOmPqgryVFCnyqjIqUr945Fpm/U=; b=adTqsf41W1IW0di11ZD1Aozlf9hvO+JSqVMUy9TvF9zw/wIYkPvXQFgSto+anIhJpN yWd2zanu2jvlI7K1GhyQWD1VvDAVVg04lK7WAXYGiGwzp1KGSWrLQTamRRNRVgva2ndO +wHp+tjs/GmYf/H1K5ZN8F8nsfGBXijXBbjVnElD/A0uCAAtAMYdv7HlUB+clZ5zkjcM abmovTSca4qJx0QrRKtYP0+YPCcaMWAdHS6CO6vrOniD//R+7XDho+48mY2zF/5dJSRP NwLmYSIcMPbETBcilvSdOIAl0G/kDFABI/58WIPpgecnJYT1ohOlWRI359PeYyiq5c3o 6fFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EtaTARPLuxNd9yp7QOmPqgryVFCnyqjIqUr945Fpm/U=; b=QiuLqgy4FRAIo6Nj0TKMV8iiKj8m7TS/lnZQ7PhOTDjGi+enF76qO/lZDXz+c3GqcX E/uSNtksQ3sX8KRaNIqpzgz0tuD5AULcrm42XE2UsLqCXyZGkJicvS33x9IKfPZOxkP0 s596fgusfa1XJ1q/eDMBlq3n9CiSwJXR3Mgl8mLG3v/eOgPm0KxBla4UcVw4ZdSM5srr KLY9hEokpkx9rXVaJOKwmkzCzcoronouGZP29Tpha4YBVeRLow8l6jok4Lpm3FM8Kqj6 1jv6u5OOJAQ70jUOFIUrk1M559wyufPwhWAxU0DhQgeFl7apmKvDJVWtY7PafaMk5S3v /2zw== X-Gm-Message-State: AOAM53296X0iVO6Zk8VNLBpsnmpSDWVnphufPh7wsb+VXvTOsi4SvCpQ LndCPXmWXlEwjN+xzLUGgmFBWw== X-Google-Smtp-Source: ABdhPJytiJsACVWxT0kxl3mc0RzjMi7VsHso1i74DuxZwVmga5xAG3E5RrWRu2UsxhF7EYvPvKyP/Q== X-Received: by 2002:a63:1959:: with SMTP id 25mr14541289pgz.201.1608539823720; Mon, 21 Dec 2020 00:37:03 -0800 (PST) Received: from localhost ([45.137.216.7]) by smtp.gmail.com with ESMTPSA id a18sm15449664pfg.107.2020.12.21.00.37.02 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 21 Dec 2020 00:37:03 -0800 (PST) From: Leo Yan To: Arnaldo Carvalho de Melo , John Garry , Will Deacon , Mathieu Poirier , Peter Zijlstra , Ingo Molnar , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Adrian Hunter , Ian Rogers , James Clark , Dave Martin , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v1 2/7] perf arm-spe: Store TSC parameters in auxtrace info Date: Mon, 21 Dec 2020 16:35:52 +0800 Message-Id: <20201221083557.27642-3-leo.yan@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20201221083557.27642-1-leo.yan@linaro.org> References: <20201221083557.27642-1-leo.yan@linaro.org> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201221_033705_762675_FE06CBA6 X-CRM114-Status: GOOD ( 18.57 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Leo Yan MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org The TSC parameters are used for conversion between arch timer counter and kernel timestamp, this patch stores the parameters into the struct perf_record_auxtrace_info, and it is saved in perf data file. Signed-off-by: Leo Yan --- tools/perf/arch/arm64/util/arm-spe.c | 23 +++++++++++++++++++++++ tools/perf/util/arm-spe.h | 6 ++++++ 2 files changed, 29 insertions(+) diff --git a/tools/perf/arch/arm64/util/arm-spe.c b/tools/perf/arch/arm64/util/arm-spe.c index 414c8a5584b1..dd940cf16f49 100644 --- a/tools/perf/arch/arm64/util/arm-spe.c +++ b/tools/perf/arch/arm64/util/arm-spe.c @@ -15,7 +15,9 @@ #include "../../../util/event.h" #include "../../../util/evsel.h" #include "../../../util/evlist.h" +#include "../../../util/mmap.h" #include "../../../util/session.h" +#include "../../../util/tsc.h" #include // page_size #include "../../../util/pmu.h" #include "../../../util/debug.h" @@ -47,6 +49,9 @@ static int arm_spe_info_fill(struct auxtrace_record *itr, struct arm_spe_recording *sper = container_of(itr, struct arm_spe_recording, itr); struct perf_pmu *arm_spe_pmu = sper->arm_spe_pmu; + struct perf_event_mmap_page *pc; + struct perf_tsc_conversion tc = { .time_mult = 0, }; + int err; if (priv_size != ARM_SPE_AUXTRACE_PRIV_SIZE) return -EINVAL; @@ -54,8 +59,26 @@ static int arm_spe_info_fill(struct auxtrace_record *itr, if (!session->evlist->core.nr_mmaps) return -EINVAL; + pc = session->evlist->mmap[0].core.base; + if (pc) { + err = perf_read_tsc_conversion(pc, &tc); + if (err) { + if (err != -EOPNOTSUPP) + return err; + } + + if (!tc.time_mult) + ui__warning("Arm SPE: arch timer not available\n"); + } + auxtrace_info->type = PERF_AUXTRACE_ARM_SPE; auxtrace_info->priv[ARM_SPE_PMU_TYPE] = arm_spe_pmu->type; + auxtrace_info->priv[ARM_SPE_TIME_SHIFT] = tc.time_shift; + auxtrace_info->priv[ARM_SPE_TIME_MULT] = tc.time_mult; + auxtrace_info->priv[ARM_SPE_TIME_ZERO] = tc.time_zero; + auxtrace_info->priv[ARM_SPE_TIME_CYCLES] = tc.time_cycles; + auxtrace_info->priv[ARM_SPE_TIME_MASK] = tc.time_mask; + auxtrace_info->priv[ARM_SPE_CAP_USER_TIME_SHORT] = tc.cap_user_time_short; return 0; } diff --git a/tools/perf/util/arm-spe.h b/tools/perf/util/arm-spe.h index 105ce0ea0a01..5bf3e838d226 100644 --- a/tools/perf/util/arm-spe.h +++ b/tools/perf/util/arm-spe.h @@ -11,6 +11,12 @@ enum { ARM_SPE_PMU_TYPE, + ARM_SPE_TIME_SHIFT, + ARM_SPE_TIME_MULT, + ARM_SPE_TIME_ZERO, + ARM_SPE_TIME_CYCLES, + ARM_SPE_TIME_MASK, + ARM_SPE_CAP_USER_TIME_SHORT, ARM_SPE_AUXTRACE_PRIV_MAX, };