• Tom Lendacky's avatar
    x86/realmode: Setup AP jump table · 8940ac9c
    Tom Lendacky authored
    As part of the GHCB specification, the booting of APs under SEV-ES
    requires an AP jump table when transitioning from one layer of code to
    another (e.g. when going from UEFI to the OS). As a result, each layer
    that parks an AP must provide the physical address of an AP jump table
    to the next layer via the hypervisor.
    
    Upon booting of the kernel, read the AP jump table address from the
    hypervisor. Under SEV-ES, APs are started using the INIT-SIPI-SIPI
    sequence. Before issuing the first SIPI request for an AP, the start
    CS and IP is programmed into the AP jump table. Upon issuing the SIPI
    request, the AP will awaken and jump to that start CS:IP address.
    Signed-off-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
    [ jroedel@suse.de: - Adapted to different code base
                       - Moved AP table setup from SIPI sending path to
    		     real-mode setup code
    		   - Fix sparse warnings ]
    Co-developed-by: default avatarJoerg Roedel <jroedel@suse.de>
    Signed-off-by: default avatarJoerg Roedel <jroedel@suse.de>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20200907131613.12703-67-joro@8bytes.org
    8940ac9c
init.c 4.22 KB