mirror of
https://github.com/genodelabs/genode.git
synced 2025-04-09 04:15:52 +00:00
seoul: dummy 'control register access' VM exit handler
This exit handler is called by the NOVA kernel now when the VM uses PAE with nested paging and the PDPTE registers need to get updated. With this commit, an error message is printed if this situation occurs. Fixes #1640
This commit is contained in:
parent
4c19576d4e
commit
a574f73005
@ -1 +1 @@
|
||||
8e3190c4e76643db3dfb18ea84597ba1bbd2c218
|
||||
06deb9c426754ba1ba028e056bcd33a1b47d2d0b
|
||||
|
@ -3,8 +3,8 @@ VERSION := git
|
||||
DOWNLOADS := seoul.git
|
||||
|
||||
URL(seoul) := https://github.com/alex-ab/seoul.git
|
||||
# branch pae - containing smp and vbios patches
|
||||
REV(seoul) := 4c82009d2da7b771c6402d7cdaf3f65cdc6fde62
|
||||
# branch genode_15_08 - containing smp and vbios patches
|
||||
REV(seoul) := 5522d06563fa09a532e0e69e845866bd21605fa2
|
||||
DIR(seoul) := src/app/seoul
|
||||
|
||||
#
|
||||
|
@ -663,6 +663,23 @@ class Vcpu_dispatcher : public Vcpu_handler,
|
||||
_handle_vcpu(SKIP, CpuMessage::TYPE_WRMSR);
|
||||
}
|
||||
|
||||
/*
|
||||
* This VM exit is in part handled by the NOVA kernel (writing the CR
|
||||
* register) and in part by Seoul (updating the PDPTE registers,
|
||||
* which requires access to the guest physical memory).
|
||||
* Intel manual sections 4.4.1 of Vol. 3A and 26.3.2.4 of Vol. 3C
|
||||
* indicate the conditions when the PDPTE registers need to get
|
||||
* updated.
|
||||
*
|
||||
* XXX: not implemented yet
|
||||
*
|
||||
*/
|
||||
void _vmx_mov_crx()
|
||||
{
|
||||
Logging::panic("%s: not implemented, but needed for VMs using PAE "
|
||||
"with nested paging.", __PRETTY_FUNCTION__);
|
||||
}
|
||||
|
||||
/**
|
||||
* Shortcut for calling 'Vmm::Vcpu_dispatcher::register_handler'
|
||||
* with 'Vcpu_dispatcher' as template argument
|
||||
@ -747,6 +764,8 @@ class Vcpu_dispatcher : public Vcpu_handler,
|
||||
(exc_base, MTD_RIP_LEN | MTD_GPR_ACDB | MTD_TSC | MTD_STATE);
|
||||
_register_handler<18, &This::_vmx_vmcall>
|
||||
(exc_base, MTD_RIP_LEN | MTD_GPR_ACDB);
|
||||
_register_handler<28, &This::_vmx_mov_crx>
|
||||
(exc_base, MTD_ALL);
|
||||
_register_handler<30, &This::_vmx_ioio>
|
||||
(exc_base, MTD_RIP_LEN | MTD_QUAL | MTD_GPR_ACDB | MTD_STATE | MTD_RFLAGS);
|
||||
_register_handler<31, &This::_vmx_msr_read>
|
||||
|
Loading…
x
Reference in New Issue
Block a user