Changeset 80284 in vbox
- Timestamp:
- Aug 15, 2019 9:03:16 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 132739
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/testcase/tstMMHyperHeap.cpp
r76553 r80284 24 24 #include <VBox/vmm/vm.h> 25 25 #include <VBox/vmm/uvm.h> 26 #include <VBox/vmm/gvm.h> 26 27 #include <VBox/sup.h> 27 28 #include <VBox/param.h> … … 35 36 #include <iprt/string.h> 36 37 37 /* does not work for more CPUs as SUPR3LowAlloc() would refuse to allocate more pages */38 38 #define NUM_CPUS 16 39 39 … … 49 49 * Init runtime. 50 50 */ 51 RTR3InitExe(argc, &argv, 0); 51 int rc = RTR3InitExe(argc, &argv, 0); 52 AssertRCReturn(rc, RTEXITCODE_INIT); 52 53 53 54 /* … … 56 57 void *pvVM = NULL; 57 58 RTR0PTR pvR0 = NIL_RTR0PTR; 58 SUPPAGE aPages[RT_ALIGN_Z(sizeof(VM) + NUM_CPUS * sizeof(VMCPU), PAGE_SIZE) >> PAGE_SHIFT]; 59 int rc = SUPR3Init(NULL); 60 if (RT_SUCCESS(rc)) 61 //rc = SUPR3LowAlloc(RT_ELEMENTS(aPages), (void **)&pVM, &pvR0, &aPages[0]); 62 rc = SUPR3PageAllocEx(RT_ELEMENTS(aPages), 0, &pvVM, &pvR0, &aPages[0]); 63 if (RT_FAILURE(rc)) 64 { 65 RTPrintf("Fatal error: SUP Failure! rc=%Rrc\n", rc); 59 #ifdef VBOX_BUGREF_9217 60 SUPPAGE aPages[(sizeof(GVM) + NUM_CPUS * sizeof(GVMCPU)) >> PAGE_SHIFT]; 61 #else 62 SUPPAGE aPages[(sizeof(VM) + NUM_CPUS * sizeof(VMCPU)) >> PAGE_SHIFT]; 63 #endif 64 rc = SUPR3Init(NULL); 65 if (RT_FAILURE(rc)) 66 { 67 RTPrintf("Fatal error: SUP failure! rc=%Rrc\n", rc); 68 return RTEXITCODE_FAILURE; 69 } 70 rc = SUPR3PageAllocEx(RT_ELEMENTS(aPages), 0, &pvVM, &pvR0, &aPages[0]); 71 if (RT_FAILURE(rc)) 72 { 73 RTPrintf("Fatal error: Allocation failure! rc=%Rrc\n", rc); 66 74 return RTEXITCODE_FAILURE; 67 75 } … … 69 77 PVM pVM = (PVM)pvVM; 70 78 pVM->paVMPagesR3 = aPages; 79 #ifdef VBOX_BUGREF_9217 80 pVM->pVMR0ForCall = pvR0; 81 #else 71 82 pVM->pVMR0 = pvR0; 83 #endif 72 84 73 85 PUVM pUVM = (PUVM)RTMemPageAllocZ(RT_ALIGN_Z(sizeof(*pUVM), PAGE_SIZE)); … … 82 94 83 95 pVM->cCpus = NUM_CPUS; 96 #ifdef VBOX_BUGREF_9217 97 pVM->cbSelf = sizeof(VM); 98 pVM->cbVCpu = sizeof(VMCPU); 99 PVMCPU pVCpu = (PVMCPU)((uintptr_t)pVM + sizeof(GVM)); 100 for (VMCPUID idCpu = 0; idCpu < NUM_CPUS; idCpu++) 101 { 102 pVM->apCpusR3[idCpu] = pVCpu; 103 pVCpu = (PVMCPU)((uintptr_t)pVCpu + sizeof(GVMCPU)); 104 } 105 #else 84 106 pVM->cbSelf = RT_UOFFSETOF_DYN(VM, aCpus[pVM->cCpus]); 107 for (VMCPUID idCpu = 0; idCpu < NUM_CPUS; idCpu++) 108 pVM->apCpusR3[idCpu] = &pVM->aCpus[idCpu]; 109 #endif 85 110 86 111 rc = STAMR3InitUVM(pUVM);
Note:
See TracChangeset
for help on using the changeset viewer.