All of lore.kernel.org
 help / color / mirror / Atom feed
From: Adrian Hunter <adrian.hunter@intel.com>
To: Andi Kleen <ak@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Thomas Richter <tmricht@linux.ibm.com>,
	Hendrik Brueckner <brueckner@linux.ibm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>,
	James Clark <james.clark@arm.com>,
	coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org,
	Yicong Yang <yangyicong@hisilicon.com>,
	Jonathan Cameron <jonathan.cameron@huawei.com>,
	Will Deacon <will@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH V5 01/12] perf/core: Add aux_pause, aux_resume, aux_start_paused
Date: Mon, 12 Feb 2024 08:43:11 +0200	[thread overview]
Message-ID: <05ac66fc-ddda-46ff-b08d-c15943c16bc1@intel.com> (raw)
In-Reply-To: <ZcaUw4xQT0VcC7IO@tassilo>

On 9/02/24 23:10, Andi Kleen wrote:
>> The writes to rb->aux_in_pause_resume must be done
>> only once.  It might be possible to get away without
>> WRITE_ONCE(), but really the compiler should be informed
>> not to make assumptions.
> 
> What stops the NMI from firing here?

That would be fine.

> 
>>>> +  if (READ_ONCE(rb->aux_in_pause_resume))
>>>> +	/* Guard against NMI, NMI loses here */
>>>> +          goto out_restore;
> <----------------------- NMI

That would be fine.

>>>> +  WRITE_ONCE(rb->aux_in_pause_resume, 1);

From here on, the NMI will see rb->aux_in_pause_resume == 1
and do nothing, up to the point when rb->aux_in_pause_resume == 0
again.

This code is about guarding against NMI.  Interrupts are
disabled, and the rb and event only operate on 1 cpu at a time.

> 
> 
> Even if it isn't racy it needs a clear comment.

It has a comment, but it could be more explanatory.  The code
paradigm is also used in perf_pmu_snapshot_aux().


WARNING: multiple messages have this Message-ID (diff)
From: Adrian Hunter <adrian.hunter@intel.com>
To: Andi Kleen <ak@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Ingo Molnar <mingo@redhat.com>,
	Mark Rutland <mark.rutland@arm.com>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Heiko Carstens <hca@linux.ibm.com>,
	Thomas Richter <tmricht@linux.ibm.com>,
	Hendrik Brueckner <brueckner@linux.ibm.com>,
	Suzuki K Poulose <suzuki.poulose@arm.com>,
	Mike Leach <mike.leach@linaro.org>,
	James Clark <james.clark@arm.com>,
	coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org,
	Yicong Yang <yangyicong@hisilicon.com>,
	Jonathan Cameron <jonathan.cameron@huawei.com>,
	Will Deacon <will@kernel.org>,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Jiri Olsa <jolsa@kernel.org>, Namhyung Kim <namhyung@kernel.org>,
	Ian Rogers <irogers@google.com>,
	linux-kernel@vger.kernel.org, linux-perf-users@vger.kernel.org
Subject: Re: [PATCH V5 01/12] perf/core: Add aux_pause, aux_resume, aux_start_paused
Date: Mon, 12 Feb 2024 08:43:11 +0200	[thread overview]
Message-ID: <05ac66fc-ddda-46ff-b08d-c15943c16bc1@intel.com> (raw)
In-Reply-To: <ZcaUw4xQT0VcC7IO@tassilo>

On 9/02/24 23:10, Andi Kleen wrote:
>> The writes to rb->aux_in_pause_resume must be done
>> only once.  It might be possible to get away without
>> WRITE_ONCE(), but really the compiler should be informed
>> not to make assumptions.
> 
> What stops the NMI from firing here?

That would be fine.

> 
>>>> +  if (READ_ONCE(rb->aux_in_pause_resume))
>>>> +	/* Guard against NMI, NMI loses here */
>>>> +          goto out_restore;
> <----------------------- NMI

That would be fine.

>>>> +  WRITE_ONCE(rb->aux_in_pause_resume, 1);

From here on, the NMI will see rb->aux_in_pause_resume == 1
and do nothing, up to the point when rb->aux_in_pause_resume == 0
again.

This code is about guarding against NMI.  Interrupts are
disabled, and the rb and event only operate on 1 cpu at a time.

> 
> 
> Even if it isn't racy it needs a clear comment.

It has a comment, but it could be more explanatory.  The code
paradigm is also used in perf_pmu_snapshot_aux().


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2024-02-12  6:43 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-08 11:31 [PATCH V5 00/12] perf/core: Add ability for an event to "pause" or "resume" AUX area tracing Adrian Hunter
2024-02-08 11:31 ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 01/12] perf/core: Add aux_pause, aux_resume, aux_start_paused Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-09  0:13   ` Andi Kleen
2024-02-09  0:13     ` Andi Kleen
2024-02-09  8:14     ` Adrian Hunter
2024-02-09  8:14       ` Adrian Hunter
2024-02-09  9:49       ` Andi Kleen
2024-02-09  9:49         ` Andi Kleen
2024-02-09 21:10       ` Andi Kleen
2024-02-09 21:10         ` Andi Kleen
2024-02-12  6:43         ` Adrian Hunter [this message]
2024-02-12  6:43           ` Adrian Hunter
2024-02-16  9:31           ` [PATCH V6] " Adrian Hunter
2024-02-16  9:31             ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 02/12] perf/x86/intel/pt: Add support for pause / resume Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 03/12] perf/x86/intel: Do not enable large PEBS for events with aux actions or aux sampling Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 04/12] perf tools: Enable evsel__is_aux_event() to work for ARM/ARM64 Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 05/12] perf tools: Enable evsel__is_aux_event() to work for S390_CPUMSF Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 06/12] perf tools: Add aux_start_paused, aux_pause and aux_resume Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 07/12] perf tools: Add aux-action config term Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 08/12] perf tools: Parse aux-action Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 09/12] perf tools: Add missing_features for aux_start_paused, aux_pause, aux_resume Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 10/12] perf intel-pt: Improve man page format Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 11/12] perf intel-pt: Add documentation for pause / resume Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-08 11:31 ` [PATCH V5 12/12] perf intel-pt: Add a test " Adrian Hunter
2024-02-08 11:31   ` Adrian Hunter
2024-02-09  0:16   ` Andi Kleen
2024-02-09  0:16     ` Andi Kleen
2024-04-11 12:02 ` [PATCH V5 00/12] perf/core: Add ability for an event to "pause" or "resume" AUX area tracing Adrian Hunter
2024-04-11 12:02   ` Adrian Hunter
2024-04-24 10:39   ` Adrian Hunter
2024-04-24 10:39     ` Adrian Hunter
2024-05-15 12:34     ` Adrian Hunter
2024-05-15 12:34       ` Adrian Hunter

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=05ac66fc-ddda-46ff-b08d-c15943c16bc1@intel.com \
    --to=adrian.hunter@intel.com \
    --cc=acme@kernel.org \
    --cc=ak@linux.intel.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=brueckner@linux.ibm.com \
    --cc=coresight@lists.linaro.org \
    --cc=hca@linux.ibm.com \
    --cc=irogers@google.com \
    --cc=james.clark@arm.com \
    --cc=jolsa@kernel.org \
    --cc=jonathan.cameron@huawei.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-perf-users@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=mike.leach@linaro.org \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=peterz@infradead.org \
    --cc=suzuki.poulose@arm.com \
    --cc=tmricht@linux.ibm.com \
    --cc=will@kernel.org \
    --cc=yangyicong@hisilicon.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: link
Be 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.