On a nested page table fault the hypervisor will: - fetch the instruction using the guest %rip and %cr3 - decode the instruction in 'struct vie' - emulate the instruction in host kernel context for local apic accesses - any other type of mmio access is punted up to user-space (e.g. ioapic) The decoded instruction is passed as collateral to the user-space process that is handling the PAGING exit. The emulation code is fleshed out to include more addressing modes (e.g. SIB) and more types of operands (e.g. imm8). The source code is unified into a single file (vmm_instruction_emul.c) that is compiled into vmm.ko as well as /usr/sbin/bhyve. Reviewed by: grehan Obtained from: NetApp |
||
---|---|---|
.. | ||
acpi.c | ||
acpi.h | ||
atpic.c | ||
consport.c | ||
dbgport.c | ||
dbgport.h | ||
elcr.c | ||
fbsdrun.c | ||
fbsdrun.h | ||
inout.c | ||
inout.h | ||
ioapic.c | ||
ioapic.h | ||
Makefile | ||
mem.c | ||
mem.h | ||
mevent_test.c | ||
mevent.c | ||
mevent.h | ||
mptbl.c | ||
mptbl.h | ||
pci_emul.c | ||
pci_emul.h | ||
pci_hostbridge.c | ||
pci_passthru.c | ||
pci_uart.c | ||
pci_virtio_block.c | ||
pci_virtio_net.c | ||
pit_8254.c | ||
pit_8254.h | ||
pmtmr.c | ||
post.c | ||
rtc.c | ||
spinup_ap.c | ||
spinup_ap.h | ||
uart.c | ||
virtio.h | ||
xmsr.c | ||
xmsr.h |