x86[_64]: Do not return too soon from detectCPUTopology()
This commit is contained in:
parent
8ec897323e
commit
fafeda52ea
@ -610,7 +610,7 @@ getIntelCPULegacyInitialAPICID(int currentCPU)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline void
|
static inline status_t
|
||||||
detectIntelCPUTopologyLegacy(int maxBasicLeaf)
|
detectIntelCPUTopologyLegacy(int maxBasicLeaf)
|
||||||
{
|
{
|
||||||
getCPUTopologyID = getIntelCPULegacyInitialAPICID;
|
getCPUTopologyID = getIntelCPULegacyInitialAPICID;
|
||||||
@ -640,6 +640,8 @@ detectIntelCPUTopologyLegacy(int maxBasicLeaf)
|
|||||||
| sHierarchyMask[CPU_TOPOLOGY_CORE];
|
| sHierarchyMask[CPU_TOPOLOGY_CORE];
|
||||||
sHierarchyMask[CPU_TOPOLOGY_PACKAGE] = ~kSinglePackageMask;
|
sHierarchyMask[CPU_TOPOLOGY_PACKAGE] = ~kSinglePackageMask;
|
||||||
sHierarchyShift[CPU_TOPOLOGY_PACKAGE] = countSetBits(kSinglePackageMask);
|
sHierarchyShift[CPU_TOPOLOGY_PACKAGE] = countSetBits(kSinglePackageMask);
|
||||||
|
|
||||||
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -662,23 +664,25 @@ static void
|
|||||||
detectCPUTopology(int currentCPU, cpu_ent* cpu, int maxBasicLeaf)
|
detectCPUTopology(int currentCPU, cpu_ent* cpu, int maxBasicLeaf)
|
||||||
{
|
{
|
||||||
if (currentCPU == 0) {
|
if (currentCPU == 0) {
|
||||||
|
status_t result = B_UNSUPPORTED;
|
||||||
if (x86_check_feature(IA32_FEATURE_HTT, FEATURE_COMMON)) {
|
if (x86_check_feature(IA32_FEATURE_HTT, FEATURE_COMMON)) {
|
||||||
if (cpu->arch.vendor == VENDOR_INTEL) {
|
if (cpu->arch.vendor == VENDOR_INTEL) {
|
||||||
status_t result = detectIntelCPUTopologyx2APIC(maxBasicLeaf);
|
result = detectIntelCPUTopologyx2APIC(maxBasicLeaf);
|
||||||
if (result != B_OK)
|
if (result != B_OK)
|
||||||
detectIntelCPUTopologyLegacy(maxBasicLeaf);
|
result = detectIntelCPUTopologyLegacy(maxBasicLeaf);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dprintf("No CPU topology information available.\n");
|
if (result != B_OK) {
|
||||||
|
dprintf("No CPU topology information available.\n");
|
||||||
|
|
||||||
getCPUTopologyID = getSimpleCPUTopologyID;
|
getCPUTopologyID = getSimpleCPUTopologyID;
|
||||||
|
|
||||||
memset(sHierarchyMask, 0, sizeof(sHierarchyMask));
|
memset(sHierarchyMask, 0, sizeof(sHierarchyMask));
|
||||||
sHierarchyMask[CPU_TOPOLOGY_PACKAGE] = ~uint32(0);
|
sHierarchyMask[CPU_TOPOLOGY_PACKAGE] = ~uint32(0);
|
||||||
|
|
||||||
memset(sHierarchyShift, 0, sizeof(sHierarchyShift));
|
memset(sHierarchyShift, 0, sizeof(sHierarchyShift));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ASSERT(getCPUTopologyID != NULL);
|
ASSERT(getCPUTopologyID != NULL);
|
||||||
|
Loading…
Reference in New Issue
Block a user