BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=2845 Platform shall enable X2APIC by default to meet requirements for interrupt steering policy on Windows OS.
Change-Id: Ia9e24bce79c91762c560fa3de6260716939f0b1b Signed-off-by: Ji-yunX Lu <[email protected]> Cc: Eric Dong <[email protected]> Cc: Ray Ni <[email protected]> Cc: Laszlo Ersek <[email protected]> Cc: Rahul Kumar <[email protected]> --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 21 ++++----------------- 1 file changed, 4 insertions(+), 17 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index ab7a8ed663..70bc5da195 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -488,8 +488,8 @@ CollectProcessorCount ( ) { UINTN Index; - CPU_INFO_IN_HOB *CpuInfoInHob; BOOLEAN X2Apic; + CPUID_VERSION_INFO_ECX VersionInfoEcx; // // Send 1st broadcast IPI to APs to wakeup APs @@ -505,26 +505,13 @@ CollectProcessorCount ( CpuPause (); } - - // - // Enable x2APIC mode if - // 1. Number of CPU is greater than 255; or - // 2. There are any logical processors reporting an Initial APIC ID of 255 or greater. - // X2Apic = FALSE; - if (CpuMpData->CpuCount > 255) { + AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, &VersionInfoEcx.Uint32, NULL); + if (VersionInfoEcx.Bits.x2APIC == 1) { // - // If there are more than 255 processor found, force to enable X2APIC + // Enable x2APIC mode if capable // X2Apic = TRUE; - } else { - CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob; - for (Index = 0; Index < CpuMpData->CpuCount; Index++) { - if (CpuInfoInHob[Index].InitialApicId >= 0xFF) { - X2Apic = TRUE; - break; - } - } } if (X2Apic) { -- 2.26.2.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#62342): https://edk2.groups.io/g/devel/message/62342 Mute This Topic: https://groups.io/mt/75413450/21656 Group Owner: [email protected] Unsubscribe: https://edk2.groups.io/g/devel/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
