• Borislav Petkov (AMD)'s avatar
    x86/sev: Do not try to parse for the CC blob on non-AMD hardware · bee6cf1a
    Borislav Petkov (AMD) authored
    Tao Liu reported a boot hang on an Intel Atom machine due to an unmapped
    EFI config table. The reason being that the CC blob which contains the
    CPUID page for AMD SNP guests is parsed for before even checking
    whether the machine runs on AMD hardware.
    
    Usually that's not a problem on !AMD hw - it simply won't find the CC
    blob's GUID and return. However, if any parts of the config table
    pointers array is not mapped, the kernel will #PF very early in the
    decompressor stage without any opportunity to recover.
    
    Therefore, do a superficial CPUID check before poking for the CC blob.
    This will fix the current issue on real hardware. It would also work as
    a guest on a non-lying hypervisor.
    
    For the lying hypervisor, the check is done again, *after* parsing the
    CC blob as the real CPUID page will be present then.
    
    Clear the #VC handler in case SEV-{ES,SNP} hasn't been detected, as
    a precaution.
    
    Fixes: c01fce9c ("x86/compressed: Add SEV-SNP feature detection/setup")
    Reported-by: default avatarTao Liu <ltao@redhat.com>
    Signed-off-by: default avatarBorislav Petkov (AMD) <bp@alien8.de>
    Acked-by: default avatarTom Lendacky <thomas.lendacky@amd.com>
    Tested-by: default avatarTao Liu <ltao@redhat.com>
    Cc: <stable@kernel.org>
    Link: https://lore.kernel.org/r/20230601072043.24439-1-ltao@redhat.com
    bee6cf1a
idt_64.c 2.44 KB