Changeset 101163 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Sep 18, 2023 8:44:24 PM (16 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/IEMR3.cpp
r101096 r101163 140 140 "InitialTbCount value %u (%#x) is higher than the MaxTbCount value %u (%#x)", 141 141 cInitialTbs, cInitialTbs, cMaxTbs, cMaxTbs); 142 #endif 142 143 /** @cfgm{/IEM/MaxExecMem, uint64_t, 512 MiB} 144 * Max executable memory for recompiled code per EMT. */ 145 uint64_t cbMaxExec = 0; 146 rc = CFGMR3QueryU64Def(pIem, "MaxExecMem", &cbMaxExec, _512M); 147 AssertLogRelRCReturn(rc, rc); 148 if (cbMaxExec < _1M || cbMaxExec > 16*_1G64) 149 return VMSetError(pVM, VERR_OUT_OF_RANGE, RT_SRC_POS, 150 "MaxExecMem value %'RU64 (%#RX64) is out of range (min %'RU64, max %'RU64)", 151 cbMaxExec, cbMaxExec, (uint64_t)_1M, 16*_1G64); 152 153 /** @cfgm{/IEM/ExecChunkSize, uint32_t, 0 (auto)} 154 * The executable memory allocator chunk size. */ 155 uint32_t cbChunkExec = 0; 156 rc = CFGMR3QueryU32Def(pIem, "ExecChunkSize", &cbChunkExec, 0); 157 AssertLogRelRCReturn(rc, rc); 158 if (cbChunkExec != 0 && cbChunkExec != UINT32_MAX && (cbChunkExec < _1M || cbChunkExec > _256M)) 159 return VMSetError(pVM, VERR_OUT_OF_RANGE, RT_SRC_POS, 160 "ExecChunkSize value %'RU32 (%#RX32) is out of range (min %'RU32, max %'RU32)", 161 cbChunkExec, cbChunkExec, _1M, _256M); 162 163 /** @cfgm{/IEM/InitialExecMemSize, uint64_t, 1} 164 * The initial executable memory allocator size (per EMT). The value is 165 * rounded up to the nearest chunk size, so 1 byte means one chunk. */ 166 uint64_t cbInitialExec = 0; 167 rc = CFGMR3QueryU64Def(pIem, "InitialExecMemSize", &cbInitialExec, 0); 168 AssertLogRelRCReturn(rc, rc); 169 if (cbInitialExec > cbMaxExec) 170 return VMSetError(pVM, VERR_OUT_OF_RANGE, RT_SRC_POS, 171 "InitialExecMemSize value %'RU64 (%#RX64) is out of range (max %'RU64)", 172 cbInitialExec, cbInitialExec, cbMaxExec); 173 174 #endif /* VBOX_WITH_IEM_RECOMPILER*/ 143 175 144 176 /* … … 228 260 * the allocations. 229 261 */ 230 rc = VMR3ReqCallWait(pVM, VMCPUID_ALL, (PFNRT)iemTbInit, 3, pVM, cInitialTbs, cMaxTbs); 262 rc = VMR3ReqCallWait(pVM, VMCPUID_ALL, (PFNRT)iemTbInit, 6, 263 pVM, cInitialTbs, cMaxTbs, cbInitialExec, cbMaxExec, cbChunkExec); 231 264 AssertLogRelRCReturn(rc, rc); 232 265 #endif … … 286 319 287 320 #ifdef VBOX_WITH_IEM_RECOMPILER 288 STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbExec, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, 289 "Executed translation block", "/IEM/CPU%u/re/cTbExec", idCpu); 321 STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbExecNative, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, 322 "Executed native translation block", "/IEM/CPU%u/re/cTbExecNative", idCpu); 323 STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.cTbExecThreaded, STAMTYPE_U64_RESET, STAMVISIBILITY_ALWAYS, STAMUNIT_COUNT, 324 "Executed threaded translation block", "/IEM/CPU%u/re/cTbExecThreaded", idCpu); 290 325 STAMR3RegisterF(pVM, (void *)&pVCpu->iem.s.StatTbExecBreaks, STAMTYPE_COUNTER, STAMVISIBILITY_ALWAYS, STAMUNIT_OCCURENCES, 291 326 "Times TB execution was interrupted/broken off", "/IEM/CPU%u/re/cTbExecBreaks", idCpu);
Note:
See TracChangeset
for help on using the changeset viewer.