Commit 7826c069 authored by Arjan van de Ven's avatar Arjan van de Ven Committed by Rafael J. Wysocki
Browse files

intel_idle: clean up the (new) state_update_enter_method function



Now that the logic for state_update_enter_method() is in its own
function, the long if .. else if .. else if .. else if chain
can be simplified by just returning from the function
at the various places. This does not change functionality,
but it makes the logic much simpler to read or modify later.

Signed-off-by: default avatarArjan van de Ven <arjan@linux.intel.com>
Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
parent 4622ba92
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -1849,7 +1849,10 @@ static void state_update_enter_method(struct cpuidle_state *state, int cstate)
		WARN_ON_ONCE(state->flags & CPUIDLE_FLAG_IBRS);
		WARN_ON_ONCE(state->flags & CPUIDLE_FLAG_IRQ_ENABLE);
		state->enter = intel_idle_xstate;
	} else if (cpu_feature_enabled(X86_FEATURE_KERNEL_IBRS) &&
		return;
	}

	if (cpu_feature_enabled(X86_FEATURE_KERNEL_IBRS) &&
			   state->flags & CPUIDLE_FLAG_IBRS) {
		/*
		 * IBRS mitigation requires that C-states are entered
@@ -1857,9 +1860,15 @@ static void state_update_enter_method(struct cpuidle_state *state, int cstate)
		 */
		WARN_ON_ONCE(state->flags & CPUIDLE_FLAG_IRQ_ENABLE);
		state->enter = intel_idle_ibrs;
	} else if (state->flags & CPUIDLE_FLAG_IRQ_ENABLE) {
		return;
	}

	if (state->flags & CPUIDLE_FLAG_IRQ_ENABLE) {
		state->enter = intel_idle_irq;
	} else if (force_irq_on) {
		return;
	}

	if (force_irq_on) {
		pr_info("forced intel_idle_irq for state %d\n", cstate);
		state->enter = intel_idle_irq;
	}