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