Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d10ef6f9 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

cpu/hotplug: Document states better

parent 2a58c527
Loading
Loading
Loading
Loading
+46 −1
Original line number Original line Diff line number Diff line
@@ -1172,6 +1172,10 @@ static struct cpuhp_step cpuhp_bp_states[] = {
		.teardown		= NULL,
		.teardown		= NULL,
		.cant_stop		= true,
		.cant_stop		= true,
	},
	},
	/*
	 * Preparatory and dead notifiers. Will be replaced once the notifiers
	 * are converted to states.
	 */
	[CPUHP_NOTIFY_PREPARE] = {
	[CPUHP_NOTIFY_PREPARE] = {
		.name			= "notify:prepare",
		.name			= "notify:prepare",
		.startup		= notify_prepare,
		.startup		= notify_prepare,
@@ -1179,12 +1183,17 @@ static struct cpuhp_step cpuhp_bp_states[] = {
		.skip_onerr		= true,
		.skip_onerr		= true,
		.cant_stop		= true,
		.cant_stop		= true,
	},
	},
	/* Kicks the plugged cpu into life */
	[CPUHP_BRINGUP_CPU] = {
	[CPUHP_BRINGUP_CPU] = {
		.name			= "cpu:bringup",
		.name			= "cpu:bringup",
		.startup		= bringup_cpu,
		.startup		= bringup_cpu,
		.teardown		= NULL,
		.teardown		= NULL,
		.cant_stop		= true,
		.cant_stop		= true,
	},
	},
	/*
	 * Handled on controll processor until the plugged processor manages
	 * this itself.
	 */
	[CPUHP_TEARDOWN_CPU] = {
	[CPUHP_TEARDOWN_CPU] = {
		.name			= "cpu:teardown",
		.name			= "cpu:teardown",
		.startup		= NULL,
		.startup		= NULL,
@@ -1197,6 +1206,23 @@ static struct cpuhp_step cpuhp_bp_states[] = {
/* Application processor state steps */
/* Application processor state steps */
static struct cpuhp_step cpuhp_ap_states[] = {
static struct cpuhp_step cpuhp_ap_states[] = {
#ifdef CONFIG_SMP
#ifdef CONFIG_SMP
	/* Final state before CPU kills itself */
	[CPUHP_AP_IDLE_DEAD] = {
		.name			= "idle:dead",
	},
	/*
	 * Last state before CPU enters the idle loop to die. Transient state
	 * for synchronization.
	 */
	[CPUHP_AP_OFFLINE] = {
		.name			= "ap:offline",
		.cant_stop		= true,
	},
	/*
	 * Low level startup/teardown notifiers. Run with interrupts
	 * disabled. Will be removed once the notifiers are converted to
	 * states.
	 */
	[CPUHP_AP_NOTIFY_STARTING] = {
	[CPUHP_AP_NOTIFY_STARTING] = {
		.name			= "notify:starting",
		.name			= "notify:starting",
		.startup		= notify_starting,
		.startup		= notify_starting,
@@ -1204,17 +1230,32 @@ static struct cpuhp_step cpuhp_ap_states[] = {
		.skip_onerr		= true,
		.skip_onerr		= true,
		.cant_stop		= true,
		.cant_stop		= true,
	},
	},
	/* Entry state on starting. Interrupts enabled from here on. Transient
	 * state for synchronsization */
	[CPUHP_AP_ONLINE] = {
		.name			= "ap:online",
	},
	/* Handle smpboot threads park/unpark */
	[CPUHP_AP_SMPBOOT_THREADS] = {
	[CPUHP_AP_SMPBOOT_THREADS] = {
		.name			= "smpboot:threads",
		.name			= "smpboot:threads",
		.startup		= smpboot_unpark_threads,
		.startup		= smpboot_unpark_threads,
		.teardown		= NULL,
		.teardown		= NULL,
	},
	},
	/*
	 * Online/down_prepare notifiers. Will be removed once the notifiers
	 * are converted to states.
	 */
	[CPUHP_AP_NOTIFY_ONLINE] = {
	[CPUHP_AP_NOTIFY_ONLINE] = {
		.name			= "notify:online",
		.name			= "notify:online",
		.startup		= notify_online,
		.startup		= notify_online,
		.teardown		= notify_down_prepare,
		.teardown		= notify_down_prepare,
	},
	},
#endif
#endif
	/*
	 * The dynamically registered state space is here
	 */

	/* CPU is fully up and running. */
	[CPUHP_ONLINE] = {
	[CPUHP_ONLINE] = {
		.name			= "online",
		.name			= "online",
		.startup		= NULL,
		.startup		= NULL,
@@ -1232,7 +1273,11 @@ static int cpuhp_cb_check(enum cpuhp_state state)


static bool cpuhp_is_ap_state(enum cpuhp_state state)
static bool cpuhp_is_ap_state(enum cpuhp_state state)
{
{
	return state > CPUHP_BRINGUP_CPU;
	/*
	 * The extra check for CPUHP_TEARDOWN_CPU is only for documentation
	 * purposes as that state is handled explicitely in cpu_down.
	 */
	return state > CPUHP_BRINGUP_CPU && state != CPUHP_TEARDOWN_CPU;
}
}


static struct cpuhp_step *cpuhp_get_step(enum cpuhp_state state)
static struct cpuhp_step *cpuhp_get_step(enum cpuhp_state state)