Messages in this thread | | | From | Lai Jiangshan <> | Date | Sun, 3 Dec 2017 21:22:42 +0800 | Subject | Re: [PATCH] cpu/hotplug: merge cpuhp_bp_states&cpuhp_ap_states as cpuhp_hp_states |
| |
On Sun, Dec 3, 2017 at 2:33 PM, Paul E. McKenney <paulmck@linux.vnet.ibm.com> wrote: > On Fri, Dec 01, 2017 at 09:50:05PM +0800, Lai Jiangshan wrote: >> cpuhp_bp_states&cpuhp_ap_states have diffent set of steps >> without any conflicting configed steps, so that they can >> be merged. >> >> The original `[CPUHP_BRINGUP_CPU] = { },` is removed, because >> the new cpuhp_hp_states has CPUHP_ONLINE index which is larger >> than CPUHP_BRINGUP_CPU. >> >> Signed-off-by: Lai Jiangshan <jiangshanlai@gmail.com> > > Hello, Lai, > > What is this against? I tried testing it, but it doesn't apply to > v4.15-rc1 or v4.14.
Hello, Paul,
It assumes my previous patch applied. "smp/hotplug: move step CPUHP_AP_SMPCFD_DYING to the correct place"
https://www.spinics.net/lists/linux-tip-commits/msg41542.html
Thanks, Lai
> > Thanx, Paul > >> --- >> kernel/cpu.c | 42 +++++++++++++++--------------------------- >> 1 file changed, 15 insertions(+), 27 deletions(-) >> >> diff --git a/kernel/cpu.c b/kernel/cpu.c >> index 7891aecc6aec..c27963066333 100644 >> --- a/kernel/cpu.c >> +++ b/kernel/cpu.c >> @@ -124,8 +124,7 @@ struct cpuhp_step { >> }; >> >> static DEFINE_MUTEX(cpuhp_state_mutex); >> -static struct cpuhp_step cpuhp_bp_states[]; >> -static struct cpuhp_step cpuhp_ap_states[]; >> +static struct cpuhp_step cpuhp_hp_states[]; >> >> static bool cpuhp_is_ap_state(enum cpuhp_state state) >> { >> @@ -138,10 +137,7 @@ static bool cpuhp_is_ap_state(enum cpuhp_state state) >> >> static struct cpuhp_step *cpuhp_get_step(enum cpuhp_state state) >> { >> - struct cpuhp_step *sp; >> - >> - sp = cpuhp_is_ap_state(state) ? cpuhp_ap_states : cpuhp_bp_states; >> - return sp + state; >> + return cpuhp_hp_states + state; >> } >> >> /** >> @@ -1224,7 +1220,7 @@ int __boot_cpu_id; >> #endif /* CONFIG_SMP */ >> >> /* Boot processor state steps */ >> -static struct cpuhp_step cpuhp_bp_states[] = { >> +static struct cpuhp_step cpuhp_hp_states[] = { >> [CPUHP_OFFLINE] = { >> .name = "offline", >> .startup.single = NULL, >> @@ -1289,24 +1285,6 @@ static struct cpuhp_step cpuhp_bp_states[] = { >> .teardown.single = NULL, >> .cant_stop = true, >> }, >> - /* >> - * Handled on controll processor until the plugged processor manages >> - * this itself. >> - */ >> - [CPUHP_TEARDOWN_CPU] = { >> - .name = "cpu:teardown", >> - .startup.single = NULL, >> - .teardown.single = takedown_cpu, >> - .cant_stop = true, >> - }, >> -#else >> - [CPUHP_BRINGUP_CPU] = { }, >> -#endif >> -}; >> - >> -/* Application processor state steps */ >> -static struct cpuhp_step cpuhp_ap_states[] = { >> -#ifdef CONFIG_SMP >> /* Final state before CPU kills itself */ >> [CPUHP_AP_IDLE_DEAD] = { >> .name = "idle:dead", >> @@ -1340,6 +1318,16 @@ static struct cpuhp_step cpuhp_ap_states[] = { >> [CPUHP_AP_ONLINE] = { >> .name = "ap:online", >> }, >> + /* >> + * Handled on controll processor until the plugged processor manages >> + * this itself. >> + */ >> + [CPUHP_TEARDOWN_CPU] = { >> + .name = "cpu:teardown", >> + .startup.single = NULL, >> + .teardown.single = takedown_cpu, >> + .cant_stop = true, >> + }, >> /* Handle smpboot threads park/unpark */ >> [CPUHP_AP_SMPBOOT_THREADS] = { >> .name = "smpboot/threads:online", >> @@ -1408,11 +1396,11 @@ static int cpuhp_reserve_state(enum cpuhp_state state) >> >> switch (state) { >> case CPUHP_AP_ONLINE_DYN: >> - step = cpuhp_ap_states + CPUHP_AP_ONLINE_DYN; >> + step = cpuhp_hp_states + CPUHP_AP_ONLINE_DYN; >> end = CPUHP_AP_ONLINE_DYN_END; >> break; >> case CPUHP_BP_PREPARE_DYN: >> - step = cpuhp_bp_states + CPUHP_BP_PREPARE_DYN; >> + step = cpuhp_hp_states + CPUHP_BP_PREPARE_DYN; >> end = CPUHP_BP_PREPARE_DYN_END; >> break; >> default: >> -- >> 2.13.6 (Apple Git-96) >> >
| |