Changeset 108673 in vbox
- Timestamp:
- Mar 20, 2025 6:18:43 PM (8 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168086
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/GVMMR3.cpp
r107900 r108673 39 39 40 40 #include <iprt/mem.h> 41 #include <iprt/system.h> 41 42 42 43 … … 58 59 AssertReturn(cCpus >= VMM_MIN_CPU_COUNT && cCpus <= VMM_MAX_CPU_COUNT, VERR_INVALID_PARAMETER); 59 60 AssertReturn(enmTarget == VMTARGET_X86 || enmTarget == VMTARGET_ARMV8, VERR_INVALID_PARAMETER); 60 Assert Compile((sizeof(VM) & HOST_PAGE_OFFSET_MASK) == 0);61 Assert Compile((sizeof(VMCPU) & HOST_PAGE_OFFSET_MASK) == 0);61 AssertReturn((sizeof(VM) & RTSystemGetPageOffsetMask()) == 0, VERR_UNSUPPORTED_ALIGNMENT); 62 AssertReturn((sizeof(VMCPU) & RTSystemGetPageOffsetMask()) == 0, VERR_UNSUPPORTED_ALIGNMENT); 62 63 63 64 int rc; … … 90 91 */ 91 92 /* Allocate the VM structure: */ 93 size_t const cbPageSize = RTSystemGetPageSize(); 92 94 size_t const cbVM = sizeof(VM) + sizeof(VMCPU) * cCpus; 93 PVM pVM = (PVM)RTMemPageAlloc(cbVM + HOST_PAGE_SIZE* (1 + 2 * cCpus));95 PVM pVM = (PVM)RTMemPageAlloc(cbVM + cbPageSize * (1 + 2 * cCpus)); 94 96 if (!pVM) 95 97 return VERR_NO_PAGE_MEMORY; 96 98 97 99 /* Set up guard pages: */ 98 RTMemProtect(pVM, HOST_PAGE_SIZE, RTMEM_PROT_NONE);99 pVM = (PVM)((uintptr_t)pVM + HOST_PAGE_SIZE);100 RTMemProtect(pVM + 1, HOST_PAGE_SIZE, RTMEM_PROT_NONE);100 RTMemProtect(pVM, cbPageSize, RTMEM_PROT_NONE); 101 pVM = (PVM)((uintptr_t)pVM + cbPageSize); 102 RTMemProtect(pVM + 1, cbPageSize, RTMEM_PROT_NONE); 101 103 102 104 /* VM: */ … … 113 115 114 116 /* CPUs: */ 115 PVMCPU pVCpu = (PVMCPU)((uintptr_t)pVM + sizeof(VM) + HOST_PAGE_SIZE);117 PVMCPU pVCpu = (PVMCPU)((uintptr_t)pVM + sizeof(VM) + cbPageSize); 116 118 for (VMCPUID idxCpu = 0; idxCpu < cCpus; idxCpu++) 117 119 { … … 125 127 pVCpu->idCpu = idxCpu; 126 128 127 RTMemProtect(pVCpu + 1, HOST_PAGE_SIZE, RTMEM_PROT_NONE);128 pVCpu = (PVMCPU)((uintptr_t)pVCpu + sizeof(VMCPU) + HOST_PAGE_SIZE);129 RTMemProtect(pVCpu + 1, cbPageSize, RTMEM_PROT_NONE); 130 pVCpu = (PVMCPU)((uintptr_t)pVCpu + sizeof(VMCPU) + cbPageSize); 129 131 } 130 132
Note:
See TracChangeset
for help on using the changeset viewer.