Subject: CVS commit: pkgsrc/emulators/qemu
From: Ryo ONODERA
Date: 2015-08-12 08:55:59
Message id: 20150812065559.44DE298@cvs.netbsd.org

Log Message:
Update to 2.4.0

Changelog:
# System emulation

## Incompatible changes
* The handling of the floppy device controller is different between <2.4 and \ 
>=2.4 machine types that use the Q35 chipset (e.g. "-M pc-q35-2.3" \ 
vs. "-M pc-q35-2.4"). This can cause problems if you are defining \ 
floppy drives with command-line options such as "-global isa-fdc.driveA=id.
* The ARM 'virt' board default interface type has changed from IDE to virtio. \ 
This means that some incorrect command lines that we previously silently \ 
accepted will now fail with an error message like "qemu-system-arm: -drive \ 
file=img.qcow2,id=foo: Drive 'foo' is already in use because it has been \ 
automatically connected to another device (did you need 'if=none' in the drive \ 
options?)". As the error message suggests, you should add \ 
"if=none" to the -drive option to fix this.

## 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.
* Host floppy device pass-through (block driver "host_floppy") is \ 
deprecated, and will be dropped in a future release.
* Block device parameter aio=native has no effect without cache.direct=on. 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 configure option --disable-guest-base is unneeded and will be removed in a \ 
future release.

## Alpha
* Major fixes to the implementation of floating point exceptions.

## ARM
* New board model xlnx-ep108
* Support for ACPI v5.1 tables in the "-M virt" board.
* Support for instantiation sysbus devices from the command line (using \ 
"-device") in the "-M virt" board.
* Emulation of the stream ID for MSI writes, for use in GICv3.
* The "virt" board default drive type is now virtio; this means that \ 
drives created with if=virtio or with no if= specification will be created as \ 
drives plugged into a virtio-blk-pci device. Short form options like -hda will \ 
also create this kind of drive. (Note that at time of writing Linux only \ 
supports the virt board's PCI controller for 32-bit ARM kernels; support has not \ 
yet made it into the 64-bit kernels. So 64-bit guests will need to continue \ 
using long command lines and virtio-mmio for now.) Unfortunately this means that \ 
some old command lines will need to change -- see the "incompatible \ 
changes" section above for details.

## MIPS
* More accurate emulation of the dp8393x network card and RC4030 DMA/IOMMU \ 
controller.
* Support for microMIPS32 R6 emulation (enabled in new "-cpu \ 
mips32r6-generic")
* Support for unaligned R6 and MSA memory accesses in TCG
* Support for XPA in MIPS32 and LPA in MIPS64 (eXtended and Large Physical \ 
Addressing) emulation
* Support for MIPS UHI semihosting

## PowerPC
* The default RAM size for the pseries machine is 512 MB.
* Support of PCI device hotplug on SPAPR (pSeries).

## s390
* Channel I/O is now available when running with TCG. Thus, the default machine \ 
for qemu-system-s390x is now s390-ccw.
* Several other fixes for TCG (emulation) mode.
* Extended name and UUID in STSI 3.2.2 information block
* Support for reading/writing guest memory while holding the IPTE lock under \ 
KVM, including access register mode
* Various cleanups in the s390-virtio and virtio-ccw transports
* Support for diag288 watchdog (KVM only).
* Support for vector registers
* Add virtio-1 specific ccws to virtio-ccw (SET_REV and v1 version of SET_VQ)
** Revision 1 (and therefore virtio 1.0) is not yet enabled, however.
* The s390-ccw-virtio machine is now versioned; the first versioned machine is \ 
s390-ccw-virtio-2.4
** The s390-ccw alias has been removed

## SH
* Optimizations to code generated by TCG.

## SPARC
* Fix SunOS 4.1.4 boot on sun4m with OpenBIOS

## x86
* Improvements to system management mode emulation, including support for high \ 
SMRAM and TSEG on machines using the Q35 chipset.
* q35 machine types starting with pc-q35-2.4.0 do not have a floppy disk \ 
controller. It will be created if you use "-drive if=floppy", \ 
"-fda" or "-fdb" to add a floppy disk drive, or it can be \ 
created if necessary with "-device isa-fdc".
* q35 now implements the TCO watchdog. Unlike real hardware, the watchdog is \ 
disabled when the virtual machine boot, so as to let existing firmware run with \ 
new QEMU. This may change in the future, but the change would be restricted to \ 
new machine types.

## KVM
* Support for MMIO operations outside the "big QEMU lock". For now, \ 
this only applies to the ACPI PM timer, which can alone improve performance \ 
substantially for very large Windows guests as long as they do not span multiple \ 
NUMA nodes in the host. For guests that span multiple NUMA nodes more kernel \ 
changes are required.
* Support for system management mode (requires Linux 4.1).
* When running under KVM, CPUID information includes the ARAT ("Always \ 
running APIC timer") bit

# Device emulation and assignment
## ACPI
* Support for memory hot-unplug.
* S3/S4 states can be disabled for boards using the Q35 machine type via \ 
"-global ICH9_LPC.disable_s3=on" and"-global \ 
ICH9_LPC.disable_s4=on"

## Block devices
* Minimal support in NVMe emulation for the NVME_VOLATILE_WRITE_CACHE feature.
* The infamous floppy device controller is not added to Q35 boards if not \ 
explicitly requested and no floppy drives are specified with "-drive \ 
if=floppy".
* I/O throttling now supports "groups" so multiple disks can use share \ 
a budget (use -drive groups=<name>)
* Performance of the parallels image format block driver has been improved

## Character devices
* Improved support for flow control in virtio-serial.

## IDE
* Fix macio CDROM detection for PPC
* Fix macio data corruption bug under Darwin/OS X PPC
* AHCI support rerror=stop and werror=stop.

## Mouse/keyboard
* Support for virtio-keyboard, virtio-mouse, virtio-tablet.

## Network
* Support for the "rocker" L2 switch device.

## SCSI
* scsi-generic now supports migration.

## PCI/PCIe
* Support for extra PCI root buses using PCI expander bridge devices. Unlike \ 
PCI-PCI bridges, a PCI expander bridge's bus can be associated with a NUMA node, \ 
allowing the guest OS to recognize the proximity of a device to RAM and CPUs.

## TPM
* Support for TPM 2

## VFIO
* Support for resetting AMD Bonaire and Hawaii GPUs
* Platform device passthrough support for Calxeda xgmac devices

## virtio
* Support for up to 1024 queues.
* Support for ioeventfd in virtio-mmio.
* FIXME: virtio 1
* New virtio-gpu device (only supports accelerated 2D for now)
* New virtio-input-host, virtio-keyboard, virtio-mouse and virtio-tablet devices \ 
(and corresponding virtio-*-pci devices for use on a PCI bus).
* Support for cross-endian vhost (i.e. little-endian host and big-endian guest, \ 
or vice versa).
* vhost can now be enabled even if MSI-X is not
* virtio-balloon can tell the guest that it should deflate the balloon on OOM \ 
conditions.

## VGA
* Support for virtio-vga, a VGA device that also supports the virtio-gpu interface.

## Character devices
* Improved support for flow control in spice-char.

## GUI
* Support for OpenGL-based display rendering in the SDL2 and GTK+ backend. This \ 
is preparatory work for 3D acceleration.
* Improvements to the Cocoa front-end, fixing full-screen mode and adding a list \ 
of consoles to the View menu.
* The two extra keys in Brazilian 107-key keyboards are now usable.

## Monitor
* qmp: New MIGRATION event to communicate change in the migration state

## Migration
* Support for compression of RAM data using multiple threads for compression and \ 
decompression (using migration capability "compress" and migration \ 
parameters "compress_threads", "compress_level" and \ 
"decompress_threads").

## Network
* Support for multi-queue vhost-user backends.

## Block devices in system emulation
* The BLOCK_IMAGE_CORRUPTED event has a new "node-name" field.
* FIXME: Throttle groups
* Block device mirroring supports concurrent unmap (aka discard or trim) \ 
operations on the source device and can create a thin-provisioned image in this \ 
case.
* Block device mirroring can use discard or "write zero" operations to \ 
speed up copying of large zero regions.
* FIXME: incremental backup?

## Command-line options
* A longhand version of -global (-global driver=DRIVER,property=PROP,value=VAL) \ 
is introduced, to set properties globally for devices that have a period in \ 
their name. The older syntax -global DRIVER.PROP=VAL did not allow this.
* New option -fw_cfg to pass arbitrary binary data to the guest.

## TCG
* New command line option "-icount sleep=no". The option will run \ 
emulation at the maximum possible speed: every time the CPU would go to sleep, \ 
the virtual clock will move to the next timer deadline. For virtual machines \ 
that have no other sources of non-determinism (e.g. asynchronous block I/O, \ 
character devices or user input) this will also make execution deterministic.

# Block devices and tools
* The "null" block device now has a new "latency-ns" option \ 
to delay the answer from the block device.
* The iscsi driver can use the target's FUA capabilities to greatly improve \ 
roundtrip times in write-through caching modes (cache.writeback=off). These \ 
modes are recommended when the storage has a non-volatile (battery-backed) \ 
cache.
* Parallels format driver now supports image creation and write to the image. \ 
Performance is significantly improved.
* qcow2 performance improvements.
* qemu-io supports encrypted qcow2 images (which are deprecated).

# Audio
* Obsolete audio backends have been removed: esd (superseded by pulseaudio), \ 
winwave (superseded by dsound), fmod (not compatible with the GPL)

# Guest agent
* Support for building a .msi file with the Windows version of the guest agent \ 
("make msi"). This requires msitools.
* qemu-ga implements guest-get-fsinfo and guest-network-get-interfaces on Windows too

# User-mode emulation
* The default CPU for qemu-sh4 and qemu-sh4eb is the sh7785.

# Build dependencies
* QEMU now requires a minimum glib version of 2.22. (In particular, we will no \ 
longer build on a stock RHEL5 or Centos 5 system.)
* QEMU can now optionally be linked against tcmalloc.
* QEMU now compiles using clang 3.5 without warnings, which includes disabling \ 
GCC features not supported by clang.
* QEMU now compiles with ICC.
* libepoxy is required to compile QEMU with OpenGL support.
* Building on Mac OS X versions earlier than 10.5 is no longer supported.
* Sound on Windows now requires DirectSound (the old 'winwave' default audio \ 
backend has been dropped).

# Known issues
* SDL audio only works with SDL 1.x.
* Problems with QEMU for Windows and builds from newer versions of MinGW-w64, \ 
see this thread on qemu-devel (this is not a regression, other versions are also \ 
affected)
** Crash of 64-bit QEMU (Fix)
** Broken networking (Fix)
* Incomplete translations for GTK user interface

Files:
RevisionActionfile
1.141modifypkgsrc/emulators/qemu/Makefile
1.43modifypkgsrc/emulators/qemu/PLIST
1.105modifypkgsrc/emulators/qemu/distinfo
1.14modifypkgsrc/emulators/qemu/patches/patch-et
1.9modifypkgsrc/emulators/qemu/patches/patch-memory.c
1.1removepkgsrc/emulators/qemu/patches/patch-hw_block_fdc.c