Re: [PATCH v2 5/6] remoteproc/MIPS: Add a remoteproc driver for MIPS

From: Thomas Gleixner
Date: Tue Sep 20 2016 - 05:49:54 EST


On Tue, 20 Sep 2016, Matt Redfearn wrote:
> +/* Intercept CPU hotplug events for syfs purposes */
> +static int mips_rproc_callback(struct notifier_block *nfb, unsigned long action,
> + void *hcpu)
> +{

Please convert to cpu hotplug state machine.

> + unsigned int cpu = (unsigned long)hcpu;
> +
> + switch (action) {
> + case CPU_UP_PREPARE:
> + case CPU_DOWN_FAILED:
> + mips_rproc_device_unregister(cpu);
> + break;
> + case CPU_DOWN_PREPARE:
> + mips_rproc_device_register(cpu);
> + break;
> + }

There is no reason why you need to setup the rproc device on
DOWN_PREPARE. It's sufficient to do that when the CPU is dead, so you can
use a symetric callback prep/dead.

> + /* Dynamically create mips-rproc class devices based on hotplug data */
> + get_online_cpus();
> + for_each_possible_cpu(cpu)
> + if (!cpu_online(cpu))
> + mips_rproc_device_register(cpu);
> + register_hotcpu_notifier(&mips_rproc_notifier);
> + put_online_cpus();

Perhaps we should add support for "reverse" functionality to the state
machine core. I'll have a look later how hard that'd be.

Thanks,

tglx