Re: [PATCH 1/1] x86/speculation: Allow IBPB to be conditionally enabled on CPUs with always-on STIBP

From: Joel Fernandes
Date: Wed Nov 04 2020 - 18:31:49 EST


On Tue, Nov 03, 2020 at 11:57:57AM +0100, Borislav Petkov wrote:
> On Mon, Nov 02, 2020 at 11:02:10AM +1100, Anand K. Mistry wrote:
> > > I like the idea of passing in the mode you want to check, but it appears
> > > they are never used independently. The ibpb and stibp modes are always
> > > checked together in one of the if statements below, so you could make this
> > > a function that checks both modes and just have a single call. I'll leave
> > > that up to the maintainers to see what is preferred.
> >
> > I can see both sides to this. Personally, I think I prefer it as-is
> > since I think it improves readability a bit by making the conditions
> > less complicated whilst not hiding too many details. I'll wait to see
> > what others say before changing this one.
>
> Yes, but if you make it a single function with a descriptive name, you'd
> make the call sites even more readable:
>
> if (!is_spec_ib_conditional(..))
> bla;
>
> or
>
> if (!is_spec_ib_user_controlled(..))
> blu;
>
> and that function should simply check both spectre_v2_user_ibpb *and*
> spectre_v2_user_stibp in one go.
>
> Why should we do that?
>
> Exactly because you both got your brains twisted just from looking at
> this. Because this mitigation crap is such an ugly and complex maze that
> we would take even the smallest simplification any day of the week!
>
> Welcome to my life since meltdown. Brain twist feels good, doesn't it?
>
> :-)))

I hate the maze too. In theory we can get rid of STIBP if/when
core-scheduling is enabled because the cross-CPU branch predictor poisioning
would not be possible. Maybe that will simplify the maze a bit.

thanks,

- Joel