From mboxrd@z Thu Jan 1 00:00:00 1970 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=-10.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 134EFC5B578 for ; Tue, 2 Jul 2019 02:28:33 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id DCA482186A for ; Tue, 2 Jul 2019 02:28:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1562034512; bh=A889iXTdPC4n4ajMCNbDuzhf+q+8gZ8KYVXv29JVgBA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=yfh/olGSNGiHc2QL7fvwg1M8O5MOHU5z41wcHhKebiVFvHVUZ5LxwrDjMDhBsqAmL iLMT3hK21xDndkigZK2QLm0tUXzPWnd0pKqY15+zXUtK8KgltJisgJh1NqfcvWE7Q9 zwnocPm9bwfxepERX6jYgmJQiWTJ4gI5Qsm6S4Ao= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727627AbfGBC2b (ORCPT ); Mon, 1 Jul 2019 22:28:31 -0400 Received: from mail.kernel.org ([198.145.29.99]:40924 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727197AbfGBC23 (ORCPT ); Mon, 1 Jul 2019 22:28:29 -0400 Received: from quaco.ghostprotocols.net (unknown [179.97.35.11]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 6BC2521841; Tue, 2 Jul 2019 02:28:26 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1562034508; bh=A889iXTdPC4n4ajMCNbDuzhf+q+8gZ8KYVXv29JVgBA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=WKLBMG2SDUJrK9cry3NqJJvA0DUkNGXTWIxY5BZiEUcKAW81yLA1qHlAjB2mYzMT2 us3Mvon+zev5xk/2NZ9MfhHZ66GB15oaeqKRrNna0oXy7LRPh588sY0KGZbyIUiD1X +Sp+zSfl5ZdfJJcX/h5HOI0EX5/eisSxwLFNe/hE= From: Arnaldo Carvalho de Melo To: Ingo Molnar , Thomas Gleixner Cc: Jiri Olsa , Namhyung Kim , Clark Williams , linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org, Andi Kleen , Kan Liang , Arnaldo Carvalho de Melo Subject: [PATCH 38/43] perf stat: Make metric event lookup more robust Date: Mon, 1 Jul 2019 23:26:11 -0300 Message-Id: <20190702022616.1259-39-acme@kernel.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190702022616.1259-1-acme@kernel.org> References: <20190702022616.1259-1-acme@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Andi Kleen After setting up metric groups through the event parser, the metricgroup code looks them up again in the event list. Make sure we only look up events that haven't been used by some other metric. The data structures currently cannot handle more than one metric per event. This avoids problems with multiple events partially overlapping. Signed-off-by: Andi Kleen Acked-by: Jiri Olsa Cc: Kan Liang Link: http://lkml.kernel.org/r/20190624193711.35241-2-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/stat-shadow.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/perf/util/stat-shadow.c b/tools/perf/util/stat-shadow.c index 027b09aaa4cf..3f8fd127d31e 100644 --- a/tools/perf/util/stat-shadow.c +++ b/tools/perf/util/stat-shadow.c @@ -304,7 +304,7 @@ static struct perf_evsel *perf_stat__find_event(struct perf_evlist *evsel_list, struct perf_evsel *c2; evlist__for_each_entry (evsel_list, c2) { - if (!strcasecmp(c2->name, name)) + if (!strcasecmp(c2->name, name) && !c2->collect_stat) return c2; } return NULL; @@ -343,7 +343,8 @@ void perf_stat__collect_metric_expr(struct perf_evlist *evsel_list) if (leader) { /* Search in group */ for_each_group_member (oc, leader) { - if (!strcasecmp(oc->name, metric_names[i])) { + if (!strcasecmp(oc->name, metric_names[i]) && + !oc->collect_stat) { found = true; break; } -- 2.20.1