| Date | Wed, 2 Feb 2022 12:27:15 +0100 | From | Borislav Petkov <> | Subject | Re: [PATCHv2 16/29] x86/boot: Add a trampoline for booting APs via firmware handoff |
| |
On Mon, Jan 24, 2022 at 06:02:02PM +0300, Kirill A. Shutemov wrote: > From: Sean Christopherson <sean.j.christopherson@intel.com> > > Historically, x86 platforms have booted secondary processors (APs) > using INIT followed by the start up IPI (SIPI) messages. In regular > VMs, this boot sequence is supported by the VMM emulation. But such a > wakeup model is fatal for secure VMs like TDX in which VMM is an > untrusted entity. To address this issue, a new wakeup model was added > in ACPI v6.4, in which firmware (like TDX virtual BIOS) will help boot > the APs. More details about this wakeup model can be found in ACPI > specification v6.4, the section titled "Multiprocessor Wakeup Structure". > > Since the existing trampoline code requires processors to boot in real > mode with 16-bit addressing, it will not work for this wakeup model > (because it boots the AP in 64-bit mode). To handle it, extend the > trampoline code to support 64-bit mode firmware handoff. Also, extend > IDT and GDT pointers to support 64-bit mode hand off. > > There is no TDX-specific detection for this new boot method. The kernel > will rely on it as the sole boot method whenever the new ACPI structure > is present. > > The ACPI table parser for the MADT multiprocessor wake up structure and > the wakeup method that uses this structure will be added by the following > patch in this series. > > Reported-by: Kai Huang <kai.huang@intel.com>
I wonder what that Reported-by tag means here for this is a feature patch, not a bug fix or so...
> diff --git a/arch/x86/include/asm/realmode.h b/arch/x86/include/asm/realmode.h > index 331474b150f1..fd6f6e5b755a 100644 > --- a/arch/x86/include/asm/realmode.h > +++ b/arch/x86/include/asm/realmode.h > @@ -25,6 +25,7 @@ struct real_mode_header { > u32 sev_es_trampoline_start; > #endif > #ifdef CONFIG_X86_64 > + u32 trampoline_start64; > u32 trampoline_pgd; > #endif
Hmm, so there's trampoline_start, sev_es_trampoline_start and trampoline_start64. If those are mutually exclusive, can we merge them all into a single trampoline_start?
-- Regards/Gruss, Boris.
https://people.kernel.org/tglx/notes-about-netiquette
|