Hi Dan, On Fri, 12 Jun 2020 at 18:43, Dan Carpenter <dan.carpenter@xxxxxxxxxx> wrote: > > On Fri, Jun 12, 2020 at 03:11:33PM +0300, Dan Carpenter wrote: > > +static int cti_pm_setup(struct cti_drvdata *drvdata) > > +{ > > + int ret; > > + > > + if (drvdata->ctidev.cpu == -1) > > + return 0; > > + > > + if (nr_cti_cpu) > > + goto done; > > + > > + cpus_read_lock(); > ^^^^^^^^^^^^^^^^ > One thing which I do wonder is why we have locking here but not in the > cti_pm_release() function. That was how the original code was so the > patch doesn't change anything, but I am curious. > Good point - the CTI PM code was modelled on the same code in the ETM drivers, which show the same pattern. Perhaps something we need to revisit in both drivers. Regards Mike > > + ret = cpuhp_setup_state_nocalls_cpuslocked( > > + CPUHP_AP_ARM_CORESIGHT_CTI_STARTING, > > + "arm/coresight_cti:starting", > > + cti_starting_cpu, cti_dying_cpu); > > + if (ret) { > > + cpus_read_unlock(); > > + return ret; > > + } > > + > > + ret = cpu_pm_register_notifier(&cti_cpu_pm_nb); > > + cpus_read_unlock(); > > + if (ret) { > > + cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_CTI_STARTING); > > + return ret; > > + } > > + > > +done: > > + nr_cti_cpu++; > > + cti_cpu_drvdata[drvdata->ctidev.cpu] = drvdata; > > + > > + return 0; > > +} > > + > > /* release PM registrations */ > > static void cti_pm_release(struct cti_drvdata *drvdata) > > { > > - if (drvdata->ctidev.cpu >= 0) { > > - if (--nr_cti_cpu == 0) { > > - cpu_pm_unregister_notifier(&cti_cpu_pm_nb); > > + if (drvdata->ctidev.cpu == -1) > > + return; > > > > - cpuhp_remove_state_nocalls( > > - CPUHP_AP_ARM_CORESIGHT_CTI_STARTING); > > - } > > - cti_cpu_drvdata[drvdata->ctidev.cpu] = NULL; > > + cti_cpu_drvdata[drvdata->ctidev.cpu] = drvdata; > > + if (--nr_cti_cpu == 0) { > > + cpu_pm_unregister_notifier(&cti_cpu_pm_nb); > > + cpuhp_remove_state_nocalls(CPUHP_AP_ARM_CORESIGHT_CTI_STARTING); > > } > > } > > regards, > dan carpenter > -- Mike Leach Principal Engineer, ARM Ltd. Manchester Design Centre. UK