freebsd-dev/usr.sbin/bhyve
Corvin Köhne 6f7e9779fc
bhyve: add config option to load ACPI tables into memory
For backward compatibility, the ACPI tables are loaded into the guest
memory. Windows scans the memory, finds the ACPI tables and uses them.
It ignores the ACPI tables provided by the UEFI. We are patching the
ACPI tables in the guest memory, so that's mostly fine. However, Windows
will break when the ACPI tables become to large or when we add entries
which can't be patched by bhyve. One example of an unpatchable entry, is
a TPM log. The TPM log has to be allocated by the guest firmware. As the
address of the TPM log is unpredictable, bhyve can't assign it in the
memory version of the ACPI tables. Additionally, this makes it
impossible for bhyve to calculate a correct checksum of the table.

By default ACPI tables are still loaded into guest memory for backward
compatibility. The new acpi_tables_in_memory config value can be set to
false to avoid this behaviour.

Reviewed by:		markj
MFC after:		1 week
Sponsored by:		Beckhoff Automation GmbH & Co. KG
Differential Revision:	https://reviews.freebsd.org/D39979
2023-08-22 07:49:00 +02:00
..
kbdlayout Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
acpi_device.c spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
acpi_device.h spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
acpi.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
acpi.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ahci.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
atkbdc.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
atkbdc.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
audio.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
audio.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
basl.c bhyve: add config option to load ACPI tables into memory 2023-08-22 07:49:00 +02:00
basl.h bhyve: maintain RSDT and XSDT by basl 2023-06-20 10:56:23 +02:00
bhyve_config.5 bhyve: add config option to load ACPI tables into memory 2023-08-22 07:49:00 +02:00
bhyve.8 bhyve: add cmdline option for TPM emulation 2023-08-17 08:17:59 +02:00
bhyvegc.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
bhyvegc.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
bhyverun.c bhyve: add config option to load ACPI tables into memory 2023-08-22 07:49:00 +02:00
bhyverun.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
block_if.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
block_if.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
bootrom.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
bootrom.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
config.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
config.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
console.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
console.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
debug.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
e820.c bhyve: don't panic if e820 finds no available memory 2023-05-12 09:29:39 +02:00
e820.h bhyve: add E820 dump function 2023-04-26 09:58:35 +02:00
fwctl.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
fwctl.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
gdb.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
gdb.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
hda_codec.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
hda_reg.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
hdac_reg.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
inout.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
inout.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ioapic.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
ioapic.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
iov.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
iov.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ipc.h spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
kernemu_dev.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
kernemu_dev.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
Makefile Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.depend Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
Makefile.depend.options Remove $FreeBSD$: one-line sh pattern 2023-08-16 11:55:03 -06:00
mem.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
mem.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
mevent_test.c Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
mevent.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
mevent.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
mptbl.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
mptbl.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
net_backends.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
net_backends.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
net_utils.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
net_utils.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pci_ahci.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_e82545.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_emul.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_emul.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pci_fbuf.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_gvt-d-opregion.h bhyve: import OpRegion definitions 2023-05-12 09:29:51 +02:00
pci_gvt-d.c bhyve: pass address of OpRegion to the guest 2023-06-16 07:55:16 +02:00
pci_hda.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_hda.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pci_hostbridge.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_irq.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_irq.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pci_lpc.c bhyve: add cmdline option for TPM emulation 2023-08-17 08:17:59 +02:00
pci_lpc.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pci_nvme.c bhyve: Store the FreeBSD OUI in little-endian in the controller data 2023-08-17 11:32:32 -07:00
pci_passthru.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_passthru.h bhyve: add empty GVT-d emulation 2023-06-16 07:53:44 +02:00
pci_uart.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_9p.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_block.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_console.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_input.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_net.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_rnd.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_virtio_scsi.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_xhci.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pci_xhci.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pctestdev.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
pctestdev.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
pm.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
post.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
ps2kbd.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
ps2kbd.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
ps2mouse.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
ps2mouse.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
qemu_fwcfg.c bhyve: error out if fwcfg user file isn't read completely 2023-05-17 15:39:37 +02:00
qemu_fwcfg.h spdx: The BSD-2-Clause-FreeBSD identifier is obsolete, drop -FreeBSD 2023-05-12 10:44:03 -06:00
qemu_loader.c bhyve: add helper struct for qemus acpi table loader 2023-04-25 08:29:25 +02:00
qemu_loader.h bhyve: add helper struct for qemus acpi table loader 2023-04-25 08:29:25 +02:00
rfb.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
rfb.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
rtc.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
rtc.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
smbiostbl.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
smbiostbl.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
snapshot.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
snapshot.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
sockstream.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
sockstream.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
spinup_ap.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
spinup_ap.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
task_switch.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
tpm_device.c bhyve: add cmdline option for TPM emulation 2023-08-17 08:17:59 +02:00
tpm_device.h bhyve: add cmdline option for TPM emulation 2023-08-17 08:17:59 +02:00
tpm_emul_passthru.c bhyve: emulate TPM passthru by accessing /dev/tpmX 2023-08-10 09:23:42 +02:00
tpm_emul.h bhyve/tpm: create crb thread for sending tpm commands 2023-06-20 10:59:00 +02:00
tpm_intf_crb.c bhyve: add emulation for CRB register of TPM devices 2023-08-10 09:23:33 +02:00
tpm_intf.h bhyve: add emulation for CRB register of TPM devices 2023-08-10 09:23:33 +02:00
tpm_ppi_qemu.c bhyve: add Qemu PPI emulation for TPM devices 2023-08-14 10:17:36 +02:00
tpm_ppi.h bhyve: add Qemu PPI emulation for TPM devices 2023-08-14 10:17:36 +02:00
uart_emul.c bhyve: default UART to 115200 2023-08-17 14:53:23 -04:00
uart_emul.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
usb_emul.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
usb_emul.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
usb_mouse.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
vga.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
vga.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
virtio.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
virtio.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
vmgenc.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
vmgenc.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00
xmsr.c Remove $FreeBSD$: one-line .c pattern 2023-08-16 11:54:42 -06:00
xmsr.h Remove $FreeBSD$: two-line .h pattern 2023-08-16 11:54:16 -06:00