[PATCH v4 15/15] coresight: Move CPU hotplug callbacks to core layer

Leo Yan leo.yan at arm.com
Wed Nov 19 06:48:13 PST 2025


On Mon, Nov 10, 2025 at 12:20:06PM +0000, James Clark wrote:

[...]

> > +static int coresight_dying_cpu(unsigned int cpu)
> > +{
> > +	struct coresight_device *source = per_cpu(csdev_source, cpu);
> > +	struct coresight_path *path;
> > +
> > +	if (!source || !source->path)
> > +		return 0;
> > +
> > +	/*
> > +	 * The perf event layer will disable PMU events in the CPU hotplug.
> > +	 * CoreSight driver should never handle the CS_MODE_PERF case.
> > +	 */
> > +	if (coresight_get_mode(source) != CS_MODE_SYSFS)
> > +		return 0;
> > +
> > +	/*
> > +	 * Save 'source->path' here, as it will be cleared in
> > +	 * coresight_disable_source().
> > +	 */
> > +	path = source->path;
> > +
> > +	coresight_disable_source(source, NULL);
> > +	coresight_disable_path(path);
> > +	return 0;
> 
> If the user is expected to re-enable and this new state is visible, don't
> you need to use the regular coresight_disable_sysfs() function? It calls
> coresight_disable_source_sysfs() which updates a refcount.

Good point!  We only need to maintain refcnt for system tracers (e.g.,
STM).  The per-CPU tracer is only binary states (on or off), we can
simply use "mode" to track state and no need refcnt.

I will use a separate patch to refactor refcnt.

> Maybe you didn't do it because it has a mutex in it? It would be easier to
> change that to a spinlock or take the mutex in a wrapper function and share
> the core disabling code with the hotplug path.

We have used cpus_read_lock() to avoid race between sysfs knobs and CPU
hotplug callbacks, we should not acquire mutex or spinlock in this
case.  For this reason, I would keep to call low level functions.

Thanks,
Leo



More information about the linux-arm-kernel mailing list