Skip to content

x86/sev: Do not try to parse for the CC blob on non-AMD hardware

Tao Liu requested to merge liutgnu/centos-stream-9:x86_sev into main

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2182562

Tested: Did sanity kexec testing on ThinkEdge SE10 system.

commit bee6cf1a80b54548a039e224c651bb15b644a480 Author: Borislav Petkov (AMD) bp@alien8.de Date: Sun Jul 16 20:22:20 2023 +0200

x86/sev: Do not try to parse for the CC blob on non-AMD hardware

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: c01fce9cef84 ("x86/compressed: Add SEV-SNP feature detection/setup") Reported-by: Tao Liu ltao@redhat.com Signed-off-by: Borislav Petkov (AMD) bp@alien8.de Acked-by: Tom Lendacky thomas.lendacky@amd.com Tested-by: Tao Liu ltao@redhat.com Cc: stable@kernel.org Link: https://lore.kernel.org/r/20230601072043.24439-1-ltao@redhat.com

Signed-off-by: Tao Liu ltao@redhat.com

Edited by Tao Liu

Merge request reports