diff --git a/OvmfPkg/Library/PlatformInitLib/Platform.c b/OvmfPkg/Library/PlatformInitLib/Platform.c index 715533b1f2..afe8b0abd6 100644 --- a/OvmfPkg/Library/PlatformInitLib/Platform.c +++ b/OvmfPkg/Library/PlatformInitLib/Platform.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -720,6 +721,11 @@ PlatformMaxCpuCountInitialization ( )); ASSERT (BootCpuCount <= MaxCpuCount); + if (MaxCpuCount > 255) { + DEBUG ((DEBUG_INFO, "%a: enable x2apic mode\n", __func__)); + SetApicMode (LOCAL_APIC_MODE_X2APIC); + } + PlatformInfoHob->PcdCpuMaxLogicalProcessorNumber = MaxCpuCount; PlatformInfoHob->PcdCpuBootLogicalProcessorNumber = BootCpuCount; } diff --git a/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf b/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf index fb179e6791..c79b2ee106 100644 --- a/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf +++ b/OvmfPkg/Library/PlatformInitLib/PlatformInitLib.inf @@ -48,6 +48,7 @@ HobLib QemuFwCfgLib QemuFwCfgSimpleParserLib + LocalApicLib MemEncryptSevLib MemoryAllocationLib MtrrLib