QEMU is the software that creates virtual hardware which guest operating systems run on top of. All (well, almost all — see note below[*]) the hardware that a guest OS has access to is actually written to some specifications in software — i.e. no physical hardware is involved. For the QEMU/KVM hypervisor, most of these devices are written in the QEMU source repository. A few devices are part of the KVM code in the Linux kernel. QEMU also handles a lot of host-specific stuff, like storage and networking for the virtual machines.
[* Exception: physical hardware devices assigned to guests.]
Many contributors to the QEMU and KVM projects meet at the annual KVM Forum conference to talk about new features, new developments, what changed since the last conference, etc.
The QEMU project released version 2.4 just a week before the 2015 edition of KVM Forum. I thought that was a good opportunity to gather a few developers and maintainers, and get them on video where we can see them speak about the improvements they made in the 2.4 release, and what we can expect in the 2.5 release.
In addition to the video, I had also asked a few QEMU maintainers via email before the KVM Forum on things they had merged for the 2.4 release. Some of the maintainers, who couldn’t be in the video, sent in updates:
- Michael Roth on the QEMU guest agent:
- The fstrim interface has been improved/fixed to support initiating TRIM operations across the full range of blocks for all supported guest disks and collecting statistics on number of blocks trimmed. Paired with disks that have QEMU’s discard support enabled, this can be used to periodically recover host filesystem space from deleted blocks in a guest.
- For Windows, support has been added for discovering information about guest network configurations and filesystems/disks, as well as support for building/distributing the QEMU Guest Agent as an MSI package.
- John Snow wrote in about IDE and FDC emulation: several security vulnerabilities addressed (esp. VENOM); and improved AHCI and NCQ emulation.
- Stefano Stabellini’s highlights on the Xen support: QEMU 2.4 includes many fixes and security, reliability and stability improvements in the PCI passthrough code.
- Leon Alrae on the new features for the MIPS architecture: microMIPS32 R6, XPA (eXtended Physical Addressing) and LPA (Large Physical Addressing), and support for unaligned memory accesses in MIPS R6 and MSA ASE, in addition to improved emulation of a few devices; and MIPS targets now support UHI semihosting.
- Michael S. Tsirkin’s update on virtio emulation: QEMU now includes support for the 1.0 revision of the Virtio specification, which brings multiple stability improvements to the virtio family of devices.
- Cornelia Huck on the improvements to the s390 architecture:
- The s390-ccw-virtio machine is now the default due to tcg improvements, and 2.4 introduces the first versioned s390-ccw-virtio machine for backward compatibilty.
- Support for vector registers (SIMD), as introduced by the new z13, has been added.
- Under KVM, the diagnose 288 watchdog (previously available under z/VM and LPAR) is now supported.
- virtio-ccw includes support for the new channel commands introduced with virtio-1.
Thanks to all the maintainers who replied to my emails and those who agreed to appear on video. I shot the videos on my phone, so the quality is quite low. I also didn’t realise the recording didn’t start till a couple of seconds after I pressed the record button, so the intro with the name of the maintainers in some videos are clipped. Next time should be better!
OpenShot was used to collate all the individual videos, and Audacity was used to mix in the background music, and remove background noise on some of the clips. Huge thanks to the teams developing these softwares as well!