The 12.1.0 release of both libvirt and libvirt-python is tagged and signed tarballs are available at https://download.libvirt.org/ https://download.libvirt.org/python/ Thanks everybody who helped with this release by sending patches, reviewing, testing, or providing feedback. Your work is greatly appreciated. * New features * qemu: Advertise firmware features in domain capabilities XML The contents of the ``<firmwareFeatures/>`` element can be used to determine ahead of time whether a firmware matching certain characteristics, for example Secure Boot support, is available for the selected architecture and machine type. * qemu: Add support for uefi-vars device and firmware builds using it This is particularly noteworthy for people running aarch64 VMs with the 'virt' machine type, as it makes it finally possible to use Secure Boot with that combination. In most cases, no special steps are needed to take advantage of this: assuming that you have installed a recent version of QEMU, as well as a build of edk2 that includes the necessary binaries, you can just `enable Secure Boot <kbase/secureboot.html>`__ as you normally would. To explicitly request that the uefi-vars device is used even for scenarios where that would normally not be the case, it's enough to add an empty ``<varstore/>`` element in the domain XML. More details are available in the `guest firmware configuration <formatdomain.html#guest-firmware>`__ section of the documentation. * hyperv: improve API coverage for the hyperv driver The `virDomainInterfaceAddresses()` and `virDomainGetBlockInfo()` APIs are now supported by the hyperv driver. In addition, the domain xml for hyperv domains will indicate via firmware features whether secure boot is enabled. It also honors these firmware features when creating new domains. * bhyve: Add support for vCPU pinning configuration Bhyve guests can now have vCPU pinning configured:: <cputune> <vcpupin vcpu="0" cpuset="1,2,3"/> </cputune> Additionally, the ``domainGetVcpuPinInfo`` API is implemented for querying vCPU pinning information. * qemu: Support block operation latency histograms Libvirt now allows configuring qemu's block latency histogram collection as well as returns them via the bulk stats API. * Improvements * Introduce granule attribute for virtio-iommu In case when guest page size doesn't match the host page size (typically aarch64) the ``virtio-iommu`` needs to know the guest page size so it can allocate memory aligned to guest page size. * Parse hyperv features even for host-model Two releases ago, in v11.9.0 new ``host-model`` mode for Hyper-V enlightenments was introduced. Starting with this release, users can additionally override the defaults that are picked when domain is started and features are expanded. * bhyve: Improve loader configuration for arm64 guests If loader is not explicitly configured, use the loader from the ``sysutils/u-boot-bhyve-arm64`` port/package for the arm64 guests. * Bug fixes * Fix build with remote driver disabled Some parts of code were wrongly annotated as depended on remote driver. But they were used even from client side drivers. This is now fixed and libvirt builds properly even with remote driver disabled. * Various fixes to libvirt-guests.sh Firstly, the exit code of various commands was ignored (which may lead the script to wrongly determine persistent/transient domain state, for instance). Secondly, due to logical error, the script might have incorrectly asses state a domain is in. * AppArmor: Ask for no deny rule for readonly disk elements For read only disks, libvirt created an AppArmor profile which disallowed any future write rules. But when doing a blockcommit, libvirt needs to allow hypervisor to write to even readonly disks. The rule in the profile was changed so that future write rules can be added, temporarily. * esx: Allow connecting to IPv6 server Due to a bug in our code, if an IPv6 address was provided in connection URI, libvirt would fail to connect to VMWare server. This is now fixed. * qemu: Use device alias if interface has no name The ``virDomainInterfaceAddresses()`` API (or ``virsh domifaddr``) returns an array interfaces among with their addresses. But some interface names might be unknown, for instance if the API is told to parse host's ARP table then PCI assigned NICs or slirp/passt lack interface name. If that's the case, let the API return domain's ``<interface/>`` alias. * bhyve: hyperv: Various memory leak fixes * qemu: Fix failures when restoring save/managed-save images with upcoming qemu versions Current git version of qemu would return an error when attempting to load an existing (managed) save image as we relied on deprecated features that were now removed. Enjoy. Jirka