The decision to allow parallel bringup of secondary CPUs checks
CC_ATTR_GUEST_STATE_ENCRYPT to detect encrypted guests. Those cannot use
parallel bootup because accessing the local APIC is intercepted and raises
a #VC or #VE, which cannot be handled at that point.

The check works correctly, but only for AMD encrypted guests. TDX does not
set that flag.

Check for cc_vendor != CC_VENDOR_NONE instead. That might be overbroad, but
definitely works for both AMD and Intel.

Fixes: 0c7ffa32dbd6 ("x86/smpboot/64: Implement 
arch_cpuhp_init_parallel_bringup() and enable it")
Reported-by: Kirill A. Shutemov <kirill.shute...@linux.intel.com>
Signed-off-by: Thomas Gleixner <t...@linutronix.de>
---
 arch/x86/kernel/smpboot.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

--- a/arch/x86/kernel/smpboot.c
+++ b/arch/x86/kernel/smpboot.c
@@ -1282,7 +1282,7 @@ bool __init arch_cpuhp_init_parallel_bri
         * Intel-TDX has a secure RDMSR hypercall, but that needs to be
         * implemented seperately in the low level startup ASM code.
         */
-       if (cc_platform_has(CC_ATTR_GUEST_STATE_ENCRYPT)) {
+       if (cc_get_vendor() != CC_VENDOR_NONE) {
                pr_info("Parallel CPU startup disabled due to guest state 
encryption\n");
                return false;
        }

Reply via email to