Age | Commit message (Collapse) | Author |
|
acpicpu(4) drivers to the right cpu(4).
ok mlarkin@, guenther@
|
|
list storage size. Noticed when attempting to get vmm(4) to nest under
Hyper-V.
|
|
is R/O, and although it should not matter what value is written there,
Hyper-V's emulated IOAPIC interprets a write of 1 in some unexpected way and
subsequently blocks interrupt delivery. This primarily manifests itself as
de(4) timeouts when using Hyper-V VMs with the "Legacy Network Adapter"
interface.
This diff has been in snaps for almost a month with no reported fallout.
Based on an idea originally from mikeb with further input from kettenis and
deraadt.
|
|
ok millert, kettenis, deraadt
|
|
ok mlarkin, kettenis, deraadt
|
|
if coreboot's memory table is found, it has a framebuffer entry, and
there is no previously attached efi, vga, or serial console.
useful on chromebooks that have no legacy vga device to get an early
console before inteldrm(4) attaches or, for newer chipsets, a full
console and X with wsfb(4).
ok kettenis
|
|
They are not needed anymore now that guest memory is allocated
by and shared with the host.
ok mlarkin@
|
|
vmm(4) then maps the pages allocated by the vmd(8) user process into the
address space of the guest. This gives vmm(4) and vmd(8) a shared view of
the guest RAM. This will allow us to have faster guest<->host data
exchange by ordinary memory loads/stores later, as well as remove the
vm_readpage and vm_writepage ioctls next.
ok mlarkin@
|
|
inside the sigcontext. sigreturn(2) checks syscall entry was from the
exact PC addr in the (per-process ASLR) sigtramp, verifies the cookie,
and clears it to prevent sigcontext reuse.
not yet tested on landisk, sparc, *88k, socppc.
ok kettenis
|
|
from miod
|
|
actually use this in em(4) and xhci(4), but I'm not committing those yet
because we almost certainly need to save and restore the MSI-X registers
during suspend/resume. However, this allows mpi@ to play with multiple-vector
support in networking hardware.
Requested by mpi@
ok mlarkin@, mikeb@
|
|
|
|
compiled when VMM_DEBUG is enabled, and only used during VM crash.
|
|
decoding code I'm working on for vmm(4) debugging. No functional change.
|
|
|
|
|
|
number.
|
|
ok mpi@
|
|
years ago.
ok dlg@
|
|
Kernel bits:
- When creating a VM, a list of memory ranges has to be specified,
similar to the BIOS memory map. This is necessary for VMs with
RAM sizes approaching 4G because we'll need PCI MMIO space in
the higher parts of the 32 bit address space.
vmctl and vmd bits:
- Construct appropriate memory ranges to create a VM with a given
RAM size
- Construct a corresponding BIOS memory map from the memory ranges
and update the boot params page accordingly.
- Make sure that all variables that represent guest physical addresses
match the address width of the target CPU instead of using uint32_t.
- Fix some integer promotion glitches that actually restricted VM
RAM size to 2G.
This changes the VM create ioctl interface, so update your kernel,
vmd, and vmctl.
ok mlarkin@
|
|
conversion function in vmm.c
Increase the size of the pending interrupt field from uint8_t to uint16_t.
|
|
The goal is to include it in the list of functions that must not be
instrumented. All ddb(8) functions should be in this list and have
their names start with 'db_'.
ok visa@, deraadt@
|
|
it in MI code.
ok mlarkin@, visa@
|
|
controller work in vmd(8).
ok stefan@, mpi@
|
|
hardcoding it. Be careful to obey VMX's must-be-0 and must-be-1
restrictions for CR0.
This gives us the opportunity later to start VCPUs in real-mode, etc.
(for those CPUs that support unrestricted guest).
Be sure to update your vmd(8) also, the ioctl interface has
changed.
ok mlarkin@, deraadt@
|
|
after an uvm_fault: uvm_fault maps in neighboring pages of
the faulting page. We want EPT bits set for those as soon as
possible as well. This avoids additional EPT violations
causing further uvm_faults when the guest accesses the
neighboring pages.
discussion with and ok mlarkin@
|
|
- compute fault reason for uvm_fault() (e.g. page not present,
protection violation) instead of passing a protection code
- a page does not need to be zero'd after faulting it in. uvm_fault() does
that for fresh anon pages already, and we also do not want a page that
is swapped back in have its contents wiped.
ok mlarkin@
|
|
This will allow to pledge vmd(8)'s vmm and vm processes, so that VMs
themselves run "sandboxed", including their host-side virtio layer.
It will remain disabled for now (in userland) to not get into the way
of ongoing development and upcoming changes in vmd and the ioctl
interface.
OK mlarkin@ deraadt@ "kernel side in, but not the callers in userland"
|
|
This should fix some of the odd termination errors people have been seeing
(vmctl status showing running VMs after they have exited/crashed, and
invalid instruction panics on vmptrld during certain races)
This diff also implements dropping the biglock when running a VCPU, and
reacquiring the lock as needed based on the type of exit (normal vs.
external interrupt)
diff supplied by Stefan Kempf <sn.kempf at t-online.de>, many thanks!
|
|
decision as to how the vcpu should be set up for initial start and
reset. Also removes some hardcoded register constants from vmm(4).
ok jsing@, mpi@
|
|
later).
discussed with deraadt@ and reyk@ at length.
|
|
ok reyk@, beck@, mpi@
|
|
This adds support for delivering the combined Xen interrupt
that later fans out into event port specific (device specific)
interrupts via an IDT of a guest system.
The Xen IDT vector is set to be the first of the IPL_NET group
and is implemented the same way LAPIC timer and IPIs are done.
The additional machinery is there to be able to mask it via
standard mechanisms (e.g. splnet).
Discussed with kettenis@, OK mlarkin, reyk
|
|
"Intel Architecture Instruction Set Extensions Programming Reference"
|
|
|
|
last VM is terminated. This allows to remove the explicit "vmm
enable" / "vmm disable" (VMM_IOC_START / VMM_IOC_STOP) ioctls. You'll
have to update kernel and userland for this change, as the kernel ABI
changes.
OK mpi@ mlarkin@
|
|
ok mlarkin
|
|
- Add $OpenBSD$ tag,
- constify "struct cfattach",
- Use <uvm/uvm_extern.h> rather than <uvm/uvm.h>, it's enough.
- Keep the "struct vm" private. This allows us to not pull <uvm/uvm_extern.h>
in <macine/vmmvar.h>
- Prefer DPRINTF() for debug macro as dprintf(3) is a standard function name.
- Add vmm_debug and fix VMM_DEBUG build
- Remove unneeded <sys/rwlock.h> from <machine/vmmvar.h>
- Kill whitespaces
ok mlarkin@
|
|
circulated on hackers@, no objections. Disabled by default.
|
|
track type of pmap and various conversion and pte bit manipulation
functions for EPT.
|
|
changes for vmm.
|
|
firmware and the efifb(4) framebuffer address matches one of the BARs
associated with the inteldrm(4) device, make inteldrm(4) the console and
prevent efifb(4) from attaching. Make sure that we do a full clear of the
framebuffer when inteldrm(4) attaches to prevent the contents of the old
framebuffer from showing up.
Based on an earlier diff from yasuoka@
ok yasuoka@
|
|
|
|
an allocated region and also move the stack to the end of the heap region.
Then move the kernel to the usual place just before run the kernel, after
calling ExitBootService().
report/test Toby Slight, Brian Conway
|
|
LABELOFFSET and MAXPARTITIONS. Easier on the eye when scanning
through all these files. No functional change.
|
|
|
|
comments
ok millert@
|
|
ok miller@
|
|
handler that was running has finished.
ok miod@, guenther@ (both for the equivalent sparc64 diff)
|
|
|