Age | Commit message (Collapse) | Author |
|
like we already do for MWAIT/MONITOR. Also match Intel here by not
exposing the SVM capability to AMD guests.
Allows Linux guests to boot in vmd(8) on Ryzen CPUs.
ok mlarkin@
|
|
(1) Future cpus which don't have the bug, (2) cpu's with microcode
containing a L1D flush operation, (3) stuffing the L1D cache with fresh
data and expiring old content. This stuffing loop is complicated and
interesting, no details on the mitigation have been released by Intel so
Mike and I studied other systems for inspiration. Replacement algorithm
for the L1D is described in the tlbleed paper. We use a 64K PA-linear
region filled with trapsleds (in case there is L1D->L1I data movement).
The TLBs covering the region are loaded first, because TLB loading
apparently flows through the D cache. Before performing vmlaunch or
vmresume, the cachelines covering the guest registers are also flushed.
with mlarkin, additional testing by pd, handy comments from the
kettenis and guenther peanuts
|
|
|
|
avoiding multiple readregs ioctls back to vmm in case register content
is needed subsequently.
ok phessler
|
|
Make the cache neighbor fields match the number of VCPUs present
(currently 1)
ok reyk
|
|
for noticing.
|
|
These ports are used for Edge/Level control on the legacy PIC and will be
needed for a subsequent commit.
|
|
ok guenther
|
|
was already disabled, but reporting it as available and then failing it
caused SmartOS to crash during boot.
ok pd@
|
|
usermode daemons handle that.
ok pd@
|
|
|
|
Diff from carlos cardenas, thanks
|
|
This restricts receiving vms from hosts with more cpu features.
Tested on
broadwell -> skylake (works)
skylake -> broadwell (don't work)
ok mlarkin@
|
|
various events into the guest
|
|
some feature flags in CPUID being set or cleared.
ok pd
|
|
guest VMs can now use MAXDSIZ ram.
ok deraadt@, stefan@, pd@
|
|
VM setup.
ok pd
|
|
as a struct passed to vmm has changed size.
ok deraadt, pd
|
|
ok deraadt
|
|
from a few weeks ago that did the same for Intel/VMX.
ok deraadt
|
|
|
|
|
|
Tested on linux and amd64 OpenBSD guests.
Posted to tech by Pratik Vyas.
|
|
a larger effort to implement vmctl send/vmctl receive (snapshot and VM
migration).
From Pratik Vyas, Siri Chandana, Harshada Mone and Ashwin Agrawal, a
group of students I am supervising.
ok kettenis
|
|
vcpu setup
|
|
that it can be used in SVM and VMX.
no functional change
|
|
tested by reyk, dcoppa, and a few others.
ok kettenis@ on the fpu bits
ok deraadt@ on the vmm bits
|
|
penalizes i386 guests who previously had memory allocated by vmd after
0xF0FFFFFF (the previous range end) but makes memory range calculation
in vmd/mc146818 much much easier. This diff needs to be combined with
the previous vmd diffs or you won't be able to create a vm with memory
size larger than ~3855MB.
|
|
|
|
merging)
|
|
|
|
next SVM diff
|
|
msr bitmap, ioio bitmap, and host state save area)
|
|
SVM/RVI: VMCB structure definitions for amd64/i386
|
|
longer needed.
|
|
|
|
initializing the unused bits, leading to VMABORTs during vmentry. Found the
hard way on i386 vmm, but the problem could occur on amd64 as well.
|
|
caused IRQ9 to be shared between the second disk device and the vio(4)s,
which caused poor network performance.
ok reyk, stefan
|
|
broadwell/skylake bug.
|
|
|
|
|
|
Makes reset code a little simpler. ok mlarkin@
|
|
ok mlarkin@
|
|
forthcoming emulated interrupt controller.
ok stefan
|
|
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@
|
|
|
|
number.
|
|
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.
|