• Vitaly Kuznetsov's avatar
    cpu-hotplug: convert cpu_hotplug_disabled to a counter · 89af7ba5
    Vitaly Kuznetsov authored
    As a prerequisite to exporting cpu_hotplug_enable/cpu_hotplug_disable
    functions to modules we need to convert cpu_hotplug_disabled to a counter
    to properly support disable -> disable -> enable call sequences. E.g.
    after Hyper-V vmbus module (which is supposed to be the first user of
    exported cpu_hotplug_enable/cpu_hotplug_disable) did cpu_hotplug_disable()
    hibernate path calls disable_nonboot_cpus() and if we hit an error in
    _cpu_down() enable_nonboot_cpus() will be called on the failure path (thus
    making cpu_hotplug_disabled = 0 and leaving cpu hotplug in 'enabled'
    state). Same problem is possible if more than 1 module use
    cpu_hotplug_disable/cpu_hotplug_enable on their load/unload paths. When
    one of these modules is been unloaded it is logical to leave cpu hotplug
    in 'disabled' state.
    
    To support the change we need to increse cpu_hotplug_disabled counter
    in disable_nonboot_cpus() unconditionally as all users of
    disable_nonboot_cpus() are supposed to do enable_nonboot_cpus() in case
    an error was returned.
    Signed-off-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    89af7ba5
cpu.c 20.4 KB