Revision tags: release/13.4.0 |
|
#
d93fbcf0 |
| 09-Sep-2024 |
Hans Rosenfeld <rosenfeld@grumpf.hope-2000.org> |
bhyve: TPM 2.0 emulation with swtpm
Implement a TPM 2.0 emulation backend to connect to a running swtpm instance using a UNIX domain socket.
Reviewed by: corvink MFC after: 1 week Differential Re
bhyve: TPM 2.0 emulation with swtpm
Implement a TPM 2.0 emulation backend to connect to a running swtpm instance using a UNIX domain socket.
Reviewed by: corvink MFC after: 1 week Differential Revision: https://reviews.freebsd.org/D46373
show more ...
|
Revision tags: release/14.1.0 |
|
#
6f308bcf |
| 03-May-2024 |
John Baldwin <jhb@FreeBSD.org> |
ctl: Support NVMe requests in debug trace functions
Reviewed by: imp Sponsored by: Chelsio Communications Differential Revision: https://reviews.freebsd.org/D44719
|
Revision tags: release/13.3.0 |
|
#
0efad4ac |
| 17-Feb-2024 |
Jessica Clarke <jrtc27@jrtc27.com> |
bhyve: Support legacy PCI interrupts on arm64
This allows us to remove various #ifdef hacks and enable building more PCI devices.
Note that a hole is left in the interrupt mapping for the RTC rathe
bhyve: Support legacy PCI interrupts on arm64
This allows us to remove various #ifdef hacks and enable building more PCI devices.
Note that a hole is left in the interrupt mapping for the RTC rather than having the two core devices straddle the PCIe interrupts. QEMU's virt machine also takes this approach.
Reviewed by: jhb MFC after: 2 weeks Obtained from: CheriBSD
show more ...
|
#
fc98569f |
| 03-Apr-2024 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Do not compile PCI passthrough support on arm64
Some required kernel functionality is not yet implemented.
For now this means that one cannot specify host PCI register values, but that funct
bhyve: Do not compile PCI passthrough support on arm64
Some required kernel functionality is not yet implemented.
For now this means that one cannot specify host PCI register values, but that functionality is only used by amd64-specific device models for now. Note that this limitation is rather artificial; it arises only because pci_host_read_config() lives in pci_passthru.c.
Reviewed by: corvink, andrew, jhb MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D41738
show more ...
|
#
d878f72a |
| 03-Apr-2024 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Provide optional libfdt linking
The arm64 port currently does not support ACPI, it instead builds up an FDT which is exported to the guest. This mechanism will not be used on amd64 but isn't
bhyve: Provide optional libfdt linking
The arm64 port currently does not support ACPI, it instead builds up an FDT which is exported to the guest. This mechanism will not be used on amd64 but isn't really arm64-specific either, so provide an opt-in mechanism to link libfdt.
No functional change intended.
Reviewed by: corvink, jhb MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40995
show more ...
|
#
d1c5d0cf |
| 21-Mar-2024 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move device model-independent UART code into a separate file
Currently bhyve implements a ns16550-compatible UART in uart_emul.c. This file also contains generic code to manage RX FIFOs and t
bhyve: Move device model-independent UART code into a separate file
Currently bhyve implements a ns16550-compatible UART in uart_emul.c. This file also contains generic code to manage RX FIFOs and to handle reading from and writing to a TTY. bhyve instantiates UARTs to implement COM devices (via pci_lpc.c) and PCI UART devices.
The arm64 port will bring with it a PL011 device model which is used as the default console (i.e., no COM ports). To simplify its integration, add a UART "backend" layer which lets UART device models allocate an RX FIFO and interact with TTYs without duplicating code. In particular, code in uart_backend.* is to be shared among device models, and the namespace for uart_emul.* is changed to uart_ns16550_*.
This is based on andrew@'s work in https://github.com/zxombie/freebsd/tree/bhyvearm64 but I've made a number of changes, particularly with respect to naming and source code organization.
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40993
show more ...
|
#
f81cdf24 |
| 21-Feb-2024 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Add support for XML register definitions
This is useful for exposing additional registers to debuggers. For instance, control registers are now available on amd64 when using gdb to debug a g
bhyve: Add support for XML register definitions
This is useful for exposing additional registers to debuggers. For instance, control registers are now available on amd64 when using gdb to debug a guest.
The stub indicates support by including the string "qXfer:features:read+" in its feature list. The debugger queries for target descriptions by sending the query "qXfer:features:read:" followed by a file path.
The XML definitions are copied from QEMU and installed to /usr/share/bhyve/gdb.
Note that we currently don't handle the SIMD registers at all, since that's of somewhat limited utility (for me at least) and since that requires new ioctls to fetch the register values.
Reviewed by: jhb MFC after: 2 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D43666
show more ...
|
#
c5359e2a |
| 22-Nov-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Add a slirp network backend
This enables a subset of the functionality provided by QEMU's user networking implementation. In particular, it uses net/libslirp, the same library as QEMU.
libs
bhyve: Add a slirp network backend
This enables a subset of the functionality provided by QEMU's user networking implementation. In particular, it uses net/libslirp, the same library as QEMU.
libslirp is permissively licensed but has some dependencies which make it impractical to bring into the base system (glib in particular). I thus opted to make bhyve dlopen the libslirp.so, which can be installed via pkg. The library header is imported into bhyve.
The slirp backend takes a "hostfwd" which is identical to QEMU's hostfwd. When configured, bhyve opens a host socket and listens for connections, which get forwarded to the guest. For instance, "hostfwd=tcp::1234-:22" allows one to ssh into the guest by ssh'ing to port 1234 on the host, e.g., via 127.0.0.1. I didn't try to hook up guestfwd support since I don't personally have a use-case for it yet, and I think it won't interact nicely with the capsicum sandbox.
Reviewed by: jhb Tested by: rew MFC after: 1 month Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D42510
show more ...
|
#
be74aede |
| 22-Nov-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Split backends into separate files
Currently the net_backend structure definition is private to net_backends.c, so all of the backend definitions are there. While adding a new backend to use
bhyve: Split backends into separate files
Currently the net_backend structure definition is private to net_backends.c, so all of the backend definitions are there. While adding a new backend to use libslirp, it was noted that this file is somewhat cluttered. Move the netmap and netgraph backends to their own files and clean up includes a bit. No functional change intended.
Reviewed by: corvink, jhb MFC after: 3 weeks Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D42689
show more ...
|
Revision tags: release/14.0.0 |
|
#
e20b74da |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move vcpu initialization into a MD source file
- Make handling of x86 config options, like x86.x2apic, conditional to amd64. - Move fbsdrun_set_capabilities() and spinup_vcpu() to a new fil
bhyve: Move vcpu initialization into a MD source file
- Make handling of x86 config options, like x86.x2apic, conditional to amd64. - Move fbsdrun_set_capabilities() and spinup_vcpu() to a new file, bhyverun_machdep.c. The moved code is all highly x86 specific.
I'm not sure how best to handle the namespace. I'm using "bhyve_" for MD functions called from MI code. We also have "fbsdrun_" for some MI routines that are typically called from MD code. The file name is prefixed by "bhyverun_".
Reviewed by: corvink MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40987
show more ...
|
#
ca2cda98 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Make gdb support optional
Add a BHYVE_GDB_SUPPORT make variable that can be set by per-arch makefiles. When set, BHYVE_GDB is defined and can be used as a preprocessor predicate. Use it to
bhyve: Make gdb support optional
Add a BHYVE_GDB_SUPPORT make variable that can be set by per-arch makefiles. When set, BHYVE_GDB is defined and can be used as a preprocessor predicate. Use it to guard gdb stub calls in MI code.
The arm64 bhyve port currently does not have a functional gdb stub, but that's not critical to landing the port, so this mechanism slightly reduces the friction of adding support for a new platform.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40986
show more ...
|
#
31cf78c9 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Make most I/O port handling specific to amd64
- The qemu_fwcfg interface, as implemented, is I/O port-based, but QEMU implements an MMIO interface that we'll eventually want to port for a
bhyve: Make most I/O port handling specific to amd64
- The qemu_fwcfg interface, as implemented, is I/O port-based, but QEMU implements an MMIO interface that we'll eventually want to port for arm64. - Retain support for I/O space PCI BARs, simply treat them like MMIO BARs for most purposes, similar to what the arm64 kernel does. Such BARs are created by virtio devices.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40741
show more ...
|
#
61429b49 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Conditionally compile framebuffer-related code
The arm64 port does not implement VGA, so move the device model sources. Compile framebuffer code only on amd64 for now, but do not move the sou
bhyve: Conditionally compile framebuffer-related code
The arm64 port does not implement VGA, so move the device model sources. Compile framebuffer code only on amd64 for now, but do not move the sources, as we ought to be able to add support later.
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40740
show more ...
|
#
55c13f6e |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move legacy PCI interrupt handling under amd64/
Specifically, move IO-APIC, LPC and PIRQ routing code under amd64/.
Use ifdefs to conditionally compile related code in other files. In parti
bhyve: Move legacy PCI interrupt handling under amd64/
Specifically, move IO-APIC, LPC and PIRQ routing code under amd64/.
Use ifdefs to conditionally compile related code in other files. In particular, legacy PCI interrupt handling is now compiled only on amd64. This is not too invasive, but suggestions for a more modular approach would be appreciated.
I am not sure why qemu fwcfg handling is tied to LPC, and I suspect it should be decoupled. In this commit I just apply an ifdef hammer, but we will eventually want fwcfg on arm64 as well.
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40739
show more ...
|
#
71cc76e8 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Compile some device models only on amd64
These models register legacy PCI interrupts, which won't be supported in the arm64 port. In principle it should be possible to make these models work
bhyve: Compile some device models only on amd64
These models register legacy PCI interrupts, which won't be supported in the arm64 port. In principle it should be possible to make these models work on arm64 with a bit of effort, so don't move the sources to the amd64 subdirectory.
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40738
show more ...
|
#
c7c5d3e3 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move AP startup code to amd64/
This code is only invoked via MD vmexit handlers. No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differe
bhyve: Move AP startup code to amd64/
This code is only invoked via MD vmexit handlers. No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40737
show more ...
|
#
4ab7aea8 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move the gvt-d driver to amd64/
It is amd64-only. No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews
bhyve: Move the gvt-d driver to amd64/
It is amd64-only. No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40736
show more ...
|
#
75d1e855 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move power management code to amd64/
This implements various x86-specific interfaces. No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Di
bhyve: Move power management code to amd64/
This implements various x86-specific interfaces. No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40735
show more ...
|
#
a7f6c2ff |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move the RTC driver to amd64/
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40734
|
#
548b1122 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move MSR emulation into amd64/
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40733
|
#
72f9c9d8 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Split vmexit handling into a separate file
Put it in amd64, since most of it is MD and won't be used on arm64. Add a bit of glue to bhyverun.h to make CPU startup and shutdown work without h
bhyve: Split vmexit handling into a separate file
Put it in amd64, since most of it is MD and won't be used on arm64. Add a bit of glue to bhyverun.h to make CPU startup and shutdown work without having to export more global variables. AP startup will be reworked further in a future revision.
This makes bhyverun.c much more machine-independent.
No functional change intended.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40556
show more ...
|
#
a1642451 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move kernemu to amd64/
This code handles instruction emulation for accesses to various amd64-specific MMIO regions.
No functional change intended.
Reviewed by: corvink, jhb, emaste MFC afte
bhyve: Move kernemu to amd64/
This code handles instruction emulation for accesses to various amd64-specific MMIO regions.
No functional change intended.
Reviewed by: corvink, jhb, emaste MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40554
show more ...
|
#
4fe5b70c |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move more amd64-specific code under amd64/
mptable and the e820 are both rather amd64-specific and can be moved easily.
In the case of e820, move the registration with qemu_fwcfg into e820.c
bhyve: Move more amd64-specific code under amd64/
mptable and the e820 are both rather amd64-specific and can be moved easily.
In the case of e820, move the registration with qemu_fwcfg into e820.c, as it simplifies bhyverun.c a bit and I can't see any downsides.
No functional change intended.
Reviewed by: corvink, jhb, emaste MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40552
show more ...
|
#
f927afc1 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Move some more amd64-specific drivers to their own subdir
No functional change intended.
Reviewed by: corvink, jhb, emaste MFC after: 1 week Sponsored by: Innovate UK Differential Revision:
bhyve: Move some more amd64-specific drivers to their own subdir
No functional change intended.
Reviewed by: corvink, jhb, emaste MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40551
show more ...
|
#
4f2bd402 |
| 04-Oct-2023 |
Mark Johnston <markj@FreeBSD.org> |
bhyve: Start moving machine-dependent code into subdirectories
In preparation for an arm64 port, make an easy change which puts some machine-dependent code in its own directory.
Going forward, code
bhyve: Start moving machine-dependent code into subdirectories
In preparation for an arm64 port, make an easy change which puts some machine-dependent code in its own directory.
Going forward, code which is only used on one platform should live in a MD directory. We should strive to layer modules in such a way as to avoid polluting shared code with lots of ifdefs. For some existing files this will take some effort.
task_switch.c and fwctl.c are an easy place to start: the former is very x86-specific, and the latter provides an I/O port interface which can't be used on anything other than x86. (fwcfg as implemented has the same problem, but QEMU also supports a MMIO fwcfg interface.) So I propose that we start by simply making those files conditional.
Reviewed by: corvink, jhb MFC after: 1 week Sponsored by: Innovate UK Differential Revision: https://reviews.freebsd.org/D40501
show more ...
|