VirtualBox

Changeset 107893 in vbox for trunk/src/VBox/VMM/VMMR3


Ignore:
Timestamp:
Jan 22, 2025 3:31:45 PM (3 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
167114
Message:

VMM,VBox/types.h,VBox/err.h: Added VM target platform arch members to the VM structures (mostly for ring-0). Also added the structure sizes and svn revision to VMMR0_DO_GVMM_CREATE_VM. jiraref:VBP-1470

Location:
trunk/src/VBox/VMM/VMMR3
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/VMM/VMMR3/GVMMR3.cpp

    r106061 r107893  
    4646 * @returns VBox status code.
    4747 * @param   pUVM        The user mode VM handle.
     48 * @param   enmTarget   The target platform architecture of the VM.
    4849 * @param   cCpus       The number of CPUs to create the VM for.
    4950 * @param   pSession    The support driver session handle.
     
    5253 *                      for use in VMMR0 calls.
    5354 */
    54 VMMR3_INT_DECL(int) GVMMR3CreateVM(PUVM pUVM, uint32_t cCpus, PSUPDRVSESSION pSession, PVM *ppVM, PRTR0PTR ppVMR0)
     55VMMR3_INT_DECL(int) GVMMR3CreateVM(PUVM pUVM, VMTARGET enmTarget, uint32_t cCpus, PSUPDRVSESSION pSession,
     56                                   PVM *ppVM, PRTR0PTR ppVMR0)
    5557{
    5658    AssertReturn(cCpus >= VMM_MIN_CPU_COUNT && cCpus <= VMM_MAX_CPU_COUNT, VERR_INVALID_PARAMETER);
     59    AssertReturn(enmTarget == VMTARGET_X86 || enmTarget == VMTARGET_ARMV8, VERR_INVALID_PARAMETER);
    5760    AssertCompile((sizeof(VM)    & HOST_PAGE_OFFSET_MASK) == 0);
    5861    AssertCompile((sizeof(VMCPU) & HOST_PAGE_OFFSET_MASK) == 0);
     
    6568        CreateVMReq.Hdr.cbReq       = sizeof(CreateVMReq);
    6669        CreateVMReq.pSession        = pSession;
     70        CreateVMReq.enmTarget       = enmTarget;
     71        CreateVMReq.cCpus           = cCpus;
     72        CreateVMReq.cbVM            = sizeof(VM);
     73        CreateVMReq.cbVCpu          = sizeof(VMCPU);
     74        CreateVMReq.uStructVersion  = 1;
     75        CreateVMReq.uSvnRevision    = VMMGetSvnRev();
    6776        CreateVMReq.pVMR0           = NIL_RTR0PTR;
    6877        CreateVMReq.pVMR3           = NULL;
    69         CreateVMReq.cCpus           = cCpus;
    7078        rc = SUPR3CallVMMR0Ex(NIL_RTR0PTR, NIL_VMCPUID, VMMR0_DO_GVMM_CREATE_VM, 0, &CreateVMReq.Hdr);
    7179        if (RT_SUCCESS(rc))
     
    7381            *ppVM   = CreateVMReq.pVMR3;
    7482            *ppVMR0 = CreateVMReq.pVMR0;
     83            Assert(CreateVMReq.pVMR3->enmTarget == enmTarget);
    7584        }
    7685    }
     
    101110        pVM->cbVCpu               = sizeof(VMCPU);
    102111        pVM->uStructVersion       = 1;
     112        pVM->enmTarget            = enmTarget;
    103113
    104114        /* CPUs: */
  • trunk/src/VBox/VMM/VMMR3/VM.cpp

    r107661 r107893  
    598598     */
    599599    RTR0PTR pVMR0;
    600     int rc = GVMMR3CreateVM(pUVM, cCpus, pUVM->vm.s.pSession, &pUVM->pVM, &pVMR0);
     600    int rc = GVMMR3CreateVM(pUVM, VMTARGET_DEFAULT, cCpus, pUVM->vm.s.pSession, &pUVM->pVM, &pVMR0);
    601601    if (RT_SUCCESS(rc))
    602602    {
     
    607607        AssertRelease(pVM->cCpus == cCpus);
    608608        AssertRelease(pVM->uCpuExecutionCap == 100);
     609        AssertRelease(pVM->enmTarget == VMTARGET_DEFAULT);
    609610        AssertCompileMemberAlignment(VM, cpum, 64);
    610611        AssertCompileMemberAlignment(VM, tm, 64);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette