All of lore.kernel.org
 help / color / mirror / Atom feed
From: Steven Rostedt <rostedt@goodmis.org>
To: Daniel Bristot de Oliveira <bristot@redhat.com>
Cc: Phil Auld <pauld@redhat.com>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>,
	Kate Carcia <kcarcia@redhat.com>,
	Jonathan Corbet <corbet@lwn.net>, Ingo Molnar <mingo@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Alexandre Chartre <alexandre.chartre@oracle.com>,
	Clark Willaims <williams@redhat.com>,
	John Kacur <jkacur@redhat.com>,
	Juri Lelli <juri.lelli@redhat.com>,
	Borislav Petkov <bp@alien8.de>, "H. Peter Anvin" <hpa@zytor.com>,
	x86@kernel.org, linux-doc@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH V4 05/12] trace/hwlat: Support hotplug operations
Date: Fri, 18 Jun 2021 15:00:20 -0400	[thread overview]
Message-ID: <20210618150020.689439d4@oasis.local.home> (raw)
In-Reply-To: <20210618124503.388fe4d4@oasis.local.home>

On Fri, 18 Jun 2021 12:45:03 -0400
Steven Rostedt <rostedt@goodmis.org> wrote:

> > +/*
> > + * hwlat_cpu_init - CPU hotplug online callback function
> > + */
> > +static int hwlat_cpu_init(unsigned int cpu)
> > +{
> > +	struct trace_array *tr = hwlat_trace;
> > +  
> 
> You need to take the trace_types_lock here, between testing the
> hwlat_busy and starting the threads. Otherwise, between the two, the
> hwlat tracer could be turned off while a CPU is coming on line, and
> then you just started a per cpu thread, while the hwlat tracer is not
> enabled.

And of course, because get_online_cpus() is called within
trace_types_lock, doing this check is going to cause a lock inversion.

The only thing I could think of is to wake up a worker thread to do the
work. That is, this just wakes the worker thread, then the worker grabs
the trace_types_lock, iterates through the cpu mask of expect running
threads, and then starts or kills them depending on the hwlat_busy
value.

-- Steve

> 
> > +	if (!hwlat_busy)
> > +		return 0;
> > +
> > +	if (!cpumask_test_cpu(cpu, tr->tracing_cpumask))
> > +		return 0;
> > +
> > +	return start_cpu_kthread(cpu);
> > +}

  reply	other threads:[~2021-06-18 19:00 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-15  9:28 [PATCH V4 00/12] hwlat improvements and osnoise/timerlat tracers Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 01/12] trace/hwlat: Fix Clark's email Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 02/12] trace/hwlat: Implement the mode config option Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 03/12] trace/hwlat: Switch disable_migrate to mode none Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 04/12] trace/hwlat: Implement the per-cpu mode Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 05/12] trace/hwlat: Support hotplug operations Daniel Bristot de Oliveira
2021-06-18 16:45   ` Steven Rostedt
2021-06-18 19:00     ` Steven Rostedt [this message]
2021-06-21 11:34       ` Daniel Bristot de Oliveira
2021-06-21 15:25         ` Steven Rostedt
2021-06-21 16:14           ` Daniel Bristot de Oliveira
2021-06-21 17:46             ` Steven Rostedt
2021-06-22 14:05               ` Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 06/12] trace: Add a generic function to read/write u64 values from tracefs Daniel Bristot de Oliveira
2021-06-18 16:56   ` Steven Rostedt
2021-06-21 11:50     ` Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 07/12] trace/hwlat: Use trace_min_max_param for width and window params Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 08/12] trace/hwlat: Remove printk from sampling loop Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 09/12] trace: Add __print_ns_to_secs() and __print_ns_without_secs() helpers Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 10/12] trace: Add osnoise tracer Daniel Bristot de Oliveira
2021-06-18 17:55   ` Steven Rostedt
2021-06-21 12:09     ` Daniel Bristot de Oliveira
2021-06-18 18:27   ` Steven Rostedt
2021-06-21 12:09     ` Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 11/12] trace: Add timerlat tracer Daniel Bristot de Oliveira
2021-06-15  9:28 ` [PATCH V4 12/12] trace/osnoise: Support hotplug operations Daniel Bristot de Oliveira
2021-06-18 19:04   ` Steven Rostedt
2021-06-21 12:18     ` Daniel Bristot de Oliveira

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=20210618150020.689439d4@oasis.local.home \
    --to=rostedt@goodmis.org \
    --cc=alexandre.chartre@oracle.com \
    --cc=bigeasy@linutronix.de \
    --cc=bp@alien8.de \
    --cc=bristot@redhat.com \
    --cc=corbet@lwn.net \
    --cc=hpa@zytor.com \
    --cc=jkacur@redhat.com \
    --cc=juri.lelli@redhat.com \
    --cc=kcarcia@redhat.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=pauld@redhat.com \
    --cc=peterz@infradead.org \
    --cc=tglx@linutronix.de \
    --cc=williams@redhat.com \
    --cc=x86@kernel.org \
    /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.