ChangeLog/5.0: Difference between revisions

From QEMU
(→‎Block device backends and tools: qemu-img measure for LUKS images)
Line 104: Line 104:
* The GDB stub now allows for D on rv32 and non-D on rv64.
* The GDB stub now allows for D on rv32 and non-D on rv64.
* The virt board now contains a Goldfish RTC.
* The virt board now contains a Goldfish RTC.
* Support for version 0.5.1 of the draft hypervisor extension has been added.
* Support for version 0.5 of the draft hypervisor extension has been added.


=== s390 ===
=== s390 ===

Revision as of 17:44, 25 March 2020

System emulation

Incompatible changes

  • The bluetooth code has been removed without replacement. It was quite neglected over the years and likely not usable anymore. You can passthrough a dedicated USB bluetooth dongle to guests on most machines instead if you still need bluetooth in your guest.
  • The pc-0.12, pc-0.13, pc-0.14, pc-0.15 machines have been removed. Newer versions of the machine type should be used instead.
  • The "prep" ppc machine has been removed. The "40p" machine should be used now instead.
  • The "-virtfs_synth" option has been removed. You can use "-fsdev synth" together with "-device virtio-9p-..." instead.
  • The "-accel" and "-machine accel=" options are now incompatible with each other.

New deprecated options and features

  • The "-tb-size N" option has been deprecated. It is replaced by "-accel tcg,tb-size=N".
  • The virtio-blk SCSI passthrough feature (" -device virtio-blk,scsi=on") is deprecated. Use virtio-scsi instead.
  • The "r4k" mips machine has been deprecated. The "malta" machine should be used nowadays instead.

Consult the "Deprecated Features" appendix for the full list of historically deprecated features/options.

Alpha

68k

Arm

  • Emulation of the following architecture features is now implemented:
    • ARMv8.1-VHE
    • ARMv8.1-VMID16
    • ARMv8.1-PAN
    • ARMv8.1-PMU
    • ARMv8.2-UAO
    • ARMv8.2-DCPoP
    • ARMv8.2-ATS1E1
    • ARMv8.2-TTCNP
    • ARMv8.3-RCPC
    • ARMv8.3-CCIDX
    • ARMv8.4-PMU
    • ARMv8.4-RCPC
  • The Cortex-M7 CPU is now supported
  • New board: tacoma-bmc
  • New board: Netduino Plus 2
  • New board: Orangepi PC (orangepi-pc)
  • QEMU now correctly implements trapping of more EL1 system register accesses to EL2 (eg HCR_EL2 TID1, TID2 bits, HSTR_EL2)
  • The no-op system registers required for a "trivial Jazelle" implementation have been added
  • The DC CVAP and DC CVADP instructions are now supported
  • Support for blocking semiconsole SYS_READC
  • the i.MX RNGC device is now supported
  • the watchdog device is now implemented on the i.MX6 boards
  • The Cortex-R5 and -R5f CPUs now provide a PMU
  • The Exynos4210 SoC model now correctly handles DMA to/from the UARTs
  • The Aspeed AST2600 SoC model now includes the eMMC controller
  • Under KVM, we now by default stop and restart the guest generic timer counter when the VM is stopped and started so the guest OS doesn't see surprising time jumps. (This can be disabled with the kvm-no-adjvtime property.)
  • The Aspeed AST2400, AST2500, AST2600 SoCs now support the EHCI controller
  • The z2 and mainstone boards now permit booting with just a kernel image and no flash image file
  • The Allwinner SoC model now wires up the USB ports
  • The integratorcp board now wires up the audio codec controller
  • The versal board now implements the ADMA DMA controllers
  • TPM is now supported
  • The iMX25 now wires up the eSDHC controllers and the USB controllers
  • The iMX6 machines wire up the USB controllers
  • the gdbstub now supports SVE registers
  • virtio-iommu is now supported with machvirt (DT boot only)

HPPA

  • Artist graphics emulation added.
  • PS2 keyboard and mouse added to LASI chip.
  • Accept LDCW to addresses not aligned mod 16.

Microblaze

MIPS

  • Support for R4000 machine is announced to be deprecated, and will be removed from code base in QEMU 5.2.
  • Amended support for MemoryMapID CP0 register.
  • Amended support for WatchHi CP0 register.
  • Added support for GINVT instruction.

Nios2

OpenRISC

  • Fixed a bug that prevented the DZF bit of the FPCSR being set.

PowerPC

  • pseries machine type
    • No longer require a reconfiguration reboot for a guest selecting XIVE interrupt controller when ic-mode=dual
    • Now consumes less host resources when running a KVM guest with XIVE (with a recent enough host kernel). This allows running more concurrent guests with KVM accelerated XIVE.
    • New 'kernel-addr' property to control the load address for -kernel
    • NVDIMMs with file backend now supported
    • If a guest panics with the ibm,os-term RTAS call, the error message it supplies is now reported
    • Added firmware assisted NMI (FWNMI) support
    • SLOF updated to work with iommu_platform=on for virtio devices
    • Better handling of devices hotplugged early in boot (before the ibm,client-architecture-support call)
  • powernv machine type
    • Numerous improvements to the model
    • Can now run KVM guests under a TCG emulated powernv machine
    • Basic POWER10 support
    • Removed num-chips machine property, use -smp sockets=NN instead
  • Deprecated the compat= property on CPUs (it's been obsolete for a while with a pseries specific machine property)

RISC-V

  • The virt and sifive_u boards now have syscon device tree nodes, which allows the generic syscon drivers in Linux to control power/reboot.
  • The GDB stub now allows for D on rv32 and non-D on rv64.
  • The virt board now contains a Goldfish RTC.
  • Support for version 0.5 of the draft hypervisor extension has been added.

s390

  • Adpater interrupt suppression is now available when running with KVM (previously disabled due to migration issues); support under tcg has already been available since 2.10
    • enable by specifying the cpu feature "ais=on"

SH

SPARC

TileGX

Tricore

x86

Xtensa

Device emulation and assignment

ACPI

Audio

Block devices

  • hw/ide: remove legacy _init() functions and instantiate directly via pci_create_simple() instead
  • via-ide: miscellaneous cleanups and IRQ routing fix
  • cmd646: miscellaneous cleanups

Graphics

Input devices

IPMI

Network devices

NVDIMM

PCI/PCIe

SCSI

SMBIOS

TPM

  • There's TPM support for ARM now

USB

VFIO

virtio

  • virtio-iommu (for ARM virt, DT boot only)

Xen

fw_cfg

9pfs

  • Client is required to negotiate msize >= 4096 (9p client in linux already does that)

Semihosting

Audio

Character devices

Crypto subsystem

GUI

  • The VNC server websocket impl has fixed compatibility with noVNC

GDBStub

  • The limit on gdbserver packet size has been lifted
  • Properly report vContSupported so gdbstub will use QEMU's single-step support

Host support

Memory backends

Monitor

QMP

  • The QMP command nbd-server-add now supports a 'description' parameter to match the behavior of command-line qemu-nbd --description.
  • Deprecated syntax is now marked in output of query-qmp-schema
  • netdev_add improvements:
    • Don't ignore arguments \dnssearch, hostfwd, and guestfwd
    • Drop undocumented and unwanted argument ipv6-net
    • Stricter argument type checking

Migration

  • Add dbus-vmstate, a backend that allows external processes to migrate their data along with QEMU. See the documentation.

Network

Block device backends and tools

  • The command line qemu-nbd --partition, deprecated in 4.0, has been removed. Exposing a single partition of an image through NBD should now be accomplished via other means, such as using the offset and size parameters of an intermediate raw driver.
  • qemu-img convert -n now understands a --target-is-zero option, which tells it that the target image is completely zero, so it does not need to be zeroed again.
  • qemu-img measure works for LUKS images

Tracing

  • DEBUG_MMAP build hack replaced by target_mmap_* tracepoints

Miscellaneous

  • It is now possible to specify multiple "-accel" options. The first available accelerator will be used. For example, "-machine accel=kvm:tcg" can now be expressed as "-accel kvm -accel tcg" with the added possibility of including options to configure the accelerator.
  • KVM and Xen-specific machine options have been moved to "-accel"; the previous way to set the option is still available for backwards-compatibility. The options that were moved are:
    • "-machine kernel_irqchip=" (now "-accel kvm,kernel-irqchip=")
    • "-machine kvm_shadow_mem=" (now "-accel kvm,kvm-shadow-mem=")
    • "-machine igd-passthru=" (now "-accel xen,igd-passthrough=")
  • changing the logfile via HMP is now atomically thread-safe
  • virtiofsd is now included, this works with the vhost-user-fs device to provide a passthrough to a host filesystem directory.

User-mode emulation

TCG

  • A bug in TCG plugin address tracking was fixed

Guest agent

  • The 'set-guest-time' command is now fenced off on systems that do not have the 'hwclock' command available (e.g. on s390x).

Build Information

In-source-tree builds deprecated

Currently QEMU supports builds in two setups:

  • "in source tree" builds, where configure and make are run from the same directory the sources are in
  • "out of tree" builds, where you first create a directory for the build, and then change into that directory to run configure and make

Supporting both setups is awkward and adds extra complication to our makefiles, and so we are deprecating the in-tree build; we expect in a future QEMU release to remove support for it entirely. We recommend you switch to out-of-tree builds now. The advantages of out-of-tree builds include:

  • it's easy to just delete the entire build directory if you need to do a new build from scratch
  • you can build multiple configurations of QEMU from the same source directory, using different build trees, without having to build each one from clean each time you switch between them
  • generated files don't live in the same directory as source files, so there's never any confusion between them

The build instructions in README.rst will give you an out-of-tree build.

Python

GIT submodules

Container Based Builds

  • --disable-containers allows configure to skip attempting to use them from cross builds (useful on non-x86 builds)

Build Dependencies

  • Most of our documentation is now built using Sphinx. If you want to build the documentation (including HTML and the manpages) you will need to have sphinx-build (at least Sphinx version 1.3, using Python 3). Pass --enable-docs to configure if you want to force the docs to be built; otherwise configure will default to "build docs if possible, skip if required tools are missing".

Testing

  • multiarch targets added to Travis
  • some simple gdbstub tests have been added
  • the check-acceptance tests now test a wide range of architectures and platforms

Windows

Known issues