Changeset 64267 in vbox for trunk/src/VBox/Runtime/r0drv/nt
- Timestamp:
- Oct 13, 2016 5:17:20 PM (8 years ago)
- svn:sync-xref-src-repo-rev:
- 111280
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/nt/initterm-r0drv-nt.cpp
r64234 r64267 447 447 ProcNum.Reserved = 0; 448 448 ULONG idxCpu = g_pfnrtKeGetProcessorIndexFromNumber(&ProcNum); 449 MY_CHECK_BREAK(idxCpu != INVALID_PROCESSOR_INDEX, 450 ("IPRT: Fatal: KeGetProcessorIndexFromNumber(%u/%u) failed\n", idxGroup, idxMember)); 451 MY_CHECK_BREAK(idxCpu < g_cRtMpNtMaxCpus && idxCpu < RTCPUSET_MAX_CPUS, 452 ("IPRT: Fatal: idxCpu=%u >= g_cRtMpNtMaxCpu=%u (RTCPUSET_MAX_CPUS=%u)\n", 453 idxCpu, g_cRtMpNtMaxCpus, RTCPUSET_MAX_CPUS)); 454 MY_CHECK_BREAK(idxCpu == idxCpuExpect, ("IPRT: Fatal: idxCpu=%u != idxCpuExpect=%u\n", idxCpu, idxCpuExpect)); 455 456 ProcNum.Group = UINT16_MAX; 457 ProcNum.Number = UINT8_MAX; 458 ProcNum.Reserved = UINT8_MAX; 459 NTSTATUS rcNt = g_pfnrtKeGetProcessorNumberFromIndex(idxCpu, &ProcNum); 460 MY_CHECK_BREAK(NT_SUCCESS(rcNt), ("IPRT: Fatal: KeGetProcessorNumberFromIndex(%u,) -> %#x!\n", idxCpu, rcNt)); 461 MY_CHECK_BREAK(ProcNum.Group == idxGroup && ProcNum.Number == idxMember, 462 ("IPRT: Fatal: KeGetProcessorXxxxFromYyyy roundtrip error for %#x! Group: %u vs %u, Number: %u vs %u\n", 463 idxCpu, ProcNum.Group, idxGroup, ProcNum.Number, idxMember)); 464 465 if (pGrpInfo->ActiveProcessorMask & RT_BIT_64(idxMember)) 466 RTCpuSetAddByIndex(&g_rtMpNtCpuSet, idxCpu); 449 if (idxCpu != INVALID_PROCESSOR_INDEX) 450 { 451 MY_CHECK_BREAK(idxCpu < g_cRtMpNtMaxCpus && idxCpu < RTCPUSET_MAX_CPUS, 452 ("IPRT: Fatal: idxCpu=%u >= g_cRtMpNtMaxCpu=%u (RTCPUSET_MAX_CPUS=%u)\n", 453 idxCpu, g_cRtMpNtMaxCpus, RTCPUSET_MAX_CPUS)); 454 MY_CHECK_BREAK(idxCpu == idxCpuExpect, ("IPRT: Fatal: idxCpu=%u != idxCpuExpect=%u\n", idxCpu, idxCpuExpect)); 455 456 ProcNum.Group = UINT16_MAX; 457 ProcNum.Number = UINT8_MAX; 458 ProcNum.Reserved = UINT8_MAX; 459 NTSTATUS rcNt = g_pfnrtKeGetProcessorNumberFromIndex(idxCpu, &ProcNum); 460 MY_CHECK_BREAK(NT_SUCCESS(rcNt), ("IPRT: Fatal: KeGetProcessorNumberFromIndex(%u,) -> %#x!\n", idxCpu, rcNt)); 461 MY_CHECK_BREAK(ProcNum.Group == idxGroup && ProcNum.Number == idxMember, 462 ("IPRT: Fatal: KeGetProcessorXxxxFromYyyy roundtrip error for %#x! Group: %u vs %u, Number: %u vs %u\n", 463 idxCpu, ProcNum.Group, idxGroup, ProcNum.Number, idxMember)); 464 465 if (pGrpInfo->ActiveProcessorMask & RT_BIT_64(idxMember)) 466 RTCpuSetAddByIndex(&g_rtMpNtCpuSet, idxCpu); 467 } 468 else 469 { 470 /* W2K8 server gives me a max of 64 logical CPUs, even if the system only has 12, 471 causing failures here. Not yet sure how this would work with two CPU groups yet... */ 472 MY_CHECK_BREAK( idxMember >= pGrpInfo->ActiveProcessorCount 473 && !(pGrpInfo->ActiveProcessorMask & RT_BIT_64(idxMember)), 474 ("IPRT: Fatal: KeGetProcessorIndexFromNumber(%u/%u) failed! cMax=%u cActive=%u\n", 475 idxGroup, idxMember, pGrpInfo->MaximumProcessorCount, pGrpInfo->ActiveProcessorCount)); 476 } 467 477 } 468 478 }
Note:
See TracChangeset
for help on using the changeset viewer.