news: Drop empty section
[libvirt/ericb.git] / docs / news.xml
blobf95dfdf3b4ff2bb93ffdcd62e585fd78142a4b87
1 <?xml version="1.0"?>
3 <!-- libvirt release notes
5      This file will be processed to produce both HTML and plain text versions
6      of the release notes.
8      Keep the style consistent with existing entries as much as possible.
10      Each change should be documented by a short, one-sentence summary, which
11      should fit in a single line and should not contain any formatting tags.
13      You can optionally add a description if you feel like the summary alone is
14      not enough to document the change accurately. The description may contain
15      a <code> tag for switching to non-proportional font. No other tags are
16      allowed.
18      Lines should be kept under 80 columns, and should not exceed 100 columns.
20      This file is validated against docs/news.rng schema.
22      Use the following template to add a new release section:
24   <release version="FIXME" date="unreleased">
25     <section title="New features">
26     </section>
27     <section title="Improvements">
28     </section>
29     <section title="Bug fixes">
30     </section>
31   </release>
33     If relevant for a given release, add a section for removed
34     features too
36     <section title="Removed features">
37     </section>
39      -->
41 <libvirt>
42   <release version="v5.5.0" date="unreleased">
43     <section title="New features">
44       <change>
45         <summary>
46           qemu: Support SMMUv3 IOMMU
47         </summary>
48         <description>
49           SMMUv3 is an IOMMU implementation for ARM virt guests.
50         </description>
51       </change>
52     </section>
53     <section title="Improvements">
54     </section>
55     <section title="Bug fixes">
56     </section>
57   </release>
58   <release version="v5.4.0" date="2019-06-03">
59     <section title="Security">
60       <change>
61         <summary>
62           cpu: Introduce support for the md-clear CPUID bit
63         </summary>
64         <description>
65           This bit is set when microcode provides the mechanism to invoke a
66           flush of various exploitable CPU buffers by invoking the x86
67           <code>VERW</code> instruction. CVE-2018-12126, CVE-2018-12127,
68           CVE-2018-12130, CVE-2019-11091.
69         </description>
70       </change>
71       <change>
72         <summary>
73           Restrict user access to virt-admin, virtlogd and virtlockd
74         </summary>
75         <description>
76           The intended users for these facilities are the <code>root</code>
77           user and the <code>libvirtd</code> service respectively, but these
78           restrictions were not enforced correctly. CVE-2019-10132.
79         </description>
80       </change>
81     </section>
82     <section title="Improvements">
83       <change>
84         <summary>
85           test driver: Expand API coverage
86         </summary>
87         <description>
88           Several APIs that were missing from the test driver have now been
89           implemented.
90         </description>
91       </change>
92       <change>
93         <summary>
94           Avoid unnecessary static linking
95         </summary>
96         <description>
97           Most binaries shipped as part of libvirt, for example
98           <code>virtlogd</code> and <code>libvirt_iohelper</code>, were
99           embedding parts of the library even though they also linked against
100           the <code>libvirt.so</code> dynamic library. This is no longer the
101           case, which results in both the disk and memory footprint being
102           reduced.
103         </description>
104       </change>
105       <change>
106         <summary>
107           qemu: Report stat-htlb-pgalloc and stat-htlb-pgfail balloon stats
108         </summary>
109         <description>
110           These stats have been introduced in QEMU 3.0.
111         </description>
112       </change>
113     </section>
114     <section title="Bug fixes">
115       <change>
116         <summary>
117           qemu: Fix emulator scheduler support
118         </summary>
119         <description>
120           Setting the scheduler for QEMU's main thread before QEMU had a chance
121           to start up other threads was misleading as it would affect other
122           threads (vCPU and I/O) as well.  In some particular situations this
123           could also lead to an error when the thread for vCPU #0 was being
124           moved to its cpu,cpuacct cgroup.  This was fixed so that the
125           scheduler for the main thread is set after QEMU starts.
126         </description>
127       </change>
128       <change>
129         <summary>
130           apparmor: Allow hotplug of vhost-scsi devices
131         </summary>
132       </change>
133     </section>
134   </release>
135   <release version="v5.3.0" date="2019-05-04">
136     <section title="New features">
137       <change>
138         <summary>
139           qemu: Add support for setting the emulator scheduler parameters
140         </summary>
141         <description>
142           I/O threads and vCPU threads already support setting schedulers, but
143           until now it was impossible to do so for the main QEMU thread
144           (emulator thread in the libvirt naming).  This is, however, requested
145           for some very specific scenarios, for example when vCPU threads are
146           running at such priority that could starve the main thread.
147         </description>
148       </change>
149     </section>
150     <section title="Removed features">
151       <change>
152         <summary>
153           vbox: Drop support for VirtualBox 4.x releases
154         </summary>
155         <description>
156           Support for all the 4.x releases was ended by
157           VirtualBox maintainers in December 2015. Therefore,
158           libvirt support for these releases is dropped.
159         </description>
160       </change>
161     </section>
162     <section title="Improvements">
163       <change>
164         <summary>
165           qemu: Use PCI by default for RISC-V guests
166         </summary>
167         <description>
168           PCI support for RISC-V guests was already available in libvirt
169           5.1.0, but it required the user to opt-in by manually assigning
170           PCI addresses: with this release, RISC-V guests will use PCI
171           automatically when running against a recent enough (4.0.0+) QEMU
172           release.
173         </description>
174       </change>
175       <change>
176         <summary>
177           qemu: Advertise firmware autoselection in domain capabilities
178         </summary>
179         <description>
180           The firmware autoselection feature is now exposed in
181           domain capabilities and management applications can
182           query for accepted values, i.e. values that are accepted
183           and for which libvirt found firmware descriptor files.
184           Firmware Secure Boot support is also advertised.
185         </description>
186       </change>
187       <change>
188         <summary>
189           Drop YAJL 1 support
190         </summary>
191         <description>
192           YAJL 2 is widely adopted and maintaining side by side
193           support for two versions is unnecessary.
194         </description>
195       </change>
196     </section>
197     <section title="Bug fixes">
198       <change>
199         <summary>
200           rpc: cleanup in virNetTLSContextNew
201         </summary>
202         <description>
203           Failed new gnutls context allocations in virNetTLSContextNew
204           function results in double free and segfault. Occasional memory
205           leaks may also occur.
206         </description>
207       </change>
208       <change>
209         <summary>
210           virsh: various completers fixes
211         </summary>
212         <description>
213           There were some possible crashers, memory leaks, etc.
214           which are now fixed.
215         </description>
216       </change>
217       <change>
218         <summary>
219           qemu: Make hugepages work with memfd backend
220         </summary>
221         <description>
222           Due to a bug in command line generation libvirt did not
223           honor hugepages setting with memfd backend.
224         </description>
225       </change>
226       <change>
227         <summary>
228           Enforce ACL write permission for getting guest time &amp; hostname
229         </summary>
230         <description>
231           Getting the guest time and hostname both require use of
232           guest agent commands. These must not be allowed for
233           read-only users, so the permissions check must validate
234           "write" permission not "read".
235         </description>
236       </change>
237     </section>
238   </release>
239   <release version="v5.2.0" date="2019-04-03">
240     <section title="New features">
241       <change>
242         <summary>
243           Add Storage Pool Capabilities output
244         </summary>
245         <description>
246           Add support to list an enumerated list of supported Storage
247           Pools via the virConnectGetCapabilities API when connected
248           via a Storage Driver. Add support to get a more detailed
249           list XML output Storage Pool Capabilities vis the
250           virConnectGetStoragePoolCapabilites API.
251         </description>
252       </change>
253       <change>
254         <summary>
255           qemu: Support virtio-{non-}transitional device models
256         </summary>
257         <description>
258           <code>virtio-transitional</code> and
259           <code>virtio-non-transitional</code> <code>model</code> values
260           were added to the QEMU driver for the following devices:
261           <code>disk</code>, <code>interface</code>, <code>filesystem</code>,
262           <code>rng</code>, <code>vsock</code>, <code>memballoon</code>,
263           <code>controller</code> type <code>scsi</code>,
264           <code>controller</code> type <code>virtio-serial</code>,
265           <code>input</code> bus <code>virtio</code>
266           type <code>passthrough</code>,
267           <code>hostdev</code> type <code>scsi_host</code>. These new
268           models can be used to give fine grained control over what
269           virtio device version is presented to the guest.
270         </description>
271       </change>
272       <change>
273         <summary>
274           qemu: Enable firmware autoselection
275         </summary>
276         <description>
277           Libvirt allows users to provide loader path for some time now.
278           However, this puts some burden on users because they need to
279           know what firmware meets their requirements. Now that QEMU
280           ships firmware description files this burden can be moved onto
281           libvirt. It is as easy as setting the <code>firmware</code>
282           attribute in the <code>os</code> element (accepted values are
283           <code>bios</code> and <code>efi</code>). Moreover, libvirt
284           automatically enables domain features needed for firmware it
285           chooses.
286         </description>
287       </change>
288       <change>
289         <summary>
290           snapshots: Add support for topological listings
291         </summary>
292         <description>
293           A new flag VIR_DOMAIN_SNAPSHOT_LIST_TOPOLOGICAL is available
294           for the various snapshot listing APIs such as
295           virDomainListAllSnapshots(). For drivers that support the
296           flag, the listed snapshots are guaranteed to be sorted such
297           that parents occur before children.
298         </description>
299       </change>
300       <change>
301         <summary>
302           Xen: Add support for max grant frames setting
303         </summary>
304         <description>
305           Add support for Xen's max_grant_frames setting by adding a
306           new xenbus controller type with a maxGrantFrames attribute.
307           E.g. <code>&lt;controller type='xenbus' maxGrantFrames='64'/&gt;</code>
308         </description>
309       </change>
310       <change>
311         <summary>
312           qemu: Add support for parallel migration
313         </summary>
314         <description>
315           With QEMU 4.0.0 libvirt can enable parallel migration which causes
316           the memory pages to be processed in parallel by several threads and
317           sent to the destination host using several connections at the same
318           time. This may increase migration speed in case a single thread is
319           unable to saturate the network link.
320         </description>
321       </change>
322     </section>
323     <section title="Removed features">
324       <change>
325         <summary>
326           Drop support for Upstart and "Red Hat" init scripts
327         </summary>
328         <description>
329           Not a single one of the platforms we target still uses Upstart,
330           and the Upstart project itself has been abandoned for several years
331           now; the same is true for the "Red Hat" (really System V) init
332           scripts, since RHEL 7 and later releases use systemd.
333         </description>
334       </change>
335     </section>
336     <section title="Improvements">
337       <change>
338         <summary>
339           Report class information for PCI node device capability.
340         </summary>
341       </change>
342       <change>
343         <summary>
344           Split setup of IPv4 and IPv6 top level chain
345         </summary>
346         <description>
347           The requirement resulting from private chains improvement done
348           in <code>v5.1.0</code> was refined so that only tables from
349           corresponding IP version are required. This means that if a
350           network doesn't have <code>IPv6</code> enabled then those
351           tables are not required.
352         </description>
353       </change>
354       <change>
355         <summary>
356           Don't default to building the QEMU driver
357         </summary>
358         <description>
359           Historically, the QEMU driver has been special in that it was
360           enabled by default, with the option to explicitly opt-out of it;
361           starting now, we're enabling it opportunistically if we detect that
362           all requirements are available, just like we do with other drivers.
363         </description>
364       </change>
365     </section>
366     <section title="Bug fixes">
367       <change>
368         <summary>
369           virt-host-validate: Fix IOMMU check on s390x
370         </summary>
371       </change>
372       <change>
373         <summary>
374           qemu: Allow creating pSeries guests with graphics and no USB mouse
375         </summary>
376         <description>
377           It's now possible to prevent libvirt from automatically adding a
378           USB mouse to pSeries guests by including a USB tablet in the input
379           XML: doing so is desiderable as using a tablet results in a much
380           better user experience when working with GUIs.
381         </description>
382       </change>
383       <change>
384         <summary>
385           qemu: Set $HOME and XGD variables for qemu:///system guests
386         </summary>
387         <description>
388           This avoids files being accidentally created under <code>/</code> or
389           the guests not being able to start because they lack the necessary
390           permissions to write to that location.
391         </description>
392       </change>
393     </section>
394   </release>
395   <release version="v5.1.0" date="2019-03-04">
396     <section title="New features">
397       <change>
398         <summary>
399           bhyve: Add support for additional command-line arguments
400         </summary>
401         <description>
402           The bhyve driver now supports passing additional command-line
403           arguments to the bhyve process using the new
404           <code>&lt;bhyve:commandline&gt;</code> element in domain
405           configuration.
406         </description>
407       </change>
408       <change>
409         <summary>
410           network: Support setting a firewalld "zone" for virtual network bridges
411         </summary>
412         <description>
413           All libvirt virtual networks with bridges managed by libvirt
414           (i.e. those with forward mode of "nat", "route", "open", or
415           no forward mode) will now be placed in a special firewalld
416           zone called "libvirt" by default. The zone of any network
417           bridge can be changed using the <code>zone</code> attribute
418           of the network's <code>bridge</code> element.
419         </description>
420       </change>
421       <change>
422         <summary>
423           bhyve: Support for ignoring unknown MSRs reads and writes
424         </summary>
425         <description>
426           A new &lt;features&gt; element &lt;msrs unknown='ignore'/&gt; was
427           introduced and the bhyve driver supports it to control unknown
428           Model Specific Registers (MSRs) reads and writes.
429         </description>
430       </change>
431       <change>
432         <summary>
433           qemu: Add support for encrypted VNC TLS keys
434         </summary>
435         <description>
436           Use the password stored in the secret driver under the uuid
437           specified by the <code>vnc_tls_x509_secret_uuid</code> option
438           in qemu.conf.
439         </description>
440       </change>
441       <change>
442         <summary>
443           Add storage pool namespace options
444         </summary>
445         <description>
446           Allow for adjustment of RBD configuration options via Storage
447           Pool XML Namespace adjustments.
448         </description>
449       </change>
450       <change>
451         <summary>
452           qemu: Add support for setting post-copy migration bandwidth
453         </summary>
454         <description>
455           Users can now limit the bandwidth of post-copy migration, e.g.
456           via <code>virsh migrate --postcopy-bandwidth</code>.
457         </description>
458       </change>
459     </section>
460     <section title="Improvements">
461       <change>
462         <summary>
463           Create private chains for virtual network firewall rules
464         </summary>
465         <description>
466           Historically firewall rules for virtual networks were added
467           straight into the base chains. This works but has a number of
468           bugs and design limitations. To address them, libvirt now puts
469           firewall rules into its own chains. Note that with this change the
470           <code>filter</code>, <code>nat</code> and <code>mangle</code> tables
471           are required for both <code>IPv4</code> and <code>IPv6</code>.
472         </description>
473       </change>
474       <change>
475         <summary>
476           Detect CEPH and GPFS as shared FS
477         </summary>
478         <description>
479           When starting a migration libvirt performs some sanity checks
480           to make sure domain will be able to run on the destination.
481           One of the requirements is that the disk has to either be
482           migrated too or be accessible from a network filesystem. CEPH
483           and GPFS weren't detected as a network filesystem.
484         </description>
485       </change>
486       <change>
487         <summary>
488           Advertise network MTU via DHCP when specified
489         </summary>
490         <description>
491           If network MTU is set and the network has DHCP enabled,
492           advertise the MTU in DHCP transaction too so that clients can
493           adjust their link accordingly.
494         </description>
495       </change>
496       <change>
497         <summary>
498           qemu: Allocate memory at the configured NUMA nodes from start
499         </summary>
500         <description>
501           Libvirt used to just start QEMU, let it allocate memory for
502           the guest, and then use CGroups to move the memory to
503           configured NUMA nodes. This is suboptimal as huge chunks of
504           memory have to be moved. Moreover, this relies on ability to
505           move memory later which is not always true. A change was made
506           to set process affinity correctly from the start so that memory
507           is allocated on the configured nodes from the beginning.
508         </description>
509       </change>
510       <change>
511         <summary>
512           Support for newer Wireshark
513         </summary>
514         <description>
515           Adapt libvirt to use the more recent release requiring a
516           source build configuration of libvirt
517           <code>--with-wireshark</code> to upgrade to the more recent
518           version.
519         </description>
520       </change>
521       <change>
522         <summary>
523           Batch mode virsh and virt-admin parsing improvements
524         </summary>
525         <description>
526           When parsing a single-argument command_string in batch mode,
527           virsh and virt-admin now permit newlines in addition to
528           semicolons for splitting commands, and backslash-newline for
529           splitting long lines, to be more like shell parsing.
530         </description>
531       </change>
532     </section>
533     <section title="Bug fixes">
534       <change>
535         <summary>
536           qemu: Use CAP_DAC_OVERRIDE during QEMU capabilities probing
537         </summary>
538         <description>
539           By default, libvirt runs the QEMU process as <code>qemu:qemu</code>
540           which could cause issues during probing as some features like AMD SEV
541           might be inaccessible to QEMU because of file system permissions.
542           Therefore, <code>CAP_DAC_OVERRIDE</code> is granted to overcome these
543           for the purposes of probing.
544         </description>
545       </change>
546       <change>
547         <summary>
548           storage: Add default mount options for fs/netfs storage pools
549         </summary>
550         <description>
551           Altered the command line generation for fs/netfs storage pools to
552           add some default options. For Linux based systems, the options
553           added are "nodev, nosuid, noexec". For FreeBSD based systems,
554           the options added are "nosuid, noexec".
555         </description>
556       </change>
557       <change>
558         <summary>
559           qemu: Allow use of PCI for RISC-V guests
560         </summary>
561         <description>
562           This works with QEMU 4.0.0+ only and is opt-in at the moment, since
563           it requires users to manually assign PCI addresses, but is otherwise
564           fully functional.
565         </description>
566       </change>
567       <change>
568         <summary>
569           network: Fix virtual networks on systems using firewalld+nftables
570         </summary>
571         <description>
572           Because of the transitional state of firewalld's new support
573           for nftables, not all iptables features required by libvirt
574           are yet available, so libvirt must continue to use iptables
575           for its own packet filtering rules even when the firewalld
576           backend is set to use nftables. However, due to the way
577           iptables support is implemented in kernels using nftables
578           (iptables rules are converted to nftables rules and
579           processed in a separate hook from the native nftables
580           rules), guest networking was broken on hosts with firewalld
581           configured to use nftables as the backend. This has been
582           fixed by putting libvirt-managed bridges in their own
583           firewalld zone, so that guest traffic can be forwarded
584           beyond the host and host services can be exposed to guests
585           on the virtual network without opening up those same
586           services to the rest of the physical network. This means
587           that host access from virtual machines is no longer
588           controlled by the firewalld default zone (usually "public"),
589           but rather by the new firewalld zone called "libvirt"
590           (unless configured otherwise using the new zone
591           attribute of the network bridge element).
592         </description>
593       </change>
594       <change>
595         <summary>
596           qemu: Fix i6300esb watchdog hotplug on Q35
597         </summary>
598         <description>
599           Ensure that libvirt allocates a PCI address for the device so
600           that QEMU did not default to an address that would not allow
601           for device hotplug.
602         </description>
603       </change>
604       <change>
605         <summary>
606           lxc: Don't reboot host on virDomainReboot
607         </summary>
608         <description>
609           If the container is really a simple one (init is just bash and
610           the whole root is passed through) then virDomainReboot and
611           virDomainShutdown would reboot or shutdown the host. The
612           solution is to use different method to reboot or shutdown the
613           container in that case (e.g. signal).
614         </description>
615       </change>
616       <change>
617         <summary>
618           rpc: Various stream fixes
619         </summary>
620         <description>
621           One particular race was fixed, one locking problem and error
622           reporting from streams was made better.
623         </description>
624       </change>
625       <change>
626         <summary>
627           qemu: Fix guestfwd hotplug/hotunplug
628         </summary>
629         <description>
630           Fixed the generation of the guestfwd hotplug/unplug command
631           sent to QEMU to match the syntax used when creating the
632           initial command line.
633         </description>
634       </change>
635       <change>
636         <summary>
637           qemu: Forbid CDROMs on virtio bus
638         </summary>
639         <description>
640           Attempting to create an empty virtio-blk drive or attempting
641           to eject it results into an error.  Forbid configurations
642           where users would attempt to use CDROMs in virtio bus.
643         </description>
644       </change>
645       <change>
646         <summary>
647           qemu: Use 'raw' for 'volume' disks without format
648         </summary>
649         <description>
650           Storage pools might want to specify format of the image when
651           translating the volume thus libvirt can't add any default
652           format when parsing the XML. Add an explicit format when
653           starting the VM and format is not present neither by user
654           specifying it nor by the storage pool translation function.
655         </description>
656       </change>
657       <change>
658         <summary>
659           qemu: Assume 'raw' default storage format also for network storage
660         </summary>
661         <description>
662           Post parse callback adds the 'raw' type only for local files.
663           Remote files can also have backing store (even local) so we
664           should do this also for network backed storage.
665         </description>
666       </change>
667       <change>
668         <summary>
669           qemu: Fix block job progress reporting and advocate for READY event
670         </summary>
671         <description>
672           In some cases QEMU can get to 100% and still not reach the
673           synchronised phase. Initiating a pivot in that case will fail.
674           Therefore it is strongly advised to wait for
675           <code>VIR_DOMAIN_BLOCK_JOB_READY</code> event which does not
676           suffer from this problem.
677         </description>
678       </change>
679       <change>
680         <summary>
681           qemu: Don't format image properties for empty drive
682         </summary>
683         <description>
684           If a <code>-drive</code> has no image, then formatting
685           attributes such as cache, readonly, etc. would cause errors to
686           be reported from QEMU. This was fixed by not supplying the
687           attributes for devices without an image.
688         </description>
689       </change>
690       <change>
691         <summary>
692           External snapshot metadata redefinition is fixed
693         </summary>
694         <description>
695           Attempting to use VIR_DOMAIN_SNAPSHOT_CREATE_REDEFINE to
696           reinstate the metadata describing an external snapshot
697           created earlier for an offline domain no longer fails.
698         </description>
699       </change>
700     </section>
701   </release>
702   <release version="v5.0.0" date="2019-01-15">
703     <section title="New features">
704       <change>
705         <summary>
706           Xen: Add support for openvswitch
707         </summary>
708         <description>
709           The libxl driver now supports virtual interfaces that connect to
710           an openvswitch bridge, including interfaces with VLAN tagging and
711           trunking configuration.
712         </description>
713       </change>
714       <change>
715         <summary>
716           qemu: Report whether KVM nesting is available
717         </summary>
718         <description>
719           Running nested KVM guests requires specific configuration steps to
720           be performed on the host; libvirt will now report in the host
721           capabilities whether KVM nesting support is available.
722         </description>
723       </change>
724     </section>
725     <section title="Removed features">
726       <change>
727         <summary>
728           Drop UML driver
729         </summary>
730         <description>
731           The UML driver was unmaintained and not tested for
732           quite some time now. Worse, there is a bug that causes
733           it to deadlock on some very basic operations (e.g.
734           dumping domain XML). These facts make us believe no one
735           uses it.
736         </description>
737       </change>
738     </section>
739     <section title="Improvements">
740       <change>
741         <summary>
742           qemu: Add support for ARMv6l guests
743         </summary>
744       </change>
745       <change>
746         <summary>
747           Support more NVDIMM configuration options
748         </summary>
749         <description>
750           Introduce more configuration options. For the source element, add
751           the 'alignsize' and 'pmem' subelements. For the target element, add
752           the 'readonly' subelement.
753         </description>
754       </change>
755       <change>
756         <summary>
757           cpu: Add support for "stibp" x86_64 feature
758         </summary>
759         <description>
760           Add cpu flag stibp (Single Thread Indirect Branch Predictors) to
761           prevent indirect branch predictions from being controlled by the
762           sibling Hyperthread.
763         </description>
764       </change>
765       <change>
766         <summary>
767           libxl: Handle external domain destroy
768         </summary>
769         <description>
770           Historically, if a domain was destroyed using <code>xl</code>
771           rather than through libvirt APIs, libvirt would not be aware of
772           the fact and keep considering it as running. This is no longer the
773           case.
774         </description>
775       </change>
776       <change>
777         <summary>
778           Start selecting the first available DRI device for OpenGL operations
779         </summary>
780         <description>
781           If OpenGL support is needed (either with SPICE gl enabled or with
782           egl-headless), libvirt is now able to pick the first available DRI
783           device for the job. At the same time, this improvement is also a
784           bugfix as it prevents permission-related issues with regards to our
785           mount namespaces and the default DRI render node's permissions which
786           would normally prevent QEMU from accessing such a device.
787         </description>
788       </change>
789       <change>
790         <summary>
791           qemu: Add support for postcopy-requests migration statistics
792         </summary>
793         <description>
794           The <code>virDomainJobInfo</code> can get number page requests
795           received from the destination host during post-copy migration.
796         </description>
797       </change>
798     </section>
799     <section title="Bug fixes">
800       <change>
801         <summary>
802           lxc: Don't forbid interfaces with type=direct
803         </summary>
804         <description>
805           Such interfaces are supported by lxc and should be allowed.
806         </description>
807       </change>
808       <change>
809         <summary>
810           qemu: Fully clean up RNG devices on detach
811         </summary>
812         <description>
813           Some RNG device types, such as those using EGD, might need extra
814           clean up on the host in addition to removing the guest-side device.
815         </description>
816       </change>
817     </section>
818   </release>
819   <release version="v4.10.0" date="2018-12-03">
820     <section title="New features">
821       <change>
822         <summary>
823           qemu: Add Hyper-V PV IPI and Enlightened VMCS support
824         </summary>
825         <description>
826           The QEMU driver now has support for Hyper-V PV IPI and Enlightened VMCS
827           for Windows and Hyper-V guests.
828         </description>
829       </change>
830       <change>
831         <summary>
832           qemu: Added support for PCI devices on S390
833         </summary>
834         <description>
835           PCI addresses can now include the new zpci element which contains
836           uid (user-defined identifier) and fid (PCI function identifier)
837           attributes and makes the corresponding devices usable by S390
838           guests.
839         </description>
840       </change>
841       <change>
842         <summary>
843           Support changing IOThread polling parameters for a live guest
844         </summary>
845         <description>
846           Introduced virDomainSetIOThreadParams which allows dynamically
847           setting the IOThread polling parameters used by QEMU to manage
848           the thread polling interval and the algorithm for growth or
849           shrink of the polling time. The values only affect a running
850           guest with IOThreads. The guest's IOThread polling values can
851           be viewed via the domain statistics.
852         </description>
853       </change>
854       <change>
855         <summary>
856           Xen: Add support for PVH
857         </summary>
858         <description>
859           The libxl driver now supports Xen's PVH virtual machine type.
860           PVH machines are enabled with the new "xenpvh" OS type, e.g.
861           <code>&lt;os&gt;&lt;type&gt;xenpvh&lt;/type&gt;&lt;/os&gt;</code>
862         </description>
863       </change>
864       <change>
865         <summary>
866           qemu: Added support for CMT (Cache Monitoring Technology)
867         </summary>
868         <description>
869           Introduced cache monitoring using the <code>monitor</code>
870           element in <code>cachetune</code> for vCPU threads. Added
871           interfaces to get and display the cache utilization statistics
872           through the command 'virsh domstats' via the
873           virConnectGetAllDomainStats API.
874         </description>
875       </change>
876       <change>
877         <summary>
878           qemu: Add support for nested HV for pSeries guests
879         </summary>
880         <description>
881           Nested HV support makes it possible to run nested (L2) guests
882           with minimal performance penalty when compared to regular (L1)
883           guests on ppc64 hardware.
884         </description>
885       </change>
886     </section>
887     <section title="Bug fixes">
888       <change>
889         <summary>
890           Xen: Handle soft reset shutdown event
891         </summary>
892         <description>
893           The pvops Linux kernel uses soft reset to handle the crash
894           machine operation. The libxl driver now supports the soft
895           reset shutdown event, allowing proper crash handling of
896           pvops-based HVM domains.
897         </description>
898       </change>
899     </section>
900   </release>
901   <release version="v4.9.0" date="2018-11-04">
902     <section title="New features">
903       <change>
904         <summary>
905           util: Add cgroup v2 support
906         </summary>
907         <description>
908           cgroup v2 support has been implemented in libvirt, with both
909           "unified" (v2 only) and "hybrid" (v2 + v1) setups being usable;
910           existing "legacy" (v1 only) setups will keep working.
911         </description>
912       </change>
913       <change>
914         <summary>
915           qemu: Add vfio AP support
916         </summary>
917         <description>
918           The QEMU driver now has support to passthrough adjunct processors
919           into QEMU guests on S390.
920         </description>
921       </change>
922     </section>
923     <section title="Improvements">
924       <change>
925         <summary>
926           rpc: Make 'genprotocol' output reproducible
927         </summary>
928         <description>
929           This is another step towards making libvirt builds fully
930           reproducible.
931         </description>
932       </change>
933     </section>
934     <section title="Bug fixes">
935       <change>
936         <summary>
937           security: Fix permissions for UNIX sockets
938         </summary>
939         <description>
940           Since 4.5.0, libvirt is using FD passing to hand sockets over to
941           QEMU, which in theory removes the need for them to be accessible by
942           the user under which the QEMU process is running; however, other
943           processes such as vdsm need to access the sockets as well, which
944           means adjusting permissions is still necessary.
945         </description>
946       </change>
947       <change>
948         <summary>
949           cpu_map: Add Icelake model definitions
950         </summary>
951         <description>
952           These CPU models will be available in the upcoming 3.1.0 QEMU
953           release.
954         </description>
955       </change>
956       <change>
957         <summary>
958           util: Properly parse URIs with missing trailing slash
959         </summary>
960         <description>
961           Some storage URIs were not parsed correctly, in which case libvirt
962           ended up emitting XML that it would then refuse to parse back.
963         </description>
964       </change>
965     </section>
966   </release>
967   <release version="v4.8.0" date="2018-10-01">
968     <section title="New features">
969       <change>
970         <summary>
971           Xen: Support PM Suspend and Wakeup
972         </summary>
973         <description>
974           The libxl driver now supports the virDomainPMSuspendForDuration
975           and virDomainPMWakeup APIs.
976         </description>
977       </change>
978     </section>
979     <section title="Removed features">
980       <change>
981         <summary>
982           Xen: Drop support for Xen 4.4 and 4.5
983         </summary>
984         <description>
985           Xen 4.4 and 4.5 are no longer supported by the Xen community.
986           Drop support for these older versions and require Xen >= 4.6.
987         </description>
988       </change>
989       <change>
990         <summary>
991           nwfilter: Disallow binding creation in session mode
992         </summary>
993         <description>
994           Ensure that a filter binding creation is not attempted in session
995           mode and generates a proper error message.
996         </description>
997       </change>
998     </section>
999     <section title="Improvements">
1000       <change>
1001         <summary>
1002           qemu: Retrieve guest hostname through QEMU Guest Agent command
1003         </summary>
1004         <description>
1005           QEMU is now able to retrieve the guest hostname using a new QEMU-GA
1006           command called 'guest-get-host-name'. Virsh users can execute
1007           'domhostname' for QEMU driver for domains configured to use the
1008           Guest Agent.
1009         </description>
1010       </change>
1011       <change>
1012         <summary>
1013           virsh: Implement vsh-table in virsh and virsh-admin
1014         </summary>
1015         <description>
1016           The new API fixes problems with table-alignment, making the tables
1017           more readable and deals with unicode.
1018         </description>
1019       </change>
1020     </section>
1021     <section title="Bug fixes">
1022       <change>
1023         <summary>
1024           storage: Allow inputvol to be encrypted
1025         </summary>
1026         <description>
1027           When creating a storage volume based on another volume, the base
1028           input volume is allowed to be encrypted.
1029         </description>
1030       </change>
1031       <change>
1032         <summary>
1033           virsh: Require explicit --domain for domxml-to-native
1034         </summary>
1035         <description>
1036           The --domain option for domxml-to-native virsh command has always
1037           been documented as required, but commit v4.3.0-127-gd86531daf2
1038           accidentally made it optional.
1039         </description>
1040       </change>
1041       <change>
1042         <summary>
1043           lxc_monitor: Avoid AB / BA lock race
1044         </summary>
1045         <description>
1046           A deadlock situation could occur when autostarting a LXC domain
1047           'guest' due to two threads attempting to take opposing locks while
1048           holding opposing locks (AB BA problem).
1049         </description>
1050       </change>
1051     </section>
1052   </release>
1053   <release version="v4.7.0" date="2018-09-03">
1054     <section title="New features">
1055       <change>
1056         <summary>
1057           storage: add storage pool iscsi-direct
1058         </summary>
1059         <description>
1060           Introduce a new storage pool backend that uses libiscsi instead of
1061           iscsiadm. It support basic pool operations: checkPool and refreshPool.
1062         </description>
1063       </change>
1064       <change>
1065         <summary>
1066           Add support for MBA (Memory Bandwidth Allocation technology)
1067         </summary>
1068         <description>
1069           Domain vCPU threads can now have allocated some parts of host memory
1070           bandwidth by using the <code>memorytune</code> element in <code>cputune</code>.
1071         </description>
1072       </change>
1073       <change>
1074         <summary>
1075           qemu: Add support for RISC-V guests
1076         </summary>
1077         <description>
1078           riscv32 and riscv64 guest architectures are now supported.
1079         </description>
1080       </change>
1081     </section>
1082     <section title="Improvements">
1083       <change>
1084         <summary>
1085           qemu: Add ccw support for vhost-vsock
1086         </summary>
1087         <description>
1088           Support the vhost-vsock-ccw device on S390.
1089         </description>
1090       </change>
1091       <change>
1092         <summary>
1093           qemu: Make default machine type independent of QEMU
1094         </summary>
1095         <description>
1096           We can't control whether or not QEMU will change its default
1097           machine type in the future, or whether downstream distributions
1098           will decide to compile out some machine types, so our only option
1099           to provide a predictable behavior is taking care of the default
1100           ourselves; management applications and users are encouraged to
1101           explicitly pick a machine type when creating new guests.
1102         </description>
1103       </change>
1104       <change>
1105         <summary>
1106           apparmor: Various improvements
1107         </summary>
1108         <description>
1109           Rules have been added to deal with a number of scenarios that
1110           didn't work correctly.
1111         </description>
1112       </change>
1113     </section>
1114     <section title="Bug fixes">
1115       <change>
1116         <summary>
1117           esx: Truncate CPU model name
1118         </summary>
1119         <description>
1120           Some CPU model names are too long to be stored into the
1121           corresponding property, and should be explicitly truncated
1122           to avoid unexpected behavior in users of the
1123           <code>virNodeGetInfo()</code> API such as
1124           <code>virsh nodeinfo</code>.
1125         </description>
1126       </change>
1127       <change>
1128         <summary>
1129           utils: Remove arbitrary limit on socket_id/core_id
1130         </summary>
1131         <description>
1132           Both values were assumed to be smaller than 4096, but in fact
1133           they are entirely hardware-dependent and there have been reports
1134           of machines presenting much bigger values, preventing libvirt from
1135           working correctly; all such limits have now been removed.
1136         </description>
1137       </change>
1138     </section>
1139   </release>
1140   <release version="v4.6.0" date="2018-08-06">
1141     <section title="New features">
1142       <change>
1143         <summary>
1144           qemu: Implement the HTM pSeries feature
1145         </summary>
1146         <description>
1147           Users can now decide whether HTM (Hardware Transactional Memory)
1148           support should be available to the guest.
1149         </description>
1150       </change>
1151       <change>
1152         <summary>
1153           qemu: Enable VNC console for mediated devices
1154         </summary>
1155         <description>
1156           Host devices now support a new atribute 'display' which can be used
1157           to turn on frame buffer rendering on a vgpu mediated device instead of
1158           on an emulated GPU, like QXL.
1159         </description>
1160       </change>
1161     </section>
1162     <section title="Improvements">
1163       <change>
1164         <summary>
1165           qemu: Introduce a new video model of type 'none'
1166         </summary>
1167         <description>
1168           Introduce a new video model type that disables the automatic addition
1169           of a video device to domains with 'graphics' specified in their XML.
1170           This can be useful with GPU mediated devices which can serve as the
1171           only rendering devices within the guest.
1172         </description>
1173       </change>
1174       <change>
1175         <summary>
1176           virsh: Add --alias to attach-disk and attach-interface commands
1177         </summary>
1178         <description>
1179           Add option --alias to set customized device alias name when
1180           using attach-disk or attach-interface commands.
1181         </description>
1182       </change>
1183       <change>
1184         <summary>
1185           virsh: Support usb and sata address to attach-disk
1186         </summary>
1187         <description>
1188           Usb or sata address could be used when attach-disk with --address.
1189           For example, use usb address as usb:&lt;bus&gt;.&lt;port&gt;, use
1190           sata address as &lt;controller&gt;.&lt;bus&gt;.&lt;unit&gt;.
1191         </description>
1192       </change>
1193     </section>
1194   </release>
1195   <release version="v4.5.0" date="2018-07-02">
1196     <section title="New features">
1197       <change>
1198         <summary>
1199           qemu: Provide TPM emulator support
1200         </summary>
1201         <description>
1202           Support QEMU's TPM emulator based on swtpm. Each QEMU guest gets
1203           its own virtual TPM.
1204         </description>
1205       </change>
1206       <change>
1207         <summary>
1208           bhyve: Support specifying guest CPU topology
1209         </summary>
1210         <description>
1211           Bhyve's guest CPU topology could be specified using the
1212           <code>&lt;cpu&gt;&lt;topology ../&gt;&lt;/cpu&gt;</code> element.
1213         </description>
1214       </change>
1215       <change>
1216         <summary>
1217           qemu: Add support for extended TSEG size
1218         </summary>
1219         <description>
1220           Support specifying extended TSEG size for SMM in QEMU.
1221         </description>
1222       </change>
1223       <change>
1224         <summary>
1225           qemu: Add support for SEV guests
1226         </summary>
1227         <description>
1228           SEV (Secure Encrypted Virtualization) is a feature available on AMD
1229           CPUs that encrypts the guest memory and makes it inaccessible even
1230           to the host OS.
1231         </description>
1232       </change>
1233     </section>
1234     <section title="Removed features">
1235       <change>
1236         <summary>
1237           Remove support for qcow/default encrypted volumes
1238         </summary>
1239         <description>
1240           Disallow using a qcow encrypted volume for the guest and
1241           disallow creation of the qcow or default encrypted volume
1242           from the storage driver. Support for qcow encrypted volumes
1243           has been phasing out since QEMU 2.3 and by QEMU 2.9 creation
1244           of a qcow encrypted volume via qemu-img required usage of
1245           secret objects, but that support was never added to libvirt.
1246         </description>
1247       </change>
1248       <change>
1249         <summary>
1250           Make GnuTLS mandatory
1251         </summary>
1252         <description>
1253           Building without GnuTLS is no longer possible.
1254         </description>
1255       </change>
1256       <change>
1257         <summary>
1258           qemu: Remove allow_disk_format_probing configuration option
1259         </summary>
1260         <description>
1261           The option represented a security risk when used with malicious
1262           disk images, so users were recommended against enabling it; with
1263           this release, it's been removed altogether.
1264         </description>
1265       </change>
1266     </section>
1267     <section title="Improvements">
1268       <change>
1269         <summary>
1270           capabilities: Provide info about host IOMMU support
1271         </summary>
1272         <description>
1273           Capabilities XML now provide information about host IOMMU support.
1274         </description>
1275       </change>
1276       <change>
1277         <summary>
1278           virsh: Add --all to domblkinfo command
1279         </summary>
1280         <description>
1281           Alter the <code>domblkinfo</code> command to add the option
1282           --all in order to display the size details of each domain
1283           block device from one command in a output table.
1284         </description>
1285       </change>
1286       <change>
1287         <summary>
1288           qemu: Allow concurrent access to monitor and guest agent
1289         </summary>
1290         <description>
1291           Historically libvirt prevented concurrent accesses to
1292           the qemu monitor and the guest agent. Therefore two
1293           independent calls (one querying the monitor and the
1294           other querying guest agent) would serialize which hurts
1295           performance. The code was reworked to allow two
1296           independent calls run at the same time.
1297         </description>
1298       </change>
1299       <change>
1300         <summary>
1301           qemu: Allow configuring the page size for HPT pSeries guests
1302         </summary>
1303         <description>
1304           For HPT pSeries guests, the size of the host pages used to back guest
1305           memory and the usable guest page sizes are connected; the new setting
1306           can be used to request that a certain page size is available in the
1307           guest.
1308         </description>
1309       </change>
1310       <change>
1311         <summary>
1312           Add support to use an raw input volume for encryption
1313         </summary>
1314         <description>
1315           It is now possible to provide a raw input volume as input for
1316           to generate a luks encrypted volume via either virsh vol-create-from
1317           or virStorageVolCreateXMLFrom.
1318         </description>
1319       </change>
1320       <change>
1321         <summary>
1322           qemu: Add support for vsock hot (un)plug and cold (un)plug
1323         </summary>
1324       </change>
1325       <change>
1326         <summary>
1327           qemu: Add support for NBD over TLS
1328         </summary>
1329         <description>
1330           NBD volumes can now be accessed securely.
1331         </description>
1332       </change>
1333       <change>
1334         <summary>
1335           qemu: Implement FD passing for Unix sockets
1336         </summary>
1337         <description>
1338           Instead of having QEMU open the socket and then connecting to it,
1339           which is inherently racy, starting with QEMU 2.12 we can open the
1340           socket ourselves and pass it to QEMU, avoiding race conditions.
1341         </description>
1342       </change>
1343       <change>
1344         <summary>
1345           virsh: Introduce --nowait option for domstat command
1346         </summary>
1347         <description>
1348           When this option is specified, virsh will try to fetch the guest
1349           stats but abort instead of stalling if they can't be retrieved right
1350           away.
1351         </description>
1352       </change>
1353     </section>
1354     <section title="Bug fixes">
1355       <change>
1356         <summary>
1357           qemu: Fix a potential libvirtd crash on VM reconnect
1358         </summary>
1359         <description>
1360           Initialization of the driver worker pool needs to come before libvirtd
1361           trying to reconnect to all machines, since one of the QEMU processes
1362           migh have already emitted events which need to be handled prior to
1363           us getting to the worker pool initialization.
1364         </description>
1365       </change>
1366       <change>
1367         <summary>
1368           qemu: Fix domain resume after failed migration
1369         </summary>
1370         <description>
1371           Recent versions of QEMU activate block devices before the guest CPU
1372           has been started, which makes it impossible to roll back a failed
1373           migration. Use the <code>late-block-activate</code> migration
1374           capability if supported to avoid the issue.
1375         </description>
1376       </change>
1377       <change>
1378         <summary>
1379           vmx: Permit guests to have an odd number of vCPUs
1380         </summary>
1381         <description>
1382           An odd number of vCPUs greater than 1 was forbidden in the past,
1383           but current versions of ESXi have lifted that restriction.
1384         </description>
1385       </change>
1386     </section>
1387   </release>
1388   <release version="v4.4.0" date="2018-06-04">
1389     <section title="New features">
1390       <change>
1391         <summary>
1392           bhyve: Support locking guest memory
1393         </summary>
1394         <description>
1395           Bhyve's guest memory may be wired using the
1396           <code>&lt;memoryBacking&gt;&lt;locked/&gt;&lt;/memoryBacking&gt;</code>
1397           element.
1398         </description>
1399       </change>
1400       <change>
1401         <summary>
1402           qemu: Provide VFIO channel I/O passthrough support
1403         </summary>
1404         <description>
1405           Support passthrough devices that use channel I/O based mechanism in
1406           a QEMU virtual machine.
1407         </description>
1408       </change>
1409       <change>
1410         <summary>
1411           qemu: Add support for migration of VMs with non-shared storage over TLS
1412         </summary>
1413         <description>
1414           It's now possible to use the VIR_MIGRATE_TLS flag together with
1415           VIR_MIGRATE_NON_SHARED_DISK. The connection is then secured using the
1416           TLS environment which is setup for the migration connection.
1417         </description>
1418       </change>
1419       <change>
1420         <summary>
1421           Add support for VM Generation ID
1422         </summary>
1423         <description>
1424           The VM Generatation ID exposes a 128-bit, cryptographically
1425           random, integer value identifier, referred to as a Globally
1426           Unique Identifier (GUID) to the guest in order to notify the
1427           guest operating system when the virtual machine is executed
1428           with a different configuration. Add a new domain XML processing
1429           and a domain capabilities feature.
1430         </description>
1431       </change>
1432       <change>
1433         <summary>
1434           Introduce virDomainDetachDeviceAlias
1435         </summary>
1436         <description>
1437           This new API enables users to detach device using only its alias.
1438         </description>
1439       </change>
1440       <change>
1441         <summary>
1442           Introduce new virConnectCompareHypervisorCPU and virConnectBaselineHypervisorCPU APIs
1443         </summary>
1444         <description>
1445           Unlike the old virConnectCompareCPU and virConnectBaselineCPU APIs,
1446           both new APIs consider capabilities of a specific hypervisor.
1447         </description>
1448       </change>
1449       <change>
1450         <summary>
1451           Introduce SCSI persistent reservations support
1452         </summary>
1453         <description>
1454           The QEMU driver gained support for qemu-pr-helper which enables
1455           guests to issue SCSI commands for persistent reservation.
1456         </description>
1457       </change>
1458       <change>
1459         <summary>
1460           qemu: Implement multiple screen support for virDomainScreenshot
1461         </summary>
1462         <description>
1463           While the virDomainScreenshot API supported multihead video cards,
1464           the implementation was missing. But now that QEMU implemented it
1465           libvirt has done as well.
1466         </description>
1467       </change>
1468       <change>
1469         <summary>
1470           qemu: add support for vhost-vsock-device
1471         </summary>
1472         <description>
1473           A new vsock device was introduced, allowing communication between
1474           the guest and the host via the AF_VSOCK family.
1475         </description>
1476       </change>
1477     </section>
1478     <section title="Improvements">
1479       <change>
1480         <summary>
1481           qemu: Add suport for OpenGL rendering with SDL
1482         </summary>
1483         <description>
1484           Domains using SDL as a graphics backend will now be able to use
1485           OpenGL accelerated rendering.
1486         </description>
1487       </change>
1488       <change>
1489         <summary>
1490           qemu: Add support for 'output' audio codec
1491         </summary>
1492         <description>
1493           Support QEMU's 'hda-output' codec advertising only a line-out for ich6
1494           and ich9 sound devices.
1495         </description>
1496       </change>
1497       <change>
1498         <summary>
1499           virsh: Enhance event name completion
1500         </summary>
1501         <description>
1502           Implement event name completion for some commands (e.g. event,
1503           secret-event, pool-event and nodedev-event)
1504         </description>
1505       </change>
1506     </section>
1507   </release>
1508   <release version="v4.3.0" date="2018-05-02">
1509     <section title="New features">
1510       <change>
1511         <summary>
1512           qemu: Add support for the pcie-to-pci-bridge controller
1513         </summary>
1514         <description>
1515           Pure PCIe guests such as x86_64/q35 and aarch64/virt will now
1516           add this controller when traditional PCI devices are in use.
1517         </description>
1518       </change>
1519       <change>
1520         <summary>
1521           Xen: Support setting CPU features for host-passthrough model
1522         </summary>
1523         <description>
1524           The CPU model presented to Xen HVM domains is equivalent to libvirt's
1525           host-passthrough model, although individual features can be enabled
1526           and disabled via the cpuid setting. The libvirt libxl driver now
1527           supports enabling and disabling individual features of the
1528           host-passthrough CPU model.
1529         </description>
1530       </change>
1531     </section>
1532     <section title="Removed features">
1533       <change>
1534         <summary>
1535           Xen: Drop the legacy xend-based driver
1536         </summary>
1537         <description>
1538           The xm/xend toolstack was deprecated in Xen 4.2 and removed
1539           from the Xen sources in the 4.5 development cycle. The libvirt
1540           driver based on xend is now removed from the libvirt sources.
1541         </description>
1542       </change>
1543     </section>
1544     <section title="Improvements">
1545       <change>
1546         <summary>
1547           qemu: Support hot plug and hot unplug of mediated devices
1548         </summary>
1549         <description>
1550           Libvirt now allows mediated devices to be hot plugged and hot
1551           unplugged from a guest rather than reporting an error that this isn't
1552           supported. In fact, kernel has been supporting this since 4.10.
1553         </description>
1554       </change>
1555     </section>
1556     <section title="Bug fixes">
1557       <change>
1558         <summary>
1559           Improve handling of device mapper targets
1560         </summary>
1561         <description>
1562           When starting a domain with a disk backed by a device
1563           mapper volume libvirt also needs to allow the storage
1564           backing the device mapper in CGroups. In the past
1565           kernel did not care, but starting from 4.16 CGroups are
1566           consulted on each access to the device mapper target.
1567         </description>
1568       </change>
1569     </section>
1570   </release>
1571   <release version="v4.2.0" date="2018-04-01">
1572     <section title="New features">
1573       <change>
1574         <summary>
1575           Support building with Python 3
1576         </summary>
1577         <description>
1578           Python is required to build libvirt, and up until now only Python 2
1579           could be used as an interpreter. All scripts used during build have
1580           now been made compatible with Python 3, which means both major
1581           releases of the language are fully supported.
1582         </description>
1583       </change>
1584       <change>
1585         <summary>
1586           qemu: Provide ccw address support for graphics and input devices
1587         </summary>
1588         <description>
1589           Support the virtio-gpu-ccw device as a video device and
1590           virtio-{keyboard, mouse, tablet}-ccw devices as input devices
1591           on S390.
1592         </description>
1593       </change>
1594     </section>
1595     <section title="Improvements">
1596       <change>
1597         <summary>
1598           qemu: Add logging of guest crash information on S390
1599         </summary>
1600         <description>
1601           On S390, when the guest crashes and QEMU exposes the guest crash
1602           information, log the relevant data to the domain log file.
1603         </description>
1604       </change>
1605       <change>
1606         <summary>
1607           qemu: use arp table of host to get the IP address of guests
1608         </summary>
1609         <description>
1610           Find IP address of a VM by arp table on hosts.
1611           If someone customizing IP address inside VM, it will be helpful.
1612         </description>
1613       </change>
1614       <change>
1615         <summary>
1616           Xen: Remove hard-coded scheduler weight
1617         </summary>
1618         <description>
1619           The libxl driver was accidentally hard-coding the per-domain
1620           scheduler weight to 1000, silently ignoring any user-provided
1621           <code>&lt;shares&gt;</code> in <code>&lt;cputune&gt;</code>. The
1622           driver now honors <code>&lt;shares&gt;</code>, and defers setting
1623           a default value to Xen. Note that the Xen default is 256, so any
1624           domains started after this improvement will have one fourth the
1625           shares of previously started domains. If all domains must have
1626           equal CPU shares, administrators must manually set the weight of
1627           previously started domains to 256, or restart them.
1628         </description>
1629       </change>
1630     </section>
1631     <section title="Bug fixes">
1632       <change>
1633         <summary>
1634           qemu: TLS migration now enforces use of TLS for the NBD connection
1635         </summary>
1636         <description>
1637           When the VIR_MIGRATE_TLS flag was used with the migration API libvirt
1638           did not ensure that the NBD connection was using TLS as well. The code
1639           now rejects such migration as the TLS transport for NBD is not ready
1640           yet, but prevents a false sense of security that TLS would be used.
1641           The support TLS for NBD will be added soon.
1642         </description>
1643       </change>
1644     </section>
1645   </release>
1646   <release version="v4.1.0" date="2018-03-05">
1647     <section title="New features">
1648       <change>
1649         <summary>
1650           Added support for CAT (Cache allocation Technology)
1651         </summary>
1652         <description>
1653           Domain vCPU threads can now have allocated some parts of host cache
1654           using the <code>cachetune</code> element in <code>cputune</code>.
1655         </description>
1656       </change>
1657       <change>
1658         <summary>
1659           Allow opening secondary drivers
1660         </summary>
1661         <description>
1662           Up until now it was possible to connect to only hypervisor drivers
1663           (e.g. qemu:///system, lxc:///, vbox:///system, and so on). The
1664           internal drivers (like network driver, node device driver, etc.) were
1665           hidden from users and users could use them only indirectly. Starting
1666           with this release new connection URIs are accepted. For instance
1667           network:///system, storage:///system and so on.
1668         </description>
1669       </change>
1670       <change>
1671         <summary>
1672           virtlogd, virtlockd: Add support for admin protocol
1673         </summary>
1674         <description>
1675           These two daemons now support admin protocol through which some admin
1676           info can be gathered or some configuration tweaked on the fly.
1677         </description>
1678       </change>
1679     </section>
1680     <section title="Improvements">
1681       <change>
1682         <summary>
1683           virsh: Enhance bash completion
1684         </summary>
1685         <description>
1686           Implement more bash completions so that basic libvirt
1687           objects can be auto-completed (e.g. networks,
1688           interfaces, NWFilters, and so on).
1689         </description>
1690       </change>
1691       <change>
1692         <summary>
1693           qemu: Use VIR_ERR_DEVICE_MISSING for various hotplug/detach messages
1694         </summary>
1695       </change>
1696       <change>
1697         <summary>
1698           qemu: Allow showing the dump progress for memory only dump
1699         </summary>
1700         <description>
1701           Alter the QEMU dump-guest-memory command processing to check
1702           for and allow asynchronous completion which then allows for
1703           the virsh dump --memory-only --verbose command to display percent
1704           completion data.
1705         </description>
1706       </change>
1707       <change>
1708         <summary>
1709           conf: add support for setting Chassis SMBIOS data fields
1710         </summary>
1711       </change>
1712       <change>
1713         <summary>
1714           libxl: add support for setting clock offset and adjustment
1715         </summary>
1716       </change>
1717       <change>
1718         <summary>
1719           Make port allocator global
1720         </summary>
1721         <description>
1722           Up until now each driver had their own port allocator module. This
1723           meant that info on port usage was not shared. Starting with this
1724           release, the port allocator module is made global and therefore
1725           drivers allocate ports from global pool.
1726         </description>
1727       </change>
1728       <change>
1729         <summary>
1730           Fixed some compiler warnings that appear with GCC 8
1731         </summary>
1732       </change>
1733     </section>
1734     <section title="Bug fixes">
1735       <change>
1736         <summary>
1737           qemu: Check for unsafe migration more thoroughly
1738         </summary>
1739         <description>
1740           If a domain disk is stored on local filesystem (e.g. ext4) but is
1741           not being migrated it is very likely that domain is not able to
1742           run on destination. Regardless of share/cache mode.
1743         </description>
1744       </change>
1745       <change>
1746         <summary>
1747           qemu: Fix updating device with boot order
1748         </summary>
1749         <description>
1750           Starting with 3.7.0 release updating any device with boot order would
1751           fail with 'boot order X is already used by another device' while in
1752           fact it was the very same device.
1753         </description>
1754       </change>
1755       <change>
1756         <summary>
1757           virlog: determine the hostname on startup CVE-2018-6764
1758         </summary>
1759         <description>
1760           At later point it might not be possible or even safe to use
1761           getaddrinfo(). It can in turn result in a load of NSS module which
1762           can even be loaded from unsage guest filesystem and thus escape the
1763           confinment of its container.
1764         </description>
1765       </change>
1766       <change>
1767         <summary>
1768           qemu: Rework vCPU statistics fetching
1769         </summary>
1770         <description>
1771           Fetching vCPU statistics was very expensive because it lead to waking
1772           up vCPU threads in QEMU and thus it degraded performance. The code
1773           was reworked so that fetching statistics does not wake up halted
1774           vCPUs.
1775         </description>
1776       </change>
1777       <change>
1778         <summary>
1779           qemu: unlink memory backing file on domain shutdown
1780         </summary>
1781         <description>
1782           Depending on the filesystem where domain memory is stored, some files
1783           might have been left behind. This is not a problem on hugetlbfs, but
1784           it is a problem on regular filesystems like ext4.
1785         </description>
1786       </change>
1787       <change>
1788         <summary>
1789           qemu: Fix shutting down domains in parallel
1790         </summary>
1791         <description>
1792           If multiple domains were being shut down in parallel, libvirtd might
1793           have deadlocked.
1794         </description>
1795       </change>
1796       <change>
1797         <summary>
1798           nodedev: Update PCI mdev capabilities dynamically
1799         </summary>
1800         <description>
1801           PCI devices may have other nested capabilities, like SRIOV and mdev
1802           which depend on the device being plugged into the native vendor
1803           driver. However, in case such a device is directly assigned to a guest
1804           using VFIO driver, the device will naturally lose these capabilities
1805           and libvirt needs to reflect that.
1806         </description>
1807       </change>
1808     </section>
1809   </release>
1810   <release version="v4.0.0" date="2018-01-19">
1811     <section title="New features">
1812       <change>
1813         <summary>
1814           tools: Provide bash completion support
1815         </summary>
1816         <description>
1817           Both <code>virsh</code> and <code>virt-admin</code> now implement
1818           basic bash completion support.
1819         </description>
1820       </change>
1821       <change>
1822         <summary>
1823           qemu: Refresh capabilities on host microcode update
1824         </summary>
1825         <description>
1826           A microcode update can cause the CPUID bits to change; therefore,
1827           the capabilities cache should be rebuilt when such an update is
1828           detected on the host.
1829         </description>
1830       </change>
1831       <change>
1832         <summary>
1833           lxc: Set hostname based on container name
1834         </summary>
1835       </change>
1836     </section>
1837     <section title="Improvements">
1838       <change>
1839         <summary>
1840           CPU frequency reporting improvements
1841         </summary>
1842         <description>
1843           The CPU frequency will now be reported by <code>virsh nodeinfo</code>
1844           and other tools for s390 hosts; at the same time; CPU frequency has
1845           been disabled on aarch64 hosts because there's no way to detect it
1846           reliably.
1847         </description>
1848       </change>
1849       <change>
1850         <summary>
1851           libxl: Mark domain0 as persistent
1852         </summary>
1853       </change>
1854       <change>
1855         <summary>
1856           Xen: Add support for multiple IP addresses on interface devices
1857         </summary>
1858       </change>
1859       <change>
1860         <summary>
1861           qemu: Add support for hot unplugging redirdev device
1862         </summary>
1863       </change>
1864     </section>
1865     <section title="Bug fixes">
1866       <change>
1867         <summary>
1868           qemu: Enforce vCPU hotplug granularity constraints
1869         </summary>
1870         <description>
1871           QEMU 2.7 and newer don't allow guests to start unless the initial
1872           vCPUs count is a multiple of the vCPU hotplug granularity, so
1873           validate it and report an error if needed.
1874         </description>
1875       </change>
1876     </section>
1877   </release>
1878   <release version="v3.10.0" date="2017-12-04">
1879     <section title="New features">
1880       <change>
1881         <summary>
1882           conf: Support defining distances between virtual NUMA cells
1883         </summary>
1884         <description>
1885           A NUMA hardware architecture supports the notion of distances
1886           between NUMA cells. This can now be specified using the
1887           <code>&lt;distances&gt;</code> element within the NUMA cell
1888           configuration. Drivers which support this include Xen and QEMU.
1889         </description>
1890       </change>
1891       <change>
1892         <summary>
1893           Xen: Support defining vNUMA topology
1894         </summary>
1895         <description>
1896           Xen now supports defining a virtual NUMA topology for VMs,
1897           including specifying distances between NUMA cells.
1898         </description>
1899       </change>
1900       <change>
1901         <summary>
1902           qemu: Add the ability to configure HPT resizing for pSeries guests
1903         </summary>
1904         <description>
1905           The user can now decide whether HPT (Hash Page Table) resizing
1906           should be enabled, disabled or required instead of leaving it up to
1907           hypervisor defaults and negotiation between the guest and the host.
1908         </description>
1909       </change>
1910       <change>
1911         <summary>
1912           qemu: Add vmcoreinfo feature
1913         </summary>
1914         <description>
1915           Starting with QEMU 2.11, the guest can save kernel debug
1916           details when this feature is enabled and the kernel supports
1917           it. It is useful to process kernel dump with KASLR enabled,
1918           and also provides various kernel details to crash tools.
1919         </description>
1920       </change>
1921       <change>
1922         <summary>
1923           conf: Move the auth and encryption definitions to disk source
1924         </summary>
1925         <description>
1926           Allow parsing and formatting of the <code>auth</code> and
1927           <code>encryption</code> sub-elements to be a child of the
1928           <code>source</code> element. This will allow adding an
1929           <code>auth</code> sub-element to a <code>backingStore</code>
1930           or <code>mirror</code> elements as a means to track specific
1931           authentication and/or encryption needs.
1932         </description>
1933       </change>
1934     </section>
1935     <section title="Improvements">
1936       <change>
1937         <summary>
1938           vbox: Add VirtualBox 5.2 support
1939         </summary>
1940       </change>
1941       <change>
1942         <summary>
1943           vbox: Add support for configuring storage controllers
1944         </summary>
1945         <description>
1946           The VirtualBox driver now supports the <code>&lt;controller&gt;</code>
1947           element in the domain XML for configuring storage controllers in VBOX
1948           VMs.  Additionally, libvirt's domain XML schema was updated to allow
1949           optional <code>model</code> attribute for <code>&lt;controller
1950               type='ide'&gt;</code> which is used by the VBOX driver to set the
1951           IDE controller model to be one of 'piix4', 'piix4' (default), or
1952           'ich6'.  Finally, with this change <code>dumpxml</code> generates
1953           <code>&lt;controller&gt;</code> elements that correspond to current
1954           VBOX VM storage controller configuration.
1955         </description>
1956       </change>
1957       <change>
1958         <summary>
1959           vbox: Add support for attaching empty removable disks
1960         </summary>
1961         <description>
1962           The VirutalBox driver now supports adding CD-ROM and floppy disk
1963           devices that do not have the disk source specified. Previously such
1964           devices were silently ignored.
1965         </description>
1966       </change>
1967       <change>
1968         <summary>
1969           vbox: Add support for attaching SAS storage controllers
1970         </summary>
1971         <description>
1972           In VirtualBox, SCSI and SAS are distinct controller types whereas
1973           libvirt does not make such distinction. Therefore, the VBOX driver was
1974           updated to allow attaching SAS controllers via <code>&lt;controller
1975               type='scsi' model='lsisas1068'&gt;</code> element. If there are
1976           both SCSI and SAS controllers present in the VBOX VM, the domain XML
1977           can associate the disk device using the <code>&lt;address&gt;</code>
1978           element with the <code>controller</code> attribute, and optionally,
1979           set the port via <code>unit</code> attribute.
1980         </description>
1981       </change>
1982       <change>
1983         <summary>
1984           qemu: Generate predictable paths for qemu memory backends
1985         </summary>
1986         <description>
1987           In some cases management applications need to know
1988           paths passed to memory-backend-file objects upfront.
1989           Libvirt now generates predictable paths so applications
1990           can prepare the files if they need to do so.
1991         </description>
1992       </change>
1993       <change>
1994         <summary>
1995           Shareable disks work properly with recent qemu
1996         </summary>
1997         <description>
1998           Recent qemu versions added image locking to avoid potential corruption
1999           of disk images. This broke shareable disks with libvirt since the
2000           feature was turned on by default in qemu. Libvirt now enables sharing
2001           of those disks in qemu so that the image locking is not applied in
2002           that case. Additionally libvirt now checks that shareable disks have
2003           supported format (raw) to avoid metadata corruption.
2004         </description>
2005       </change>
2006       <change>
2007         <summary>
2008           Improve serial console behavior on non-x86 architectures
2009         </summary>
2010         <description>
2011           ppc64, aarch64 and s390x guests were treating the &lt;serial&gt;
2012           and &lt;console&gt; elements differently from x86, in some cases
2013           presenting misleading information to the user. The behavior is now
2014           consistent across all architectures and the information reported
2015           is always accurate.
2016         </description>
2017       </change>
2018     </section>
2019     <section title="Bug fixes">
2020       <change>
2021         <summary>
2022           vbox: Do not ignore failures to attach disk devices when defining
2023         </summary>
2024         <description>
2025           The <code>define</code> now fails and reports an error if any of the
2026           <code>controller</code> or <code>disk</code> devices specified in the
2027           domain XML fail to attach to the VirtualBox VM.
2028         </description>
2029       </change>
2030       <change>
2031         <summary>
2032           vbox: Fix dumpxml to always output disk devices
2033         </summary>
2034         <description>
2035           The VirtualBox driver was ignoring any disk devices in
2036           <code>dumpxml</code> output if there was a SAS storage controller
2037           attached to the VM.
2038         </description>
2039       </change>
2040       <change>
2041         <summary>
2042           vbox: Fix dumpxml to always generate valid domain XML
2043         </summary>
2044         <description>
2045           When a VirtualBox VM has multiple disks attached, each to a different
2046           storage controller that uses 'sd' prefix for block device names e.g.
2047           one disk attached to SATA and one to SCSI controller, it no longer
2048           generates XML where both would have 'sda' device name assigned.
2049           Instead it properly assigns 'sda' and 'sdb' to those disks in the
2050           order of appearance.
2051         </description>
2052       </change>
2053       <change>
2054         <summary>
2055           Securely pass iSCSI authentication data
2056         </summary>
2057         <description>
2058           Rather than supplying the authentication data as part of the
2059           iSCSI URL for a disk or host device, utilize the encrypted
2060           secret object to securely pass the authentication data.
2061         </description>
2062       </change>
2063     </section>
2064   </release>
2065   <release version="v3.9.0" date="2017-11-02">
2066     <section title="New features">
2067       <change>
2068         <summary>
2069           Add capability to allow hot (un)plug of a domain watchdog device
2070         </summary>
2071       </change>
2072       <change>
2073         <summary>
2074           Allow users to set device aliases
2075         </summary>
2076         <description>
2077           Users can set aliases to domain devices and thus identify them
2078           easily.
2079         </description>
2080       </change>
2081       <change>
2082         <summary>
2083           qemu: Support multiqueue for virtio-blk
2084         </summary>
2085         <description>
2086           Multiqueue support for <code>virtio-blk</code> has been available
2087           in QEMU ever since 2.7.0, and now libvirt guests can enable it.
2088         </description>
2089       </change>
2090       <change>
2091         <summary>
2092           Add virDomainSetLifecycleAction API
2093         </summary>
2094         <description>
2095           Provided a new API to allow dynamic guest lifecycle control for
2096           guest reactions to poweroff, restart, or crash type events related
2097           to the domain XML <code>on_poweroff</code>, <code>on_reboot</code>,
2098           and <code>on_crash</code> elements. The
2099           <code>virsh set-lifecycle-action</code> command was created to
2100           control the actions.
2101         </description>
2102       </change>
2103       <change>
2104         <summary>
2105           qemu: Allow cold(un)plugging and hot(un)plugging input devices
2106         </summary>
2107       </change>
2108       <change>
2109         <summary>
2110           net: Implement QoS for vhostuser
2111         </summary>
2112       </change>
2113     </section>
2114     <section title="Improvements">
2115       <change>
2116         <summary>
2117           Allow a logical volume to be create using LUKS
2118         </summary>
2119         <description>
2120           A logical volume may be created using an <code>encryption</code>
2121           element using "luks" format. This does require a previously created
2122           <code>secret</code> to store the passphrase used to encrypt the
2123           volume Adding the volume to a domain can then either provide the
2124           secret or allow the consumer in the guest to provide the passphrase
2125           in order to decrypt the volume.
2126         </description>
2127       </change>
2128       <change>
2129         <summary>
2130           net: Ignore auto-generated MAC address when detaching an interface
2131         </summary>
2132         <description>
2133           If the MAC address has not been specified by the user, libvirt will
2134           try and fill in the gaps by generating one; however, for some error
2135           paths that led to some confusing error messages, so when an
2136           auto-generated MAC address is specified the error message will not
2137           include the auto-generated MAC.
2138         </description>
2139       </change>
2140       <change>
2141         <summary>
2142           net: Enable MAC address lookup for virDomainInterfaceStats
2143         </summary>
2144       </change>
2145       <change>
2146         <summary>
2147           apparmor: Several improvements
2148         </summary>
2149         <description>
2150           Changes include permitting access to data about USB devices and
2151           <code>dnsmasq</code> instances, allowing spaces in guest names and
2152           many more.
2153         </description>
2154       </change>
2155       <change>
2156         <summary>
2157           cpu: Use CPU information obtained from QEMU when possible
2158         </summary>
2159         <description>
2160           Recent QEMU versions can expose information about which CPU models
2161           are available and usable on the host; libvirt will now make use of
2162           such information whenever possible.
2163         </description>
2164       </change>
2165       <change>
2166         <summary>
2167           hyperv: Various improvements
2168         </summary>
2169         <description>
2170           The error reported when clients can't connect to Hyper-V has been
2171           made more descriptive, and memory limits for guests are now mapped
2172           to more appropriate libvirt equivalents.
2173         </description>
2174       </change>
2175       <change>
2176         <summary>
2177           qemu: Report QEMU error on failed migration
2178         </summary>
2179         <description>
2180           Instead of reporting a generic error, ask QEMU for a more detailed
2181           and thus hopefully more helpful one.
2182         </description>
2183       </change>
2184       <change>
2185         <summary>
2186           vbox: Implement autoport for RDP
2187         </summary>
2188         <description>
2189           libvirt will now obtain the (dynamically allocated) RDP port number
2190           from VirtualBox itself, avoiding conflicts between multiple guests
2191           wanting to use RDP at the same time.
2192         </description>
2193       </change>
2194       <change>
2195         <summary>
2196           qemu: Allow rotation of small logs
2197         </summary>
2198         <description>
2199           On a host where numerous unique instances are executed per day, it's
2200           quite possible that, even though each of the single log files are
2201           fairly small, collectively the quantity and volume may add tens of
2202           thousands of log files to the <code>/var/log/libvirt/qemu/</code>
2203           directory. Removing the constraints that log have to be bigger than
2204           100 KiB before they can be rotated solves the issue.
2205         </description>
2206       </change>
2207     </section>
2208     <section title="Bug fixes">
2209       <change>
2210         <summary>
2211           Fix swapped interface statistics and QoS
2212         </summary>
2213         <description>
2214           Due to internal implementation, reported statistics for
2215           some types of interfaces were swapped (RX appeared in
2216           TX and vice versa). Similarly, QoS was set in reversed
2217           way.
2218         </description>
2219       </change>
2220       <change>
2221         <summary>
2222           Properly resize local LUKS encrypted volume
2223         </summary>
2224         <description>
2225           Resizing of a local LUKS encrypted volume will now use qemu-img
2226           to resize the volume. This will require configuring a secret for
2227           the LUKS encrypted volume.
2228         </description>
2229       </change>
2230       <change>
2231         <summary>
2232           qemu: Reserve PCI addresses for implicit i440fx devices
2233         </summary>
2234         <description>
2235           Failing to do so causes the addresses to be considered usable by
2236           libvirt, which means they could be assigned to more than one device
2237           resulting in the guest failing to start.
2238         </description>
2239       </change>
2240       <change>
2241         <summary>
2242           spec: Restart libvirtd only at the end of the upgrade process
2243         </summary>
2244         <description>
2245           Use <code>%posttrans</code> to make sure <code>libvirtd</code>
2246           is not restarted before all other components, such as the library
2247           itself and storage / hypervisor drivers, have already been upgraded.
2248         </description>
2249       </change>
2250     </section>
2251     <section title="Security">
2252       <change>
2253         <summary>
2254           qemu: Ensure TLS clients always verify the server certificate
2255         </summary>
2256         <description>
2257           While it's reasonable to turn off client certificate validation,
2258           as setting it up can be non-trivial, clients should always verify
2259           the server certificate to avoid MITM attacks. However, libvirt was
2260           using the same knob to control both checks, leading to
2261           CVE-2017-1000256 / LSN-2017-0002.
2262         </description>
2263       </change>
2264     </section>
2265   </release>
2266   <release version="v3.8.0" date="2017-10-04">
2267     <section title="New features">
2268       <change>
2269         <summary>
2270           qemu: Added support for cold-(un)plug of watchdog devices
2271         </summary>
2272       </change>
2273       <change>
2274         <summary>
2275           qemu: Added support for setting IP address os usernet interfaces
2276         </summary>
2277       </change>
2278       <change>
2279         <summary>
2280           qemu: Added support for Veritas Hyperscale (VxHS) block devices
2281         </summary>
2282       </change>
2283       <change>
2284         <summary>
2285           storage: Added new events for pool-build and pool-delete
2286         </summary>
2287       </change>
2288     </section>
2289     <section title="Improvements">
2290       <change>
2291         <summary>
2292           qemu: Set DAC permissions properly for spice rendernode
2293         </summary>
2294         <description>
2295           When a <code>rendernode</code> path is set for SPICE GL on
2296           <code>qemu:///system</code>, we now correctly set DAC permissions
2297           on the device at VM startup. This is the last remaining hurdle to
2298           let SPICE GL work for <code>qemu:///system</code> without any
2299           external host changes.
2300         </description>
2301       </change>
2302       <change>
2303         <summary>
2304           nodedev: Add switchdev offload query to NIC capabilities
2305         </summary>
2306         <description>
2307             Allow querying the NIC interface capabilities for the
2308             availability of switchdev offloading (also known as
2309             kernel-forward-plane-offload).
2310         </description>
2311       </change>
2312       <change>
2313         <summary>
2314           New CPU models for AMD and Intel
2315         </summary>
2316         <description>
2317           AMD EPYC and Intel Skylake-Server CPU models were added together with
2318           their features
2319         </description>
2320       </change>
2321       <change>
2322         <summary>
2323           Improve long waiting when saving a domain
2324         </summary>
2325         <description>
2326           While waiting for a write to disk to be finished, e.g. during save,
2327           even simple operations like <code>virsh list</code> would be blocking
2328           due to domain lock. This is now resolved by unlocking the domain
2329           in places where it is not needed.
2330         </description>
2331       </change>
2332     </section>
2333     <section title="Bug fixes">
2334       <change>
2335         <summary>
2336           Proper units are now used in virsh manpage for dom(mem)stats
2337         </summary>
2338         <description>
2339           Previously the documentation used multiples of 1000, but now it is
2340           fixed to use multiples of 1024.
2341         </description>
2342       </change>
2343       <change>
2344         <summary>
2345           qemu: Fix error reporting when disk attachment fails
2346         </summary>
2347         <description>
2348           There was a possibility for the actual error to be overridden or
2349           cleared during the rollback.
2350         </description>
2351       </change>
2352       <change>
2353         <summary>
2354           qemu: Fix assignment of graphics ports after daemon restart
2355         </summary>
2356         <description>
2357           This could be seen with newer kernels that have bug regarding
2358           SO_REUSEADDR. After libvirtd was restarted it could assign already
2359           used address to new guests which would make them fail to start. This
2360           is fixed by marking used ports unavailable when reconnecting to
2361           running QEMU domains.
2362         </description>
2363       </change>
2364       <change>
2365         <summary>
2366           Fix message decoding which was causing a very strange bug
2367         </summary>
2368         <description>
2369           When parsing an RPC message with file descriptors was interrupted and
2370           had to restart, the offset of the payload was calculated badly causing
2371           strange issues like not being able to find a domain that was not
2372           requested.
2373         </description>
2374       </change>
2375     </section>
2376   </release>
2377   <release version="v3.7.0" date="2017-09-04">
2378     <section title="New features">
2379       <change>
2380         <summary>
2381           qemu: Add managedsave-edit commands
2382         </summary>
2383         <description>
2384           Using managedsave-dumpxml, managedsave-define and managedsave-edit
2385           commands, now we can dump and edit the XML configuration of domain
2386           which has managedsave image.
2387         </description>
2388       </change>
2389       <change>
2390         <summary>
2391           qemu: Add migrate-getmaxdowntime command
2392         </summary>
2393         <description>
2394           Currently, the maximum tolerable downtime for a domain being migrated
2395           is write-only from libvirt, via migrate-setmaxdowntime. This
2396           implements a complementary migrate-getmaxdowntime command
2397         </description>
2398       </change>
2399       <change>
2400         <summary>
2401           bhyve: Support autoport for VNC ports
2402         </summary>
2403         <description>
2404           It's no longer necessary to explicitly specify VNC port for the bhyve
2405           guests. With the autoport feature it will be allocated automatically.
2406           Please refer to the bhyve driver documentation for examples.
2407         </description>
2408       </change>
2409       <change>
2410         <summary>
2411           qemu: Added support for setting heads of virtio GPU
2412         </summary>
2413       </change>
2414       <change>
2415         <summary>
2416           qemu: Added support to configure reconnect timeout for chardev devices
2417         </summary>
2418         <description>
2419           When you have a TCP or UNIX chardev device and it's connected somewhere
2420           you can configure reconnect timeout if the connection is closed.
2421         </description>
2422       </change>
2423     </section>
2424     <section title="Improvements">
2425       <change>
2426         <summary>
2427           qemu: Report a clear error when dropping a VM during startup
2428         </summary>
2429         <description>
2430           "Failed to load config for domain 'DOMNAME'" is now reported if a VM
2431           config can't be parsed for some reason, and thus provides a clear
2432           indication for users (and devs).
2433         </description>
2434       </change>
2435       <change>
2436         <summary>
2437           apparmor: Update for QEMU 2.10 compatibility
2438         </summary>
2439         <description>
2440           Starting with QEMU 2.10, disk images and NVRAM files get
2441           automatically locked to prevent them from being corrupted; however,
2442           file locking needs to be explicitly allowed through
2443           <code>virt-aa-helper</code> or AppArmor will reject the requests and
2444           the guest will not be able to run.
2445         </description>
2446       </change>
2447       <change>
2448         <summary>
2449           virsh: List Unix sockets in 'domdisplay' output
2450         </summary>
2451         <description>
2452           VNC and SPICE graphics can use Unix sockets instead of TCP/IP sockets
2453           as connection endpoints, but such a configuration was not handled
2454           correctly by <code>virsh domdisplay</code>, causing the respective
2455           endpoints to be missing from the output.
2456         </description>
2457       </change>
2458       <change>
2459         <summary>
2460           qemu: Don't check whether offline migration is safe
2461         </summary>
2462         <description>
2463           Since offline migration only copies the guest definition to the
2464           destination host, data corruption is not a concern and the operation
2465           can always be performed safely.
2466         </description>
2467       </change>
2468       <change>
2469         <summary>
2470           virt-host-validate: Fix IOMMU detection on ppc64
2471         </summary>
2472       </change>
2473     </section>
2474     <section title="Bug fixes">
2475       <change>
2476         <summary>
2477           qemu: Better support for international domain names (with wide characters)
2478         </summary>
2479         <description>
2480           There were some issues with multi-byte domains getting lost
2481           on daemon restart due to truncation, so the code now handles
2482           multi-byte names a bit better.
2483         </description>
2484       </change>
2485       <change>
2486         <summary>
2487           qemu: Support long domain names with namespaces
2488         </summary>
2489         <description>
2490           Domains with extremely long names would fail to start due to
2491           temporary namespace paths being created with the whole name.
2492           The path is now generated with shortened name instead.
2493         </description>
2494       </change>
2495       <change>
2496         <summary>
2497           qemu: Tolerate missing emulator binary during libvirtd restart
2498         </summary>
2499         <description>
2500           For some time libvirt required qemu capabilities being present when
2501           parsing VM configs during startup. As a side effect VM configs would
2502           fail to parse and thus vanish, if the emulator binary would be
2503           uninstalled or broken. Libvirt now tolerates when capabilities
2504           are missing during startup.
2505         </description>
2506       </change>
2507       <change>
2508         <summary>
2509           qemu: Prevent pSeries guests from disappearing in some situations
2510         </summary>
2511         <description>
2512           pSeries guest would disappear if any of the host devices they were
2513           configured to use was not available during libvirtd startup, which
2514           could easily happen for SR-IOV Virtual Functions. This scenario is
2515           now handled correctly.
2516         </description>
2517       </change>
2518       <change>
2519         <summary>
2520           qemu: Honor &lt;on_reboot/&gt; setting
2521         </summary>
2522         <description>
2523           The setting was accepted by the parser, but not actually implemented.
2524         </description>
2525       </change>
2526       <change>
2527         <summary>
2528           Fix --verbose option for all daemons
2529         </summary>
2530         <description>
2531           Since v3.0.0, the option had been ignored by all libvirt daemons
2532           (<code>libvirtd</code>, <code>virtlogd</code> and
2533           <code>virtlockd</code>); it's now working as intended once again.
2534         </description>
2535       </change>
2536     </section>
2537   </release>
2538   <release version="v3.6.0" date="2017-08-02">
2539     <section title="New features">
2540       <change>
2541         <summary>
2542           hyperv: Implement virDomainSetMemory and virDomainSendKey APIs
2543         </summary>
2544       </change>
2545       <change>
2546         <summary>
2547           qemu: Support multiple PHBs for pSeries guests
2548         </summary>
2549         <description>
2550           pSeries guests can now have multiple PHBs (PCI Host Bridges), which
2551           show up as separate PCI domains in the guest. To create additional
2552           PHBs, simply add PCI controllers with model <code>pci-root</code>
2553           to the guest configuration.
2554         </description>
2555       </change>
2556       <change>
2557         <summary>
2558           qemu: Isolate hostdevs on pSeries guests
2559         </summary>
2560         <description>
2561           To enable better error reporting and recovery, unrelated hostdevs
2562           will now be automatically isolated on pSeries guests by placing them
2563           on separate PHBs (PCI Host Bridges).
2564         </description>
2565       </change>
2566     </section>
2567     <section title="Improvements">
2568       <change>
2569         <summary>
2570           qemu: platform serial devices can now use chardev features
2571         </summary>
2572         <description>
2573           QEMU VMs that depend on platform serial devices can now use
2574           QEMU's <code>-chardev</code> option, which enables access to
2575           advanced features like log file configuration. This applies
2576           to the default serial devices for arm, aarch64, and some ppc
2577           configurations.
2578         </description>
2579       </change>
2580       <change>
2581         <summary>
2582           Require use of GCC 4.4 or Clang compilers
2583         </summary>
2584         <description>
2585           We only ever test libvirt with GCC or Clang (which
2586           provides a GCC compatible compilation environment).
2587           Between them, these compilers cover every supported
2588           operating system platform, including Windows.
2589         </description>
2590       </change>
2591       <change>
2592         <summary>
2593           qemu: shared disks with directsync cache should be safe for migration
2594         </summary>
2595         <description>
2596           At present shared disks can be migrated with either readonly or
2597           <code>cache=none</code>. But <code>cache=directsync</code> should be
2598           safe for migration, because both <code>cache=directsync</code> and
2599           <code>cache=none</code> don't use the host page cache, and
2600           <code>cache=direct</code> write through qemu block layer cache.
2601         </description>
2602       </change>
2603       <change>
2604         <summary>
2605           Handle hotplug change on VLAN configuration using OVS
2606         </summary>
2607         <description>
2608           Libvirt was taught to handle VLAN change for running OVS interface.
2609         </description>
2610       </change>
2611     </section>
2612     <section title="Bug fixes">
2613       <change>
2614         <summary>
2615           qemu: Use vCPU 'node-id' property and pass it back to qemu
2616         </summary>
2617         <description>
2618           vCPU properties gathered from query-hotpluggable-cpus need to be
2619           passed back to QEMU. As QEMU did not use the node-id property until
2620           now and libvirt forgot to pass it back properly (it was parsed but
2621           not passed around) we did not honor this.
2622         </description>
2623       </change>
2624       <change>
2625         <summary>
2626           Miscellaneous stream fixes
2627         </summary>
2628         <description>
2629           After introducing sparse stream features there were still some known
2630           bugs left. Those are fixed in this release.
2631         </description>
2632       </change>
2633       <change>
2634         <summary>
2635           qemu: Miscellaneous domain NS fixes
2636         </summary>
2637         <description>
2638           Libvirt starts qemu domains in separate Linux namespaces for a while
2639           now. However, there were still some bugs lingering. For instance
2640           libvirt did not know how to handle file based bind mounts.
2641         </description>
2642       </change>
2643       <change>
2644         <summary>
2645           Various CPU driver improvements
2646         </summary>
2647         <description>
2648           There were some minor bugs when using 'host-model' CPU.
2649         </description>
2650       </change>
2651     </section>
2652   </release>
2653   <release version="v3.5.0" date="2017-07-04">
2654     <section title="New features">
2655       <change>
2656         <summary>
2657           qemu: Add support for loadparm for a boot device
2658         </summary>
2659         <description>
2660           Add an optional boot parameter 'loadparm' for a boot device.
2661           Loadparm is an 8 byte parameter that, when present, is queried by
2662           S390 guests via sclp or diag 308. Linux guests on S390 use it to
2663           select a boot entry.
2664         </description>
2665       </change>
2666       <change>
2667         <summary>
2668           Support controlling how video devices are exposed to the bhyve guests
2669         </summary>
2670         <description>
2671           The <code>vgaconf</code> attribute was added to <code>video</code>'s
2672           <code>driver</code> element. Possible values are: <code>on</code>,
2673           <code>off</code>, and <code>io</code>. It controls the way how
2674           bhyve exposes video devices to its guests; various guest OSes might
2675           require different settings to boot properly.
2676         </description>
2677       </change>
2678       <change>
2679         <summary>
2680           qemu: Add support for live updates of coalesce settings
2681         </summary>
2682         <description>
2683           Users can now use <code>virsh update-device</code> to change
2684           the coalesce settings of an interfaces while the domain is
2685           running.
2686         </description>
2687       </change>
2688       <change>
2689         <summary>
2690           qemu: Allow VirtIO devices to use vIOMMU
2691         </summary>
2692         <description>
2693           It is now possible to turn on IOTBL for the vIOMMU and have VirtIO
2694           devices use it, provided they have been configured appropriately.
2695         </description>
2696       </change>
2697     </section>
2698     <section title="Improvements">
2699       <change>
2700         <summary>
2701           qemu: block copy job can be used with persistent domains
2702         </summary>
2703         <description>
2704           Until now it was not possible to use block copy with persistent VMs.
2705           In use cases where it's not required to recover the job after VM
2706           shutdown, it's possible to specify VIR_DOMAIN_BLOCK_COPY_TRANSIENT_JOB
2707           flag to start the copy job.
2708         </description>
2709       </change>
2710       <change>
2711         <summary>
2712           JSON pseudo-protocol backing store parser supports new format of qemu 2.9
2713         </summary>
2714         <description>
2715           QEMU 2.9 modified a few structures corresponding to the JSON format
2716           of specifying a backing store for a disk image. Libvirt now implements
2717           the new format.
2718         </description>
2719       </change>
2720       <change>
2721         <summary>
2722           Capabilities now include info about host's CAT settings
2723         </summary>
2724         <description>
2725           Various information about resource control from the host is
2726           gathered and presented in capabilities if available.
2727         </description>
2728       </change>
2729       <change>
2730         <summary>
2731           apparmor: Several improvements
2732         </summary>
2733         <description>
2734           Allow access to Ceph config, EFI firmware on both x86_64 and
2735           aarch64, device tree on ppc64 and more.
2736         </description>
2737       </change>
2738       <change>
2739         <summary>
2740           qemu: Support host-model on POWER9 machines
2741         </summary>
2742       </change>
2743     </section>
2744     <section title="Bug fixes">
2745       <change>
2746         <summary>
2747           qemu: snapshot: retrieve image metadata from user provided files
2748         </summary>
2749         <description>
2750           Disk images of an external snapshot created with
2751           VIR_DOMAIN_SNAPSHOT_CREATE_REUSE_EXT flag specified would not be
2752           scanned for metadata after recent changes.
2754           The metadata is necessary to allow keeping relative paths between
2755           images when doing a block-commit.
2756         </description>
2757       </change>
2758       <change>
2759         <summary>
2760           Parse decimal numbers in a locale-independent way
2761         </summary>
2762         <description>
2763           Some locales, such as <code>de_DE</code> and <code>pt_BR</code>,
2764           use comma rather than dot to separate the integer part from the
2765           fractional part of a decimal number; however, several data sources
2766           such as the kernel use a locale-independent representation and need
2767           to be treated accordingly.
2768         </description>
2769       </change>
2770       <change>
2771         <summary>
2772           Support compilation with newer compiler and libc versions
2773         </summary>
2774         <description>
2775           Several fixes have been included to make compilation with Clang
2776           4.0.0, GCC 7.1 and glibc >= 2.25.90 possible.
2777         </description>
2778       </change>
2779       <change>
2780         <summary>
2781           qemu: Query name for vhost-user interfaces at runtime
2782         </summary>
2783         <description>
2784           This makes it possible to use <code>virsh</code> subcommands such
2785           as <code>domiflist</code> and <code>domifstat</code> on vhost-user
2786           interfaces.
2787         </description>
2788       </change>
2789       <change>
2790         <summary>
2791           qemu: Set MTU for hotplugged interfaces correctly
2792         </summary>
2793         <description>
2794           When hotplugging a network interface, the MTU was only set on the
2795           guest side. Set it on the host side as well.
2796         </description>
2797       </change>
2798       <change>
2799         <summary>
2800           qemu: Forbid updating MTU for interfaces of running guests
2801         </summary>
2802         <description>
2803           The MTU setting can't be modified while the guest is running, so any
2804           attempt to alter it at runtime will now result in an error rather
2805           than being silently ignored.
2806         </description>
2807       </change>
2808       <change>
2809         <summary>
2810           qemu: Fix specifying QXL heads with older QEMU releases
2811         </summary>
2812         <description>
2813           Specifying the number of QXL heads was not working correctly for
2814           QEMU releases older than 1.6.
2815         </description>
2816       </change>
2817       <change>
2818         <summary>
2819           qemu: Fix migration to older libvirt/QEMU versions
2820         </summary>
2821         <description>
2822           When the guest is started, libvirt updates the CPU definition to
2823           reflect the actual CPU features to enforce ABI. We need to send
2824           original and updated CPU definition in order to support migration
2825           to older libvirt/QEMU versions. Only the updated CPU definition
2826           was sent to destination.
2827         </description>
2828       </change>
2829     </section>
2830   </release>
2831   <release version="v3.4.0" date="2017-06-02">
2832     <section title="New features">
2833       <change>
2834         <summary>
2835           Improved streams to efficiently transfer sparseness
2836         </summary>
2837         <description>
2838           New extension to virStream was implemented so that
2839           virStorageVolDownload and virStorageVolUpload can preserve file
2840           sparseness.
2841         </description>
2842       </change>
2843       <change>
2844         <summary>
2845           I/O APIC type can be specified for QEMU/KVM domains
2846         </summary>
2847         <description>
2848           The <code>ioapic</code> tag was added to domain
2849           <code>features</code>, so the type of the I/O APIC can now
2850           be specified (e.g. putting it in userspace for KVM domains).
2851         </description>
2852       </change>
2853       <change>
2854         <summary>
2855           The reason for VM shutdown is reported, if known
2856         </summary>
2857         <description>
2858           QEMU 2.10 will be able to report the reason for shutting
2859           down (whether that was caused by the guest or not), and
2860           libvirt is prepared for that and reports that information in
2861           its shutdown event as well, if it is known.
2862         </description>
2863       </change>
2864     </section>
2865     <section title="Improvements">
2866       <change>
2867         <summary>
2868           Repository now has new README.md file
2869         </summary>
2870         <description>
2871           The new file uses markdown syntax, so it looks better on
2872           github and possibly other web pages, but it has also more
2873           useful information. The old README is now symlink to the
2874           new file.
2875         </description>
2876       </change>
2877       <change>
2878         <summary>
2879           qemu: Use GICv2 by default for aarch64/virt TCG guests
2880         </summary>
2881         <description>
2882           The emulated GICv3 has some limitations that make it unusable as a
2883           default; use GICv2 until they're sorted out. This change makes it
2884           once again possible to run aarch64/virt guests on a x86_64 host
2885           without having to tweak their configuration.
2886         </description>
2887       </change>
2888       <change>
2889         <summary>
2890           Additional capabilities for the node_device module
2891         </summary>
2892         <description>
2893           Introduce two new capabilities to the node_device module. The first
2894           is for CCW devices, most common on the S390 architecture. The second
2895           is for fibre channel-backed SCSI devices and exposes the
2896           fc_remote_port sub-capability to SCSI target devices.
2897         </description>
2898       </change>
2899       <change>
2900         <summary>
2901           Node devices now report Mediated device capabilities
2902         </summary>
2903         <description>
2904           Endpoint devices support new <code>mdev</code> capability
2905           and their parents now report the supported types in new
2906           <code>mdev_types</code> capability.
2907         </description>
2908       </change>
2909       <change>
2910         <summary>
2911           Capabilities now report information about host caches
2912         </summary>
2913         <description>
2914           If supported in the kernel, host capabilities will now list
2915           L3 caches. The code for other levels was added as well, but
2916           only L3 caches are reported currently.
2917         </description>
2918       </change>
2919       <change>
2920         <summary>
2921           POWER9 CPU model was added
2922         </summary>
2923         <description>
2924           It is now properly reported in host capabilities.
2925         </description>
2926       </change>
2927       <change>
2928         <summary>
2929           libxl: NUMA sibling distances are now reported in host capabilities
2930         </summary>
2931       </change>
2932       <change>
2933         <summary>
2934           VMDK version 3 files are now properly detected
2935         </summary>
2936       </change>
2937       <change>
2938         <summary>
2939           Interrupt remapping and Extended interrupt mode for IOMMU devices
2940         </summary>
2941         <description>
2942           These two new features can now be controlled with new
2943           <code>&lt;driver intremap='on/off' eim='on/off'/&gt;</code>
2944           tag for <code>iommu</code> devices.
2945         </description>
2946       </change>
2947       <change>
2948         <summary>
2949           Graphics in libxl domains now have default addresses
2950         </summary>
2951         <description>
2952           Even though there were default addresses before this change,
2953           they were not saved in the XML. It is now possible to see
2954           and control the listen addresses properly.
2955         </description>
2956       </change>
2957       <change>
2958         <summary>
2959           Default USB controllers are now added for devices in libxl domains
2960         </summary>
2961         <description>
2962           Even though they were added automatically when USB device
2963           was attached, they could've been missing in some other
2964           cases. The logic is now fixed so there are always USB
2965           controllers, even if there was none of them in the specified
2966           XML.
2967         </description>
2968       </change>
2969       <change>
2970         <summary>
2971           Limits for RPC messages were increased
2972         </summary>
2973         <description>
2974           Hitting the RPC limits we have is easier every day, so they
2975           were increased once again and some guessing logic was
2976           improved as well. It is now possible to get more stats than
2977           ever using the <code>virConnectGetAllDomainStats()</code>
2978           call and push through even bigger requests and replies for
2979           all APIs.
2980         </description>
2981       </change>
2982     </section>
2983     <section title="Bug fixes">
2984       <change>
2985         <summary>
2986           qemu: Create memory_backing_dir on startup
2987         </summary>
2988         <description>
2989           Libvirt's policy is that directories are created on startup if
2990           they don't exist. We've missed this one.
2991         </description>
2992       </change>
2993       <change>
2994         <summary>
2995           PCIe 4.0 cards now report proper link speeds
2996         </summary>
2997         <description>
2998           It could happen that the link speed for PCIe devices was not
2999           properly reported or the nodedev-dumpxml just failed. That
3000           was due to mistake in the field width, but should now work
3001           properly.
3002         </description>
3003       </change>
3004       <change>
3005         <summary>
3006           qemu: Do not report errors on shutdown
3007         </summary>
3008         <description>
3009           For some users, in some rare cases, it could happen that
3010           there was an error message "internal error: End of file from
3011           qemu monitor" in the logs even though no problem happened.
3012           The detection of these false positives was improved and such
3013           errors should not show any more.
3014         </description>
3015       </change>
3016       <change>
3017         <summary>
3018           User-specified UNIX socket paths for virtio channels should not be reset
3019         </summary>
3020         <description>
3021           It could happen, in some cases, that libvirt would mistake a
3022           user-specified path for its own generated one and thus
3023           remove it from the XML. The detection of such addresses was
3024           improved now.
3025         </description>
3026       </change>
3027       <change>
3028         <summary>
3029           Fix address reservation during RNG hot-plug
3030         </summary>
3031         <description>
3032           When error occurred in a specific point in time during the
3033           hot-plug of an RNG device, it could happen that an address
3034           was released even though another device was already using
3035           it, making it possible to hot-plug another device with that
3036           address, effectively having duplicated addresses in the XML.
3037         </description>
3038       </change>
3039     </section>
3040   </release>
3041   <release version="v3.3.0" date="2017-05-05">
3042     <section title="New features">
3043       <change>
3044         <summary>
3045           net: Add support for coalesce settings
3046         </summary>
3047         <description>
3048           Enabling data batching through these settings can improve network
3049           performance for guests.
3050         </description>
3051       </change>
3052       <change>
3053         <summary>
3054           qemu: Add support for guest CPU cache specification
3055         </summary>
3056         <description>
3057           This features allows fine-grained control of the cache behavior
3058           of the guest CPU.
3059         </description>
3060       </change>
3061       <change>
3062         <summary>
3063           qemu: Add support for the qemu-xhci USB controller
3064         </summary>
3065       </change>
3066     </section>
3067     <section title="Improvements">
3068       <change>
3069         <summary>
3070           hyperv: Support Hyper-V 2012 and newer
3071         </summary>
3072         <description>
3073           Starting with Hyper-V 2012 the API has changed causing the existing
3074           driver to be unable to send and process requests properly. This has
3075           been resolved by adding abstractions to handle the differences and
3076           ease handling such breaks if they happen in the future.
3077         </description>
3078       </change>
3079       <change>
3080         <summary>
3081           libxl: Add support for nested HVM domains
3082         </summary>
3083         <description>
3084           Xen has supported nested HVM domains since version 4.4. The
3085           libvirt libxl driver now supports nested HVM domains by
3086           specifying the host-passthrough CPU mode when defining a
3087           domain.
3088         </description>
3089       </change>
3090       <change>
3091         <summary>
3092           qemu: Implement ACPI support for aarch64 guests
3093         </summary>
3094         <description>
3095           Up until this point, ACPI support was only advertised for x86_64
3096           guests and disabling it for aarch64 guests was not possible at all.
3097         </description>
3098       </change>
3099       <change>
3100         <summary>
3101           vz: Add support for changing the number of vCPUs
3102         </summary>
3103       </change>
3104       <change>
3105         <summary>
3106           qemu: Automatically choose the best USB controller for guests
3107         </summary>
3108         <description>
3109           The recently introduced qemu-xhci USB controller is the best choice
3110           for both ppc64 and aarch64 guests, so use it by default on those
3111           architectures if available.
3112         </description>
3113       </change>
3114       <change>
3115         <summary>
3116           daemon: Increase default task limit for libvirtd
3117         </summary>
3118         <description>
3119           The default number of tasks for the pids cgroup controller is 512,
3120           which libvirtd can quickly bump into when starting lots of guests.
3121           Raise the limit to a more reasonable 32768.
3122         </description>
3123       </change>
3124       <change>
3125         <summary>
3126           docs: Include man pages describing key code names and values
3127         </summary>
3128       </change>
3129       <change>
3130         <summary>
3131           virsh: Report initialization errors
3132         </summary>
3133         <description>
3134           Sometimes virsh might be unable to start: when that happens, report
3135           useful diagnostics instead of failing silently.
3136         </description>
3137       </change>
3138     </section>
3139     <section title="Bug fixes">
3140       <change>
3141         <summary>
3142           nss: Don't require a network restart for libvirt_guest
3143         </summary>
3144         <description>
3145           Previously, the libvirt_guest NSS module would only work properly
3146           after the corresponding network had been restarted; now newly
3147           started guests will be reported correctly right away.
3148         </description>
3149       </change>
3150       <change>
3151         <summary>
3152           storage: Remove unavailable transient pools after restart
3153         </summary>
3154         <description>
3155           Solve an issue where transient storage pools would be stuck in an
3156           unmanageable state if the source disappeared and libvirtd was
3157           subsequently restarted.
3158         </description>
3159       </change>
3160       <change>
3161         <summary>
3162           storage: Fix capacity value for LUKS encrypted volumes
3163         </summary>
3164         <description>
3165           The 'capacity' value (e.g. guest logical size) for a LUKS volume is
3166           smaller than the 'physical' value of the file in the file system, so
3167           we need to account for that.
3168         </description>
3169       </change>
3170       <change>
3171         <summary>
3172           qemu: Fix regression when hyperv/vendor_id feature is used
3173         </summary>
3174         <description>
3175           Guests using the feature would not be started at all; it is now
3176           possible to start them as expected.
3177         </description>
3178       </change>
3179       <change>
3180         <summary>
3181           qemu: Do not crash on USB address with no port and invalid bus
3182         </summary>
3183       </change>
3184       <change>
3185         <summary>
3186           crypto: Always pad data before encrypting it
3187         </summary>
3188         <description>
3189           If this step is not performed, when the data length matches the
3190           chunk size the decryption routines will misinterpret the last byte
3191           of data as the padding length and fail to decode it correctly.
3192         </description>
3193       </change>
3194     </section>
3195   </release>
3196   <release version="v3.2.0" date="2017-04-02">
3197     <section title="New features">
3198       <change>
3199         <summary>
3200           The virt-host-validate tool now supports bhyve hypervisor
3201         </summary>
3202       </change>
3203       <change>
3204         <summary>
3205           Introduce NVDIMM memory model
3206         </summary>
3207         <description>
3208           NVDIMM is new type of memory introduced into QEMU 2.6. The idea is
3209           that we have a non-volatile memory module that keeps the data
3210           persistent across domain reboots and offers much faster data
3211           accesses. However, due to a bug in QEMU, this feature is not enabled
3212           for QEMUs older than 2.9.0.
3213         </description>
3214       </change>
3215       <change>
3216         <summary>
3217           qemu: Introduce support for generic PCIe Root Ports
3218         </summary>
3219         <description>
3220           For new controllers, a generic device (pcie-root-port) will be used
3221           by default instead of the Intel-specific device (ioh3420), provided
3222           the QEMU binary supports it.
3223         </description>
3224       </change>
3225       <change>
3226         <summary>
3227           qemu: Add support for checking guest CPU ABI compatibility
3228         </summary>
3229         <description>
3230           When migrating a domain to a different host, restoring a domain from
3231           a file or reverting a snapshot libvirt will make sure the guest CPU
3232           QEMU presents to the guest OS exactly matches the one provided on
3233           the source host (or before the domain's state was saved). This
3234           enhanced check may also be requested when starting a new domain to
3235           ensure the virtual CPU exactly matches the one specified in the XML.
3236         </description>
3237       </change>
3238       <change>
3239         <summary>
3240           qemu: Add support to migrate using TLS
3241         </summary>
3242         <description>
3243           Add the ability to migrate QEMU guests using TLS via a new flag
3244           VIR_MIGRATE_TLS or virsh migrate '--tls' option. Requires using at
3245           least QEMU 2.9.0 in order to work properly.
3246         </description>
3247       </change>
3248       <change>
3249         <summary>
3250           qemu: add mediated devices framework support
3251         </summary>
3252         <description>
3253           Recent kernel version introduced new mediated device framework, so
3254           provide an initial support of this framework for libvirt, mainly by
3255           introducing a new host device type in the XML.
3256         </description>
3257       </change>
3258       <change>
3259         <summary>
3260           qemu: Add support for setting TSC frequency
3261         </summary>
3262         <description>
3263           Setting TSC frequency is required to enable migration for domains
3264           with 'invtsc' CPU feature turned on.
3265         </description>
3266       </change>
3267       <change>
3268         <summary>
3269           Add support for block device threshold event
3270         </summary>
3271         <description>
3272           When using thin provisioning, management tools need to resize the
3273           disk in certain cases. To avoid having them to poll disk usage
3274           this version introduces an event which will be fired when a given
3275           offset of the storage is written by the hypervisor. Together with the
3276           API it allows registering thresholds for given storage backing
3277           volumes and this event will then notify management if the threshold
3278           is exceeded. Currently only the qemu driver supports this.
3279         </description>
3280       </change>
3281       <change>
3282         <summary>
3283            bhyve: Add support for UEFI boot ROM, VNC, and USB tablet
3284         </summary>
3285         <description>
3286           The bhyve driver now supports booting using the UEFI boot ROM,
3287           so non-FreeBSD guests that support UEFI could be booted without
3288           using an external boot loader like grub-bhyve. Video is also
3289           supported now, allowing to connect to guests via VNC and use
3290           an USB tablet as an input device. Please refer to
3291           the driver page for domain XML examples.
3292         </description>
3293       </change>
3294     </section>
3295     <section title="Improvements">
3296       <change>
3297         <summary>
3298           qemu: Detect host CPU model by asking QEMU on x86_64
3299         </summary>
3300         <description>
3301           Previously, libvirt detected the host CPU model using CPUID
3302           instruction, which caused libvirt to detect a lot of CPU features
3303           that are not supported by QEMU/KVM. Asking QEMU makes sure we
3304           don't start it with unsupported features.
3305         </description>
3306       </change>
3307       <change>
3308         <summary>
3309           perf: Add more perf statistics
3310         </summary>
3311         <description>
3312           Add support to get the count of cpu clock time, task clock time,
3313           page faults, context switches, cpu migrations, minor page faults,
3314           major page faults, alignment faults, emulation faults by
3315           applications running on the platform.
3316         </description>
3317       </change>
3318       <change>
3319         <summary>
3320           Write hyperv crash information into vm log
3321         </summary>
3322         <description>
3323           qemu's implementation of the hyperv panic notifier now reports
3324           information about the crash from the guest os. Starting with this
3325           version, libvirt logs the information to the vm log file for possible
3326           debugging.
3327         </description>
3328       </change>
3329     </section>
3330     <section title="Bug fixes">
3331       <change>
3332         <summary>
3333           QEMU: Use adaptive timeout for connecting to monitor
3334         </summary>
3335         <description>
3336           When starting qemu, libvirt waits for qemu to create the monitor
3337           socket which libvirt connects to. Historically, there was sharp 30
3338           second timeout after which the qemu process was killed. This
3339           approach is suboptimal as in some scenarios with huge amounts of
3340           guest RAM it can take a minute or more for kernel to allocate and
3341           zero out pages for qemu. The timeout is now flexible and computed by
3342           libvirt at domain startup.
3343         </description>
3344       </change>
3345       <change>
3346         <summary>
3347           Overwrite (clear) 2 KB instead of just 512 bytes when initializing logical device
3348         </summary>
3349       </change>
3350       <change>
3351         <summary>
3352           Describe the logical backend requirements better for pool-create-as
3353         </summary>
3354       </change>
3355     </section>
3356   </release>
3357   <release version="v3.1.0" date="2017-03-03">
3358     <section title="New features">
3359       <change>
3360         <summary>
3361           storage: Add Virtuozzo storage backend storage pool
3362         </summary>
3363         <description>
3364           Add new storage backend to support pool and volume management
3365           within the Virtuozzo Storage environment. Virtuozzo Storage is
3366           a highly available distributed software defined storage with
3367           built-in replication and disaster recovery.
3368         </description>
3369       </change>
3370       <change>
3371         <summary>
3372           qemu: Add support for memory backing with file source
3373         </summary>
3374         <description>
3375           Add support in numa topology for file source inside memory backing
3376           (hugepages are not needed) Three new elements
3377           &lt;source/&gt;,&lt;access/&gt; and &lt;allocation/&gt; were added
3378           to &lt;memoryBacking/&gt; element. Also new configuration parameter
3379           <code>memory_backing_dir</code> was added to qemu.conf.
3380         </description>
3381       </change>
3382       <change>
3383         <summary>
3384           network: make openvswitch call timeout configurable
3385         </summary>
3386         <description>
3387           Adding the ability to specify the timeout value in seconds for
3388           openvswitch calls in the libvirtd configuration file.
3389         </description>
3390       </change>
3391       <change>
3392         <summary>
3393           bhyve: add e1000 NIC support
3394         </summary>
3395         <description>
3396           Add support for e1000 NIC. Previously, the only available option
3397           was <code>virtio-net</code>.
3398         </description>
3399       </change>
3400       <change>
3401         <summary>
3402           libxl: add tunneled migration support
3403         </summary>
3404         <description>
3405           Add tunneled migration to libxl driver, which is always capable of
3406           strong encryption and doesn't require any extra network connection
3407           other than what's required for remote access of libvirtd.
3408         </description>
3409       </change>
3410       <change>
3411         <summary>
3412           qemu: add rendernode argument
3413         </summary>
3414         <description>
3415           Add a new attribute 'rendernode' to &lt;gl&gt; spice element.
3416         </description>
3417       </change>
3418       <change>
3419         <summary>
3420           nodedev: add drm capability
3421         </summary>
3422         <description>
3423           Add a new 'drm' capability for Direct Rendering Manager (DRM)
3424           devices, providing device type information.
3425         </description>
3426       </change>
3427       <change>
3428         <summary>
3429           Add API for individual/specific vCPU hotplug
3430         </summary>
3431         <description>
3432           The new API allows selecting specific vCPUs to be added/removed from
3433           the VM. The existing APIs allowed only adding/removing from the end
3434           which did not play well with NUMA.
3435         </description>
3436       </change>
3437     </section>
3438     <section title="Improvements">
3439       <change>
3440         <summary>
3441            virsh: pool-list: allow both --uuid and --name in one command
3442         </summary>
3443         <description>
3444           Adjust the virsh-pool command to support the --uuid and/or --name
3445           options in order to print just the --name and/or --uuid of pools.
3446         </description>
3447       </change>
3448       <change>
3449         <summary>
3450           Introduce MTU to domain &lt;interface/&gt; and &lt;network&gt;
3451         </summary>
3452         <description>
3453           Allow setting MTU size for some types of domain interface
3454           and network.
3455         </description>
3456       </change>
3457       <change>
3458         <summary>
3459           libxl: improve support for &lt;timer&gt; configurations
3460         </summary>
3461         <description>
3462           Add support for multiple timers. Extend the tsc timer to
3463           support the emulate mode. Improve conversion of timer XML
3464           to/from xl.cfg.
3465         </description>
3466       </change>
3467       <change>
3468         <summary>
3469           storage: modularize the storage driver
3470         </summary>
3471         <description>
3472           Split up the storage driver backends into loadable modules so that
3473           binary distributions don't have to compromise on shipping the storage
3474           driver with all backends which may pull in too many dependencies.
3475         </description>
3476       </change>
3477     </section>
3478     <section title="Bug fixes">
3479       <change>
3480         <summary>
3481           nodedev: Fabric name must not be required for fc_host capability
3482         </summary>
3483         <description>
3484           fabric_name is one of many fc_host attributes in Linux that is
3485           optional and left to the low-level driver to decide if it is
3486           implemented. For example the zfcp device driver does not provide a
3487           fabric name for an fcp host. The requirement for the existence of
3488           a fabric name has been removed by making it optional.
3489         </description>
3490       </change>
3491       <change>
3492         <summary>
3493           bhyve: change address allocation schema for SATA disks
3494         </summary>
3495         <description>
3496           Previously, the bhyve driver assigned PCI addresses to SATA disks
3497           directly rather than assigning that to a controller and
3498           using SATA addresses for disks. It was implemented this way
3499           because bhyve has no notion of an explicit SATA controller.
3500           However, as this doesn't match libvirt's understanding of
3501           disk addresses, the bhyve driver was changed to follow
3502           the common schema and have PCI addresses for SATA controllers
3503           and SATA addresses for disks. If you're having issues
3504           because of this, it's recommended to edit the domain's XML
3505           and remove &lt;address type='pci'&gt; from the &lt;disk&gt;
3506           elements with &lt;target bus='sata'/&gt; and let libvirt
3507           regenerate it properly.
3508         </description>
3509       </change>
3510       <change>
3511         <summary>
3512           libxl: maximum memory fixes
3513         </summary>
3514         <description>
3515           Fix reporting of domain maximum memory. Fix setting dom0
3516           maximum memory.
3517         </description>
3518       </change>
3519       <change>
3520         <summary>
3521           libxl: fix disk detach when &lt;driver&gt; not specified
3522         </summary>
3523       </change>
3524       <change>
3525         <summary>
3526           libxl: fix dom0 autoballooning with Xen 4.8
3527         </summary>
3528       </change>
3529       <change>
3530         <summary>
3531           qemu: Allow empty script path to &lt;interface/&gt;
3532         </summary>
3533         <description>
3534           Historically, this was always allowed. Unfortunately, due to some
3535           rework done for 1.3.2 release a bug was dragged in which suddenly
3536           stop allowing domain with such configuration to start.
3537         </description>
3538       </change>
3539     </section>
3540   </release>
3541   <release version="v3.0.0" date="2017-01-17">
3542     <section title="New features">
3543       <change>
3544         <summary>
3545           Domain events for metadata content changes
3546         </summary>
3547         <description>
3548           The domain events framework has a new event ID that can
3549           be used to get notifications when domain metadata content
3550           changes.
3551         </description>
3552       </change>
3553       <change>
3554         <summary>
3555           Event notifications for the secret object
3556         </summary>
3557         <description>
3558           The secret object now supports event notifications, covering
3559           lifcycle changes and secret value changes.
3560         </description>
3561       </change>
3562       <change>
3563         <summary>
3564           New localPtr attribute for "ip" element in network XML
3565         </summary>
3566       </change>
3567       <change>
3568         <summary>
3569           qemu: Support QEMU group I/O throttling
3570         </summary>
3571         <description>
3572           Add the capability to allow group I/O throttling via a new
3573           domain &lt;disk&gt; &lt;iotune&gt; subelement "group_name"
3574           to allow sharing I/O throttling quota between multiple drives.
3575         </description>
3576       </change>
3577       <change>
3578         <summary>
3579           nss: Introduce libvirt_guest
3580         </summary>
3581         <description>
3582           New <code>libvirt_guest</code> nss module that translates libvirt
3583           guest names into IP addresses.
3584         </description>
3585       </change>
3586       <change>
3587         <summary>
3588           daemon: Add support for runtime logging settings adjustment
3589         </summary>
3590         <description>
3591           Logging-related settings like log outputs and filters can now be
3592           adjusted during runtime using the admin interface without the
3593           necessity of the daemon's restart.
3594         </description>
3595       </change>
3596       <change>
3597         <summary>
3598           storage: Add virStorageVolInfoFlags API
3599         </summary>
3600         <description>
3601           Add the API to support using the VIR_STORAGE_VOL_GET_PHYSICAL
3602           flag in order to return the host physical size in bytes
3603           of the image container in the allocation field of the
3604           _virStorageVolInfo structure. The --physical flag has been
3605           added to the virsh vol-info command to access the data.
3606         </description>
3607       </change>
3608       <change>
3609         <summary>
3610           libxl: Implement virDomainGetMaxVcpus API
3611         </summary>
3612       </change>
3613       <change>
3614         <summary>
3615           storage: Add overwrite flag checking for logical pool
3616         </summary>
3617         <description>
3618           Add support for the OVERWRITE flags for the logical storage
3619           backend including checking for existing data on the target
3620           volumes when building a new logical pool on target volume(s).
3621         </description>
3622       </change>
3623       <change>
3624         <summary>
3625           qemu: Add support for guest CPU configuration on s390(x)
3626         </summary>
3627       </change>
3628     </section>
3629     <section title="Improvements">
3630       <change>
3631         <summary>
3632           perf: Add more perf statistics
3633         </summary>
3634         <description>
3635           Add support to get the count of branch instructions
3636           executed, branch misses, bus cycles, stalled frontend
3637           cpu cycles, stalled backend cpu cycles, and ref cpu
3638           cycles by applications running on the platform.
3639         </description>
3640       </change>
3641       <change>
3642         <summary>
3643           conf: Display &lt;physical&gt; for volume xml
3644         </summary>
3645         <description>
3646           Add a display of the &lt;physical&gt; size of a disk
3647           volume in the output of the volume XML.
3648         </description>
3649       </change>
3650       <change>
3651         <summary>
3652           qemu: Use virtio-pci by default for aarch64 mach-virt guests
3653         </summary>
3654         <description>
3655           virtio-pci provides several advantages over virtio-mmio, such
3656           as the ability to hotplug devices and improved performance.
3657           While opting in to virtio-pci has been possible for a while,
3658           newly-defined guests will now use it automatically.
3659         </description>
3660       </change>
3661       <change>
3662         <summary>
3663           vbox: remove support for VirtualBox 3.x and older
3664         </summary>
3665         <description>
3666           Those old VirtualBox versions have been unsupported by
3667           upstream for a long time and the API of 4.0 and newer has
3668           diverged enough to require code abstractions to handle differences.
3669           Removing support for those old versions drops lots of code from
3670           the driver and simplifies the logic to ease implementation of new
3671           features going forward.
3672         </description>
3673       </change>
3674       <change>
3675         <summary>
3676           virsh: pool-info: introduce option --bytes
3677         </summary>
3678         <description>
3679           Add option --bytes to virsh pool-info in order ti allow display
3680           of units in bytes rather than default of human readable output.
3681         </description>
3682       </change>
3683       <change>
3684         <summary>
3685           scsi: Add parent wwnn/wwpn or fabric capability for createVport
3686         </summary>
3687         <description>
3688           Improve the algorithm searching for the parent scsi_host device
3689           for vHBA/NPIV scsi_host creation. Rather than supplying the
3690           "parent" by name, it's now possible to define the parent by
3691           it's wwnn/wwpn or fabric_wwn in the node device create XML or
3692           the storage pool XML.
3693         </description>
3694       </change>
3695       <change>
3696         <summary>
3697           qemu: aggregate pcie-root-ports onto multiple functions of a slot
3698         </summary>
3699         <description>
3700           When pcie-root-ports are added to pcie-root in order to
3701           provide a place to connect PCI Express endpoint devices,
3702           libvirt now aggregates multiple root ports together onto the
3703           same slot (up to 8 per slot) in order to conserve slots.
3704           Using this method, it's possible to connect more than 200
3705           endpoint devices to a guest that uses PCIe without requiring
3706           setup of any PCIe switches.
3707         </description>
3708       </change>
3709     </section>
3710     <section title="Bug fixes">
3711       <change>
3712         <summary>
3713           lxc: fix accidental killing of containers during libvirtd restart
3714         </summary>
3715         <description>
3716           The libvirt_lxc process was previously not moved into the
3717           container scope. As a result, if systemd reloads its config
3718           after a container is started, when libvirtd is later restarted
3719           it will accidentally kill the containers.
3720         </description>
3721       </change>
3722       <change>
3723         <summary>
3724           qemu: Correct GetBlockInfo values
3725         </summary>
3726         <description>
3727           For an active domain, correct the physical value provided for
3728           a raw sparse file backed storage and the allocation value provided
3729           for a qcow2 file backed storage that hasn't yet been opened on
3730           the domain.
3731         </description>
3732       </change>
3733       <change>
3734         <summary>
3735           qemu: Make virtio console usable on ppc64 guests
3736         </summary>
3737         <description>
3738           The chardev detection code has been improved and can now handle this
3739           configuration properly.
3740         </description>
3741       </change>
3742       <change>
3743         <summary>
3744           qemu: Enable mount namespace
3745         </summary>
3746         <description>
3747           To avoid funny races with udev relabelling devices under our hands and
3748           to enhance security, libvirt now spawns each qemu process with its own
3749           <code>/dev</code>.
3750         </description>
3751       </change>
3752       <change>
3753         <summary>
3754           storage: Fix implementation of no-overwrite for file system backend
3755         </summary>
3756         <description>
3757           Fix file system storage backend implementation of the OVERWRITE
3758           flags to be consistent between code and documentation. Add checks
3759           to ensure that when building a new file system on a target volume
3760           that there is not something already on the disk in a format that
3761           libvirt can recognize.
3762         </description>
3763       </change>
3764       <change>
3765         <summary>
3766           qemu: Create hugepage path on per domain basis
3767         </summary>
3768         <description>
3769           Historically, all hugepage enabled domains shared the same path under
3770           hugetlbfs. This left libvirt unable to correctly set security labels
3771           on it. With this release, however, each domain is put into a
3772           separate path which is also correctly labeled.
3773         </description>
3774       </change>
3775       <change>
3776         <summary>
3777           conf: Reject domains with duplicate drive addresses
3778         </summary>
3779         <description>
3780           Reject duplicate drive addresses for disks and hostdevs at
3781           domain definition.
3782         </description>
3783       </change>
3784       <change>
3785         <summary>
3786           libxl: reverse defaults on HVM net device attach
3787         </summary>
3788         <description>
3789           Fixes network interface attach for HVM domains when no model is
3790           specified. Emulated hotplug isn't yet supported and hence we should
3791           default to the general working scenario.
3792         </description>
3793       </change>
3794       <change>
3795         <summary>
3796           libxl: always enable pae for x86_64 HVM
3797         </summary>
3798         <description>
3799           By default pae is disabled in libxl. Without an explicit &lt;pae/&gt;
3800           setting in the domain &lt;features&gt; configuration, an x86_64 HVM
3801           domain would be get an i686 environment. pae should always be enabled
3802           for x86_64 HVM domains.
3803         </description>
3804       </change>
3805       <change>
3806         <summary>
3807           qemu: Fix XML dump of autogenerated websocket
3808         </summary>
3809         <description>
3810           As a result autogenerated websocket port is regenerated on domain restore,
3811           migration and such as it should be.
3812         </description>
3813       </change>
3814     </section>
3815   </release>
3816   <release version="v2.5.0" date="2016-12-04">
3817     <section title="New features">
3818       <change>
3819         <summary>
3820           shmem: Add support for additional models
3821         </summary>
3822         <description>
3823           The shmem device can now utilize QEMU's ivshmem-plain and
3824           ivshmem-doorbell, more modern versions of ivshmem.
3825         </description>
3826       </change>
3827       <change>
3828         <summary>
3829           vbox: Add VirtualBox 5.1 support
3830         </summary>
3831       </change>
3832       <change>
3833         <summary>
3834           libssh: New transport
3835         </summary>
3836         <description>
3837           The new libssh transport allows one to connect to a running
3838           libvirtd via SSH, using the libssh library; for example:
3839           <code>qemu+libssh://server/system</code>.
3840         </description>
3841       </change>
3842       <change>
3843         <summary>
3844           vhost-scsi: Add support scsi_host hostdev passthrough
3845         </summary>
3846         <description>
3847           Add the capability to pass through a scsi_host HBA and the
3848           associated LUNs to the guest.
3849         </description>
3850       </change>
3851       <change>
3852         <summary>
3853           Allow debugging of gluster volumes in qemu
3854         </summary>
3855         <description>
3856           Users can now enable debug logging for native gluster
3857           volumes in qemu using the "gluster_debug_level" option in qemu.conf
3858         </description>
3859       </change>
3860       <change>
3861         <summary>
3862           Pre-allocate memory slots for memory hotplug
3863         </summary>
3864         <description>
3865           Slot numbers for memory devices are now automatically allocated and
3866           thus persistent. In addition slot numbers can be specified without
3867           providing a base address, which simplifies user configuration
3868         </description>
3869       </change>
3870       <change>
3871         <summary>
3872           qemu: Express devices will be placed on PCIe bus by default
3873         </summary>
3874         <description>
3875           For machine types that use a PCI Express root bus
3876           (e.g. x86_64/Q35 and aarch64/virt), any unaddressed PCI
3877           device that is an Express device (all virtio-1.0 devices,
3878           e1000e, nec-xhci, vfio assigned devices) will be placed on
3879           an Express controller (i.e. a pcie-root-port) instead of a
3880           legacy PCI controller (i.e. pci-bridge) with the root ports
3881           added as needed.
3882         </description>
3883       </change>
3884     </section>
3885     <section title="Improvements">
3886       <change>
3887         <summary>
3888           docs: Better documentation for migration APIs and flags
3889         </summary>
3890       </change>
3891       <change>
3892         <summary>
3893           vbox: Address thread safety issues
3894         </summary>
3895       </change>
3896       <change>
3897         <summary>
3898           virsh: Add support for passing an alternative persistent XML to migrate command
3899         </summary>
3900       </change>
3901       <change>
3902         <summary>
3903           vhostuser: Allow hotplug of multiqueue devices
3904         </summary>
3905       </change>
3906       <change>
3907         <summary>
3908           NEWS: Switch to an improved format
3909         </summary>
3910         <description>
3911           List user-visible changes instead of single commits for a better
3912           high-level overview of differences between libvirt releases.
3913         </description>
3914       </change>
3915       <change>
3916         <summary>
3917           website: Modernize layout and branding
3918         </summary>
3919         <description>
3920           The libvirt website looked very cluttered and outdated; it has now
3921           been completely overhauled, resulting in a design that's better
3922           organized and more pleasant to look at.
3923         </description>
3924       </change>
3925     </section>
3926     <section title="Bug fixes">
3927       <change>
3928         <summary>
3929           vz: Fix migration in P2P mode
3930         </summary>
3931       </change>
3932       <change>
3933         <summary>
3934           Forbid newline character in names of some libvirt objects
3935         </summary>
3936       </change>
3937       <change>
3938         <summary>
3939           Fix compilation on macOS
3940         </summary>
3941       </change>
3942     </section>
3943   </release>
3944 </libvirt>