Messages in this thread | | | Date | Mon, 3 Jul 2023 11:09:12 -0400 | Subject | Re: [PATCH v4 4/4] intel_idle: Add ibrs_off module parameter to force disable IBRS | From | Waiman Long <> |
| |
On 7/3/23 06:32, Peter Zijlstra wrote: > On Tue, Jun 27, 2023 at 10:25:54PM -0400, Waiman Long wrote: > >> @@ -69,6 +69,7 @@ static int max_cstate = CPUIDLE_STATE_MAX - 1; >> static unsigned int disabled_states_mask __read_mostly; >> static unsigned int preferred_states_mask __read_mostly; >> static bool force_irq_on __read_mostly; >> +static bool ibrs_off __read_mostly; >> >> static struct cpuidle_device __percpu *intel_idle_cpuidle_devices; >> >> @@ -1919,12 +1920,15 @@ static void state_update_enter_method(struct cpuidle_state *state, int cstate) >> } >> >> if (cpu_feature_enabled(X86_FEATURE_KERNEL_IBRS) && >> - state->flags & CPUIDLE_FLAG_IBRS) { >> + ((state->flags & CPUIDLE_FLAG_IBRS) || ibrs_off)) { >> /* >> * IBRS mitigation requires that C-states are entered >> * with interrupts disabled. >> */ >> - WARN_ON_ONCE(state->flags & CPUIDLE_FLAG_IRQ_ENABLE); >> + if (ibrs_off && (state->flags & CPUIDLE_FLAG_IRQ_ENABLE)) >> + state->flags &= ~CPUIDLE_FLAG_IRQ_ENABLE; >> + else >> + WARN_ON_ONCE(state->flags & CPUIDLE_FLAG_IRQ_ENABLE); > If you're respinning this, you can leave out the else and avoid the > indent on the WARN: > > + if (ibrs_off && (state->flags & CPUIDLE_FLAG_IRQ_ENABLE)) > + state->flags &= ~CPUIDLE_FLAG_IRQ_ENABLE; > WARN_ON_ONCE(state->flags & CPUIDLE_FLAG_IRQ_ENABLE); > > Same effect, simpler code and all that.
That is true. I can certainly respin that as there is another suggested doc change that is pending.
Cheers, Longman
| |