On Wed, Apr 26, 2017 at 10:40:47AM +0100, Suzuki K Poulose wrote: > On 26/04/17 09:59, Mark Rutland wrote:
> >We only call cpus_set_cap() in the secondary boot path, where we know > >that the rwsem is held by the thread orchestrating the onlining. Thus, > >we can use the new static_branch_enable_cpuslocked() in cpus_set_cap(), > >avoiding the above. > > Correction, we could call cpus_set_cap() from setup_cpu_features() > for updating the system global capabilities, where we may not hold the > cpu_hotplug_lock. Argh, yes, I missed that when scanning. > So we could end up calling static_branch_enable_cpuslocked() > without actually holding the lock. Should we do a cpu_hotplug_begin/done in > setup_cpu_feature_capabilities ? I agree it doesn't look that nice. Thoughts ? I agree that's hideous, but it looks like the only choice given the hotplug rwsem cahnges. :/ I can spin a v2 with that and the typo fixes. Thanks, Mark. > > Suzuki > > > > >Signed-off-by: Mark Rutland <mark.rutl...@arm.com> > >Reported-by: Catalin Marinas <catalin.mari...@arm.com> > >Suggested-by: Sebastian Andrzej Siewior <bige...@linutronix.de> > >Cc: Will Deacon <will.dea...@arm.com> > >Cc: Suzuki Poulose <suzuki,poul...@arm.com> > >--- > > arch/arm64/include/asm/cpufeature.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > >diff --git a/arch/arm64/include/asm/cpufeature.h > >b/arch/arm64/include/asm/cpufeature.h > >index f31c48d..349b5cd 100644 > >--- a/arch/arm64/include/asm/cpufeature.h > >+++ b/arch/arm64/include/asm/cpufeature.h > >@@ -145,7 +145,7 @@ static inline void cpus_set_cap(unsigned int num) > > num, ARM64_NCAPS); > > } else { > > __set_bit(num, cpu_hwcaps); > >- static_branch_enable(&cpu_hwcap_keys[num]); > >+ static_branch_enable_cpuslocked(&cpu_hwcap_keys[num]); > > } > > } > > > > >