lkml.org 
[lkml]   [2016]   [Sep]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:smp/hotplug] cpu/hotplug: Remove CPU_STARTING and CPU_DYING notifier
    Commit-ID:  ee1e714b94521b0bb27b04dfd1728ec51b19d4f0
    Gitweb: http://git.kernel.org/tip/ee1e714b94521b0bb27b04dfd1728ec51b19d4f0
    Author: Thomas Gleixner <tglx@linutronix.de>
    AuthorDate: Thu, 18 Aug 2016 14:57:16 +0200
    Committer: Thomas Gleixner <tglx@linutronix.de>
    CommitDate: Tue, 6 Sep 2016 18:30:19 +0200

    cpu/hotplug: Remove CPU_STARTING and CPU_DYING notifier

    All users are converted to state machine, remove CPU_STARTING and the
    corresponding CPU_DYING.

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: rt@linutronix.de
    Link: http://lkml.kernel.org/r/20160818125731.27256-2-bigeasy@linutronix.de
    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>

    ---
    arch/sparc/kernel/smp_32.c | 2 --
    include/linux/cpu.h | 12 ------------
    include/linux/cpuhotplug.h | 1 -
    kernel/cpu.c | 30 ++----------------------------
    tools/testing/radix-tree/linux/cpu.h | 13 -------------
    5 files changed, 2 insertions(+), 56 deletions(-)

    diff --git a/arch/sparc/kernel/smp_32.c b/arch/sparc/kernel/smp_32.c
    index fb30e7c..e80e6ba 100644
    --- a/arch/sparc/kernel/smp_32.c
    +++ b/arch/sparc/kernel/smp_32.c
    @@ -352,9 +352,7 @@ static void sparc_start_secondary(void *arg)
    preempt_disable();
    cpu = smp_processor_id();

    - /* Invoke the CPU_STARTING notifier callbacks */
    notify_cpu_starting(cpu);
    -
    arch_cpu_pre_online(arg);

    /* Set the CPU in the cpu_online_mask */
    diff --git a/include/linux/cpu.h b/include/linux/cpu.h
    index 797d9c8..6bf1992 100644
    --- a/include/linux/cpu.h
    +++ b/include/linux/cpu.h
    @@ -61,17 +61,8 @@ struct notifier_block;
    #define CPU_DOWN_PREPARE 0x0005 /* CPU (unsigned)v going down */
    #define CPU_DOWN_FAILED 0x0006 /* CPU (unsigned)v NOT going down */
    #define CPU_DEAD 0x0007 /* CPU (unsigned)v dead */
    -#define CPU_DYING 0x0008 /* CPU (unsigned)v not running any task,
    - * not handling interrupts, soon dead.
    - * Called on the dying cpu, interrupts
    - * are already disabled. Must not
    - * sleep, must not fail */
    #define CPU_POST_DEAD 0x0009 /* CPU (unsigned)v dead, cpu_hotplug
    * lock is dropped */
    -#define CPU_STARTING 0x000A /* CPU (unsigned)v soon running.
    - * Called on the new cpu, just before
    - * enabling interrupts. Must not sleep,
    - * must not fail */
    #define CPU_BROKEN 0x000B /* CPU (unsigned)v did not die properly,
    * perhaps due to preemption. */

    @@ -86,9 +77,6 @@ struct notifier_block;
    #define CPU_DOWN_PREPARE_FROZEN (CPU_DOWN_PREPARE | CPU_TASKS_FROZEN)
    #define CPU_DOWN_FAILED_FROZEN (CPU_DOWN_FAILED | CPU_TASKS_FROZEN)
    #define CPU_DEAD_FROZEN (CPU_DEAD | CPU_TASKS_FROZEN)
    -#define CPU_DYING_FROZEN (CPU_DYING | CPU_TASKS_FROZEN)
    -#define CPU_STARTING_FROZEN (CPU_STARTING | CPU_TASKS_FROZEN)
    -

    #ifdef CONFIG_SMP
    extern bool cpuhp_tasks_frozen;
    diff --git a/include/linux/cpuhotplug.h b/include/linux/cpuhotplug.h
    index b95f7ad..9e6d107 100644
    --- a/include/linux/cpuhotplug.h
    +++ b/include/linux/cpuhotplug.h
    @@ -69,7 +69,6 @@ enum cpuhp_state {
    CPUHP_AP_ARM64_ISNDEP_STARTING,
    CPUHP_AP_SMPCFD_DYING,
    CPUHP_AP_X86_TBOOT_DYING,
    - CPUHP_AP_NOTIFY_STARTING,
    CPUHP_AP_ONLINE,
    CPUHP_TEARDOWN_CPU,
    CPUHP_AP_ONLINE_IDLE,
    diff --git a/kernel/cpu.c b/kernel/cpu.c
    index 32eef27..d14ae44 100644
    --- a/kernel/cpu.c
    +++ b/kernel/cpu.c
    @@ -408,12 +408,6 @@ static int notify_online(unsigned int cpu)
    return 0;
    }

    -static int notify_starting(unsigned int cpu)
    -{
    - cpu_notify(CPU_STARTING, cpu);
    - return 0;
    -}
    -
    static int bringup_wait_for_ap(unsigned int cpu)
    {
    struct cpuhp_cpu_state *st = per_cpu_ptr(&cpuhp_state, cpu);
    @@ -759,12 +753,6 @@ static int notify_down_prepare(unsigned int cpu)
    return err;
    }

    -static int notify_dying(unsigned int cpu)
    -{
    - cpu_notify(CPU_DYING, cpu);
    - return 0;
    -}
    -
    /* Take this CPU down. */
    static int take_cpu_down(void *_param)
    {
    @@ -823,7 +811,7 @@ static int takedown_cpu(unsigned int cpu)
    BUG_ON(cpu_online(cpu));

    /*
    - * The migration_call() CPU_DYING callback will have removed all
    + * The CPUHP_AP_SCHED_MIGRATE_DYING callback will have removed all
    * runnable tasks from the cpu, there's only the idle task left now
    * that the migration thread is done doing the stop_machine thing.
    *
    @@ -876,7 +864,6 @@ void cpuhp_report_idle_dead(void)
    #define notify_down_prepare NULL
    #define takedown_cpu NULL
    #define notify_dead NULL
    -#define notify_dying NULL
    #endif

    #ifdef CONFIG_HOTPLUG_CPU
    @@ -966,10 +953,9 @@ EXPORT_SYMBOL(cpu_down);
    #endif /*CONFIG_HOTPLUG_CPU*/

    /**
    - * notify_cpu_starting(cpu) - call the CPU_STARTING notifiers
    + * notify_cpu_starting(cpu) - Invoke the callbacks on the starting CPU
    * @cpu: cpu that just started
    *
    - * This function calls the cpu_chain notifiers with CPU_STARTING.
    * It must be called by the arch code on the new cpu, before the new cpu
    * enables interrupts and before the "boot" cpu returns from __cpu_up().
    */
    @@ -1365,18 +1351,6 @@ static struct cpuhp_step cpuhp_ap_states[] = {
    .startup.single = NULL,
    .teardown.single = rcutree_dying_cpu,
    },
    - /*
    - * Low level startup.single/teardown notifiers. Run with interrupts
    - * disabled. Will be removed once the notifiers are converted to
    - * states.
    - */
    - [CPUHP_AP_NOTIFY_STARTING] = {
    - .name = "notify:starting",
    - .startup.single = notify_starting,
    - .teardown.single = notify_dying,
    - .skip_onerr = true,
    - .cant_stop = true,
    - },
    /* Entry state on starting. Interrupts enabled from here on. Transient
    * state for synchronsization */
    [CPUHP_AP_ONLINE] = {
    diff --git a/tools/testing/radix-tree/linux/cpu.h b/tools/testing/radix-tree/linux/cpu.h
    index 60a4045..7cf4121 100644
    --- a/tools/testing/radix-tree/linux/cpu.h
    +++ b/tools/testing/radix-tree/linux/cpu.h
    @@ -7,19 +7,8 @@
    #define CPU_DOWN_PREPARE 0x0005 /* CPU (unsigned)v going down */
    #define CPU_DOWN_FAILED 0x0006 /* CPU (unsigned)v NOT going down */
    #define CPU_DEAD 0x0007 /* CPU (unsigned)v dead */
    -#define CPU_DYING 0x0008 /* CPU (unsigned)v not running any task,
    - * not handling interrupts, soon dead.
    - * Called on the dying cpu, interrupts
    - * are already disabled. Must not
    - * sleep, must not fail */
    #define CPU_POST_DEAD 0x0009 /* CPU (unsigned)v dead, cpu_hotplug
    * lock is dropped */
    -#define CPU_STARTING 0x000A /* CPU (unsigned)v soon running.
    - * Called on the new cpu, just before
    - * enabling interrupts. Must not sleep,
    - * must not fail */
    -#define CPU_DYING_IDLE 0x000B /* CPU (unsigned)v dying, reached
    - * idle loop. */
    #define CPU_BROKEN 0x000C /* CPU (unsigned)v did not die properly,
    * perhaps due to preemption. */
    #define CPU_TASKS_FROZEN 0x0010
    @@ -30,5 +19,3 @@
    #define CPU_DOWN_PREPARE_FROZEN (CPU_DOWN_PREPARE | CPU_TASKS_FROZEN)
    #define CPU_DOWN_FAILED_FROZEN (CPU_DOWN_FAILED | CPU_TASKS_FROZEN)
    #define CPU_DEAD_FROZEN (CPU_DEAD | CPU_TASKS_FROZEN)
    -#define CPU_DYING_FROZEN (CPU_DYING | CPU_TASKS_FROZEN)
    -#define CPU_STARTING_FROZEN (CPU_STARTING | CPU_TASKS_FROZEN)
    \
     
     \ /
      Last update: 2016-09-17 09:58    [W:4.241 / U:0.024 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site