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

Reply via email to