Re: [RESEND PATCH v6 04/12] x86/fsgsbase/64: Enable FSGSBASE instructions in the helper functions
From: Thomas Gleixner
Date: Mon Mar 25 2019 - 08:46:52 EST
On Mon, 25 Mar 2019, Thomas Gleixner wrote:
> The whole point of FSGSBASE support is performance, right?
> So can please someone explain why having the following in the context
> switch path when it can be completely avoided is enhancing performance:
> - 4 x SWAPGS
> - 1 x RDMSR
> - 1 x WRMSR
Corrrecting myself. That should be:
obviously. Still the point remains.
> - 2 x local_irq_save()
> - 2 x local_irq_restore()
> Of course the local_irq_save/restore() pairs are utterly pointless because
> switch_to() runs with interrupts disabled already.
> SWAPGS instead needs:
> 1 x WRMSR
> and nothing else.
> So trading the single WRMSR against the above in the context switch path is
> gaining performance, right?
> The only thing which gains performance is user space switching GS. And this
> user space performance gain is achieved by:
> - Inconsistent and fragile code with a guarantee for subtle and hard to
> diagnose bugs
> - Pointless overhead in the context switch code
> Sorry, not going to happen ever.
> Get your act together and make this consistent. Either SWAPGS or FSGSBASE,
> but not a mix of it.