Lines Matching refs:state

68 	enum cpuhp_state	state;  member
148 static struct cpuhp_step *cpuhp_get_step(enum cpuhp_state state) in cpuhp_get_step() argument
150 return cpuhp_hp_states + state; in cpuhp_get_step()
170 static int cpuhp_invoke_callback(unsigned int cpu, enum cpuhp_state state, in cpuhp_invoke_callback() argument
175 struct cpuhp_step *step = cpuhp_get_step(state); in cpuhp_invoke_callback()
180 if (st->fail == state) { in cpuhp_invoke_callback()
194 trace_cpuhp_enter(cpu, st->target, state, cb); in cpuhp_invoke_callback()
196 trace_cpuhp_exit(cpu, st->state, state, ret); in cpuhp_invoke_callback()
204 trace_cpuhp_multi_enter(cpu, st->target, state, cbm, node); in cpuhp_invoke_callback()
206 trace_cpuhp_exit(cpu, st->state, state, ret); in cpuhp_invoke_callback()
216 trace_cpuhp_multi_enter(cpu, st->target, state, cbm, node); in cpuhp_invoke_callback()
218 trace_cpuhp_exit(cpu, st->state, state, ret); in cpuhp_invoke_callback()
241 trace_cpuhp_multi_enter(cpu, st->target, state, cbm, node); in cpuhp_invoke_callback()
243 trace_cpuhp_exit(cpu, st->state, state, ret); in cpuhp_invoke_callback()
253 static bool cpuhp_is_ap_state(enum cpuhp_state state) in cpuhp_is_ap_state() argument
259 return state > CPUHP_BRINGUP_CPU && state != CPUHP_TEARDOWN_CPU; in cpuhp_is_ap_state()
277 static bool cpuhp_is_atomic_state(enum cpuhp_state state) in cpuhp_is_atomic_state() argument
279 return CPUHP_AP_IDLE_DEAD <= state && state < CPUHP_AP_ONLINE; in cpuhp_is_atomic_state()
300 static inline void cpuhp_ap_update_sync_state(enum cpuhp_sync_state state) in cpuhp_ap_update_sync_state() argument
304 (void)atomic_xchg(st, state); in cpuhp_ap_update_sync_state()
309 static bool cpuhp_wait_for_sync_state(unsigned int cpu, enum cpuhp_sync_state state, in cpuhp_wait_for_sync_state() argument
320 if (sync == state) { in cpuhp_wait_for_sync_state()
341 static inline void cpuhp_ap_update_sync_state(enum cpuhp_sync_state state) { } in cpuhp_ap_update_sync_state() argument
713 enum cpuhp_state prev_state = st->state; in cpuhp_set_state()
714 bool bringup = st->state < target; in cpuhp_set_state()
751 st->state--; in cpuhp_reset_state()
753 st->state++; in cpuhp_reset_state()
764 if (!st->single && st->state == st->target) in __cpuhp_kick_ap()
938 if (st->state >= target) in cpuhp_next_state()
941 *state_to_run = ++st->state; in cpuhp_next_state()
943 if (st->state <= target) in cpuhp_next_state()
946 *state_to_run = st->state--; in cpuhp_next_state()
962 enum cpuhp_state state; in __cpuhp_invoke_callback_range() local
965 while (cpuhp_next_state(bringup, &state, st, target)) { in __cpuhp_invoke_callback_range()
968 err = cpuhp_invoke_callback(cpu, state, bringup, NULL, NULL); in __cpuhp_invoke_callback_range()
975 cpuhp_get_step(st->state)->name, in __cpuhp_invoke_callback_range()
976 st->state, err); in __cpuhp_invoke_callback_range()
1014 return st->state <= CPUHP_BRINGUP_CPU; in can_rollback_cpu()
1020 enum cpuhp_state prev_state = st->state; in cpuhp_up_callbacks()
1026 ret, cpu, cpuhp_get_step(st->state)->name, in cpuhp_up_callbacks()
1027 st->state); in cpuhp_up_callbacks()
1065 enum cpuhp_state state; in cpuhp_thread_fun() local
1085 state = st->cb_state; in cpuhp_thread_fun()
1088 st->should_run = cpuhp_next_state(bringup, &state, st, st->target); in cpuhp_thread_fun()
1093 WARN_ON_ONCE(!cpuhp_is_ap_state(state)); in cpuhp_thread_fun()
1095 if (cpuhp_is_atomic_state(state)) { in cpuhp_thread_fun()
1097 st->result = cpuhp_invoke_callback(cpu, state, bringup, st->node, &st->last); in cpuhp_thread_fun()
1105 st->result = cpuhp_invoke_callback(cpu, state, bringup, st->node, &st->last); in cpuhp_thread_fun()
1128 cpuhp_invoke_ap_callback(int cpu, enum cpuhp_state state, bool bringup, in cpuhp_invoke_ap_callback() argument
1148 return cpuhp_invoke_callback(cpu, state, bringup, node, NULL); in cpuhp_invoke_ap_callback()
1155 st->cb_state = state; in cpuhp_invoke_ap_callback()
1181 enum cpuhp_state prev_state = st->state; in cpuhp_kick_ap_work()
1192 trace_cpuhp_exit(cpu, st->state, prev_state, ret); in cpuhp_kick_ap_work()
1286 WARN_ON(st->state != (CPUHP_TEARDOWN_CPU - 1)); in take_cpu_down()
1330 BUG_ON(st->state != CPUHP_AP_IDLE_DEAD); in takedown_cpu()
1364 BUG_ON(st->state != CPUHP_AP_OFFLINE); in cpuhp_report_idle_dead()
1367 st->state = CPUHP_AP_IDLE_DEAD; in cpuhp_report_idle_dead()
1379 enum cpuhp_state prev_state = st->state; in cpuhp_down_callbacks()
1385 ret, cpu, cpuhp_get_step(st->state)->name, in cpuhp_down_callbacks()
1386 st->state); in cpuhp_down_callbacks()
1390 if (st->state < prev_state) in cpuhp_down_callbacks()
1420 if (st->state > CPUHP_TEARDOWN_CPU) { in _cpu_down()
1434 if (st->state > CPUHP_TEARDOWN_CPU) in _cpu_down()
1444 if (ret && st->state < prev_state) { in _cpu_down()
1445 if (st->state == CPUHP_TEARDOWN_CPU) { in _cpu_down()
1606 void cpuhp_online_idle(enum cpuhp_state state) in cpuhp_online_idle() argument
1611 if (state != CPUHP_AP_ONLINE_IDLE) in cpuhp_online_idle()
1622 st->state = CPUHP_AP_ONLINE_IDLE; in cpuhp_online_idle()
1644 if (st->state >= target) in _cpu_up()
1647 if (st->state == CPUHP_OFFLINE) { in _cpu_up()
1669 if (st->state > CPUHP_BRINGUP_CPU) { in _cpu_up()
2261 static int cpuhp_cb_check(enum cpuhp_state state) in cpuhp_cb_check() argument
2263 if (state <= CPUHP_OFFLINE || state >= CPUHP_ONLINE) in cpuhp_cb_check()
2273 static int cpuhp_reserve_state(enum cpuhp_state state) in cpuhp_reserve_state() argument
2278 switch (state) { in cpuhp_reserve_state()
2291 for (i = state; i <= end; i++, step++) { in cpuhp_reserve_state()
2299 static int cpuhp_store_callbacks(enum cpuhp_state state, const char *name, in cpuhp_store_callbacks() argument
2317 if (name && (state == CPUHP_AP_ONLINE_DYN || in cpuhp_store_callbacks()
2318 state == CPUHP_BP_PREPARE_DYN)) { in cpuhp_store_callbacks()
2319 ret = cpuhp_reserve_state(state); in cpuhp_store_callbacks()
2322 state = ret; in cpuhp_store_callbacks()
2324 sp = cpuhp_get_step(state); in cpuhp_store_callbacks()
2336 static void *cpuhp_get_teardown_cb(enum cpuhp_state state) in cpuhp_get_teardown_cb() argument
2338 return cpuhp_get_step(state)->teardown.single; in cpuhp_get_teardown_cb()
2345 static int cpuhp_issue_call(int cpu, enum cpuhp_state state, bool bringup, in cpuhp_issue_call() argument
2348 struct cpuhp_step *sp = cpuhp_get_step(state); in cpuhp_issue_call()
2362 if (cpuhp_is_ap_state(state)) in cpuhp_issue_call()
2363 ret = cpuhp_invoke_ap_callback(cpu, state, bringup, node); in cpuhp_issue_call()
2365 ret = cpuhp_invoke_callback(cpu, state, bringup, node, NULL); in cpuhp_issue_call()
2367 ret = cpuhp_invoke_callback(cpu, state, bringup, node, NULL); in cpuhp_issue_call()
2378 static void cpuhp_rollback_install(int failedcpu, enum cpuhp_state state, in cpuhp_rollback_install() argument
2386 int cpustate = st->state; in cpuhp_rollback_install()
2392 if (cpustate >= state) in cpuhp_rollback_install()
2393 cpuhp_issue_call(cpu, state, false, node); in cpuhp_rollback_install()
2397 int __cpuhp_state_add_instance_cpuslocked(enum cpuhp_state state, in __cpuhp_state_add_instance_cpuslocked() argument
2407 sp = cpuhp_get_step(state); in __cpuhp_state_add_instance_cpuslocked()
2422 int cpustate = st->state; in __cpuhp_state_add_instance_cpuslocked()
2424 if (cpustate < state) in __cpuhp_state_add_instance_cpuslocked()
2427 ret = cpuhp_issue_call(cpu, state, true, node); in __cpuhp_state_add_instance_cpuslocked()
2430 cpuhp_rollback_install(cpu, state, node); in __cpuhp_state_add_instance_cpuslocked()
2442 int __cpuhp_state_add_instance(enum cpuhp_state state, struct hlist_node *node, in __cpuhp_state_add_instance() argument
2448 ret = __cpuhp_state_add_instance_cpuslocked(state, node, invoke); in __cpuhp_state_add_instance()
2472 int __cpuhp_setup_state_cpuslocked(enum cpuhp_state state, in __cpuhp_setup_state_cpuslocked() argument
2483 if (cpuhp_cb_check(state) || !name) in __cpuhp_setup_state_cpuslocked()
2488 ret = cpuhp_store_callbacks(state, name, startup, teardown, in __cpuhp_setup_state_cpuslocked()
2491 dynstate = state == CPUHP_AP_ONLINE_DYN || state == CPUHP_BP_PREPARE_DYN; in __cpuhp_setup_state_cpuslocked()
2493 state = ret; in __cpuhp_setup_state_cpuslocked()
2506 int cpustate = st->state; in __cpuhp_setup_state_cpuslocked()
2508 if (cpustate < state) in __cpuhp_setup_state_cpuslocked()
2511 ret = cpuhp_issue_call(cpu, state, true, NULL); in __cpuhp_setup_state_cpuslocked()
2514 cpuhp_rollback_install(cpu, state, NULL); in __cpuhp_setup_state_cpuslocked()
2515 cpuhp_store_callbacks(state, NULL, NULL, NULL, false); in __cpuhp_setup_state_cpuslocked()
2526 return state; in __cpuhp_setup_state_cpuslocked()
2531 int __cpuhp_setup_state(enum cpuhp_state state, in __cpuhp_setup_state() argument
2540 ret = __cpuhp_setup_state_cpuslocked(state, name, invoke, startup, in __cpuhp_setup_state()
2547 int __cpuhp_state_remove_instance(enum cpuhp_state state, in __cpuhp_state_remove_instance() argument
2550 struct cpuhp_step *sp = cpuhp_get_step(state); in __cpuhp_state_remove_instance()
2553 BUG_ON(cpuhp_cb_check(state)); in __cpuhp_state_remove_instance()
2561 if (!invoke || !cpuhp_get_teardown_cb(state)) in __cpuhp_state_remove_instance()
2570 int cpustate = st->state; in __cpuhp_state_remove_instance()
2572 if (cpustate >= state) in __cpuhp_state_remove_instance()
2573 cpuhp_issue_call(cpu, state, false, node); in __cpuhp_state_remove_instance()
2595 void __cpuhp_remove_state_cpuslocked(enum cpuhp_state state, bool invoke) in __cpuhp_remove_state_cpuslocked() argument
2597 struct cpuhp_step *sp = cpuhp_get_step(state); in __cpuhp_remove_state_cpuslocked()
2600 BUG_ON(cpuhp_cb_check(state)); in __cpuhp_remove_state_cpuslocked()
2608 state); in __cpuhp_remove_state_cpuslocked()
2612 if (!invoke || !cpuhp_get_teardown_cb(state)) in __cpuhp_remove_state_cpuslocked()
2622 int cpustate = st->state; in __cpuhp_remove_state_cpuslocked()
2624 if (cpustate >= state) in __cpuhp_remove_state_cpuslocked()
2625 cpuhp_issue_call(cpu, state, false, NULL); in __cpuhp_remove_state_cpuslocked()
2628 cpuhp_store_callbacks(state, NULL, NULL, NULL, false); in __cpuhp_remove_state_cpuslocked()
2633 void __cpuhp_remove_state(enum cpuhp_state state, bool invoke) in __cpuhp_remove_state() argument
2636 __cpuhp_remove_state_cpuslocked(state, invoke); in __cpuhp_remove_state()
2735 return sprintf(buf, "%d\n", st->state); in state_show()
2737 static DEVICE_ATTR_RO(state);
2769 if (st->state < target) in target_store()
2771 else if (st->state > target) in target_store()
2820 if (fail <= CPUHP_BRINGUP_CPU && st->state > CPUHP_BRINGUP_CPU) in fail_store()
2972 const char *state = smt_states[cpu_smt_control]; in control_show() local
2985 return sysfs_emit(buf, "%s\n", state); in control_show()
3169 this_cpu_write(cpuhp_state.state, CPUHP_ONLINE); in boot_cpu_hotplug_init()