lkml.org 
[lkml]   [2014]   [Feb]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 08/51] arm, hw-breakpoint: Fix CPU hotplug callback registration
    On 02/06/2014 05:09 PM, Will Deacon wrote:
    > On Thu, Feb 06, 2014 at 11:25:46AM +0000, Srivatsa S. Bhat wrote:
    >> Hi Will,
    >
    > Hello,
    >
    >> On 02/06/2014 04:27 PM, Will Deacon wrote:
    >>> On Wed, Feb 05, 2014 at 10:06:04PM +0000, Srivatsa S. Bhat wrote:
    >>>> Subsystems that want to register CPU hotplug callbacks, as well as perform
    >>>> initialization for the CPUs that are already online, often do it as shown
    >>>> below:
    >>>>
    >>>> get_online_cpus();
    >>>>
    >>>> for_each_online_cpu(cpu)
    >>>> init_cpu(cpu);
    >>>>
    >>>> register_cpu_notifier(&foobar_cpu_notifier);
    >>>>
    >>>> put_online_cpus();
    >>>>
    >>>> This is wrong, since it is prone to ABBA deadlocks involving the
    >>>> cpu_add_remove_lock and the cpu_hotplug.lock (when running concurrently
    >>>> with CPU hotplug operations).
    >>>
    >>> Hmm, the code in question (for this patch) runs from an arch_initcall. How
    >>> can you generate CPU hotplug operations at that stage?
    >>>
    >>
    >> You are right - in today's design of the init sequence, CPU hotplug
    >> operations can't be triggered at that time during boot.
    >
    > Phew, so we don't have a bug as the code stands today.

    Yes, that's right.

    >
    >> However, there have been proposals to boot CPUs in parallel along with the
    >> rest of the kernel initialization [1] (and that would need full synchronization
    >> with CPU hotplug even at the initcall stage). Of course this needs a lot of
    >> auditing and modifications to the CPU hotplug notifiers of various subsystems
    >> to make them robust enough to handle the parallel boot; so its not going to
    >> happen very soon. But I felt that it would be a good idea to ensure that we
    >> get the locking/synchronization right, even if the registrations happen very
    >> early during boot today.. you know, just to be on the safer side and also to
    >> make the job easier for whoever that is, who tries to implement parallel
    >> CPU booting again in the future ;-)
    >>
    >> [1]. http://thread.gmane.org/gmane.linux.kernel/1246209
    >
    > Makes sense, and this seems like a good start.
    >
    >>> so it's best if you take this all via your tree.
    >>>
    >>
    >> Hmm.. I'm not a maintainer myself, so I'm hoping that either Oleg or Rusty
    >> or any of the other CPU hotplug maintainers (Thomas/Peter/Ingo) would be
    >> willing to take these patches through their tree.
    >
    > Well, you can have my ack for this patch:
    >
    > Acked-by: Will Deacon <will.deacon@arm.com>
    >

    Great! Thanks a lot Will!

    Regards,
    Srivatsa S. Bhat



    \
     
     \ /
      Last update: 2014-02-06 13:21    [W:4.062 / U:0.996 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site