Subject: CVS commit: pkgsrc/emulators/qemu
From: Ryo ONODERA
Date: 2015-12-18 23:39:33
Message id: 20151218223933.F2C7CFB88@cvs.NetBSD.org

Log Message:
Update to 2.5.0

Changelog:
== System emulation ==
* guard pages are now inserted after guest RAM, to guard against guest-triggered \ 
buffer overflow attacks

=== Incompatible changes ===
* The mips32r5-generic CPU was renamed to P5600
* Host floppy device pass-through (block driver "host_floppy") has \ 
been removed; it is still possible to use them just like any other device file, \ 
however, a medium change will no longer be passed through to the guest

=== Future incompatible changes ===
* Three options are using different names on the command line and in \ 
configuration file.  In particular:
** The "acpi" configuration file section matches command-line option \ 
"acpitable";
** The "boot-opts" configuration file section matches command-line \ 
option "boot";
** The "smp-opts" configuration file section matches command-line \ 
option "smp".
:-readconfig will standardize on the name for the command line option.
* Behavior of automatic calculation of SMP topology when some SMP topology \ 
options for -smp are omitted (sockets, cores, threads) will change in the \ 
future. If guest ABI needs to be preserved on upgrades while using the SMP \ 
topology options, users should either set set all options explicitly (sockets, \ 
cores, threads), or omit all of them.
* Image encryption is fatally flawed, and will be dropped entirely.  It'll \ 
remain available only in qemu-img, so you can use 'qemu-img convert' to convert \ 
encrypted images to uncrypted ones.
* Block device parameter aio=native has no effect without cache.direct=on.  It \ 
will be made an error.
* Block device parameter aio=native has no effect if qemu is compiled without \ 
libaio support.  It will be made an error.
* A few devices will be configured with explicit properties instead of \ 
implicitly.  Unlikely to affect users; for the full list, see the 2.3 ChangeLog.
* QMP command blockdev-add is still a work in progress.  It doesn't support all \ 
block drivers, it lacks a matching blockdev-del, and more.  It might change \ 
incompatibly.
* The s390-virtio machine has been deprecated for 2.5; it will be removed in \ 
2.6. s390x users should switch to the (default) s390-ccw-virtio machine.
* Changes to device "sdhci-pci" will make migration between old and \ 
new versions impossible.
* We intend to drop support for running QEMU on MacOSX 10.5 hosts in the QEMU \ 
2.6 release, unless somebody who uses it wishes to step forward and help us with \ 
regular testing.

=== Alpha ===
=== ARM ===
* The "virt" machine type supports passing SMBIOS to the firmware.
* Semihosting support on AArch64
* New i.MX31 SoC.
* The ZynqMP and Allwinner A10 platforms support AHCI.
* Support for VGICv3 in KVM
* Support for GICv3 in the ACPI tables.
* The "virt" machine now has a second PCIe MMIO region of 512GB in \ 
size in high memory. Note that older 32-bit ARM Linux kernels built without \ 
CONFIG_LPAE have a bug where the presence of this region in high memory causes \ 
them to refuse to use the PCIe controller at all. In this case you can either \ 
reconfigure your kernel with CONFIG_LPAE=y, or pass QEMU the "-machine \ 
highmem=off" option to disable the use of high memory for PCIe. The kernel \ 
bug is expected to be fixed in Linux kernel release 4.4.
=== MIPS ===
* The mips32r5-generic CPU was renamed to P5600
* Improvements to MIPS R6 emulation

=== PowerPC ===
==== pSeries ====
* Support for memory hotplug
* The shipped version of SLOF includes GPT support.
* Using VFIO doesn't need spapr-pci-vfio-host-bridge anymore.
* virtio-vga now supported on sPAPR guests.
* [[Features/HRandomHypercall | H_RANDOM hypercall]] device for providing good \ 
random data to the guests.
==== Mac99 ====
* Improve ability to boot MacOS 9 (based upon GSoC project "Implement \ 
support for Mac OS 9 in QEMU " by Cormac O'Brien)

=== s390 ===
* Storage keys are migrated.
* New "info skeys" command in HMP to dump the storage key for a given \ 
address.
* Support for virtio 1 in the virtio-ccw devices.
** A maximum virtio-ccw revision can be specified via the \ 
"max_revision" property: max_revision=0 may be used to enforce usage \ 
of legacy virtio mode.
* Support for boot from El Torito iso images on virtio-blk has been added.

=== SH ===
=== SPARC ===

* sun4u: Fix EBus device enumeration under FreeBSD SPARC64 (OpenBIOS)

=== TileGX ===
* New target.
=== x86 ===
* The emulated IOMMU (VT-d) supports devices behind a bridge
* QEMU will warn when using a "-cpu" model that includes unsupported \ 
features. These features are disabled automatically, just like in previous \ 
versions of QEMU
* /machine/icc-bridge was removed from the QOM tree. Software relying on \ 
icc-bridge to find CPU objects should use the "qom_path" field of \ 
"query-cpus" QMP command

==== CPU models and features ====
* Haswell and Broadwell CPU models now include ABM
* Cache information passthrough (which was enabled by default on "-cpu \ 
host") is now disabled by default
* ABM, POPCNT, and SSE4a are not enabled in the default CPU models (qemu64, \ 
qemu32) anymore, as many hosts don't support it
* RDTSCP was removed from AMD CPU models, as current KVM versions can't expose \ 
RDTSCP to guests in AMD hosts
* New Intel memory instructions (clflushopt/clwb/pcommit) are now supported
* TCG now supports Debug Extensions (CR4.DE)

==== KVM ====
* Support for Hyper-V-compatible reporting of crashes.

==== Xen ====
* Support for passthrough of Intel integrated GPUs.

=== Device emulation and assignment ===
* fw_cfg supports a DMA interface on ARM and x86.  This interface makes \ 
-kernel/-initrd much faster if supported by the firmware. SeaBIOS supports the \ 
DMA interface starting with release 1.9.0 (commit 06316c9d). The UEFI guest fw \ 
for ARM VMs (known as ArmVirtQemu or AAVMF) supports the DMA interface starting \ 
with git commit 953bcbcc / SVN r18545.
==== ACPI ====
==== Audio ====
==== Block devices ====
==== Character devices ====
==== IDE ====
* AHCI ATAPI PIO transfers greater than one sector are fixed. This helps on \ 
OVMF, which utilizes such transfers.
* Zero byte count limits will no longer hang ATAPI drives.
* ATAPI PIO reads, when the byte count limit is set to the ATAPI block size, are \ 
now asynchronous. This should help to prevent hangs due to missing CDROM media \ 
mounted via NFS.

==== Mouse/keyboard ====
==== Network ====
==== SCSI ====
* scsi-generic devices now can be used together with a "readonly=on" \ 
backend.
==== Shared memory device ====
* A sample implementation of the ivshmem client and ivhsmem server is included \ 
with QEMU.
* ivshmem supports a new "x-memdev" property that uses a memory object \ 
for the backend.  This makes it possible to use ivshmem with a hugetlbfs \ 
backend. This property is experimental and may be removed in future release in \ 
favour of an alternative ivshmem device.
* Use kvm irqfd for msi notifications
* Protocol change, native long -> LE int64_t

==== PCI/PCIe ====
* hotplug support added for multifunction devices. To use, add all functions \ 
except function 0 first. Adding function 0 exposes the device to the guest. \ 
Request removal on function 0. On guest acknowledge, all functions are ejected \ 
together.

==== TPM ====
==== VFIO ====
==== virtio ====
* virtio-gpu now supports 3D mode
* vhost-user now supports live migration. client changes are required to enable \ 
this. When used with an old client without migration support, vhost-user will \ 
now block migration (instead of failing silently)
* vhost-user now supports multi-queue. Use queues=# to enable this. client \ 
changes are required to enable this mode.  When used with an old client without \ 
multi-queue support, device will automatically fall back on using a single pair \ 
of queues.
* vhost-user protocol now includes protocol feature negotiation, including \ 
multiple new messages. When used with old clients, all new messages are \ 
automatically disabled.
* vhost-user no longer sents the RESET_OWNER message on device stop. The only \ 
QEMU version that sent it was 2.4, the message is now officially deprecated.
* migration now works when virtio 1 is enabled for virtio-pci
* For virtio-pci, virtio 1 performance on kvm on Intel CPUs has been improved \ 
(on kernel 4.4 and up).
* a new flag modern-pio-notify can be used to enable PIO for notifications in \ 
virtio 1 mode, to improve performance for host kernels older than 4.4, and \ 
processors without EPT support.
* virtio devices can now be placed on the pci express bus
* vhost is no longer disabled when guest does not use MSI-X. The vhostforce flag \ 
is no longer required.
* in virtio 1 mode, scsi passthrough is now disabled for virtio blk
* Please note that for virtio-pci, the modern (virtio 1) interface is still \ 
disabled by default. To enable, set the flag disable-modern=off.

==== VGA ====

=== Character devices ===
=== GUI ===
* New syntax for enabling TLS in the VNC server:
** Equivalent to <tt>-vnc hostname:0,tls</tt>: <tt>-object \ 
tls-creds-anon,id=tls0,endpoint=server -vnc hostname:0,tls-creds=tls0</tt>
** Equivalent to <tt>-vnc hostname:0,tls,x509=/path/to/certs</tt>: \ 
<tt>-object \ 
tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=no -vnc \ 
hostname:0,tls-creds=tls0</tt>
** Equivalent to <tt>-vnc \ 
hostname:0,tls,x509verify=/path/to/certs</tt>: <tt>-object \ 
tls-creds-x509,id=tls0,endpoint=server,dir=/path/to/certs,verify-peer=yes -vnc \ 
hostname:0,tls-creds=tls0</tt>
* The Cocoa GUI does not have show an 'open image file' dialog box anymore even \ 
if QEMU is started without arguments
* Thu curses GUI supports 256 colors and line graphics.

=== Monitor ===
* New "info iothreads" command.
* New "query-qmp-schema" command allows the caller to \ 
[[Features/QMP/Introspection | introspect the QMP schema]] used by QEMU.

=== Migration ===
* [[Features/PostCopyLiveMigration | Postcopy migration]] for migration of \ 
large/busy guests
* A more flexible [[Features/AutoconvergeLiveMigration | auto-converge \ 
mechanism]] (for busy guests)

=== Network ===
* Support for multiqueue in vhost-user.
* Support for network filters.  Currently, the only filter objects are \ 
"filter-buffer", which batches packets every N microseconds, and \ 
"filter-dump", which can be used to log the network traffic in a file. \ 
 Filters are attached to a netdev device using e.g. "-object \ 
filter-buffer,id=filter,netdev=net0,queue=rx,interval=1000" (which creates \ 
a 1ms filter-buffer).
=== Block devices in system emulation ===
=== Command-line options ===
=== TCG ===
* Improved system emulation performance for targets with software TLBs (e.g. SPARC).
* Initial support for [[Features/record-replay | record/replay]].

== Block devices and tools ==
* The HMP "change" command (QMP's \ 
“"lockdev-change-medium") now allows you to change the read-only \ 
mode of the device (e.g. when inserting a read-only floppy disk image into a \ 
previously R/W drive)
* Fine-grained control over a block device's tray with the new QMP commands \ 
"blockdev-open-tray", "blockdev-close-tray", \ 
"x-blockdev-insert-medium", and "x-blockdev-remove-medium" \ 
(the latter two are experimental for now)
* New "reopen" command in qemu-io
* block-dirty-bitmap-add and block-dirty-bitmap-clear transaction actions have \ 
been added to now fully support (transient) incremental bitmap usage and \ 
management.
* QMP transactions now support a "completion-mode" parameter which \ 
controls the completion behavior of jobs launched by transactions, which will \ 
allow them to fail together. See the \ 
[https://github.com/qemu/qemu/blob/master/docs/bitmaps.md bitmaps.md] \ 
documentation for how this affects incremental backups.
* Block I/O accounting can now report average queue depth, min/avg/max latency, \ 
and failed/invalid request counts
* qcow2 learnt a new option ''cache-clean-interval'', which allows to free \ 
unused cache entries after some time.
* An experimental QMP command ''x-blockdev-del'' was added as a completement for \ 
the (also still experimental) ''blockdev-add'' command.
* A new QMP command ''blockdev-snapshot'' that allows creating a snapshot using \ 
as overlay an image previously opened with ''blockdev-add''. This allows opening \ 
the overlay image with arbitrary run-time options, solving one of the \ 
limitations of ''blockdev-snapshot-sync''.
* It is now possible to open an image without its backing file by specifying the \ 
empty string as a backing file reference when opening the image. This is useful \ 
for creating snapshots, since images opened with ''blockdev-add'' are not \ 
supposed to have a backing file before the ''blockdev-snapshot'' operation.
* Host CD-ROM support now works on Mac OS X hosts
* Host floppy support has been removed (it was deprecated in QEMU 2.3)
* The temporary "x-data-plane=on/off" option for virtio-blk device is \ 
removed now, all users are requested to use the canonical "-object \ 
iothread,id=<id> -device virtio-blk,iothread=<id>,..." syntax.

== Audio ==

== Guest agent ==
* Add an optional qemu-ga.conf system configuration
* Support for dumping the configuration current file with --dump-conf
* Win32 support for guest-set-user-password
* New command guest-exec

== User-mode emulation ==
* The configure option --disable-guest-base has been removed.
== Build dependencies ==
* libcacard has been moved to a standalone project, hosted at \ 
git://anongit.freedesktop.org/spice/libcacard.  The libcacard library from QEMU \ 
2.4 can also be used to build QEMU 2.5.
* virtio-gpu 3D support requires virglrenderer.
== Known issues ==
* SDL audio only works with SDL 1.x.
* 64-bit QEMU might crash on Windows (problems with stack unwinding, depends on \ 
build environment, \ 
[http://repo.or.cz/w/qemu/ar7.git/commit/8fa9c07c9a33174905e67589bea6be3e278712cb \ 
possible fix])
* QEMU's configure script fails with pdksh from OpenBSD (see \ 
[https://bugs.launchpad.net/qemu/+bug/1525682 bug #1525682]. Using another shell \ 
with configure should work.

Files:
RevisionActionfile
1.147modifypkgsrc/emulators/qemu/Makefile
1.44modifypkgsrc/emulators/qemu/PLIST
1.109modifypkgsrc/emulators/qemu/distinfo
1.7modifypkgsrc/emulators/qemu/patches/patch-configure
1.3modifypkgsrc/emulators/qemu/patches/patch-tests_Makefile