Received: by 2002:a05:6358:9144:b0:117:f937:c515 with SMTP id r4csp5622111rwr; Mon, 24 Apr 2023 06:55:32 -0700 (PDT) X-Google-Smtp-Source: AKy350YUOeDv2MItmzmKhjPXtWTv84THqPv2Nz2D7OqNe3ByYJ+fXcZO6O+khGqB3Ymzvg91MLUy X-Received: by 2002:a05:6a20:4290:b0:f0:eb30:d49e with SMTP id o16-20020a056a20429000b000f0eb30d49emr18021323pzj.39.1682344532160; Mon, 24 Apr 2023 06:55:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1682344532; cv=none; d=google.com; s=arc-20160816; b=nB8ETpe6hq9rtMOZD9IqtPQwJM+CWyFHq7EdRL9s9rEezbalijFWpozbOHjoGLKcRp DLw9XzNxTes1lf8mwvxNACgFDKt7eq6MXrZIRAwM8NCKwUEfe8OarlPVnmxY+dcrio5n nhVVOfXtHk6CXOQ57ceryYqRZQjJN4na/CtmXzm158/jVyTmpWUKiMZxXDFv1D45b+RX /eIlGMg3f5SzCYTPRyjIRW/6YWVbHksKezd5kGLiiNF5Ju7GKWDFK8D9/edrVrsomUUL 9dCgrc7yJcQByF0PMKjXVFOWO+a/1DNtOqPJ6x0IeUaHzzPPlet/+Jfg5ZCfw/Y72kVz yb0Q== 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=AX3ERVb85AvPqBMVqJL7+888AG6OJjoDIwBIea14hRI=; b=LgXp+KArGEAhGf0ZO7AQeCsfxlbGGkmKW4HgWxb5VBKoSh+Ri3gqq00w1qNanFfgrb /cyDn3oDzLy9x27o2+tdqrYAAiuQ1zNsyMGxmuEIkuimxmB42KVpwyxXJZS8Oc0H7xlY +pEdL3QaUoGE6x/gh+OD2CZcksdwPyqNCgoe619MQySmzMl5q8RZOrsCP67IzIsz1Ob/ aq16cdjUBH0ZuvRt/KjTE4bS7VyYujegNBZm4fUOQ7bHyGyQn9YvyqTJuPH5BNIwT5TO sCJa0pRYLVekwR5NTPqUZhzvlfc7bIfXKnmj96ny8T0D/KSM0lAOUtvhIQuOIek7Wqpg LUKA== 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 w2-20020a634902000000b0051b810a9d5fsi11666768pga.384.2023.04.24.06.55.20; Mon, 24 Apr 2023 06:55:32 -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 S232730AbjDXNsL (ORCPT + 99 others); Mon, 24 Apr 2023 09:48:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232124AbjDXNsF (ORCPT ); Mon, 24 Apr 2023 09:48:05 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 6B2957AB5; Mon, 24 Apr 2023 06:48:04 -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 11D33FEC; Mon, 24 Apr 2023 06:48:48 -0700 (PDT) Received: from e127643.arm.com (unknown [10.57.58.229]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id F007E3F64C; Mon, 24 Apr 2023 06:48:00 -0700 (PDT) From: James Clark To: linux-perf-users@vger.kernel.org, coresight@lists.linaro.org, shy828301@gmail.com Cc: denik@google.com, James Clark , Mathieu Poirier , Suzuki K Poulose , Mike Leach , Leo Yan , John Garry , Will Deacon , Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Namhyung Kim , Ian Rogers , Adrian Hunter , linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/7] perf: cs-etm: Fix timeless decode mode detection Date: Mon, 24 Apr 2023 14:47:41 +0100 Message-Id: <20230424134748.228137-2-james.clark@arm.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230424134748.228137-1-james.clark@arm.com> References: <20230424134748.228137-1-james.clark@arm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,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 In this context, timeless refers to the trace data rather than the perf event data. But when detecting whether there are timestamps in the trace data or not, the presence of a timestamp flag on any perf event is used. Since commit f42c0ce573df ("perf record: Always get text_poke events with --kcore option") timestamps were added to a tracking event when --kcore is used which breaks this detection mechanism. Fix it by detecting if trace timestamps exist by looking at the ETM config flags. This would have always been a more accurate way of doing it anyway. This fixes the following error message when using --kcore with Coresight: $ perf record --kcore -e cs_etm// --per-thread $ perf report The perf.data/data data has no samples! Fixes: f42c0ce573df ("perf record: Always get text_poke events with --kcore option") Reported-by: Yang Shi Link: https://lore.kernel.org/lkml/CAHbLzkrJQTrYBtPkf=jf3OpQ-yBcJe7XkvQstX9j2frz4WF-SQ@mail.gmail.com/ Signed-off-by: James Clark --- tools/perf/util/cs-etm.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/tools/perf/util/cs-etm.c b/tools/perf/util/cs-etm.c index 8dd81ddd9e4e..50593289d53c 100644 --- a/tools/perf/util/cs-etm.c +++ b/tools/perf/util/cs-etm.c @@ -2684,26 +2684,29 @@ static int cs_etm__process_auxtrace_event(struct perf_session *session, return 0; } -static bool cs_etm__is_timeless_decoding(struct cs_etm_auxtrace *etm) +static int cs_etm__setup_timeless_decoding(struct cs_etm_auxtrace *etm) { struct evsel *evsel; struct evlist *evlist = etm->session->evlist; - bool timeless_decoding = true; /* Override timeless mode with user input from --itrace=Z */ - if (etm->synth_opts.timeless_decoding) - return true; + if (etm->synth_opts.timeless_decoding) { + etm->timeless_decoding = true; + return 0; + } /* - * Circle through the list of event and complain if we find one - * with the time bit set. + * Find the cs_etm evsel and look at what its timestamp setting was */ - evlist__for_each_entry(evlist, evsel) { - if ((evsel->core.attr.sample_type & PERF_SAMPLE_TIME)) - timeless_decoding = false; - } + evlist__for_each_entry(evlist, evsel) + if (cs_etm__evsel_is_auxtrace(etm->session, evsel)) { + etm->timeless_decoding = + !(evsel->core.attr.config & BIT(ETM_OPT_TS)); + return 0; + } - return timeless_decoding; + pr_err("CS ETM: Couldn't find ETM evsel\n"); + return -EINVAL; } /* @@ -3155,7 +3158,6 @@ int cs_etm__process_auxtrace_info_full(union perf_event *event, etm->snapshot_mode = (ptr[CS_ETM_SNAPSHOT] != 0); etm->metadata = metadata; etm->auxtrace_type = auxtrace_info->type; - etm->timeless_decoding = cs_etm__is_timeless_decoding(etm); /* Use virtual timestamps if all ETMs report ts_source = 1 */ etm->has_virtual_ts = cs_etm__has_virtual_ts(metadata, num_cpu); @@ -3172,6 +3174,10 @@ int cs_etm__process_auxtrace_info_full(union perf_event *event, etm->auxtrace.evsel_is_auxtrace = cs_etm__evsel_is_auxtrace; session->auxtrace = &etm->auxtrace; + err = cs_etm__setup_timeless_decoding(etm); + if (err) + return err; + etm->unknown_thread = thread__new(999999999, 999999999); if (!etm->unknown_thread) { err = -ENOMEM; -- 2.34.1