From: Anshuman Khandual <anshuman.khandual@arm.com> To: Suzuki K Poulose <suzuki.poulose@arm.com>, coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, tamas.zsoldos@arm.com, al.grant@arm.com, leo.yan@linaro.org, mike.leach@linaro.org, mathieu.poirier@linaro.org, jinlmao@qti.qualcomm.com Subject: Re: [PATCH v2 03/10] coresight: etm-pmu: Ensure the AUX handle is valid Date: Fri, 30 Jul 2021 09:44:31 +0530 [thread overview] Message-ID: <acd70df3-fdce-a08c-02f0-4cd6d806e6ba@arm.com> (raw) In-Reply-To: <20210723124611.3828908-4-suzuki.poulose@arm.com> On 7/23/21 6:16 PM, Suzuki K Poulose wrote: > The ETM perf infrastructure closes out a handle during event_stop > or on an error in starting the event. In either case, it is possible > for a "sink" to update/close the handle, under certain circumstances. > (e.g no space in ring buffer.). So, ensure that we handle this > gracefully in the PMU driver by verifying the handle is still valid. > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Mike Leach <mike.leach@linaro.org> > Cc: Anshuman Khandual <anshuman.khandual@arm.com> > Cc: Leo Yan <leo.yan@linaro.org> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> > --- > .../hwtracing/coresight/coresight-etm-perf.c | 27 ++++++++++++++++--- > 1 file changed, 24 insertions(+), 3 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c > index 6f398377fec9..a6ab603afee4 100644 > --- a/drivers/hwtracing/coresight/coresight-etm-perf.c > +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c > @@ -450,8 +450,15 @@ static void etm_event_start(struct perf_event *event, int flags) > fail_disable_path: > coresight_disable_path(path); > fail_end_stop: > - perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED); > - perf_aux_output_end(handle, 0); > + /* > + * Check if the handle is still associated with the event, > + * to handle cases where if the sink failed to start the > + * trace and TRUNCATED the handle already. > + */ > + if (READ_ONCE(handle->event)) { > + perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED); > + perf_aux_output_end(handle, 0); > + } Makes sense as perf_aux_output_[flag|end]() helpers do not validate the 'handle' themselves. > fail: > event->hw.state = PERF_HES_STOPPED; > goto out; > @@ -519,7 +526,21 @@ static void etm_event_stop(struct perf_event *event, int mode) > > size = sink_ops(sink)->update_buffer(sink, handle, > event_data->snk_config); > - perf_aux_output_end(handle, size); > + /* > + * Make sure the handle is still valid as the > + * sink could have closed it from an IRQ. > + * The sink driver must handle the race with > + * update_buffer() and IRQ. Thus either we > + * should get a valid handle and valid size > + * (which may be 0). > + * > + * But we should never get a non-zero size with > + * an invalid handle. > + */ > + if (READ_ONCE(handle->event)) > + perf_aux_output_end(handle, size); > + else > + WARN_ON(size); Right. > } > > /* Disabling the path make its elements available to other sessions */ > Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com>
WARNING: multiple messages have this Message-ID (diff)
From: Anshuman Khandual <anshuman.khandual@arm.com> To: Suzuki K Poulose <suzuki.poulose@arm.com>, coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, tamas.zsoldos@arm.com, al.grant@arm.com, leo.yan@linaro.org, mike.leach@linaro.org, mathieu.poirier@linaro.org, jinlmao@qti.qualcomm.com Subject: Re: [PATCH v2 03/10] coresight: etm-pmu: Ensure the AUX handle is valid Date: Fri, 30 Jul 2021 09:44:31 +0530 [thread overview] Message-ID: <acd70df3-fdce-a08c-02f0-4cd6d806e6ba@arm.com> (raw) In-Reply-To: <20210723124611.3828908-4-suzuki.poulose@arm.com> On 7/23/21 6:16 PM, Suzuki K Poulose wrote: > The ETM perf infrastructure closes out a handle during event_stop > or on an error in starting the event. In either case, it is possible > for a "sink" to update/close the handle, under certain circumstances. > (e.g no space in ring buffer.). So, ensure that we handle this > gracefully in the PMU driver by verifying the handle is still valid. > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Cc: Mike Leach <mike.leach@linaro.org> > Cc: Anshuman Khandual <anshuman.khandual@arm.com> > Cc: Leo Yan <leo.yan@linaro.org> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> > --- > .../hwtracing/coresight/coresight-etm-perf.c | 27 ++++++++++++++++--- > 1 file changed, 24 insertions(+), 3 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-etm-perf.c b/drivers/hwtracing/coresight/coresight-etm-perf.c > index 6f398377fec9..a6ab603afee4 100644 > --- a/drivers/hwtracing/coresight/coresight-etm-perf.c > +++ b/drivers/hwtracing/coresight/coresight-etm-perf.c > @@ -450,8 +450,15 @@ static void etm_event_start(struct perf_event *event, int flags) > fail_disable_path: > coresight_disable_path(path); > fail_end_stop: > - perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED); > - perf_aux_output_end(handle, 0); > + /* > + * Check if the handle is still associated with the event, > + * to handle cases where if the sink failed to start the > + * trace and TRUNCATED the handle already. > + */ > + if (READ_ONCE(handle->event)) { > + perf_aux_output_flag(handle, PERF_AUX_FLAG_TRUNCATED); > + perf_aux_output_end(handle, 0); > + } Makes sense as perf_aux_output_[flag|end]() helpers do not validate the 'handle' themselves. > fail: > event->hw.state = PERF_HES_STOPPED; > goto out; > @@ -519,7 +526,21 @@ static void etm_event_stop(struct perf_event *event, int mode) > > size = sink_ops(sink)->update_buffer(sink, handle, > event_data->snk_config); > - perf_aux_output_end(handle, size); > + /* > + * Make sure the handle is still valid as the > + * sink could have closed it from an IRQ. > + * The sink driver must handle the race with > + * update_buffer() and IRQ. Thus either we > + * should get a valid handle and valid size > + * (which may be 0). > + * > + * But we should never get a non-zero size with > + * an invalid handle. > + */ > + if (READ_ONCE(handle->event)) > + perf_aux_output_end(handle, size); > + else > + WARN_ON(size); Right. > } > > /* Disabling the path make its elements available to other sessions */ > Reviewed-by: Anshuman Khandual <anshuman.khandual@arm.com> _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-07-30 4:13 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-07-23 12:46 [PATCH v2 00/10] coresight: TRBE and Self-Hosted trace fixes Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-23 12:46 ` [PATCH v2 01/10] coresight: etm4x: Save restore TRFCR_EL1 Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 3:05 ` Anshuman Khandual 2021-07-30 3:05 ` Anshuman Khandual 2021-07-23 12:46 ` [PATCH v2 02/10] coresight: etm4x: Use Trace Filtering controls dynamically Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 3:48 ` Anshuman Khandual 2021-07-30 3:48 ` Anshuman Khandual 2021-07-30 11:29 ` Suzuki K Poulose 2021-07-30 11:29 ` Suzuki K Poulose 2021-07-23 12:46 ` [PATCH v2 03/10] coresight: etm-pmu: Ensure the AUX handle is valid Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 4:14 ` Anshuman Khandual [this message] 2021-07-30 4:14 ` Anshuman Khandual 2021-07-23 12:46 ` [PATCH v2 04/10] coresight: trbe: Ensure the format flag is set on truncation Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 4:26 ` Anshuman Khandual 2021-07-30 4:26 ` Anshuman Khandual 2021-07-30 11:37 ` Suzuki K Poulose 2021-07-30 11:37 ` Suzuki K Poulose 2021-07-23 12:46 ` [PATCH v2 05/10] coresight: trbe: Drop duplicate TRUNCATE flags Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 4:47 ` Anshuman Khandual 2021-07-30 4:47 ` Anshuman Khandual 2021-07-30 12:58 ` Suzuki K Poulose 2021-07-30 12:58 ` Suzuki K Poulose 2021-07-23 12:46 ` [PATCH v2 06/10] coresight: trbe: Fix handling of spurious interrupts Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 5:15 ` Anshuman Khandual 2021-07-30 5:15 ` Anshuman Khandual 2021-07-30 12:57 ` Suzuki K Poulose 2021-07-30 12:57 ` Suzuki K Poulose 2021-07-23 12:46 ` [PATCH v2 07/10] coresight: trbe: Do not truncate buffer on IRQ Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-26 12:34 ` Mike Leach 2021-07-26 12:34 ` Mike Leach 2021-07-26 16:01 ` Suzuki K Poulose 2021-07-26 16:01 ` Suzuki K Poulose 2021-07-27 10:46 ` Mike Leach 2021-07-27 10:46 ` Mike Leach 2021-07-27 13:06 ` Suzuki K Poulose 2021-07-27 13:06 ` Suzuki K Poulose 2021-07-28 9:25 ` Suzuki K Poulose 2021-07-28 9:25 ` Suzuki K Poulose 2021-07-23 12:46 ` [PATCH v2 08/10] coresight: trbe: Unify the enabling sequence Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 5:40 ` Anshuman Khandual 2021-07-30 5:40 ` Anshuman Khandual 2021-07-23 12:46 ` [PATCH v2 09/10] coresight: trbe: End the AUX handle on truncation Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 5:54 ` Anshuman Khandual 2021-07-30 5:54 ` Anshuman Khandual 2021-07-23 12:46 ` [PATCH v2 10/10] coresight: trbe: Prohibit trace before disabling TRBE Suzuki K Poulose 2021-07-23 12:46 ` Suzuki K Poulose 2021-07-30 6:58 ` Anshuman Khandual 2021-07-30 6:58 ` Anshuman Khandual 2021-07-23 13:45 ` [PATCH v2 00/10] coresight: TRBE and Self-Hosted trace fixes Suzuki K Poulose 2021-07-23 13:45 ` Suzuki K Poulose
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=acd70df3-fdce-a08c-02f0-4cd6d806e6ba@arm.com \ --to=anshuman.khandual@arm.com \ --cc=al.grant@arm.com \ --cc=coresight@lists.linaro.org \ --cc=jinlmao@qti.qualcomm.com \ --cc=leo.yan@linaro.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=mathieu.poirier@linaro.org \ --cc=mike.leach@linaro.org \ --cc=suzuki.poulose@arm.com \ --cc=tamas.zsoldos@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.