]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c
UefiCpuPkg/LocalApicLib: fix feature test for Extended Topology CPUID leaf
[mirror_edk2.git] / UefiCpuPkg / Library / BaseXApicLib / BaseXApicLib.c
index 4064049807b72fcc334520339695fdcffd74fe93..f81bbb2252d9e82df9eab00d56b65f8bf9b7e4bb 100644 (file)
@@ -314,12 +314,15 @@ GetInitialApicId (
 \r
   //\r
   // If CPUID Leaf B is supported, \r
+  // And CPUID.0BH:EBX[15:0] reports a non-zero value,\r
   // Then the initial 32-bit APIC ID = CPUID.0BH:EDX\r
   // Else the initial 8-bit APIC ID = CPUID.1:EBX[31:24]\r
   //\r
   if (MaxCpuIdIndex >= CPUID_EXTENDED_TOPOLOGY) {\r
-    AsmCpuidEx (CPUID_EXTENDED_TOPOLOGY, 0, NULL, NULL, NULL, &ApicId);\r
-    return ApicId;\r
+    AsmCpuidEx (CPUID_EXTENDED_TOPOLOGY, 0, NULL, &RegEbx, NULL, &ApicId);\r
+    if ((RegEbx & (BIT16 - 1)) != 0) {\r
+      return ApicId;\r
+    }\r
   }\r
 \r
   AsmCpuid (CPUID_VERSION_INFO, NULL, &RegEbx, NULL, NULL);\r