Messages in this thread | | | Date | Fri, 14 Feb 2020 22:43:08 +0800 | From | Leo Yan <> | Subject | Re: [PATCH V2 3/5] perf tools: cs-etm: fix endless record after being terminated |
| |
On Fri, Feb 14, 2020 at 03:26:52PM +0200, Adrian Hunter wrote: > From: Wei Li <liwei391@huawei.com> > > In __cmd_record(), when receiving SIGINT(ctrl + c), a done flag will > be set and the event list will be disabled by evlist__disable() once. > > While in auxtrace_record.read_finish(), the related events will be > enabled again, if they are continuous, the recording seems to be endless. > > If the cs_etm event is disabled, we don't enable it again here. > > Note: This patch is NOT tested since i don't have such a machine with > coresight feature, but the code seems buggy same as arm-spe and intel-pt. > > Signed-off-by: Wei Li <liwei391@huawei.com> > [ahunter: removed redundant 'else' after 'return'] > Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> > Cc: stable@vger.kernel.org # 5.4+
Thanks for looping, Adrian. Applied this patch and tested with CoreSight on juno board, it works well:
Reviewed-and-Tested-by: Leo Yan <leo.yan@linaro.org>
> --- > tools/perf/arch/arm/util/cs-etm.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/arch/arm/util/cs-etm.c b/tools/perf/arch/arm/util/cs-etm.c > index 2898cfdf8fe1..60141c3007a9 100644 > --- a/tools/perf/arch/arm/util/cs-etm.c > +++ b/tools/perf/arch/arm/util/cs-etm.c > @@ -865,9 +865,12 @@ static int cs_etm_read_finish(struct auxtrace_record *itr, int idx) > struct evsel *evsel; > > evlist__for_each_entry(ptr->evlist, evsel) { > - if (evsel->core.attr.type == ptr->cs_etm_pmu->type) > + if (evsel->core.attr.type == ptr->cs_etm_pmu->type) { > + if (evsel->disabled) > + return 0; > return perf_evlist__enable_event_idx(ptr->evlist, > evsel, idx); > + } > } > > return -EINVAL; > -- > 2.17.1 >
| |