lkml.org 
[lkml]   [2017]   [Apr]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [patch V2 00/24] cpu/hotplug: Convert get_online_cpus() to a percpu_rwsem
    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.rutland@arm.com>
    > >Reported-by: Catalin Marinas <catalin.marinas@arm.com>
    > >Suggested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    > >Cc: Will Deacon <will.deacon@arm.com>
    > >Cc: Suzuki Poulose <suzuki,poulose@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]);
    > > }
    > > }
    > >
    > >
    >

    \
     
     \ /
      Last update: 2017-04-26 12:33    [W:8.074 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site