mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-21 10:01:57 +00:00
parent
b8e2253e5f
commit
158dbcc7ae
@ -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"/>
|
||||||
|
@ -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"/>
|
||||||
|
@ -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"/>
|
||||||
|
@ -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"/>
|
||||||
|
@ -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)
|
||||||
|
@ -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), " "
|
||||||
|
@ -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));
|
||||||
|
@ -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:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user