Re: [PATCHv4] x86/trampoline: Bypass compat mode in trampoline_start64() if not needed

From: Kirill A. Shutemov
Date: Fri Feb 23 2024 - 05:57:43 EST


On Wed, Jan 31, 2024 at 03:04:03PM +0200, Kirill A. Shutemov wrote:
> On Fri, Jan 26, 2024 at 12:01:01PM +0200, Kirill A. Shutemov wrote:
> > The trampoline_start64() vector is used when a secondary CPU starts in
> > 64-bit mode. The current implementation directly enters compatibility
> > mode. It is necessary to disable paging and re-enable it in the correct
> > paging mode: either 4- or 5-level, depending on the configuration.
> >
> > The X86S[1] ISA does not support compatibility mode in ring 0, and
> > paging cannot be disabled.
> >
> > The trampoline_start64() function is reworked to only enter compatibility
> > mode if it is necessary to change the paging mode. If the CPU is already
> > in the desired paging mode, it will proceed in long mode.
> >
> > This change will allow a secondary CPU to boot on an X86S machine as
> > long as the CPU is already in the correct paging mode.
> >
> > In the future, there will be a mechanism to switch between paging modes
> > without disabling paging.
> >
> > [1] https://www.intel.com/content/www/us/en/developer/articles/technical/envisioning-future-simplified-architecture.html
> >
> > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
> > Reviewed-by: Andi Kleen <ak@xxxxxxxxxxxxxxx>
> > Reviewed-by: Kai Huang <kai.huang@xxxxxxxxx>
> > Cc: Sean Christopherson <seanjc@xxxxxxxxxx>
>
> Any feedback?

Anybody?

--
Kiryl Shutsemau / Kirill A. Shutemov