* New features are not tested yet, for example SPICE protocol support.
* I have tested on NetBSD/i386 5.99.54 and DragonFly/i386 2.10.1 as host,
NetBSD/{amd64, i386, sparc} as guest.
Changelog:
0.14.1
virtio-blk: fail unaligned requests
qed: Fix consistency check on 32-bit hosts
exit if -drive specified is invalid instead of ignoring the "wrong" -drive
vhost: fix dirty page handling
Do not delete BlockDriverState when deleting the drive
vnc: tight: Fix crash after 2GB of output
lan9118: Ignore write to MAC_VLAN1 register
Don't allow multiwrites against a block device without lsi53c895a: add support for ABORT messages
virtio-pci: fix bus master work around on load
fix applesmc REV key
rbd: don't link with -lcrypto
net: Add the missing option declaration of "vhostforce"
lsi53c895a: Update dnad when skipping MSGOUT bytes
Revert "prep: Disable second IDE channel, as long as ISA IDE emulation doesn't support same irq for both channels"
isa-bus: Remove bogus IRQ sharing check
virtio-net: Fix lduw_p() pointer argument of wrong size
hw/sd.c: Add missing state change for SD_STATUS, SEND_NUM_WR_BLOCKS
vnc: Fix fatal crash with vnc reverse mode
qemu-char: Check for missing backend name
0.14.0
Targets
ARM
Most of the changes are related to bug fixes and improvements to match what the real hardware does. For now there is no new board or CPU.
MIPS
Host CPU consumption for idle guests
Timer fixes
FPU improvements
SH4
Various bug fixes and improvements including
SM501 2D engine copyrect support, needed to boot recent kernels
MMU mmaped TLB access, needed to boot recent kernels
Floating point exceptions and correct NaN support.
PPC
Fix running recent PPC64 kernels
New maintainer: Alexander Graf
Improve interrupt injection with KVM
Enable PV enabled guests for speedup with KVM
Floating point fixes
Add a ppc-440x5 Xilinx model
Add a virtex5 ml507 refdesign board for ppc-440x5
BookE MMU emulation improvements
s390x
No news, business as usual.
SPARC
Fix div(cc) and sdiv(cc) instruction emulation, fixes Xorg crash in the guest
Hosts
ARM
Fix random crashes
Fix 64-bit big-endian targets support
MIPS
Fix random crashes
IA64
Fix random crashes for 32-bit targets
Devices
IDE / AHCI
Added emulation layer for an ICH-9 AHCI controller (not yet stable). Tested with Linux, OpenBSD, Windows Vista and Windows 7. The AHCI emulation supports NCQ, so multiple read or write requests can be outstanding at the same time.
to use it, use the following command line snippet: -drive id=disk,file=<your image goes here>,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0
SCSI
Various bug fixes, no new features.
USB
Added USB support for remote wakeup, allowing the guest to suspend the USB bus when idle, which in turn reduces the CPU overhead of an idle machine.
The USB subsystem also got a bunch of patches to prepare it for USB 2.0 support.
virtio
virtio-pci can use ioeventfd for virtqueue notify. On systems that support KVM, the ioeventfd mechanism can be used to make virtqueue notify a lightweight exit by deferring hardware emulation to the iothread and allowing the VM to continue execution. This model is similar to how vhost receives virtqueue notifies. The result of this change is improved performance for userspace virtio devices. Virtio-blk throughput increases especially for multithreaded scenarios and virtio-net transmit throughput increases substantially. Read the commit message for more details.
Various fixes and stabilization for live-migration:
Various virtio-net improvements:
Make tx_timer timeout configurable
Limit number of packets sent per TX flush
Introduce a new bottom half packet TX
Fix cross-endianness support
PCI/PCI Express
Improved PCI Express support and functionalities with the implementation of:
flr (Function Level Reset)
aer (Advanced Error Reporting) and other improvements
A new monitor command to inject errors into the PCI bus: pcie_aer_inject_error
Implementation of Message Signaled Interrupts (MSI/MSI-X) support
Separation of the PCI bridge code from the main PCI code.
Sound
New Intel HD Audio support, adding three new devices:
intel-hda: Intel HD Audio Controller, the PCI device.
hda-duplex: HDA Codec. Attaches to the HDA bus. Supports 16bit stereo, rates 16k -> 96k, playback, recording and volume control (with CONFIG_MIXEMU=y).
hda-output: HDA Codec without recording support. Subset of the hda-duplex codec. Use this if you don't want your guests access your mic.
Usage: add '-device intel-hda -device hda-duplex' to your command line.
Tested guests:
Linux works.
Win7 works.
DOS (mpxplay) works.
WinXP doesn't work.
Real Time Clock
Fix binary/BCD mode switch
Video
Fix cirrus VGA crash with some guests
Fix curses big endian support
Block Drivers
qcow2
Added a writeback metadata cache. This improves performance of scenarios with lots of cluster allocations noticably (e.g. installation or after taking a snapshot), in some benchmarks by a factor of ten or more. Use cache=none or cache=writeback to take advantage from this change.
Copy snapshots out of QCOW2 disk, eg: qemu-img convert -f qcow2 -O qcow2 -s snapshot_name src_img bck_img
Zero-copy read and write operations
Other fixes and code cleanups:
qcow2: Invalidate cache after failed read
block: Allow bdrv_flush to return errors
qcow2: Simplify image creation
qcow2: Fixes unaligned access on IA64
qed
Introduction of the QEMU Enhanced Disk (qed) image format. It is a disk image format that forgoes features found in qcow2 in favor of better levels of performance and data integrity. Due to its simpler on-disk layout, it is possible to safely perform metadata updates more efficiently.
More information about qed: http://wiki.qemu.org/Features/QED
Initial thread discussion: http://lists.nongnu.org/archive/html/qemu-devel/2010-09/msg00310.html
ceph/rbd
Introduction of the new ceph/rbd block driver. RBD is an block driver for the distributed file system Ceph.
More information about ceph: http://ceph.newdream.net/
nbd
Improve qemu-nbd performance by 4400 %. This patch combines the reply header and payload send operation.
Introduce NBD named exports.
Spice
New support for the SPICE protocol. The project main focus is to provide high-quality remote access to QEMU virtual machines. More information about SPICE can be found at the project's web site: http://spice-space.org/
New qxl device. qxl is a paravirtual graphics card. The qxl device is the bridge between the guest and the spice server (aka libspice-server). The spice server will send the rendering commands to the spice client, which will actually render them. The spice server is also able to render locally, which is done in case the guest wants read something from video memory. Local rendering is also used to support display over vnc and sdl. qxl is activated using -vga qxl. qxl supports multihead, additional cards can be added via '-device qxl.
Relevant commits:
spice: core bits
spice: add keyboard
spice: add mouse
spice: simple display
spice: add tablet support
spice: tls support
spice: make compression configurable.
spice: add config options for channel security.
spice: add config options for the listening address
spice: add misc config options
spice: add audio
spice: add qxl device
spice: connection events.
QMP / monitor
TODO: QMP is now stable, except for error reporting?
The work to facilitate the management of QEMU instances has been improved. QMP has received various fixes. Now it is possible to call a traditional monitor command through QMP, in case your application depends on the output or the command is not yet ported to QMP.
New commands:
query-spice / info spice
human-monitor-command
set_password
drive_del
block_resize command, allowing resizing of block devices while qemu is running. For virtio-blk the size is updated automatically when this command is issued on the host. IDE is not supported. For SCSI devices the new size can be updated in Linux guests by doing the following shell command:
echo > /sys/class/scsi_device/0:0:0:0/device/rescan
Tracing
Introduction of platform-independent tracing, more information about it: http://wiki.qemu.org/Features/Tracing
Documentation and tutorial: http://git.qemu.org/qemu.git/plain/docs/tracing.txt
Some relevant commits:
Add trace-events file for declaring trace events
Add a DTrace tracing backend targetted for SystemTAP compatibility
Add LTTng Userspace Tracer backend
Add simple built-in tracing backend
Add stderr trace-event backend:
Support for dynamically enabling/disabling trace events
Specify trace file name
Add trace-file command to open/close/flush trace file
Other stuff
Extend -option-rom command to have additional parameter bootindex
Little endian / big endian MMIO framework. Until now, most devices had special hacks to allow them to work on big and little endian systems (ppc / x86). With that framework, they should mostly work with both and not require and device specific hacks anymore.
Changes in 1.3.24:
* Various DirectInput improvements.
* Support for line breaking in Uniscribe.
* More UI elements in builtin Shell Explorer.
* Some more D3DX9 functions.
* Improved support for shell known folders.
* Various bug fixes.
Changes in 1.3.23:
* Support for stubless COM proxies on x86-64.
* Builtin dxdiag now outputs real information.
* Monochrome bitmap format in the DIB engine.
* Beginnings of a true shell Explorer builtin.
* A number of new D3DX9 functions.
* More support for Indic text shaping.
* Various bug fixes.
3.4 to 3.4.1: (June 11, 2011)
* Re-enabled 'grabmouse' commandline argument and associated
functionality with the following changes:
- it is changed in the "Input Settings' UI, not in 'Video Settings'
- it only has meaning while in emulation mode
- it is enabled by default
* Fixed bug with emulation of paddles using the mouse most evident in
Warlords; movement was being filtered out if the mouse was moved too
fast. There's still more work required in this area, however.
* Fixed bug with analog axes on gamepad devices, whereby jittering in
these axes would override input from digital axis, hat or keyboard
input.
* Fixed bug when switching to the debugger and back again would
sometimes cause an extra mouse motion event (which would cause the
emulation to think the mouse was moved and move the player
accordingly).
* Tweaked bankswitch autodetection code for 4A50 bankswitching; several
more test ROMs are automatically detected.
* The 'saverom' debugger command now saves ROMs in your home
directory by default if you don't specify a valid path. This fixes
a bug whereby ROMs were saved in strange locations and couldn't later
be found.
* Fixed bug in automatically executing the debugger 'autoexec.stella'
file; any commands it contained weren't actually being executed.
* Zero-byte ROMs are no longer loaded and mis-detected as Supercharger
images.
3.3 to 3.4: (May. 29, 2011)
* Many improvements to input handling, particularly with the mouse and
paddles:
- The mouse can now be used to emulate a joystick, booster-grip or
driving controller.
- The mouse now controls only one device at a time (1 of 4 paddles,
1 of 2 joysticks, etc), instead of devices from both virtual ports.
- The sensitivity for digital and mouse input (for paddles) can now
be set separately with the 'dsense' and 'msense' commandline
arguments, and from within the Input Settings UI.
* Added support for the 2600-daptor device (2600-daptor.com), which is
similar to a Stelladaptor but improves handling of paddles. Thanks
go to Tom Hafner for a complimentary test sample of this device.
* Added new controller types 'Paddles_IAxis', 'Paddles_IDir', and
'Paddles_IAxDr', which invert the paddle axis, direction, and
axis+direction, respectively. These are used for certain ROMs
that have the axis or direction inverted from normal (for example,
using the paddles causes on onscreen object to move up and down vs.
left and right). All applicable ROMs in the internal database
have been updated.
* Added preliminary support for emulating ARM code to the DPC+
bankswitching scheme (thanks to Batari). Related to this, fatal
errors in the DPC+ ARM code are now caught and shown in the debugger.
* Updated internal ROM properties database to ROM-Hunter version 6
(thanks go to RomHunter for his tireless research in this area).
* The ROM audit dialog now automatically selects the current
directory in the ROM launcher, and reloads the directory after
the audit is complete.
* Removed the 'grabmouse' functionality; the mouse is now always
grabbed while playing a game, and released otherwise.
* Updated built-in version of the PNG library to the latest version.
* Support for Indic text shaping.
* Generation of stubless code in the IDL compiler.
* Support for X files in D3DX.
* 4- and 24-bit bitmap formats in the DIB engine.
* Listview performance improvements.
* Various bug fixes.
* Support for installation rollbacks in MSI.
* 8- and 16-bit bitmap formats in the DIB engine.
* Fixes in the XInput2 mouse support.
* Better support for text shaping in Uniscribe.
* Improvements to the Item common dialog.
* More MSVC runtime functions.
* Various bug fixes.
* Option to clip the mouse inside fullscreen windows.
* Support for persistent HTTP connections.
* Initial implementation of the XML writer.
* Support for drawing rectangles in the DIB engine.
* Volume control in MMDevAPI.
* More MSVC runtime functions.
* Various bug fixes.
* New sound driver architecture for MMDevAPI.
* Better support for relative mouse events in DInput.
* Debugger support for the ARM platform.
* Various improvements in D3DX9.
* More MSVC runtime functions.
* Various bug fixes.
Rebuilt IRQ handling. (zones)
Improved overall timings, now Snes9x can handle events in a opcode a little. (zones)
Improved screen interlace and sprite interlace supports. (OV2, zones)
Fixed Hi-Res pixel plotter. (BearOso, zones, OV2)
Fixed C4 for Mega Man X2's "weapon get" screen. (Jonas Quinn)
Fixed Super Buster Bros. graphics after reset. (Jonas Quinn)
Improved SA-1 support. (zones)
Added SA-1 CC2 support. (Jonas Quinn, byuu)
Fixed SA-1 NMI override mode. (zones)
Fixed Dual Orb 2 sound glitch. (byuu)
New APU timing hack, fixes various games that exhibit problems with Blargg's SNES_SPC library. (OV2)
Fixed the problem that echo buffer breaks IPL ROM. (zones, OV2)
Fixed movie snapshot unfreeze inconsistency. (gocha)
Faster config file saving. (OV2)
Fixed BlockInvalidVRAMAccess config file option. (windows port, unix port and gtk legacy config) (Jonas Quinn)
Remove POSIX dup and access calls, and rename qword to fix compilation with Cell SDK. (BearOso)
Fixed PS3 version save state crash by using heap allocation for soundsnapshot. (danieldematteis)
Fixed crash relating to double-closed descriptor. (BearOso)
Removed CPUShutdown speedhack, DisableHDMA and DisableIRQ options. (zones)
Removed remaining outdated asm code. (zones)
JMA 64 bit support. (kode54, Nach, friedrich.goepel)
GTK+, Win32, Mac: Added optional Hi-Res blending. (BearOso, OV2, zones)
GTK+, Win32: Support for bsnes-style XML shaders. (BearOso, OV2)
Unix : Fixed segfault and hang-up with -DNOSOUND. (zones)
GTK+ : Added ability to set specific folders for SRAM, patches, snapshots, etc. (BearOso)
GTK+ : Fixed many permissions issues with config folders. (BearOso)
GTK+ : Updated compatibility with latest GTK+ and GtkBuilder. Added experimental support for GTK+ 3.x. (BearOso)
GTK+ : Updated software output to use cairo and added the ability to use bilinear-filtering with it. (BearOso)
GTK+ : Fixed issues where cheats wouldn't stay enabled. (BearOso)
GTK+ : Fixed focus issue when there is no window manager. (BearOso)
GTK+ : Fixed X Visual incompatibilities and expose problems in the Xv and OpenGL outputs. (BearOso)
GTK+ : Fixed vsync with new X Server and NVIDIA drivers. (BearOso)
GTK+ : Added "Reduce input lag" option to OpenGL output. (BearOso)
GTK+ : Added a visual indication of the expected video refresh rate for the currently selected sound input rate. (BearOso)
slight fix.
* Changes in VICE 2.3
======================
** General
----------
- Added x64sc, the accurate C64 emulator:
* VIC-II emulation rewritten from scratch using results from extensive
testing with newly written test programs on real hardware.
* Emulation is done on a cycle by cycle basis combined with pixel exact
dot clock domain handling.
* Accurate handling of all possible in-line splits of VIC-II registers
and graphics data.
* C64 model and even individual chip revisions can be selected for very
detailed emulation of their differences.
* Equally accurate PAL, NTSC and PAL-N emulation.
We believe x64sc is one of the most accurate C64 emulators at the
moment.
- Drive improvements, including weak bit emulation.
- Major reSID overhaul:
* Emulation of all known pipeline delays for full cycle accuracy.
* New shift register model based on revectorized die photograps.
* Accurate DAC models based on revectorized die photograps.
* Emulation of floating waveform DAC input for waveform 0.
* Advanced 6581 transistor level filter model based on revectorized
die photograps, yielding unprecedented accuracy.
- CRT Emulation (former "PAL emulation") is now available regardless of
video mode or -chip and works in all emulators.
NOTE: Color gamma range changed. You may need to set to 2.200 manually.
(ColorGamma=2200)
- Added "True aspect ratio" option.
- Sound buffer overflows reduced and the error replaced with a warning.
- Various monitor improvements (io details, expansion port status ...)
- Removed little used Emulator ID feature.
- VIA wrap handling rewritten to fix problems with timer 2.
- Added autostart option to do LOAD ,8 instead of ,8,1.
- RESTORE key presses are now distributed randomly across a frame.
- Improved accuracy of CIA interrupts. (6526/6526A selectable)
** C64/C128 changes
-------------------
- Cartridge emulation improvements. Many broken cartridges fixed, and the
following ones added:
* Action Replay 2
* Action Replay 3
* Capture
* Diashow Maker
* EXOS
* Final Cartridge Plus
* Freeze Frame
* Freeze Machine
* Game Killer
* MACH 5
* Magic Voice
* MMC Replay
* Prophet 64
* Snapshot 64
* Super Explode V5
* Super Snapshot
- Added emulation of the passthrough port of MMC64, Magic Voice and IEEE488
cartridges.
- CIA TOD 50/60 Hz toggle emulation fixed.
- Improved 1351/paddles port MUX emulation.
** C64 changes
--------------
- Added Drean (PAL-N) emulation.
- Fixed bug with autostart mode Inject-to-RAM. It now writes to RAM under
I/O correctly.
** C128 changes
---------------
- Fixed a bug with autostarting t64 images.
** VIC20 changes
----------------
- Added Vic Flash Plugin cartridge emulation.
- Fixed video cache & reverse bug.
- Fixed bug in attaching 4kB cartridges.
- Fixed autostarting bug, mostly seen with tape images.
** PLUS4 changes
----------------
- Fixed crashes in NTSC mode.
- Added v364 speech emulation.
** PET changes
--------------
- Added DWW emulation.
- Added userport DAC emulation.
** CBM2 changes
---------------
- Split 5x0 and 6x0/7x0 settings in the configuration file.
** Unix changes
---------------
- (Xaw) The menus can now be operated without holding the
mouse button down. Keyboard control is also available
(Shift-Alt-Z for left menu, Shift-Alt-X for right menu).
- (Xaw) Lightpen/gun support added.
- (GTK+) Fixed aspect ratio option added.
** SDL UI changes
-----------------
- Added vsid UI, FFMPEG and printer menus. The UI is complete.