/vbox/src/VBox/VMM/VMMR3/ |
H A D | CFGM.cpp | 83 static void cfgmR3RemoveLeaf(PCFGMNODE pNode, PCFGMLEAF pLeaf); 84 static void cfgmR3FreeValue(PVM pVM, PCFGMLEAF pLeaf); 584 for (PCFGMLEAF pLeaf = pNode->pFirstLeaf; pLeaf; pLeaf = pLeaf->pNext) 591 if ( cch == pLeaf->cchName 592 && !memcmp(psz, pLeaf->szName, cch)) 602 AssertMsgFailed(("Couldn't find '%s' in the valid values\n", pLeaf->szName)); 622 PCFGMLEAF pLeaf; local 638 PCFGMLEAF pLeaf; local 660 PCFGMLEAF pLeaf; local 698 PCFGMLEAF pLeaf; local 722 PCFGMLEAF pLeaf; local 754 PCFGMLEAF pLeaf; local 788 PCFGMLEAF pLeaf; local 836 PCFGMLEAF pLeaf; local 1274 PCFGMLEAF pLeaf = pNode->pFirstLeaf; local 1977 cfgmR3RemoveLeaf(PCFGMNODE pNode, PCFGMLEAF pLeaf) argument 2011 cfgmR3FreeValue(PVM pVM, PCFGMLEAF pLeaf) argument 2064 PCFGMLEAF pLeaf; local 2105 PCFGMLEAF pLeaf; local 2169 PCFGMLEAF pLeaf; local 2258 PCFGMLEAF pLeaf; local 2324 PCFGMLEAF pLeaf; local 3094 PCFGMLEAF pLeaf; local 3205 PCFGMLEAF pLeaf; local [all...] |
H A D | CPUMR3CpuId.cpp | 549 PCPUMCPUIDLEAF pLeaf = cpumR3CpuIdGetLeaf(paLeaves, cLeaves, uLeaf, uSubLeaf); local 550 if (pLeaf) 552 pLegacy->uEax = pLeaf->uEax; 553 pLegacy->uEbx = pLeaf->uEbx; 554 pLegacy->uEcx = pLeaf->uEcx; 555 pLegacy->uEdx = pLeaf->uEdx; 1023 * @param pLeaf Where to store the found leaf. 1027 VMMR3DECL(int) CPUMR3CpuIdGetLeaf(PVM pVM, PCPUMCPUIDLEAF pLeaf, uint32_t uLeaf, uint32_t uSubLeaf) 1033 memcpy(pLeaf, pcLeaf, sizeof(*pLeaf)); 840 AssertLogRelReturn(cLeaves < CPUM_CPUID_MAX_LEAVES, VERR_TOO_MANY_CPUID_LEAVES); paLeaves = cpumR3CpuIdEnsureSpace(pVM, ppaLeaves, cLeaves); if (!paLeaves) return VERR_NO_MEMORY; if (i < cLeaves) memmove(&paLeaves[i + 1], &paLeaves[i], (cLeaves - i) * sizeof(paLeaves[0])); *pcLeaves += 1; paLeaves[i] = *pNewLeaf; cpumR3CpuIdAssertOrder(*ppaLeaves, *pcLeaves); return VINF_SUCCESS; } static void cpumR3CpuIdRemoveRange(PCPUMCPUIDLEAF paLeaves, uint32_t *pcLeaves, uint32_t uFirst, uint32_t uLast) { uint32_t cLeaves = *pcLeaves; Assert(uFirst <= uLast); uint32_t iFirst = 0; while ( iFirst < cLeaves && paLeaves[iFirst].uLeaf < uFirst) iFirst++; uint32_t iEnd = iFirst; while ( iEnd < cLeaves && paLeaves[iEnd].uLeaf <= uLast) iEnd++; if (iFirst < iEnd) { if (iEnd < cLeaves) memmove(&paLeaves[iFirst], &paLeaves[iEnd], (cLeaves - iEnd) * sizeof(paLeaves[0])); *pcLeaves = cLeaves -= (iEnd - iFirst); } cpumR3CpuIdAssertOrder(paLeaves, *pcLeaves); } static bool cpumR3IsEcxRelevantForCpuIdLeaf(uint32_t uLeaf, uint32_t *pcSubLeaves, bool *pfFinalEcxUnchanged) { *pfFinalEcxUnchanged = false; uint32_t auCur[4]; uint32_t auPrev[4]; ASMCpuIdExSlow(uLeaf, 0, 0, 0, &auPrev[0], &auPrev[1], &auPrev[2], &auPrev[3]); uint32_t uSubLeaf = 1; for (;;) { ASMCpuIdExSlow(uLeaf, 0, uSubLeaf, 0, &auCur[0], &auCur[1], &auCur[2], &auCur[3]); if (memcmp(auCur, auPrev, sizeof(auCur))) break; uSubLeaf++; if (uSubLeaf >= 64) { *pcSubLeaves = 1; return false; } } uint32_t cRepeats = 0; uSubLeaf = 0; for (;;) { ASMCpuIdExSlow(uLeaf, 0, uSubLeaf, 0, &auCur[0], &auCur[1], &auCur[2], &auCur[3]); if ( auCur[0] == 0 && auCur[1] == 0 && (auCur[2] == 0 || auCur[2] == uSubLeaf) && (auCur[3] == 0 || uLeaf == 0xb ) ) { cRepeats = 0; break; } if ( auCur[0] == auPrev[0] && auCur[1] == auPrev[1] && ( auCur[2] == auPrev[2] || ( auCur[2] == uSubLeaf && auPrev[2] == uSubLeaf - 1) ) && auCur[3] == auPrev[3]) { cRepeats++; if (cRepeats > 4) break; } else cRepeats = 0; if ( uLeaf == 0xb && (auCur[2] & 0xff00) == 0 && (auPrev[2] & 0xff00) == 0) { cRepeats = 0; break; } if (uSubLeaf >= 128) { uint32_t cDocLimit = UINT32_MAX; if (uLeaf == 0x4) cDocLimit = 4; else if (uLeaf == 0x7) cDocLimit = 1; else if (uLeaf == 0xf) cDocLimit = 2; if (cDocLimit != UINT32_MAX) { *pfFinalEcxUnchanged = auCur[2] == uSubLeaf && uLeaf == 0xb; *pcSubLeaves = cDocLimit + 3; return true; } *pcSubLeaves = UINT32_MAX; return true; } uSubLeaf++; memcpy(auPrev, auCur, sizeof(auCur)); } *pfFinalEcxUnchanged = auCur[2] == uSubLeaf && uLeaf == 0xb; *pcSubLeaves = uSubLeaf + 1 - cRepeats; if (*pcSubLeaves == 0) *pcSubLeaves = 1; return true; } VMMR3DECL(int) CPUMR3CpuIdGetLeaf(PVM pVM, PCPUMCPUIDLEAF pLeaf, uint32_t uLeaf, uint32_t uSubLeaf) { PCPUMCPUIDLEAF pcLeaf = cpumR3CpuIdGetLeaf(pVM->cpum.s.GuestInfo.paCpuIdLeavesR3, pVM->cpum.s.GuestInfo.cCpuIdLeaves, uLeaf, uSubLeaf); if (pcLeaf) { memcpy(pLeaf, pcLeaf, sizeof(*pLeaf)); return VINF_SUCCESS; } return VERR_NOT_FOUND; } VMMR3DECL(int) CPUMR3CpuIdInsert(PVM pVM, PCPUMCPUIDLEAF pNewLeaf) { AssertReturn(pVM, VERR_INVALID_PARAMETER); AssertReturn(pNewLeaf, VERR_INVALID_PARAMETER); if ( pNewLeaf->uLeaf == UINT32_C(0x00000000) || pNewLeaf->uLeaf == UINT32_C(0x00000001) || pNewLeaf->uLeaf == UINT32_C(0x80000000) || pNewLeaf->uLeaf == UINT32_C(0x80000001) || pNewLeaf->uLeaf == UINT32_C(0xc0000000) || pNewLeaf->uLeaf == UINT32_C(0xc0000001) ) argument 1492 PCCPUMCPUIDLEAF pLeaf = paLeaves; local 1505 PCCPUMCPUIDLEAF pLeaf = cpumR3CpuIdFindLeaf(paLeaves, cLeaves, uLeaf); local 1548 PCCPUMCPUIDLEAF pLeaf = cpumR3CpuIdFindLeaf(paLeaves, cLeaves, 0x80000008); local 1907 cpumR3CpuIdFetchLeafOverride(PCPUMCPUID pLeaf, PCFGMNODE pCfgNode, uint32_t iLeaf) argument 2065 PCCPUMCPUIDLEAF pLeaf = cpumR3CpuIdGetExactLeaf(pCpum, uLeaf, 0 /* uSubLeaf */); local 4095 PCPUMCPUIDLEAF pLeaf = cpumR3CpuIdGetLeaf(*ppaLeaves, *pcLeaves, 0, 0); local [all...] |
/vbox/src/VBox/VMM/VMMAll/ |
H A D | CPUMAllRegs.cpp | 1289 PCCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeafEx(pVM, uLeaf, uSubLeaf, &fExactSubLeafHit); local 1290 if (pLeaf) 1292 AssertMsg(pLeaf->uLeaf == uLeaf, ("%#x\n", pLeaf->uLeaf, uLeaf)); 1295 *pEax = pLeaf->uEax; 1296 *pEbx = pLeaf->uEbx; 1297 *pEcx = pLeaf->uEcx; 1298 *pEdx = pLeaf->uEdx; 1303 if (pLeaf->fFlags & (CPUMCPUIDLEAF_F_CONTAINS_APIC_ID | CPUMCPUIDLEAF_F_CONTAINS_OSXSAVE)) 1309 AssertMsg((pLeaf 1383 PCPUMCPUIDLEAF pLeaf; local 1684 PCPUMCPUIDLEAF pLeaf; local [all...] |
H A D | CPUMAllMsrs.cpp | 2988 PCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeaf(pVCpu->CTX_SUFF(pVM), pRange->uValue / 2 + 0x80000001); local 2989 if (pLeaf) 2992 *puValue = RT_MAKE_U64(pLeaf->uEax, pLeaf->uEbx); 2994 *puValue = RT_MAKE_U64(pLeaf->uEcx, pLeaf->uEdx); 3639 PCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeafEx(pVCpu->CTX_SUFF(pVM), 0x00000007, 0, &fIgnored); local 3640 if (pLeaf) 3641 *puValue = RT_MAKE_U64(pLeaf->uEbx, pLeaf 3659 PCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeaf(pVCpu->CTX_SUFF(pVM), 0x00000006); local 3679 PCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeaf(pVCpu->CTX_SUFF(pVM), 0x00000001); local 3699 PCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeaf(pVCpu->CTX_SUFF(pVM), 0x80000001); local [all...] |
/vbox/src/VBox/Runtime/common/crypto/ |
H A D | x509-certpaths.cpp | 1180 PRTCRX509CERTPATHNODE pLeaf = rtCrX509CertPathsGetLeafByIndex(pThis, iPath); 1181 if (pLeaf) 1183 rtCrX509CertPathsDumpOneWorker(pThis, iPath, pLeaf, uVerbosity, pfnPrintfV, pvUser); 2599 PRTCRX509CERTPATHNODE pLeaf = rtCrX509CertPathsGetLeafByIndex(pThis, iPath); 2600 if (pLeaf) 2602 if (RTCRX509CERTPATHNODE_SRC_IS_TRUSTED(pLeaf->uSrc)) 2605 rtCrX509CpvOneWorker(pThis, pLeaf); 2612 iPath, rtCrX509CertPathsNodeGetSourceName(pLeaf)); 2613 pLeaf->rcVerify = rc; 2711 PRTCRX509CERTPATHNODE pLeaf [all...] |
/vbox/src/VBox/Storage/ |
H A D | VCICache.cpp | 998 PVCITREENODELEAF pLeaf = (PVCITREENODELEAF)RTMemAllocZ(sizeof(VCITREENODELEAF)); local 1000 if (pLeaf) 1004 pLeaf->Core.u8Type = VCI_TREE_NODE_TYPE_LEAF; 1006 for (unsigned idx = 0; idx < RT_ELEMENTS(pLeaf->aExtents); idx++) 1008 pLeaf->aExtents[idx].u64BlockOffset = RT_LE2H_U64(pExtent->u64BlockOffset); 1009 pLeaf->aExtents[idx].u32Blocks = RT_LE2H_U32(pExtent->u32Blocks); 1010 pLeaf->aExtents[idx].u64BlockAddr = RT_LE2H_U64(pExtent->u64BlockAddr); 1013 if ( pLeaf->aExtents[idx].u32Blocks 1014 && pLeaf->aExtents[idx].u64BlockAddr) 1015 pLeaf 1139 PVCITREENODELEAF pLeaf = (PVCITREENODELEAF)pNodeCur; local [all...] |
/vbox/src/VBox/VMM/VMMR0/ |
H A D | CPUMR0.cpp | 290 PCPUMCPUIDLEAF pLeaf = cpumCpuIdGetLeafEx(pVM, uLeaf, 0, &fIgnored); local 291 if (pLeaf) 303 pLeaf->uEcx = pLegacyLeaf->uEcx; 304 pLeaf->uEdx = pLegacyLeaf->uEdx;
|
/vbox/src/VBox/Main/src-client/ |
H A D | ConsoleImpl2.cpp | 1124 PCFGMNODE pLeaf; local 1125 InsertConfigNode(pCPUM, Utf8StrFmt("HostCPUID/%RX32", uLeaf).c_str(), &pLeaf); 1127 InsertConfigInteger(pLeaf, "eax", ulEax); 1128 InsertConfigInteger(pLeaf, "ebx", ulEbx); 1129 InsertConfigInteger(pLeaf, "ecx", ulEcx); 1130 InsertConfigInteger(pLeaf, "edx", ulEdx);
|
/vbox/include/VBox/vmm/ |
H A D | cpum.h | 1391 VMMR3DECL(int) CPUMR3CpuIdGetLeaf(PVM pVM, PCPUMCPUIDLEAF pLeaf, uint32_t uLeaf, uint32_t uSubLeaf);
|