vbox5: enable unrestricted guest support

Issue #2338
This commit is contained in:
Alexander Boettcher 2017-06-01 10:14:23 +02:00 committed by Christian Helmuth
parent b8e2253e5f
commit 158dbcc7ae
8 changed files with 23 additions and 21 deletions

View File

@ -22,7 +22,7 @@
<HardwareVirtEx enabled="true"/> <HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/> <HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/> <HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="false"/> <HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/> <PAE enabled="true"/>
<LongMode enabled="false"/> <LongMode enabled="false"/>
<HardwareVirtExLargePages enabled="false"/> <HardwareVirtExLargePages enabled="false"/>

View File

@ -22,7 +22,7 @@
<HardwareVirtEx enabled="true"/> <HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/> <HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/> <HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="false"/> <HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/> <PAE enabled="true"/>
<LongMode enabled="true"/> <LongMode enabled="true"/>
<HardwareVirtExLargePages enabled="false"/> <HardwareVirtExLargePages enabled="false"/>

View File

@ -22,7 +22,7 @@
<HardwareVirtEx enabled="true"/> <HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/> <HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/> <HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="false"/> <HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/> <PAE enabled="true"/>
<LongMode enabled="false"/> <LongMode enabled="false"/>
<HardwareVirtExLargePages enabled="false"/> <HardwareVirtExLargePages enabled="false"/>

View File

@ -22,7 +22,7 @@
<HardwareVirtEx enabled="true"/> <HardwareVirtEx enabled="true"/>
<HardwareVirtExNestedPaging enabled="true"/> <HardwareVirtExNestedPaging enabled="true"/>
<HardwareVirtExVPID enabled="true"/> <HardwareVirtExVPID enabled="true"/>
<HardwareVirtExUX enabled="false"/> <HardwareVirtExUX enabled="true"/>
<PAE enabled="true"/> <PAE enabled="true"/>
<LongMode enabled="true"/> <LongMode enabled="true"/>
<HardwareVirtExLargePages enabled="false"/> <HardwareVirtExLargePages enabled="false"/>

View File

@ -37,12 +37,6 @@ VMMR3DECL(int) HMR3Init(PVM pVM)
&pVM->hm.s.vmx.fAllowUnrestricted, true); &pVM->hm.s.vmx.fAllowUnrestricted, true);
AssertRCReturn(rc, rc); AssertRCReturn(rc, rc);
/* XXX fix Ubuntu and unrestricted guest support, disable by default atm */
if (pVM->hm.s.vmx.fAllowUnrestricted) {
pVM->hm.s.vmx.fAllowUnrestricted = false;
Genode::warning("unrestricted guest support disabled");
}
/* check whether to enable pae and nx bit - in 64bit host mode */ /* check whether to enable pae and nx bit - in 64bit host mode */
rc = CFGMR3QueryBoolDef(CFGMR3GetRoot(pVM), "EnablePAE", &enable_pae_nx, rc = CFGMR3QueryBoolDef(CFGMR3GetRoot(pVM), "EnablePAE", &enable_pae_nx,
false); false);
@ -72,6 +66,8 @@ VMMR3DECL(int) HMR3Init(PVM pVM)
pVM->hm.s.vmx.fUnrestrictedGuest = true; pVM->hm.s.vmx.fUnrestrictedGuest = true;
pVM->fHMEnabledFixed = true; pVM->fHMEnabledFixed = true;
pVM->hm.s.fNestedPaging = true;
return VINF_SUCCESS; return VINF_SUCCESS;
} }
@ -106,8 +102,6 @@ VMMR3_INT_DECL(int) HMR3InitCompleted(PVM pVM, VMINITCOMPLETED enmWhat)
} }
} }
pVM->hm.s.fNestedPaging = true;
return rc; return rc;
} }
@ -170,8 +164,13 @@ VMMR3_INT_DECL(void) HMR3PagingModeChanged(PVM pVM, PVMCPU pVCpu, PGMMODE enmSha
/** /**
* Restarting I/O instruction refused in ring-0 - no mean for us * Restarting I/O instruction refused in ring-0 - no mean for us
*/ */
VBOXSTRICTRC HMR3RestartPendingIOInstr(PVM, PVMCPU, PCPUMCTX) { VBOXSTRICTRC HMR3RestartPendingIOInstr(PVM, PVMCPU pVCpu, PCPUMCTX)
return VERR_NOT_FOUND; } {
HMPENDINGIO enmType = pVCpu->hm.s.PendingIO.enmType;
if (enmType != HMPENDINGIO_INVALID)
Genode::error("unimplemented: restart pending I/O");
return VERR_NOT_FOUND;
}
VMMR3DECL(bool) HMR3IsPostedIntrsEnabled(PUVM pUVM) VMMR3DECL(bool) HMR3IsPostedIntrsEnabled(PUVM pUVM)

View File

@ -24,9 +24,6 @@ static bool verbose = false;
int PGMMap(PVM pVM, RTGCUINTPTR GCPtr, RTHCPHYS HCPhys, uint32_t cbPages, int PGMMap(PVM pVM, RTGCUINTPTR GCPtr, RTHCPHYS HCPhys, uint32_t cbPages,
unsigned fFlags) unsigned fFlags)
{ {
/* GCPtr steams from the #unimplemented# MMR3HyperReserve call, which
* returns a value - seems to be used solely in RC mode */
if (verbose) if (verbose)
Genode::log(__func__, ": GCPtr=", Genode::Hex(GCPtr), " " Genode::log(__func__, ": GCPtr=", Genode::Hex(GCPtr), " "
"HCPHys=", Genode::Hex(HCPhys), " " "HCPHys=", Genode::Hex(HCPhys), " "

View File

@ -230,8 +230,11 @@ Genode::uint64_t * Vcpu_handler::pdpte_map(VM *pVM, RTGCPHYS cr3)
PPGMPAGE pPage = &pRam->aPages[iPage]; PPGMPAGE pPage = &pRam->aPages[iPage];
/* /*
Vmm::printf("%u gcphys=0x%lx host=0x%lx type=%lx state=0x%lx\n", __LINE__, if (VERBOSE_PGM)
cr3, PGM_PAGE_GET_HCPHYS(pPage), PGM_PAGE_GET_TYPE(pPage), PGM_PAGE_GET_STATE(pPage)); Vmm::log(__LINE__, " gcphys=", Vmm::Hex(cr3),
" host=", Vmm::Hex(PGM_PAGE_GET_HCPHYS(pPage)),
" type=", Vmm::Hex(PGM_PAGE_GET_TYPE(pPage)),
" state=",Vmm::Hex(PGM_PAGE_GET_STATE(pPage)));
*/ */
Genode::uint64_t *pdpte = reinterpret_cast<Genode::uint64_t*>(PGM_PAGE_GET_HCPHYS(pPage) + (cr3 & PAGE_OFFSET_MASK)); Genode::uint64_t *pdpte = reinterpret_cast<Genode::uint64_t*>(PGM_PAGE_GET_HCPHYS(pPage) + (cr3 & PAGE_OFFSET_MASK));

View File

@ -301,8 +301,12 @@ int SUPR3CallVMMR0Ex(PVMR0 pVMR0, VMCPUID idCpu, unsigned uOperation,
switch (uOperation) { switch (uOperation) {
case VMMR0_DO_GVMM_CREATE_VM: case VMMR0_DO_GVMM_CREATE_VM:
{
genode_VMMR0_DO_GVMM_CREATE_VM(pReqHdr); genode_VMMR0_DO_GVMM_CREATE_VM(pReqHdr);
GVMMCREATEVMREQ &req = reinterpret_cast<GVMMCREATEVMREQ &>(*pReqHdr);
SUPR3QueryHWACCLonGenodeSupport(reinterpret_cast<VM *>(req.pVMR3));
/* reserve lower chunk ids */ /* reserve lower chunk ids */
try { try {
for (unsigned i = 0; i < CHUNKID_START; i++) { for (unsigned i = 0; i < CHUNKID_START; i++) {
@ -315,7 +319,7 @@ int SUPR3CallVMMR0Ex(PVMR0 pVMR0, VMCPUID idCpu, unsigned uOperation,
} }
return VINF_SUCCESS; return VINF_SUCCESS;
}
case VMMR0_DO_GVMM_REGISTER_VMCPU: case VMMR0_DO_GVMM_REGISTER_VMCPU:
genode_VMMR0_DO_GVMM_REGISTER_VMCPU(pVMR0, idCpu); genode_VMMR0_DO_GVMM_REGISTER_VMCPU(pVMR0, idCpu);
return VINF_SUCCESS; return VINF_SUCCESS;
@ -361,7 +365,6 @@ int SUPR3CallVMMR0Ex(PVMR0 pVMR0, VMCPUID idCpu, unsigned uOperation,
return VINF_SUCCESS; return VINF_SUCCESS;
case VMMR0_DO_VMMR0_INIT: case VMMR0_DO_VMMR0_INIT:
SUPR3QueryHWACCLonGenodeSupport(reinterpret_cast<VM *>(pVMR0));
return VINF_SUCCESS; return VINF_SUCCESS;
case VMMR0_DO_GVMM_DESTROY_VM: case VMMR0_DO_GVMM_DESTROY_VM: