329 lines
9.0 KiB
Plaintext
329 lines
9.0 KiB
Plaintext
config UVMM_SUPPORTED
|
|
def_bool BUILD_ARCH_arm64 || BUILD_ARCH_arm || BUILD_ARCH_amd64 || BUILD_ARCH_mips || BUILD_ARCH_riscv
|
|
|
|
comment "uvmm is not supported on this architecture"
|
|
depends on !UVMM_SUPPORTED
|
|
|
|
comment "uvmm requires L4Re libgcc instead of toolchain version"
|
|
depends on UVMM_SUPPORTED && COMPILER_RT_USE_TOOLCHAIN_LIBGCC
|
|
|
|
menu "uvmm virtual machine monitor"
|
|
depends on UVMM_SUPPORTED
|
|
depends on !COMPILER_RT_USE_TOOLCHAIN_LIBGCC
|
|
|
|
config UVMM_MONITOR
|
|
bool "Monitor interface"
|
|
depends on !RELEASE_MODE
|
|
default y
|
|
help
|
|
Enables the monitoring interface that can be used to query and manipulate
|
|
the guest state at runtime. When enabled the interface must also be switched
|
|
on at runtime using the `mon` command line option.
|
|
|
|
menu "Supported Loaders"
|
|
|
|
config UVMM_LOADER_RAW
|
|
bool "RAW images"
|
|
default y
|
|
help
|
|
Allows to raw kernel images from an address. The format for the file name
|
|
is 'raw:addr=0xcaffee:filename' where addr is the address the image should
|
|
be loaded to, relative to the guest ram base.
|
|
|
|
config UVMM_LOADER_ELF
|
|
bool "ELF images"
|
|
default y
|
|
help
|
|
Enable loading of elf images. The file found under the file name passed to
|
|
uvmm must be a valid ELF file for the loader to pick it up.
|
|
|
|
config UVMM_LOADER_PE
|
|
bool "PE images (error handling only)"
|
|
default y
|
|
help
|
|
Print usefull errors when trying to load PE images. If the file found under
|
|
the file name passed to uvmm is a PE file uvmm will not load it but provides
|
|
helpful error messages.
|
|
|
|
config UVMM_LOADER_ROM
|
|
bool "ROM images (from guest memory locations)"
|
|
default y
|
|
help
|
|
Enable loading of images from a guest memory location. The format for the
|
|
kernel file name passed to uvmm is 'rom:addr=0xcaffee' where 0xcaffee is
|
|
a valid address in the memory of the guest. If the format is
|
|
'rom:addr=0xcaffee:64bit' then the guest is a 64 bit guest.
|
|
|
|
config UVMM_LOADER_LINUX
|
|
bool "Linux images (non-elf)"
|
|
depends on BUILD_ARCH_arm64 || BUILD_ARCH_arm || BUILD_ARCH_amd64 || BUILD_ARCH_riscv
|
|
default y
|
|
help
|
|
Loads a Linux image.
|
|
|
|
config UVMM_LOADER_OPENBSD
|
|
bool "OpenBSD images"
|
|
depends on BUILD_ARCH_amd64
|
|
default y
|
|
help
|
|
Loads an OpenBSD image.
|
|
|
|
config UVMM_LOADER_GZIP
|
|
bool "GZIP/ZLIB loading for Linux images"
|
|
depends on (BUILD_ARCH_arm64 || BUILD_ARCH_arm || BUILD_ARCH_riscv) && HAVE_BIDPC_ZLIB && UVMM_LOADER_LINUX
|
|
default y
|
|
help
|
|
Allows to load gzip or zlib compressed kernel images.
|
|
|
|
endmenu
|
|
|
|
comment "GZIP/ZLIB compression not available due to missing zlib package"
|
|
depends on !HAVE_BIDPC_ZLIB
|
|
|
|
config UVMM_QEMU_FW_IF
|
|
bool "Qemu firmware configuration device"
|
|
default y
|
|
help
|
|
The device allows guests to gain access to the configuration of the
|
|
hypervisor or any kind of data like boot/kernel images in a defined way.
|
|
Some bootloaders make use of this to setup the platform and start the guest
|
|
OS.
|
|
|
|
For details on the configuration see device/qemu_fw_cfg.cc.
|
|
|
|
config UVMM_FAULT_INJECT
|
|
bool "Fault injection"
|
|
depends on BUILD_ARCH_arm64 || BUILD_ARCH_arm
|
|
|
|
comment "Interfacing with L4 applications or physical hardware"
|
|
|
|
config UVMM_VDEV_PSCI
|
|
bool "PSCI interface support"
|
|
depends on BUILD_ARCH_arm || BUILD_ARCH_arm64
|
|
default y
|
|
help
|
|
Emulates a PSCI interface for the guest.
|
|
|
|
config UVMM_VDEV_SMCCC_PROXY
|
|
bool "Smc device proxy"
|
|
depends on BUILD_ARCH_arm || BUILD_ARCH_arm64
|
|
default y
|
|
help
|
|
Proxies Smccc calls.
|
|
|
|
config UVMM_PCI_SUPPORT
|
|
bool "Support PCI emulation" if BUILD_ARCH_arm64 || BUILD_ARCH_arm
|
|
default y
|
|
help
|
|
Configures if the PCI subsystem (and the corresponding devices using the
|
|
PCI transport) should be available in uvmm.
|
|
|
|
config UVMM_VDEV_OPTEE
|
|
bool "OPTEE SMC call forwarding"
|
|
depends on BUILD_ARCH_arm || BUILD_ARCH_arm64
|
|
default y
|
|
help
|
|
Allows forwarding of OP-TEE SMC calls either to a running OP-TEE instance
|
|
or to a native L4 application implementing the protocol.
|
|
|
|
For details on the configuration see device/optee.cc.
|
|
|
|
config UVMM_VDEV_VIRQ
|
|
bool "Forward L4 interrupts"
|
|
default y
|
|
help
|
|
Add a device for relaying L4 IRQs into the guest.
|
|
|
|
For details on the configuration see device/virq.cc
|
|
|
|
config UVMM_VDEV_MMIO_PROXY
|
|
bool "Proxy dataspaces and MMIO protocol"
|
|
default y
|
|
help
|
|
Emulate a device that proxies memory accesses to an external dataspace or
|
|
MMIO space.
|
|
|
|
For details on the configuration see device/mmio_proxy.cc
|
|
|
|
config UVMM_VDEV_SYSCTL
|
|
bool "System control device"
|
|
default y
|
|
help
|
|
Mmio-based device for triggering system events (shutdown, reboot).
|
|
The device can be used with the generic syscon device from Linux.
|
|
|
|
For details on the configuration see device/sysctl.cc
|
|
|
|
config UVMM_VDEV_ROM
|
|
bool "Read-only dataspace based devices"
|
|
default y
|
|
help
|
|
A device for adding L4 dataspaces read-only to the guest.
|
|
|
|
For details on the configuration see device/rom.cc
|
|
|
|
config UVMM_EXTERNAL_RTC
|
|
bool "l4rtc time source"
|
|
depends on HAVE_BIDPC_RTC
|
|
default y
|
|
help
|
|
A driver to retrieve wallclock time from an L4Re rtc server.
|
|
|
|
For details on the configuration see device/l4rtc.cc
|
|
|
|
comment "l4rtc time source not available due to missing rtc package"
|
|
depends on !HAVE_BIDPC_RTC
|
|
|
|
comment "Device Emulation"
|
|
|
|
config UVMM_VDEV_8250
|
|
bool "8250-compatible UART"
|
|
default y
|
|
help
|
|
Emulate an 8250 compatible UART for the guest.
|
|
|
|
For details on the configuration see device/uart_8250.cc
|
|
|
|
config UVMM_VDEV_PL011
|
|
bool "PL011 UART"
|
|
default y
|
|
help
|
|
Emulate a PrimeCell pl011-compatible UART for the guest.
|
|
|
|
For details on the configuration see device/pl011.cc
|
|
|
|
config UVMM_VDEV_PL031
|
|
bool "PL031 RTC"
|
|
default y
|
|
depends on BUILD_ARCH_arm64 || BUILD_ARCH_arm
|
|
help
|
|
Emluate a simple PL0311 RTC for the guest. This is not a complete device
|
|
model and does not come with write support.
|
|
|
|
For details on the configuration see device/arm/pl031.cc
|
|
|
|
config UVMM_VDEV_DEVICE_PCI_HOST_ECAM_GENERIC
|
|
bool "ECAM PCIe host bridge support"
|
|
default y
|
|
depends on (BUILD_ARCH_arm || BUILD_ARCH_arm64) && UVMM_PCI_SUPPORT
|
|
help
|
|
Emulates a generic PCIe host bridge for ARM platforms.
|
|
|
|
config UVMM_VDEV_DEVICE_FRAMEBUFFER
|
|
bool "Generic framebuffer device"
|
|
default y
|
|
help
|
|
Emulate a simple generic framebuffer device
|
|
|
|
config UVMM_VDEV_CFI_FLASH
|
|
bool "CFI flash device"
|
|
default y
|
|
help
|
|
Emulate a simple CFI compliant flash device with the Intel command set.
|
|
|
|
For details on the configuration see device/cfi.cc
|
|
|
|
config UVMM_VDEV_ISA_DEBUG_PORT
|
|
bool "Bochs debug port"
|
|
default y
|
|
depends on BUILD_ARCH_amd64
|
|
help
|
|
Emulate the BOCHS debug IO-port (0x402) to enable guests to print on the
|
|
vcon device.
|
|
|
|
For details on the configuration see ARCH-amd64/isa_debugport.cc
|
|
|
|
config UVMM_VDEV_BCM2835_MBOX
|
|
bool "Support for external bcm2835 mailbox service"
|
|
depends on BUILD_ARCH_arm || BUILD_ARCH_arm64
|
|
help
|
|
Emulate the bcm2835 mailbox device as found on Raspberry Pi 4.
|
|
|
|
config UVMM_VDEV_GIC_V2
|
|
def_bool UVMM_VDEV_SEL_GIC_V2 || UVMM_VDEV_SEL_GIC_BOTH
|
|
|
|
config UVMM_VDEV_GIC_V3
|
|
def_bool UVMM_VDEV_SEL_GIC_V3 || UVMM_VDEV_SEL_GIC_BOTH
|
|
|
|
choice
|
|
prompt "GIC Support"
|
|
depends on BUILD_ARCH_arm || BUILD_ARCH_arm64
|
|
help
|
|
Select which GIC emulations uvmm should support for the virtual interrupt
|
|
controller.
|
|
|
|
config UVMM_VDEV_SEL_GIC_BOTH
|
|
bool "GICv2 + GICv3"
|
|
|
|
config UVMM_VDEV_SEL_GIC_V2
|
|
bool "GICv2"
|
|
|
|
config UVMM_VDEV_SEL_GIC_V3
|
|
bool "GICv3"
|
|
|
|
endchoice
|
|
|
|
config UVMM_VDEV_GIC_ITS
|
|
bool "Emulate ITS in GICv3 to support MSIs"
|
|
depends on UVMM_VDEV_GIC_V3
|
|
default y
|
|
|
|
config UVMM_IRQ_DIRECT_INJECT
|
|
bool "Utilize direct guest vIRQ injection"
|
|
depends on BUILD_ARCH_arm || BUILD_ARCH_arm64
|
|
default y
|
|
help
|
|
On Arm platforms, the kernel optionally supports forwarding hardware
|
|
interrupts directly to a guest. This reduces the interrupt latency
|
|
but the "pending" and "active" bits in the virtual distributor are
|
|
not updated any more. This usually does not pose any problem, though.
|
|
|
|
It is safe to enable the feature in uvmm even if the kernel does not
|
|
support it. Uvmm will transparently fall back to regular, IPC based
|
|
interrupt forwarding.
|
|
|
|
menuconfig UVMM_VDEV_VIRTIO
|
|
bool "Virtio driver/device support"
|
|
default y
|
|
|
|
if UVMM_VDEV_VIRTIO
|
|
|
|
config UVMM_VDEV_VIRTIO_CONSOLE
|
|
bool "Support forwarding vcon as virtio-console to the guest"
|
|
default y
|
|
|
|
config UVMM_VDEV_VIRTIO_POWER
|
|
bool "Virtio-input based power events"
|
|
default y
|
|
help
|
|
Support sending power events via Virtio-input.
|
|
|
|
config UVMM_VDEV_VIRTIO_INPUT
|
|
bool "Forward L4Re::Events via Virtio-input"
|
|
default y
|
|
help
|
|
Support forwarding input device events via Virtio-input.
|
|
|
|
config UVMM_VDEV_VIRTIO_PROXY
|
|
bool "Support forwarding L4virtio devices to the guest"
|
|
default y
|
|
help
|
|
Support forwarding L4Re virtio devices to the guest. This enables
|
|
guests to use L4Re drivers e.g., block devices or virtual network
|
|
bridges.
|
|
|
|
If unsure, say Y.
|
|
|
|
config UVMM_VDEV_DEVICE_PROXY
|
|
bool "Virtio device proxy"
|
|
default y
|
|
help
|
|
Proxy for virtio devices implemented in the guest. Can be used to export
|
|
devices driven by a guest using the virtio protocol.
|
|
|
|
For details on the configuration see device/virtio_device_proxy.cc
|
|
|
|
endif
|
|
|
|
endmenu
|