Lines Matching full:bringup
56 * @bringup: Single callback bringup or teardown selector
76 bool bringup; member
102 static inline void cpuhp_lock_acquire(bool bringup) in cpuhp_lock_acquire() argument
104 lock_map_acquire(bringup ? &cpuhp_state_up_map : &cpuhp_state_down_map); in cpuhp_lock_acquire()
107 static inline void cpuhp_lock_release(bool bringup) in cpuhp_lock_release() argument
109 lock_map_release(bringup ? &cpuhp_state_up_map : &cpuhp_state_down_map); in cpuhp_lock_release()
113 static inline void cpuhp_lock_acquire(bool bringup) { } in cpuhp_lock_acquire() argument
114 static inline void cpuhp_lock_release(bool bringup) { } in cpuhp_lock_release() argument
123 * @cant_stop: Bringup/teardown can't be stopped at this step
153 static bool cpuhp_step_empty(bool bringup, struct cpuhp_step *step) in cpuhp_step_empty() argument
155 return bringup ? !step->startup.single : !step->teardown.single; in cpuhp_step_empty()
162 * @bringup: True if the bringup callback should be invoked
171 bool bringup, struct hlist_node *node, in cpuhp_invoke_callback() argument
185 if (cpuhp_step_empty(bringup, step)) { in cpuhp_invoke_callback()
192 cb = bringup ? step->startup.single : step->teardown.single; in cpuhp_invoke_callback()
199 cbm = bringup ? step->startup.multi : step->teardown.multi; in cpuhp_invoke_callback()
233 cbm = !bringup ? step->startup.multi : step->teardown.multi; in cpuhp_invoke_callback()
262 static inline void wait_for_ap_thread(struct cpuhp_cpu_state *st, bool bringup) in wait_for_ap_thread() argument
264 struct completion *done = bringup ? &st->done_up : &st->done_down; in wait_for_ap_thread()
268 static inline void complete_ap_thread(struct cpuhp_cpu_state *st, bool bringup) in complete_ap_thread() argument
270 struct completion *done = bringup ? &st->done_up : &st->done_down; in complete_ap_thread()
294 * cpuhp_ap_update_sync_state - Update synchronization state during bringup/teardown
434 * Early CPU bringup synchronization point. Cannot use cpuhp_state::done_up
435 * because the AP cannot issue complete() so early in the bringup.
703 bool bringup = st->state < target; in cpuhp_set_state() local
710 st->bringup = bringup; in cpuhp_set_state()
711 if (cpu_dying(cpu) != !bringup) in cpuhp_set_state()
712 set_cpu_dying(cpu, !bringup); in cpuhp_set_state()
721 bool bringup = !st->bringup; in cpuhp_reset_state() local
726 * Already rolling back. No need invert the bringup value or to change in cpuhp_reset_state()
739 if (st->bringup) in cpuhp_reset_state()
745 st->bringup = bringup; in cpuhp_reset_state()
746 if (cpu_dying(cpu) != !bringup) in cpuhp_reset_state()
747 set_cpu_dying(cpu, !bringup); in cpuhp_reset_state()
764 wait_for_ap_thread(st, st->bringup); in __cpuhp_kick_ap()
824 * Prevent irq alloc/free across the bringup. in cpuhp_bringup_ap()
861 * Prevent irq alloc/free across the bringup by acquiring the in bringup_cpu()
919 static bool cpuhp_next_state(bool bringup, in cpuhp_next_state() argument
925 if (bringup) { in cpuhp_next_state()
937 if (!cpuhp_step_empty(bringup, cpuhp_get_step(*state_to_run))) in cpuhp_next_state()
944 static int __cpuhp_invoke_callback_range(bool bringup, in __cpuhp_invoke_callback_range() argument
953 while (cpuhp_next_state(bringup, &state, st, target)) { in __cpuhp_invoke_callback_range()
956 err = cpuhp_invoke_callback(cpu, state, bringup, NULL, NULL); in __cpuhp_invoke_callback_range()
962 cpu, bringup ? "UP" : "DOWN", in __cpuhp_invoke_callback_range()
975 static inline int cpuhp_invoke_callback_range(bool bringup, in cpuhp_invoke_callback_range() argument
980 return __cpuhp_invoke_callback_range(bringup, cpu, st, target, false); in cpuhp_invoke_callback_range()
983 static inline void cpuhp_invoke_callback_range_nofail(bool bringup, in cpuhp_invoke_callback_range_nofail() argument
988 __cpuhp_invoke_callback_range(bringup, cpu, st, target, true); in cpuhp_invoke_callback_range_nofail()
1026 * The cpu hotplug threads manage the bringup and teardown of the cpus
1052 bool bringup = st->bringup; in cpuhp_thread_fun() local
1070 cpuhp_lock_acquire(bringup); in cpuhp_thread_fun()
1076 st->should_run = cpuhp_next_state(bringup, &state, st, st->target); in cpuhp_thread_fun()
1085 st->result = cpuhp_invoke_callback(cpu, state, bringup, st->node, &st->last); in cpuhp_thread_fun()
1093 st->result = cpuhp_invoke_callback(cpu, state, bringup, st->node, &st->last); in cpuhp_thread_fun()
1107 cpuhp_lock_release(bringup); in cpuhp_thread_fun()
1111 complete_ap_thread(st, bringup); in cpuhp_thread_fun()
1116 cpuhp_invoke_ap_callback(int cpu, enum cpuhp_state state, bool bringup, in cpuhp_invoke_ap_callback() argument
1136 return cpuhp_invoke_callback(cpu, state, bringup, node, NULL); in cpuhp_invoke_ap_callback()
1142 st->bringup = bringup; in cpuhp_invoke_ap_callback()
1153 st->bringup = !bringup; in cpuhp_invoke_ap_callback()
1650 * online bringup to the hotplug thread.
1864 * On architectures which have enabled parallel bringup this invokes all BP
1867 * bringup code in parallel and then wait for the control CPU to release
1914 /* Try parallel bringup optimization if enabled */ in bringup_nonboot_cpus()
1918 /* Full per CPU serialized bringup */ in bringup_nonboot_cpus()
2156 * releases it for the complete bringup.
2159 .name = "cpu:bringup",
2166 * All-in-one CPU bringup state which includes the kick alive.
2169 .name = "cpu:bringup",
2374 static int cpuhp_issue_call(int cpu, enum cpuhp_state state, bool bringup, in cpuhp_issue_call() argument
2384 if (cpuhp_step_empty(bringup, sp)) in cpuhp_issue_call()
2387 * The non AP bound callbacks can fail on bringup. On teardown in cpuhp_issue_call()
2392 ret = cpuhp_invoke_ap_callback(cpu, state, bringup, node); in cpuhp_issue_call()
2394 ret = cpuhp_invoke_callback(cpu, state, bringup, node, NULL); in cpuhp_issue_call()
2396 ret = cpuhp_invoke_callback(cpu, state, bringup, node, NULL); in cpuhp_issue_call()
2398 BUG_ON(ret && !bringup); in cpuhp_issue_call()