On Fri, Oct 10, 2025, Valentin Schneider wrote: > Later commits will cause objtool to warn about static keys being used in > .noinstr sections in order to safely defer instruction patching IPIs > targeted at NOHZ_FULL CPUs. > > These keys are used in .noinstr code, and can be modified at runtime > (/proc/kernel/vmx* write). However it is not expected that they will be > flipped during latency-sensitive operations, and thus shouldn't be a source > of interference wrt the text patching IPI. > > Mark it to let objtool know not to warn about it.
Can you elaborate in the changelog on what will happen if the key is toggle? IIUC, smp_text_poke_batch_finish() will force IPIs if noinstr code is being patched. Even just a small footnote like this: Note, smp_text_poke_batch_finish() never defers IPIs if noinstr code is being patched, i.e. this is purely about silencing objtool warnings. to make it clear that there's no bug/race being introduced. > Reported-by: Josh Poimboeuf <[email protected]> > Signed-off-by: Valentin Schneider <[email protected]> > --- > arch/x86/kvm/vmx/vmx.c | 11 +++++++++-- > 1 file changed, 9 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index aa157fe5b7b31..dce2bd7375ec8 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -204,8 +204,15 @@ module_param(pt_mode, int, S_IRUGO); > > struct x86_pmu_lbr __ro_after_init vmx_lbr_caps; > > -static DEFINE_STATIC_KEY_FALSE(vmx_l1d_should_flush); > -static DEFINE_STATIC_KEY_FALSE(vmx_l1d_flush_cond); > +/* > + * Both of these static keys end up being used in .noinstr sections, however > + * they are only modified: > + * - at init > + * - from a /proc/kernel/vmx* write > + * thus during latency-sensitive operations they should remain stable. > + */ > +static DEFINE_STATIC_KEY_FALSE_NOINSTR(vmx_l1d_should_flush); > +static DEFINE_STATIC_KEY_FALSE_NOINSTR(vmx_l1d_flush_cond); > static DEFINE_MUTEX(vmx_l1d_flush_mutex); > > /* Storage for pre module init parameter parsing */ > -- > 2.51.0 >
