freebsd-dev/usr.sbin/bhyve
D Scott Phillips f8a6ec2d57 bhyve: support relocating fbuf and passthru data BARs
We want to allow the UEFI firmware to enumerate and assign
addresses to PCI devices so we can boot from NVMe[1]. Address
assignment of PCI BARs is properly handled by the PCI emulation
code in general, but a few specific cases need additional support.
fbuf and passthru map additional objects into the guest physical
address space and so need to handle address updates. Here we add a
callback to emulated PCI devices to inform them of a BAR
configuration change. fbuf and passthru then watch for these BAR
changes and relocate the frame buffer memory segment and passthru
device mmio area respectively.

We also add new VM_MUNMAP_MEMSEG and VM_UNMAP_PPTDEV_MMIO ioctls
to vmm(4) to facilitate the unmapping needed for addres updates.

[1]: https://github.com/freebsd/uefi-edk2/pull/9/

Originally by:	scottph
MFC After:	1 week
Sponsored by:	Intel Corporation
Reviewed by:	grehan
Approved by:	philip (mentor)
Differential Revision:	https://reviews.freebsd.org/D24066
2021-03-19 11:04:36 +08:00
..
acpi.c
acpi.h
ahci.h
atkbdc.c
atkbdc.h
audio.c
audio.h
bhyve_config.5 Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
bhyve.8 Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
bhyvegc.c
bhyvegc.h
bhyverun.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
bhyverun.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
block_if.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
block_if.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
bootrom.c
bootrom.h
config.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
config.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
console.c
console.h
debug.h
fwctl.c
fwctl.h
gdb.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
gdb.h
hda_codec.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
hda_reg.h
hdac_reg.h
inout.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
inout.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
ioapic.c
ioapic.h
iov.c
iov.h
kernemu_dev.c
kernemu_dev.h
Makefile Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
Makefile.depend
Makefile.depend.options
mem.c
mem.h
mevent_test.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
mevent.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
mevent.h
mptbl.c
mptbl.h
net_backends.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
net_backends.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
net_utils.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
net_utils.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_ahci.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_e82545.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_emul.c bhyve: support relocating fbuf and passthru data BARs 2021-03-19 11:04:36 +08:00
pci_emul.h bhyve: support relocating fbuf and passthru data BARs 2021-03-19 11:04:36 +08:00
pci_fbuf.c bhyve: support relocating fbuf and passthru data BARs 2021-03-19 11:04:36 +08:00
pci_hda.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_hda.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_hostbridge.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_irq.c
pci_irq.h
pci_lpc.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_lpc.h
pci_nvme.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_passthru.c bhyve: support relocating fbuf and passthru data BARs 2021-03-19 11:04:36 +08:00
pci_uart.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_virtio_9p.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_virtio_block.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_virtio_console.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_virtio_net.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_virtio_rnd.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_virtio_scsi.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_xhci.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pci_xhci.h
pctestdev.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pctestdev.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
pm.c Silence ACPI RTC error/warning in Linux guests. 2020-07-06 08:36:14 +00:00
post.c
ps2kbd.c
ps2kbd.h
ps2mouse.c
ps2mouse.h
rfb.c Fix issues with various VNC clients. 2020-12-18 00:38:48 +00:00
rfb.h
rtc.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
rtc.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
smbiostbl.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
smbiostbl.h
snapshot.c bhyve/snapshot: use SOCK_DGRAM instead of SOCK_STREAM 2021-03-07 15:23:29 -09:00
snapshot.h bhyve/snapshot: rename and bump size of MAX_SNAPSHOT_VMNAME 2021-02-27 12:07:35 -09:00
sockstream.c
sockstream.h
spinup_ap.c
spinup_ap.h
task_switch.c
uart_emul.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
uart_emul.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
usb_emul.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
usb_emul.h Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
usb_mouse.c Refactor configuration management in bhyve. 2021-03-18 16:30:26 -07:00
vga.c
vga.h
virtio.c bhyve: virtio shares definitions between sys/dev/virtio 2021-03-16 19:29:39 +08:00
virtio.h bhyve: virtio shares definitions between sys/dev/virtio 2021-03-16 19:29:39 +08:00
vmgenc.c
vmgenc.h
xmsr.c
xmsr.h