Up to [local] / src / usr.sbin / vmd
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.47 / (download) - annotate - [select for diffs], Tue Apr 25 12:46:13 2023 UTC (13 months, 2 weeks ago) by dv
Branch: MAIN
CVS Tags: OPENBSD_7_5_BASE,
OPENBSD_7_5,
OPENBSD_7_4_BASE,
OPENBSD_7_4,
HEAD
Changes since 1.46: +5 -4 lines
Diff to previous 1.46 (colored)
vmm(4)/vmd(8): pull struct members out of vmm ioctl create struct. The object sent to vmm(4) contained file paths and details the kernel does not need for cpu virtualization as device emulation is in userland. Effectively, "pull up" the struct members from the vm_create_params struct to the parent vmop_create_params struct. This allows us to clean up some of vmd(8) and simplify things for switching to having vmctl(8) open the "kernel" file (SeaBIOS, bsd.rd, etc.) to allow users to boot recovery ramdisk kernels. ok mlarkin@
Revision 1.46 / (download) - annotate - [select for diffs], Wed Apr 19 12:58:16 2023 UTC (13 months, 3 weeks ago) by jsg
Branch: MAIN
Changes since 1.45: +1 -2 lines
Diff to previous 1.45 (colored)
remove duplicate includes
Revision 1.45 / (download) - annotate - [select for diffs], Wed Dec 28 21:30:19 2022 UTC (17 months, 1 week ago) by jmc
Branch: MAIN
CVS Tags: OPENBSD_7_3_BASE,
OPENBSD_7_3
Changes since 1.44: +2 -2 lines
Diff to previous 1.44 (colored)
spelling fixes; from paul tagliamonte any parts of his diff not taken are noted on tech
Revision 1.44 / (download) - annotate - [select for diffs], Mon Dec 26 23:50:20 2022 UTC (17 months, 1 week ago) by dv
Branch: MAIN
Changes since 1.43: +10 -25 lines
Diff to previous 1.43 (colored)
vmd(8): provide a detailed e820 memory map. When booting guests with SeaBIOS, vmd(8) supplied details about the available guest memory via CMOS registers. Consequently, we've been carrying some patches in the ports tree to SeaBIOS to fetch this information like it's the 1990s. When a vm initializes memory ranges, we now track what each range represents. This information can be used to supply the e820 memory map to SeaBIOS via the fw_cfg interface allowing it to properly communicate memory ranges to a guest operating system. (This will also allow us to drop some patches from the port.) Given the ranges can now be marked with a purpose, this also allows vmm(4) to switch from hard-coded mmio ranges and instead let the information on the memory range dictate if vmm should be handling a page fault or sending to vmd for a memory assist. Tested by Mischa Peters and others. OK mlarkin@.
Revision 1.42.4.1 / (download) - annotate - [select for diffs], Fri Dec 9 16:44:19 2022 UTC (17 months, 4 weeks ago) by bluhm
Branch: OPENBSD_7_2
Changes since 1.42: +2 -1 lines
Diff to previous 1.42 (colored) next main 1.43 (colored)
vmd(8): zero consdev in bootargs to fix booting ramdisks Mischa Peters reported that booting a bsd.rd from 7.2 or newer stopped working with vmd(8) in 7.2. Direct booting kernels requires vmd to build boot args in guest memory. Recently, the bios_consdev_t struct changed in amd64 machdep.c, adding additional struct members. vmd wasn't zeroing out the struct, causing the booted kernel to read garbage. from dv@; ok claudio, mlarkin this is errata/7.2/010_vmd.patch.sig
Revision 1.43 / (download) - annotate - [select for diffs], Mon Nov 28 18:24:52 2022 UTC (18 months, 1 week ago) by dv
Branch: MAIN
Changes since 1.42: +18 -16 lines
Diff to previous 1.42 (colored)
vmd(8): zero consdev in bootargs to fix booting ramdisks Mischa Peters reported that booting a bsd.rd from 7.2 or newer stopped working with vmd(8) in 7.2. Direct booting kernels requires vmd to build boot args in guest memory. Recently, the bios_consdev_t struct changed in amd64 machdep.c, adding additional struct members. vmd wasn't zeroing out the struct, causing the booted kernel to read garbage. While here, cleanup some of push_bootargs to use descriptive names for boot args and standardize on explicit usage of uint32_t. ok claudio, mlarkin
Revision 1.42 / (download) - annotate - [select for diffs], Fri Jan 28 06:33:27 2022 UTC (2 years, 4 months ago) by guenther
Branch: MAIN
CVS Tags: OPENBSD_7_2_BASE,
OPENBSD_7_1_BASE,
OPENBSD_7_1
Branch point for: OPENBSD_7_2
Changes since 1.41: +2 -2 lines
Diff to previous 1.41 (colored)
When it's the possessive of 'it', it's spelled "its", without the apostrophe.
Revision 1.41 / (download) - annotate - [select for diffs], Tue Jan 4 15:18:44 2022 UTC (2 years, 5 months ago) by claudio
Branch: MAIN
Changes since 1.40: +6 -17 lines
Diff to previous 1.40 (colored)
Fix some simple -Wunused-but-set-variable warnings. OK benno@ dv@
Revision 1.40 / (download) - annotate - [select for diffs], Thu Dec 30 08:12:23 2021 UTC (2 years, 5 months ago) by claudio
Branch: MAIN
Changes since 1.39: +20 -6 lines
Diff to previous 1.39 (colored)
Add back support for -B net -b bsd.rd which emulates a PXE install and results in an autoinstall. This can be used to quickly create new OpenBSD installs. OK dv@
Revision 1.39 / (download) - annotate - [select for diffs], Tue May 4 10:48:51 2021 UTC (3 years, 1 month ago) by dv
Branch: MAIN
CVS Tags: OPENBSD_7_0_BASE,
OPENBSD_7_0
Changes since 1.38: +13 -3 lines
Diff to previous 1.38 (colored)
gzread(3) doesn't always set errno, so use gzerror(3) Compression errors from libz don't set errno. OK mlarkin@
Revision 1.38 / (download) - annotate - [select for diffs], Mon Apr 5 18:09:48 2021 UTC (3 years, 2 months ago) by dv
Branch: MAIN
CVS Tags: OPENBSD_6_9_BASE,
OPENBSD_6_9
Changes since 1.37: +34 -33 lines
Diff to previous 1.37 (colored)
Support booting from compressed kernel images. The bsd.rd ramdisk now ships gzip'd on amd64. Use libz in base to transparently handle decompression of any compressed kernel images. Patch from Josh Rickmar. ok kn@
Revision 1.37 / (download) - annotate - [select for diffs], Fri Mar 19 09:29:33 2021 UTC (3 years, 2 months ago) by kn
Branch: MAIN
Changes since 1.36: +11 -30 lines
Diff to previous 1.36 (colored)
Remove booting from kernels in raw/qcow2 images Diff and (slightly tweaked) text below from Dave Voutila < dave at sisu dot io >, thanks! -- Since 6.7 switched to FFS2 as the default filesystem for new installs, the ability for vmd(8) to load a kernel and boot.conf from a disk image directly (without SeaBIOS) has been broken. A diff from tb to add FFS2 support never mdae it into the tree. On 5th Jan 2021, new ramdisks for amd64 have started shipping gzipped, breaking the ability to load the bsd.rd directly as a kernel image for a vmd guest without first uncompressing the image. Using BIOS works, the FFS2 change happend ten months ago and few if any have complained about the breakage. vmctl(8) is still vague about supporting it per its man page and one still has to pass the disk image twice as a "-b" and "-d" argument to boot an OpenBSD guest *without* BIOS. Josh Rickmar reported the gzip issue on bugs@ and provided patches to add support for compressed ramdisks and kernel images. The easiest way to do so is to drop support for FFS images since they require a call to fmemopen(3) while all the other logic uses fopen(3)/fdopen(3) calls and a file descriptor. It is much easier to get thsoe patches merged if they don't have to account for extracting files from disk images. -- No objections anyone "Removing it makes sense" reyk (who wrote the FFS module) OK mlarkin
Revision 1.36 / (download) - annotate - [select for diffs], Mon Oct 26 04:04:31 2020 UTC (3 years, 7 months ago) by visa
Branch: MAIN
Changes since 1.35: +5 -5 lines
Diff to previous 1.35 (colored)
Remove an unneeded variable. OK kettenis@
Revision 1.35 / (download) - annotate - [select for diffs], Thu May 16 21:16:04 2019 UTC (5 years ago) by claudio
Branch: MAIN
CVS Tags: OPENBSD_6_8_BASE,
OPENBSD_6_8,
OPENBSD_6_7_BASE,
OPENBSD_6_7,
OPENBSD_6_6_BASE,
OPENBSD_6_6
Changes since 1.34: +5 -3 lines
Diff to previous 1.34 (colored)
Unbreak vmctl start foo -b /bsd -d disk.img -cL Define a local definition of LOADADDR() instead of pulling in machine/loadfile_machdep.h. vmd -b requires the addresses to be masked and the new bootloader no longer does that. OK pd@ kettenis@
Revision 1.34 / (download) - annotate - [select for diffs], Fri Mar 1 07:32:29 2019 UTC (5 years, 3 months ago) by mlarkin
Branch: MAIN
CVS Tags: OPENBSD_6_5_BASE,
OPENBSD_6_5
Changes since 1.33: +1 -30 lines
Diff to previous 1.33 (colored)
vmd(8): remove some i386 remnants that missed the original cleanup ok pd, kn, deraadt
Revision 1.33 / (download) - annotate - [select for diffs], Wed Dec 12 21:20:57 2018 UTC (5 years, 5 months ago) by claudio
Branch: MAIN
Changes since 1.32: +3 -28 lines
Diff to previous 1.32 (colored)
Simplify mbzero() by using mem_write with a NULL buf which does zero out all memory at once without having to use a zero buffer. OK mlarkin@
Revision 1.32 / (download) - annotate - [select for diffs], Wed Dec 12 21:19:22 2018 UTC (5 years, 5 months ago) by claudio
Branch: MAIN
Changes since 1.31: +2 -2 lines
Diff to previous 1.31 (colored)
Set the com speed to 115200 like we do in our bootloader when using SeaBIOS. OK mlarkin@
Revision 1.31 / (download) - annotate - [select for diffs], Thu Dec 6 09:20:06 2018 UTC (5 years, 6 months ago) by claudio
Branch: MAIN
Changes since 1.30: +24 -9 lines
Diff to previous 1.30 (colored)
Make it possible to define the bootdevice in vmd. This information is used currently only when booting a OpenBSD kernel. If VMBOOTDEV_NET is used the internal dhcp server will pass "auto_install" as boot file to the client and the boot loader passes the MAC of the first interface to the kernel to indicate PXE booting. Adding boot order support to SeaBIOS is not yet implemented. Ok ccardenas@
Revision 1.30 / (download) - annotate - [select for diffs], Tue Jul 17 13:47:06 2018 UTC (5 years, 10 months ago) by mlarkin
Branch: MAIN
CVS Tags: OPENBSD_6_4_BASE,
OPENBSD_6_4
Changes since 1.29: +41 -9 lines
Diff to previous 1.29 (colored)
vmd(8): fix vmctl -b option for i386 kernels. ok pd@
Revision 1.29 / (download) - annotate - [select for diffs], Wed Nov 29 02:46:10 2017 UTC (6 years, 6 months ago) by mlarkin
Branch: MAIN
CVS Tags: OPENBSD_6_3_BASE,
OPENBSD_6_3
Changes since 1.28: +6 -15 lines
Diff to previous 1.28 (colored)
make vmm(4) less responsible for initial register state, preferring to let usermode daemons handle that. ok pd@
Revision 1.28 / (download) - annotate - [select for diffs], Mon Nov 27 03:19:00 2017 UTC (6 years, 6 months ago) by mlarkin
Branch: MAIN
Changes since 1.27: +3 -3 lines
Diff to previous 1.27 (colored)
typo in comments "optionel" -> "optional"
Revision 1.27 / (download) - annotate - [select for diffs], Sun Oct 29 08:45:53 2017 UTC (6 years, 7 months ago) by mpi
Branch: MAIN
Changes since 1.26: +2 -2 lines
Diff to previous 1.26 (colored)
Prefer <elf.h> to the non portable <sys/exec_elf.h>. ok jca@, deraadt@
Revision 1.26 / (download) - annotate - [select for diffs], Mon Mar 27 00:28:04 2017 UTC (7 years, 2 months ago) by deraadt
Branch: MAIN
CVS Tags: OPENBSD_6_2_BASE,
OPENBSD_6_2,
OPENBSD_6_1_BASE,
OPENBSD_6_1
Changes since 1.25: +3 -3 lines
Diff to previous 1.25 (colored)
die whitespace die die die
Revision 1.25 / (download) - annotate - [select for diffs], Sat Mar 25 16:28:25 2017 UTC (7 years, 2 months ago) by reyk
Branch: MAIN
Changes since 1.24: +9 -7 lines
Diff to previous 1.24 (colored)
Boot using BIOS from /etc/firmware/vmm-bios by default. Instead of using the internal "vmboot", VMs will now be booted using the external BIOS firmware in /etc/firmware/vmm-bios (which is subject to a LGPLv3 license). Direct booting of OpenBSD kernels or non-default BIOS images is still supported for now using the -b/boot option that is replacing the -k/kernel option. As requested by Theo, vmd(8) fails if neither the default BIOS is found nor a kernel has been specified in the VM configuration. The "vmm" BIOS has to be installed using fw_update(1), which will be done automatically in most cases where the OpenBSD can fetch it after install/upgrade. OK mlarkin@
Revision 1.24 / (download) - annotate - [select for diffs], Sat Feb 4 07:23:25 2017 UTC (7 years, 4 months ago) by mlarkin
Branch: MAIN
Changes since 1.23: +2 -1 lines
Diff to previous 1.23 (colored)
missing function prototype
Revision 1.23 / (download) - annotate - [select for diffs], Tue Jan 17 21:51:01 2017 UTC (7 years, 4 months ago) by krw
Branch: MAIN
Changes since 1.22: +2 -2 lines
Diff to previous 1.22 (colored)
Nuke some whitespace that keeps poking me in the eye as I try to steal code.
Revision 1.22 / (download) - annotate - [select for diffs], Sat Nov 26 20:03:42 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.21: +15 -7 lines
Diff to previous 1.21 (colored)
Implement basic support for boot.conf(8) on the disk image. Like the real boot loader, load and parse hd0a:/etc/boot.conf from the first disk and fall back to /bsd. Not all boot loader options are supported, but it at least does set device, set image, and boot -acds (eg. for booting single-user). For example, it can now boot install60.fs that includes a boot.conf with "set image /6.0/amd64/bsd.rd": vmctl start install -c -d install60.fs -d OpenBSD.img This pseudo-bootloader is only needed without BIOS and could potentially be replaced in the future. OK mlarkin@
Revision 1.21 / (download) - annotate - [select for diffs], Thu Nov 24 07:58:55 2016 UTC (7 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.20: +38 -38 lines
Diff to previous 1.20 (colored)
Add support for booting the kernel from the disk image. This make the kernel/-k argument optional and, if not specified, tries to find the /bsd kernel in the primary hd0a partition of the first disk image itself. It doesn't support hd0a:/etc/boot.conf yet, and it is no BIOS or full boot loader, but it makes booting and handling of VMs a bit easier - booting an external kernel is still supported. The UFS file system code ufs.c is directly from libsa which is also used by the real boot loader. The code compiles with a few signedness warning which will be fixed separately. OK mlarkin@
Revision 1.20 / (download) - annotate - [select for diffs], Wed Oct 26 05:26:36 2016 UTC (7 years, 7 months ago) by mlarkin
Branch: MAIN
Changes since 1.19: +39 -1 lines
Diff to previous 1.19 (colored)
vmd(8)/vmctl(8) for i386. Some ugliness in #ifdef __i386__ areas will be fixed in tree, but the changes required were pretty minimal. Note that i386 hosts are still presently limited to running i386 guests. ok deraadt, stefan, jca
Revision 1.19 / (download) - annotate - [select for diffs], Sat Sep 17 17:39:34 2016 UTC (7 years, 8 months ago) by jasper
Branch: MAIN
Changes since 1.18: +2 -2 lines
Diff to previous 1.18 (colored)
move the .SUNW_ctf section name definition to exec_elf.h and document it in elf(5) feedback from guenther@ ok guenther@ kettenis@
Revision 1.18 / (download) - annotate - [select for diffs], Tue Sep 13 19:07:47 2016 UTC (7 years, 8 months ago) by jasper
Branch: MAIN
Changes since 1.17: +3 -2 lines
Diff to previous 1.17 (colored)
sync with sys/lib/libsa/loadfile_elf.c -r1.12 and load the .SUNW_ctf section pointed out by mlarkin@
Revision 1.17 / (download) - annotate - [select for diffs], Thu Sep 1 16:04:47 2016 UTC (7 years, 9 months ago) by stefan
Branch: MAIN
Changes since 1.16: +6 -6 lines
Diff to previous 1.16 (colored)
Make vcpu_reset_regs use new writeregs code Makes reset code a little simpler. ok mlarkin@
Revision 1.16 / (download) - annotate - [select for diffs], Wed Aug 17 05:07:13 2016 UTC (7 years, 9 months ago) by deraadt
Branch: MAIN
Changes since 1.15: +7 -7 lines
Diff to previous 1.15 (colored)
small bits of header cleanup; ok mlarkin
Revision 1.15 / (download) - annotate - [select for diffs], Thu May 26 17:10:15 2016 UTC (8 years ago) by stefan
Branch: MAIN
CVS Tags: OPENBSD_6_0_BASE,
OPENBSD_6_0
Changes since 1.14: +10 -12 lines
Diff to previous 1.14 (colored)
Copy ELF headers into guest VM memory This gives ddb access to the symbols of the kernel running inside the VM. ok mlarkin@
Revision 1.14 / (download) - annotate - [select for diffs], Thu Apr 7 07:02:57 2016 UTC (8 years, 2 months ago) by mlarkin
Branch: MAIN
Changes since 1.13: +4 -1 lines
Diff to previous 1.13 (colored)
Place a BOOTARG_END section at the end of the boot arguments list pushed to the VM during boot. i386 guest kernels need this marker to boot, and with this diff, it is possible to install and run an OpenBSD i386 guest VM using vmm(4). Note that i386 guests require a host CPU that supports unrestricted guest mode (eg, post-Nehalem) for the time being, hopefully this can be addressed later.
Revision 1.13 / (download) - annotate - [select for diffs], Tue Apr 5 09:33:05 2016 UTC (8 years, 2 months ago) by mlarkin
Branch: MAIN
Changes since 1.12: +34 -5 lines
Diff to previous 1.12 (colored)
Support processors without unrestricted guest capability. ok stefan
Revision 1.12 / (download) - annotate - [select for diffs], Mon Apr 4 17:13:54 2016 UTC (8 years, 2 months ago) by stefan
Branch: MAIN
Changes since 1.11: +12 -14 lines
Diff to previous 1.11 (colored)
Directly use physical addresses from ELF header for kernel loading. This allows us to remove the 'do_mask' parameters in read_mem and write_mem as well as the address mask operaton itself. ok mlarkin@
Revision 1.11 / (download) - annotate - [select for diffs], Sun Mar 13 13:11:47 2016 UTC (8 years, 2 months ago) by stefan
Branch: MAIN
Changes since 1.10: +104 -71 lines
Diff to previous 1.10 (colored)
Introduce memory ranges to support VMs with >= 4G RAM 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@
Revision 1.10 / (download) - annotate - [select for diffs], Fri Mar 4 15:34:14 2016 UTC (8 years, 3 months ago) by stefan
Branch: MAIN
Changes since 1.9: +3 -2 lines
Diff to previous 1.9 (colored)
Set root device to sd0a, instead of wd0a. Virtio devices show up as sd. Original diff from Patrick Wildt. In addition, using the MAKEBOOTDEV macro no longer makes bsd ask for the root disk on VM boot. ok mlarkin@
Revision 1.9 / (download) - annotate - [select for diffs], Sat Jan 16 08:55:40 2016 UTC (8 years, 4 months ago) by stefan
Branch: MAIN
CVS Tags: OPENBSD_5_9_BASE,
OPENBSD_5_9
Changes since 1.8: +13 -13 lines
Diff to previous 1.8 (colored)
vmd(8) sometimes attempts page-crossing data copies between the host and guest. The readpage/writepage ioctls of vmm(4) do not support this and they return EINVAL on such attempts since recently. Avoid page-crossing guest memory accesses by changing read_page() and write_page() into read_mem() and write_mem() that can copy arbitrary lengths of data between host<->guest without page-crossing accesses. This also allows us to remove page-wise copy-loops in a few places. ok mlarkin@
Revision 1.8 / (download) - annotate - [select for diffs], Tue Jan 5 06:55:28 2016 UTC (8 years, 5 months ago) by mlarkin
Branch: MAIN
Changes since 1.7: +5 -5 lines
Diff to previous 1.7 (colored)
Make some things static that are only used in loadfile_elf.c diff from Michal Mazurek, thanks!
Revision 1.7 / (download) - annotate - [select for diffs], Tue Jan 5 06:54:03 2016 UTC (8 years, 5 months ago) by mlarkin
Branch: MAIN
Changes since 1.6: +5 -2 lines
Diff to previous 1.6 (colored)
Fail fast if elf64_exec fails. No need to populate the bootargs/stack and gdt pages if we couldn't load the kernel. diff from Michal Mazurek, thanks!
Revision 1.6 / (download) - annotate - [select for diffs], Tue Jan 5 06:51:54 2016 UTC (8 years, 5 months ago) by mlarkin
Branch: MAIN
Changes since 1.5: +10 -10 lines
Diff to previous 1.5 (colored)
more bzero -> memset conversions from Michal Mazurek, thanks!
Revision 1.5 / (download) - annotate - [select for diffs], Thu Dec 17 09:29:28 2015 UTC (8 years, 5 months ago) by mlarkin
Branch: MAIN
Changes since 1.4: +17 -9 lines
Diff to previous 1.4 (colored)
Move vcpu register state init to vmd. Allows vmd bootloader to make the 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@
Revision 1.4 / (download) - annotate - [select for diffs], Sun Dec 6 17:42:15 2015 UTC (8 years, 6 months ago) by mlarkin
Branch: MAIN
Changes since 1.3: +1 -2 lines
Diff to previous 1.3 (colored)
un-needed extern which was removed a while back
Revision 1.3 / (download) - annotate - [select for diffs], Thu Dec 3 08:42:11 2015 UTC (8 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.2: +11 -7 lines
Diff to previous 1.2 (colored)
spacing
Revision 1.2 / (download) - annotate - [select for diffs], Mon Nov 23 13:04:49 2015 UTC (8 years, 6 months ago) by reyk
Branch: MAIN
Changes since 1.1: +4 -7 lines
Diff to previous 1.1 (colored)
Add support for logging to stderr or syslog, and to run vmd in foreground with -d. OK mlarkin@ jung@
Revision 1.1 / (download) - annotate - [select for diffs], Sun Nov 22 20:20:32 2015 UTC (8 years, 6 months ago) by mlarkin
Branch: MAIN
vmd(8) - virtual machine daemon. There is still a lot to be done, and fixed, in these userland components but I have received enough "it works, commit it" emails that it's time to finish those things in tree. discussed with many, tested by many.