Received: by 2002:a05:7412:bbc7:b0:fc:a2b0:25d7 with SMTP id kh7csp183205rdb; Thu, 1 Feb 2024 05:54:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IFuyEhj+aMo2Cg8daD4B521nDJktjPs8rkTQIqZO08biwzEmIxL8JDYSOpF+W6i4hIS5Iii X-Received: by 2002:a05:6214:dcc:b0:686:acd2:4afc with SMTP id 12-20020a0562140dcc00b00686acd24afcmr5786631qvt.17.1706795690001; Thu, 01 Feb 2024 05:54:50 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706795689; cv=pass; d=google.com; s=arc-20160816; b=dtk+8GnMS1bxwTEUezdoDSXbd9PT9rgb7RpdW4R1wz2ql3ytAihPliqkU3Mh7/gj25 H9MStYpRY5OsYIstU6Q0YBCBc6G/1lK6hfU/W5lC96fCuloZSc3U0vG1VGooz7WGk2Bh bCdtmvBsEbeXenktrCykHOO+FTAS5BOVedrJ6CB40WBLzROqJnq4KebZs8MZLNLi2z9A 9MVHP1gtTU7pVG8QKcJjNrpI8HObBsCe5XVBlTdsElErsM8dn1yg0Qre6RYqAQz1nIr0 0KbQJ5IpxnxsnzqALAeo6bTJqt3UtFfqyNDtJYz8P/3JjwmvI9kJHlnMFufve4ui9CCG ydyw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:in-reply-to:from:cc:references:to :content-language:subject:user-agent:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:date:message-id; bh=WY3LXhuIZmBlcUkMN5hlkWI4z53fSA07PqrDJU4huGo=; fh=1hgG8yaKikNaRBZMSIyr9pLVDf7LF+U+x9lVHO5ecz8=; b=MfI4t6QQNM/fEEErruzQZgs1ihxJP/+yV46tfIzr5YICwE5QpcBJuubR+dBRWovTIK DRmQMY9kqOpX4wdyLMAuTyaqZ8sej9iMiA4C3+9VY5bHk3au9OSlNlolH+ZbPgRkTv43 e3QktmM88ob2rYOovralJj3BOsboC30sOKaZauMrzaQFS6/LekZ37LdB0BOvXNYJdlPz os+TG9btCiVFI4QCVO7VSowPOpODBBZtir/OUhd0lctcQcUHkefm59RhNJ0p2P6+aa6k Gwbt98DubKknBGoHmORm1ZDhtfBO9MDYUWbYhM2u3cQkEv2vRbwwFntXD4W1QA0F/UhI 4EIw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-48270-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-48270-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com X-Forwarded-Encrypted: i=1; AJvYcCW4aa+9YLVeP1mGkrm9UWjSQjftRsIOAqYeHHxJ4s0giP3V5gnVTOyGPdq+M2IYdMlSSBCfRE16yfpD7avqVpGir4VNG7eVAKOY0BmIhA== Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id q6-20020a056214194600b0068c385bacb3si13931789qvk.425.2024.02.01.05.54.49 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 01 Feb 2024 05:54:49 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-48270-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; arc=pass (i=1 spf=pass spfdomain=arm.com dmarc=pass fromdomain=arm.com); spf=pass (google.com: domain of linux-kernel+bounces-48270-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-48270-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id BFED11C28AFB for ; Thu, 1 Feb 2024 13:54:49 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0D3185D468; Thu, 1 Feb 2024 13:54:42 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 69CBC5CDEE; Thu, 1 Feb 2024 13:54:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=217.140.110.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706795681; cv=none; b=lJHouiv0B1gz2ArVqB8ieXUoRAza132RKieKdpJ/+956vwpzp6+NnFXsm5jSqw2h/7ugWnU+urcEzm/iTYwfESADsHoywdM7k/OTZeaCkH2nPQNPAMsPH/nI/u90tVhTytSt0954B9YHeLXqwzn0Yj5owJJW98GcZHB94GrYVIg= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706795681; c=relaxed/simple; bh=6FczZ0VQ709m5DpMCw3jObhCo/9EEQJjT+b7Zh1i64A=; h=Message-ID:Date:MIME-Version:Subject:To:References:Cc:From: In-Reply-To:Content-Type; b=JTFticme/jDi0wKmfgBsGoL8oqVpoeL9BggGRDLPohLD7bJgSTW0mCtxo21Ak4FnVxV7dIRhDZADElbacFd3PZtZYxcGt0MhMD5AEnaBM4mTUdFbIwHTZPz8jX/aTAOLC3KxYn7bjlPwmIGzNFkct9U7q4fuy/vDESsomdCvXeU= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com; spf=pass smtp.mailfrom=arm.com; arc=none smtp.client-ip=217.140.110.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arm.com 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 56421DA7; Thu, 1 Feb 2024 05:55:21 -0800 (PST) Received: from [192.168.1.100] (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id AD2943F762; Thu, 1 Feb 2024 05:54:35 -0800 (PST) Message-ID: Date: Thu, 1 Feb 2024 13:54:34 +0000 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH v2 2/3] perf parse-events: Improve error location of terms cloned from an event Content-Language: en-US To: Ian Rogers References: <20240131134940.593788-1-irogers@google.com> <20240131134940.593788-2-irogers@google.com> Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Namhyung Kim , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Kan Liang , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, tchen168@asu.edu, Michael Petlan From: James Clark In-Reply-To: <20240131134940.593788-2-irogers@google.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 31/01/2024 13:49, Ian Rogers wrote: > A PMU event/alias will have a set of format terms that replace it when > an event is parsed. The location of the terms is their position when > parsed for the event/alias either from sysfs or json. This location is > of little use when an event fails to parse as the error will be given > in terms of the location in the string of events parsed not the json > or sysfs string. Fix this by making the cloned terms location that of > the event/alias. > > If a cloned term from an event/alias is invalid the bad format is hard > to determine from the error string. Add the name of the bad format > into the error string. > > Signed-off-by: Ian Rogers Reviewed-by: James Clark > --- > These fixes were inspired by the poor error output in: > https://lore.kernel.org/linux-perf-users/alpine.LRH.2.20.2401300733310.11354@Diego/ > --- > tools/perf/util/pmu.c | 9 +++++---- > 1 file changed, 5 insertions(+), 4 deletions(-) > > diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c > index 355f813f960d..437386dedd5c 100644 > --- a/tools/perf/util/pmu.c > +++ b/tools/perf/util/pmu.c > @@ -657,7 +657,7 @@ static int pmu_aliases_parse(struct perf_pmu *pmu) > return 0; > } > > -static int pmu_alias_terms(struct perf_pmu_alias *alias, struct list_head *terms) > +static int pmu_alias_terms(struct perf_pmu_alias *alias, int err_loc, struct list_head *terms) > { > struct parse_events_term *term, *cloned; > struct parse_events_terms clone_terms; > @@ -675,6 +675,7 @@ static int pmu_alias_terms(struct perf_pmu_alias *alias, struct list_head *terms > * which we don't want for implicit terms in aliases. > */ > cloned->weak = true; > + cloned->err_term = cloned->err_val = err_loc; > list_add_tail(&cloned->list, &clone_terms.terms); > } > list_splice_init(&clone_terms.terms, terms); > @@ -1363,8 +1364,8 @@ static int pmu_config_term(const struct perf_pmu *pmu, > > parse_events_error__handle(err, term->err_val, > asprintf(&err_str, > - "value too big for format, maximum is %llu", > - (unsigned long long)max_val) < 0 > + "value too big for format (%s), maximum is %llu", > + format->name, (unsigned long long)max_val) < 0 > ? strdup("value too big for format") > : err_str, > NULL); > @@ -1518,7 +1519,7 @@ int perf_pmu__check_alias(struct perf_pmu *pmu, struct parse_events_terms *head_ > alias = pmu_find_alias(pmu, term); > if (!alias) > continue; > - ret = pmu_alias_terms(alias, &term->list); > + ret = pmu_alias_terms(alias, term->err_term, &term->list); > if (ret) { > parse_events_error__handle(err, term->err_term, > strdup("Failure to duplicate terms"),