https://wiki.qemu.org/api.php?action=feedcontributions&user=AF&feedformat=atomQEMU - User contributions [en]2024-03-29T06:57:50ZUser contributionsMediaWiki 1.39.1https://wiki.qemu.org/index.php?title=Planning/2.4/Testing&diff=4898Planning/2.4/Testing2015-07-09T17:13:39Z<p>AF: Initial</p>
<hr />
<div>== rc0 ==<br />
<br />
Build warnings for mingw64:<br />
<br />
In file included from /home/andreas/QEMU/qemu-cpu/include/hw/virtio/virtio.h:23:0,<br />
from /home/andreas/QEMU/qemu-cpu/include/hw/virtio/virtio-blk.h:18,<br />
from /home/andreas/QEMU/qemu-cpu/hw/block/virtio-blk.c:21:<br />
/home/andreas/QEMU/qemu-cpu/include/standard-headers/linux/virtio_ring.h: In function 'vring_init':<br />
/home/andreas/QEMU/qemu-cpu/include/standard-headers/linux/virtio_ring.h:146:23warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]<br />
vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16)<br />
^</div>AFhttps://wiki.qemu.org/index.php?title=Hosts/W32&diff=4866Hosts/W322015-06-19T14:49:25Z<p>AF: Correct paragraph on w64 for openSUSE.</p>
<hr />
<div>= QEMU on W32 and W64 hosts =<br />
<br />
This documentation is work in progress - more information will be added as needed.<br />
It will finally replace the old documentation from the QEMU user manual.<br />
I think that a wiki is better in keeping evolving documentation like this one up to date.<br />
<br />
While QEMU's main host platform is [[Hosts/Linux|Linux]], it is sometimes also useful to build or run it on members of the W32 / W64 family of operating systems (MS Windows 2000, Windows XP, Windows Vista, Windows 7, ...) or on ReactOS (a W32 clone).<br />
<br />
Running QEMU on the 64-bit variants is similar but needs additional documentation and currently some code patches. Support for W64 was added in [[ChangeLog/1.1|QEMU 1.1]].<br />
<br />
Please note that less developers work on QEMU for W32 / W64 hosts,<br />
so it might be less stable (but I don't think it is).<br />
<br />
Some system emulations on Linux use KVM, a special emulation mode which claims to reach nearly native speed.<br />
KVM is mainly used for x86 (32 and 64 bit) emulation on x86 hosts running Linux.<br />
There exists a highly experimental KVM for W32, but it is unknown whether it works with QEMU.<br />
<br />
== Building QEMU for W32 ==<br />
<br />
QEMU for W32 needs a fairly complete [[#Links|MinGW]] (or MinGW-w32) based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W32 on non-W32 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian squeeze for W32:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw32-runtime<br />
<br />
# Debian (squeeze?) for W64:<br />
apt-get install gcc-mingw32 mingw32-binutils mingw-w64<br />
<br />
SDL support is not included in standard MinGW,<br />
but packages for MinGW are available on the [[#Links|SDL homepage]].<br />
POSIX thread support is not included in Debian or Ubuntu. Latest QEMU will need it, so you have to get it<br />
from MinGW (see [[#Links|links]] below).<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
For Debian, the cross gcc is called i586-mingw32msvc-gcc.<br />
This cross prefix must be passed to QEMU's configure.<br />
<br />
# Debian cross configuration for W32:<br />
configure --cross-prefix=i586-mingw32msvc- [--extra-cflags=-mthreads]<br />
<br />
Compiler option is needed for gcc versions which don't support TLS (thread local storage)<br />
without it (version 4.4 which is Debian's default needs it!).<br />
<br />
Debian does not include a cross pkg-config, but it is required for cross builds.<br />
The following script can be saved as /usr/bin/i586-mingw32msvc-pkg-config and<br />
optionally be linked to /usr/bin/amd64-mingw32msvc-pkg-config.<br />
<br />
#!/bin/sh<br />
basename=`basename $0`<br />
prefix=/usr/`echo $basename|sed s/-pkg-config//`<br />
PKG_CONFIG_LIBDIR=$prefix/lib/pkgconfig<br />
export PKG_CONFIG_LIBDIR<br />
pkg-config --define-variable=prefix=$prefix $@<br />
<br />
==== Linux Mint based cross builds ====<br />
<br />
These instructions were tested with the Linux Mint Debian Edition on 2012-06-02.<br />
<br />
# Linux Mint for W32 and W64 (about 463 MiB):<br />
apt-get install mingw-w64<br />
<br />
==== OpenSUSE based cross builds ====<br />
<br />
Add http://download.opensuse.org/repositories/windows:/mingw:/win32/openSUSE_11.4 (update with your release version) to the list of software repositories. Then install at least the following packets (most of them are pulled via dependencies):<br />
<br />
mingw32-binutils<br />
mingw32-cpp<br />
mingw32-cross-binutils<br />
mingw32-cross-cpp<br />
mingw32-cross-gcc<br />
mingw32-cross-pkg-config<br />
mingw32-filesystem<br />
mingw32-gcc<br />
mingw32-glib2<br />
mingw32-glib2-devel<br />
mingw32-glib2-lang<br />
mingw32-headers<br />
mingw32-libgcc<br />
mingw32-libgmp<br />
mingw32-libintl<br />
mingw32-libintl-devel<br />
mingw32-libmpc<br />
mingw32-libmpfr<br />
mingw32-libSDL<br />
mingw32-libSDL-devel<br />
mingw32-libssp<br />
mingw32-runtime<br />
mingw32-zlib<br />
mingw32-zlib-devel<br />
<br />
This toolchain does not include libiberty.a in its binutils package, but it also does not need to. If building against a QEMU version that still pulls this in unconditionally, simply drop the <code>-liberty</code> from configure.<br />
<br />
For W64 use the corresponding win64 repository and mingw64- packages.<br />
<br />
==== Fedora based cross builds ====<br />
Fedora supports both W64 and W32 cross builds.<br />
The following instructions were tested on F17:<br />
<br />
# Fedora for W32 cross build:<br />
yum install mingw32-pixman<br />
yum install mingw32-glib2<br />
yum install mingw32-gmp<br />
yum install mingw32-SDL<br />
yum install mingw32-pkg-config<br />
<br />
# Fedora for W64 cross build:<br />
yum install mingw64-pixman<br />
yum install mingw64-glib2<br />
yum install mingw64-gmp<br />
yum install mingw64-SDL<br />
yum install mingw64-pkg-config<br />
<br />
Cross compilers usually are installed in /usr/bin with a prefix.<br />
This cross prefix must be passed to QEMU's configure.<br />
The prefix depends on your target platform.<br />
<br />
For Fedora W64 builds, the cross gcc is called x86_64-w64-mingw32-gcc.<br />
# Fedora cross configuration for W64:<br />
./configure --cross-prefix=x86_64-w64-mingw32-<br />
<br />
For Fedora W32 builds, it depends on Fedora version.<br />
For Fedora 17, the cross gcc is called i686-w32-mingw32-gcc.<br />
# Fedora 17 cross configuration for W32:<br />
./configure --cross-prefix=i686-w32-mingw32-<br />
<br />
For Fedora 18 and later, the cross gcc is called i686-w64-mingw32-gcc.<br />
# Fedora 18 and later cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
Note that "-mingw32-" (and for Fedora 18 and later, w64)<br />
appears in prefix for both W32 and W64 builds.<br />
<br />
=== Native builds ===<br />
<br />
Get and install MinGW. In addition, some more packages are needed:<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib_2.28.1-1_win32.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win32/glib/2.28/glib-dev_2.28.1-1_win32.zip)<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/gettext-runtime-dev_0.18.1.1-2_win32.zip)<br />
<br />
==== Tools (only needed for native builds) ====<br />
<br />
* pkg-config (http://ftp.gnome.org/pub/gnome/binaries/win32/dependencies/pkg-config_0.23-3_win32.zip)<br />
<br />
Get the QEMU source code (git or tarball), then run configure and make.<br />
<br />
== Building QEMU for W64 ==<br />
<br />
QEMU for W64 needs a fairly complete MinGW-w64 based development environment with tools (make, compiler, linker, ...) and some additional libraries.<br />
<br />
=== Cross builds ===<br />
<br />
Compilation of QEMU for W64 on non-W64 hosts (e.g. Linux hosts) is called cross compilation.<br />
Some Linux distributions (Debian, Ubuntu, Fedora and maybe others) already include packages needed for cross compilation, so the installation of these packages is the first step.<br />
<br />
==== Debian based cross builds ====<br />
<br />
# Debian cross configuration for W64:<br />
configure --cross-prefix=amd64-mingw32msvc-<br />
<br />
==== Fedora based cross builds ====<br />
<br />
# Fedora cross configuration for W32:<br />
./configure --cross-prefix=i686-w64-mingw32-<br />
<br />
==== Libraries (also needed for cross builds) ====<br />
<br />
* GLib Run-time (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib_2.22.4-1_win64.zip)<br />
* GLib Development (http://ftp.gnome.org/pub/gnome/binaries/win64/glib/2.22/glib-dev_2.22.4-1_win64.zip) - newer versions don't work because leading underscores for global symbols are missing<br />
* gettext-runtime Development (http://ftp.gnome.org/pub/gnome/binaries/win64/dependencies/gettext-runtime-dev_0.18.1.1-2_win64.zip)<br />
<br />
== Installation ==<br />
<br />
Installation is easy with the experimental installers from qemu.weilnetz.de.<br />
<br />
== Running QEMU for W32 ==<br />
<br />
User mode emulation is unsupported: it only works on BSD, Darwin and Linux.<br />
<br />
=== System emulation ===<br />
<br />
All QEMU system emulation should be working (that simply means I don't know of emulations which don't work,<br />
and those which I tried, namely x86 and mips, work well).<br />
<br />
=== Special W32 devices ===<br />
<br />
QEMU is based on MinGW, so some commonly used UNIX device names like /dev/null or /dev/zero can be used.<br />
W32 device names also work, especially names like //./PhysicalDrive0 for the first hard disk of the host<br />
(this name must be used with extreme care or you will likely crash your system).<br />
<br />
Text which is normally printed by QEMU to the console output channels (normally known as standard output = stdout and standard error output = stderr) might be written to files called stdout.txt and stderr.txt.<br />
If you want to see QEMU's help messages or if it does not work as expected, you should look for these files in the directory where your exe file is installed.<br />
<br />
== Links ==<br />
<br />
;MinGW Homepage<br />
:http://www.mingw.org/<br />
<br />
;MinGW-w64 Homepage (also supports MinGW-w32)<br />
:http://mingw-w64.sourceforge.net/<br />
<br />
;GLib-2.0 for MinGW<br />
:http://www.gtk.org/download/win32.php<br />
:http://www.gtk.org/download/win64.php<br />
<br />
;POSIX thread support for MinGW<br />
:http://sourceforge.net/projects/mingw/files/MinGW/pthreads-w32/<br />
<br />
;libSDL 1.2 for MinGW<br />
:http://www.libsdl.org/download-1.2.php</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.3/Testing&diff=4768Planning/2.3/Testing2015-04-09T02:31:39Z<p>AF: Document latest ppc and arm build failures, SeaBIOS issue</p>
<hr />
<div>== v2.3.0-rc0 status ==<br />
=== Known issues ===<br />
* Migration of virtio-blk is broken (patch posted: "[PATCH] virtio-blk: correctly dirty guest memory")<br />
<br />
=== Fixed issues ===<br />
* ahci-test fails on openSUSE Tumbleweed ppc64. (fixed in 2.3.0-rc1)<br />
* rcutorture test fails to build on openSUSE Tumbleweed ppc (gcc 4.8.3): <code>undefined reference to `__sync_fetch_and_add_8'</code> (will be fixed in 2.3.0-rc2)<br />
* The mac99 and pseries machines do not obey "-machine usb=no" currently (will be fixed in 2.3.0-rc2).<br />
* FW_CFG_ID is not defined on the arm/aarch64 virt board (will be fixed in 2.3.0-rc2)<br />
* The sdhci-pci device does not have a "drive" property, and does not support "-drive if=none" (will be fixed in 2.3.0-rc2).<br />
* query-command-line-options shows no options for -machine, breaks some libvirt features (will be fixed in 2.3.0-rc2)<br />
<br />
=== Won't be fixed before release ===<br />
* SeaBIOS has a typo in the error message it spits when surpassing 128KB. (Fix: "[PATCH] checkrom: Fix typo in error message"; not worth a respin)<br />
* NVMe guest ABI changed from 2.2 to 2.3.<br />
<br />
== v2.3.0-rc1 status ==<br />
=== Known issues ===<br />
* SeaBIOS built from sources may fail tests dependent on SMBIOS <code>_SM_</code> placement (SeaBIOS patch in openSUSE)<br />
<br />
== v2.3.0-rc2 status ==<br />
=== Known issues ===<br />
* x86_64 bios-tables-test and qemu-system-x86_64 broken on openSUSE 13.1/Tumbleweed ppc (patch available)<br />
* seccomp fails to build on openSUSE Tumbleweed armv7l for lack of <code>__NR_mmap</code> and <code>__NR_getrlimit</code></div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.3/Testing&diff=4675Planning/2.3/Testing2015-03-20T17:48:55Z<p>AF: List rcutorture build failure and be more precise about platform</p>
<hr />
<div>=== v2.3.0-rc0 status ===<br />
<br />
ahci-test fails on openSUSE Tumbleweed ppc64. (Fix: "[PATCH for-2.3 0/4] ahci: fix big endian PIO failures")<br />
<br />
rcutorture test fails to build on openSUSE Tumbleweed ppc (gcc 4.8.3): <code>undefined reference to `__sync_fetch_and_add_8'</code><br />
<br />
SeaBIOS has a typo in the error message it spits when surpassing 128KB. (Fix: "[PATCH] checkrom: Fix typo in error message")</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.3/Testing&diff=4672Planning/2.3/Testing2015-03-19T16:25:38Z<p>AF: List SeaBIOS typo</p>
<hr />
<div>=== v2.3.0-rc0 status ===<br />
<br />
ahci-test fails on ppc and ppc64.<br />
<br />
SeaBIOS has a typo in the error message it spits when surpassing 128KB.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.3/Testing&diff=4667Planning/2.3/Testing2015-03-18T23:28:27Z<p>AF: Initial</p>
<hr />
<div>=== v2.3.0-rc0 status ===<br />
<br />
ahci-test fails on ppc and ppc64.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.1&diff=4253Planning/2.12014-07-09T20:41:06Z<p>AF: Add known issue of failing test</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2013-04-17<br />
| Beginning of 2.1 development phase<br />
|-<br />
| 2014-05-17<br />
| Mid-point of development cycle<br />
|-<br />
| 2014-06-17<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| 2014-07-01<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag v2.1.0-rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| 2014-07-08<br />
| Tag v2.1.0-rc1,<br />
PCI/PC/VIRTIO/VHOST: only high priority fixes from here on.<br />
high priority means regression fixes or fixes in a new feature if<br />
there is no workaround.<br />
|-<br />
| 2014-07-15<br />
| Tag v2.1.0-rc2<br />
|-<br />
| 2014-07-22<br />
| Tag v2.1.0-rc3<br />
|-<br />
| 2014-07-29<br />
| Tag v2.1.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
* rc1 may fail [http://patchwork.ozlabs.org/patch/368321/ a string output visitor test]<br />
<br />
Also see [[Planning/2.1/Testing]].<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.1]] for full details.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.0&diff=4115Planning/2.02014-04-17T17:27:30Z<p>AF: Add link to Testing page.</p>
<hr />
<div>== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2013-12-17<br />
| Beginning of 2.0 development phase<br />
|-<br />
| 2014-01-22<br />
| Mid-point of development cycle<br />
|-<br />
| 2014-02-26<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. All features<br />
should have patches on the list by this date; major features should<br />
have initial code committed.<br />
|-<br />
| 2014-03-12<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag v2.0.0-rc0,<br />
only bug fixes committed after this point<br />
|-<br />
| <strike>2014-04-01</strike> 2014-04-03<br />
| Tag v2.0.0-rc1<br />
|-<br />
| 2014-04-08<br />
| Tag v2.0.0-rc2<br />
|-<br />
| (new rc) <strike>2014-04-xx</strike> 2014-04-15<br />
| Tag v2.0.0-rc3<br />
|-<br />
| <strike>2014-04-08</strike> <strike>2014-04-10</strike> 2014-04-17<br />
| Tag v2.0.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Also see [[Planning/2.0/Testing]].<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/2.0]] for full details.</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/2.0&diff=4089ChangeLog/2.02014-04-03T15:00:46Z<p>AF: Add note on --cxx= usage for AArch64 disassembler</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* All onboard buses now have distinct names, so that all of them can be reached with "-device bus=...". As a result of this, some buses that used to have duplicates got renamed:<br />
** i2c-bus.0 to i2c-bus.1 for machines n800, n810;<br />
** virtio-mmio-bus.0 to virtio-mmio-bus.3 for vexpress-a15, vexpress-a9;<br />
** virtio-mmio-bus.0 to virtio-mmio-bus.31 for virt;<br />
** usb-bus.0 to usb-bus.1 for xilinx-zynq-a9, fulong2e;<br />
** ide.0 to ide.1 for isapc, mips, g3beige, mac99, prep;<br />
:This change requires care when doing migration from 1.x to 2.x QEMU; you need to specify bus=NEW explicitly on the destination for devices on the renamed bus.<br />
* Another bus rename is pci to pci.0 for pseries. This does not require as much care on migration; if you were specifying "bus=pci" explicitly, QEMU will not start unless you change that to "bus=pci.0".<br />
* qemu-system-arm no longer defaults to the obsolete "integratorcp" if no machine is specified on the command line (this was a recurring source of confusion). Users with existing integratorcp images will need to add "-M integratorcp" to the command line if it is not already present.<br />
<br />
=== Future incompatible changes ===<br />
* Three options are using different names on the command line and in configuration file. In particular:<br />
** The "acpi" configuration file section matches command-line option "acpitable";<br />
** The "boot-opts" configuration file section matches command-line option "boot";<br />
** The "smp-opts" configuration file section matches command-line option "smp".<br />
:Starting with QEMU 2.1, -readconfig will standardize on the name fo the command line option.<br />
<br />
=== ARM ===<br />
* Support for "-M virt", a board type that only uses virtio devices<br />
* Support for "-cpu host" when running under KVM<br />
* Support for new 32-bit mode ARMv8 instructions in TCG<br />
* Support for all 64-bit mode ARMV8 user-accessible instructions except for the optional CRC and crypto extensions<br />
* Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)<br />
* Initial support for KVM on AArch64 systems (some features such as migration are not yet implemented)<br />
* Support for the Canon PowerShot A1100 DIGIC board using "-M canon-a1100"<br />
* Support for the allwinner-a10-based board "-M cubieboard"<br />
* Support for flow control in the Cadence UART<br />
* "integratorcp" is no longer the default machine (see the 'incompatible changes' section above)<br />
<br />
=== Power ===<br />
* Support for Altivec 2.07 and VSX instructions when running under TCG<br />
* Support for ISA 2.06 "load/store quadword instructions", "divide extended instructions" and "floating-point test instructions" when running under TCG<br />
* PReP is not anymore (incorrectly) included in qemu-system-ppcemb<br />
* Improved support for "-nodefaults" on the pSeries machine. Display devices created with "-device VGA" will be handled correctly in the device tree.<br />
* Support for boot order in pSeries emulation<br />
<br />
=== s390 ===<br />
* Support for adapter interrupts in virtio-cc2<br />
<br />
=== SPARC ===<br />
* Support for Sun CG3 framebuffer with the Sun4m machine. The CG3 framebuffer can be requested with "-vga cg3".<br />
* Support for the CASA compare-and-swap instruction in TCG.<br />
<br />
=== x86 ===<br />
* On the Q35 machine, the HPET interrupt can now be attached to GSIs 16-23, like on real hardware.<br />
* The Q35 machine now supports CPU hotplug.<br />
* Two flash chips can be specified using the "-drive if=pflash" or "-pflash" options twice.<br />
* Memory layout has changed slightly; to improve performance, the PIIX4 machine ("-M pc") now has 3GB of low memory instead of 3.5GB if the guest has more than 3.5GB of memory. Similarly, the Q35 machine ("-M q35") now has 2GB instead of 2.75GB of low memory if the guest has more than 2.75GB of overall memory.<br />
* Support for migration of Intel MPX registers.<br />
* The Apple SMC device is now exposed in the ACPI tables.<br />
* PCI hotplug now supports devices behind a bridge (only for bridges not added by hotplug; hot-plugged bridges can still use the PCI Standard Hot-Plug Controller).<br />
* Support for the Hyper-V reference time counter via the "hv-time" suboption of "-cpu". This can improve performance of Windows guests substantially for applications that do many floating-point or SIMD operations. (Requires KVM and Linux 3.14).<br />
* The distributed qemupciserial.inf file now allows installing multiport PCI serial devices on Windows too.<br />
<br />
==== KVM ====<br />
* x2apic is now enabled by default when KVM is in use.<br />
<br />
==== Xen ====<br />
* PCI passthrough of devices with a ROM now works.<br />
<br />
=== Xtensa ===<br />
* added support for ML605 and KC705 FPGA boards.<br />
* Cache-related opcodes now correctly check privilege level/memory accessibility.<br />
<br />
=== Device emulation ===<br />
==== SCSI ====<br />
* the SCSI layer can offload the WRITE SAME command to the host storage. This is supported on XFS file systems, raw devices, and iSCSI targets.<br />
* SCSI disks can report a port WWN and port index, to make them look more like "real" SAS disks<br />
<br />
==== USB ====<br />
* support for suspend-to-RAM in the XHCI controller<br />
* support for Microsoft descriptors, to make Windows use remote suspend by default.<br />
<br />
=== GUI ===<br />
* Windows hosts support keyboard translation in the GTK+ interface<br />
* Support for SDL 2.0.<br />
<br />
==== VNC ====<br />
* Setting the password via monitor command will not enable password auth as side effect any more. Use "qemu -vnc ${display},password" on the command line to enable password authentication.<br />
* Improved performance.<br />
<br />
==== GTK+ ====<br />
* Support for mouse wheel.<br />
* Support for enabling/disabling grab-on-hover from the command line using "-display gtk,grab-on-hover=on|off".<br />
* QEMU for Windows now also supports GTK+ and uses it by default. Console windows (monitor, serial and parallel console) are not available with GTK+.<br />
<br />
=== Monitor ===<br />
* New HMP command cpu-add for CPU hotplug<br />
* New QMP commands object-add and object-del for generic object hotplug (enables virtio-rng hotplug)<br />
* New HMP commands object_add and object_del for generic object hotplug<br />
* Improved command-line completion for device_add and device_del (as well as the new commands object_add and object_del)<br />
* dump-guest-memory can produce kdump compressed format.<br />
<br />
=== Migration ===<br />
* Various fixes for migration with qcow2 images. Migration with qcow2 images is now reliable.<br />
* Reduction (or elimination) of guest stalls during migration<br />
* RDMA migration is now activated with the "rdma:HOST:PORT" syntax (used to be "x-rdma:HOST:PORT")<br />
<br />
=== Network ===<br />
* New backend "netmap" on BSD systems<br />
<br />
=== Block devices in system emulation ===<br />
* Live snapshot merge (...-commit) can be used to merge the active layer of an image into one of the snapshots<br />
* Live and offline snapshot merge ("commit") will resize the destination image if necessary.<br />
* The iSCSI and Gluster backends support snapshot merge.<br />
* "query-block-stats" provides statistics for all images in the chain of backing files<br />
* node-name, query-named-block-nodes: external snapshot, resize, change password (???)<br />
* Experimental support in virtio-blk for M:N threading model: if you specify x-dataplane=on, you can also create I/O threads with "-object iothread" and point virtio-blk devices to the desired iothread with the "x-iothread" property. Properties of the running iothreads can be queried with the QMP command "query-iothreads".<br />
<br />
=== Various ===<br />
* -name now supports a "debug-threads" suboption. With this option, QEMU will assign names to each threads in order to simplify debugging. '''Note that thread names do not constitute a stable API.'''<br />
* Improved coverage for "make check".<br />
* Lots of bugfixes reported by Coverity (mostly for non-x86 guests).<br />
<br />
== Block devices and tools ==<br />
* Network block drivers (curl, iscsi, rbd, ssh, glusterfs) can be built as shared library modules with "--enable-modules" configure option.<br />
* When the destination of "qemu-img convert" is a raw device, qemu-img can ask the host storage to "discard" it instead of writing zeroes<br />
* "qemu-img convert" can be passed a "-S 0" option to create a fully allocated image<br />
* "qemu-img convert" can use hints from the host storage to speed up the transfer<br />
* "qemu-img convert", "qemu-img create", "qemu-img amend" support multiple occurrences of the "-o" command line option.<br />
* The libcurl interface had bitrotted and has been fixed.<br />
* A new "quorum" driver for redundant storage is supported.<br />
* QEMU is able to operate even if the underlying storage requires the buffer size to be a 4K multiple. This is the case for 4K-native disks (with cache=none or when accessed through iscsi:// URLs) and some raw devices. When this happens, QEMU emulates unaligned accesses using read-modify-write cycles if necessary. On properly configured guests newer than ~2009 there should be no performance penalty.<br />
* qemu-io supports command editing via readline<br />
* Pseudo-protocols like blkdebug and blkverify can be nested arbitrarily<br />
* Improved error messages for many operations<br />
* QEMU can access NFSv3 shares directly from userspace using libnfs. The share must be configured to allow access from high-numbered ports<br />
<br />
== TCG ==<br />
* Improvements to the TCG optimizer make it produce faster code<br />
* QEMU can use getauxval to detect the host instruction set for PPC64, ARM, s390<br />
* QEMU supports generating MOVBE, ANDN, instructions in the x86 backend<br />
* Improved code generation on AArch64 and SPARC hosts<br />
* Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)<br />
<br />
== Tracing ==<br />
* LTTng 2.x is now supported<br />
<br />
== User-mode emulation ==<br />
* Support for AArch64 user-mode emulation<br />
* Target specific minimum kernel versions, --enable-uname-release configure parameter will be removed in next release.<br />
* Support for timer system calls: timer_create, timer_settime, timer_gettime, timer_getoverrun and timer_delete.<br />
* Support for accept4 socketcall<br />
* Support for sendmmsg/recvmmesg system calls<br />
* Support for capset/capget system calls<br />
* Bug fixes<br />
<br />
== Known issues ==<br />
* On Win32, QEMU must be compiled with <code>--disable-coroutine-pool</code> to work around a suspected compiler bug.<br />
* The GTK+ terminal windows (monitor, serial console, parallel, ...) are still unusable in TCG mode: they lose characters and can raise deadlocks.<br />
* QEMU for Windows does not support GTK+ terminal windows.<br />
* AArch64 disassembler support may cause linker errors when configuring with <code>--cc=</code> without matching <code>--cxx=</code> argument.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.0/Testing&diff=4088Planning/2.0/Testing2014-04-03T14:27:10Z<p>AF: Updated -rc0 status</p>
<hr />
<div>=== v2.0.0-rc0 status ===<br />
<br />
openSUSE Factory ppc64le fails acpi-test, whereas ppc and ppc64 succeed. ''Turned out to be tcg/ppc64/ broken for ppc64le.''<br />
<br />
OpenBSD 5.3 build fails due to a conflict with our MACHINE cast macro. ''Fixed for -rc1.''<br />
<br />
FreeBSD 10.0-RELEASE build failed due to conflicts with our bswap* functions. ''Fixed for -rc1.''<br />
<br />
Mac OS X v10.5.8 ppc64 <strike>build fails to link</strike>, <strike>whereas</strike> ppc builds succeed.<br />
<br />
'''NB: A common issue has been not adding <tt>--cxx=</tt> for 2.0 when using <tt>--cc=</tt> configure argument.'''</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/2.0&diff=4059ChangeLog/2.02014-03-20T02:17:02Z<p>AF: Prep is neither the machine name nor the acronym, change to PReP</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes to bus names ===<br />
* All onboard buses now have distinct names. The following buses got renamed: i2c-bus.0 to i2c-bus.1 for machines n800, n810; virtio-mmio-bus.0 to virtio-mmio-bus.3 for vexpress-a15, vexpress-a9; virtio-mmio-bus.0 to virtio-mmio-bus.31 for virt; usb-bus.0 to usb-bus.1 for xilinx-zynq-a9, fulong2e; ide.0 to ide.1 for isapc, mips, g3beige, mac99, prep. Breaks migration. You can try to migrate from old to new by using bus=NEW rather bus=OLD on the destination.<br />
* The root PCI bus on the pSeries machine is now called "pci.0" rather than "pci".<br />
<br />
=== ARM ===<br />
* Support for "-M virt", a board type that only uses virtio devices<br />
* Support for "-cpu host" when running under KVM<br />
* Support for new 32-bit mode ARMv8 instructions in TCG<br />
* Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)<br />
* Initial support for KVM on AArch64 systems (some features such as migration are not yet implemented)<br />
* Support for the Canon PowerShot A1100 DIGIC board using "-M canon-a1100"<br />
* Support for the allwinner-a10-based board "-M cubieboard"<br />
* Support for flow control in the Cadence UART<br />
<br />
=== Power ===<br />
* Support for Altivec 2.07 and VSX instructions when running under TCG<br />
* Support for ISA 2.06 "load/store quadword instructions", "divide extended instructions" and "floating-point test instructions" when running under TCG<br />
* PReP is not anymore (incorrectly) included in qemu-system-ppcemb<br />
* Improved support for "-nodefaults" on the pSeries machine. Display devices created with "-device VGA" will be handled correctly in the device tree.<br />
<br />
=== s390 ===<br />
* Support for adapter interrupts in virtio-cc2<br />
<br />
=== SPARC ===<br />
* Support for Sun CG3 framebuffer with the Sun4m machine. The CG3 framebuffer can be requested with "-vga cg3".<br />
* Support for the CASA compare-and-swap instruction in TCG.<br />
<br />
=== x86 ===<br />
* On the Q35 machine, the HPET interrupt can now be attached to GSIs 16-23, like on real hardware.<br />
* The Q35 machine now supports CPU hotplug.<br />
* Two flash chips can be specified using the "-drive if=pflash" or "-pflash" options twice.<br />
* Memory layout has changed slightly; to improve performance, the PIIX4 machine ("-M pc") now has 3GB of low memory instead of 3.5GB if the guest has more than 3.5GB of memory. Similarly, the Q35 machine ("-M q35") now has 2GB instead of 2.75GB of low memory if the guest has more than 2.75GB of overall memory.<br />
* Support for migration of Intel MPX registers.<br />
* The Apple SMC device is now exposed in the ACPI tables.<br />
* PCI hotplug now supports devices behind a bridge (only for bridges not added by hotplug; hot-plugged bridges can still use the PCI Standard Hot-Plug Controller).<br />
* Support for the Hyper-V reference time counter via the "hv-time" suboption of "-cpu". This can improve performance of Windows guests substantially for applications that do many floating-point or SIMD operations. (Requires KVM and Linux 3.14).<br />
* The distributed qemupciserial.inf file now allows installing multiport PCI serial devices on Windows too.<br />
<br />
==== KVM ====<br />
* x2apic is now enabled by default when KVM is in use.<br />
<br />
==== Xen ====<br />
* PCI passthrough of devices with a ROM now works.<br />
<br />
=== Xtensa ===<br />
* added support for ML605 and KC705 FPGA boards.<br />
* Cache-related opcodes now correctly check privilege level/memory accessibility.<br />
<br />
=== Device emulation ===<br />
==== SCSI ====<br />
* the SCSI layer can offload the WRITE SAME command to the host storage. This is supported on XFS file systems, raw devices, and iSCSI targets.<br />
* SCSI disks can report a port WWN and port index, to make them look more like "real" SAS disks<br />
<br />
==== USB ====<br />
* support for suspend-to-RAM in the XHCI controller<br />
* support for Microsoft descriptors, to make Windows use remote suspend by default.<br />
<br />
=== GUI ===<br />
* Windows hosts support keyboard translation in the GTK+ interface<br />
* Support for SDL 2.0.<br />
<br />
==== VNC ====<br />
* setting the password via monitor command will not enable password auth as side effect any more. Use "qemu -vnc ${display},password" on the command line to enable password authentication.<br />
<br />
==== GTK+ ====<br />
* Support for mouse wheel.<br />
<br />
=== Monitor ===<br />
* New HMP command cpu-add for CPU hotplug<br />
* New QMP commands object-add and object-del for generic object hotplug (enables virtio-rng hotplug)<br />
* New HMP commands object_add and object_del for generic object hotplug<br />
* Improved command-line completion for device_add and device_del (as well as the new commands object_add and object_del)<br />
* dump-guest-memory can produce kdump compressed format.<br />
<br />
=== Migration ===<br />
* Various fixes for migration with qcow2 images. Migration with qcow2 images is now reliable.<br />
* Reduction (or elimination) of guest stalls during migration<br />
* RDMA migration is now activated with the "rdma:HOST:PORT" syntax (used to be "x-rdma:HOST:PORT")<br />
<br />
=== Network ===<br />
* New backend "netmap" on BSD systems<br />
<br />
=== Block devices in system emulation ===<br />
* Live snapshot merge (...-commit) can be used to merge the active layer of an image into one of the snapshots<br />
* Live and offline snapshot merge ("commit") will resize the destination image if necessary.<br />
* The iSCSI and Gluster backends support snapshot merge.<br />
* "query-block-stats" provides statistics for all images in the chain of backing files<br />
* node-name, query-named-block-nodes: external snapshot, resize, change password (???)<br />
* Experimental support in virtio-blk for M:N threading model: if you specify x-dataplane=on, you can also create I/O threads with "-object iothread" and point virtio-blk devices to the desired iothread with the "x-iothread" property. Properties of the running iothreads can be queried with the QMP command "query-iothreads".<br />
<br />
=== Various ===<br />
* -name now supports a "debug-threads" suboption. With this option, QEMU will assign names to each threads in order to simplify debugging. '''Note that thread names do not constitute a stable API.'''<br />
* Improved coverage for "make check".<br />
* Lots of bugfixes reported by Coverity (mostly for non-x86 guests).<br />
<br />
== Block devices and tools ==<br />
* Network block drivers (curl, iscsi, rbd, ssh, glusterfs) can be built as shared library modules with "--enable-modules" configure option.<br />
* When the destination of "qemu-img convert" is a raw device, qemu-img can ask the host storage to "discard" it instead of writing zeroes<br />
* "qemu-img convert" can be passed a "-S 0" option to create a fully allocated image<br />
* "qemu-img convert" can use hints from the host storage to speed up the transfer<br />
* "qemu-img convert", "qemu-img create", "qemu-img amend" support multiple occurrences of the "-o" command line option.<br />
* The libcurl interface had bitrotted and has been fixed.<br />
* A new "quorum" driver for redundant storage is supported.<br />
* QEMU is able to operate even if the underlying storage requires the buffer size to be a 4K multiple. This is the case for 4K-native disks (with cache=none or when accessed through iscsi:// URLs) and some raw devices. When this happens, QEMU emulates unaligned accesses using read-modify-write cycles if necessary. On properly configured guests newer than ~2009 there should be no performance penalty.<br />
* qemu-io supports command editing via readline<br />
* Pseudo-protocols like blkdebug and blkverify can be nested arbitrarily<br />
* Improved error messages for many operations<br />
* QEMU can access NFSv3 shares directly from userspace using libnfs. The share must be configured to allow access from high-numbered ports<br />
<br />
== TCG ==<br />
* Improvements to the TCG optimizer make it produce faster code<br />
* QEMU can use getauxval to detect the host instruction set for PPC64, ARM, s390<br />
* QEMU supports generating MOVBE, ANDN, instructions in the x86 backend<br />
* Support for AArch64 disassembling (requires a C++ compiler to be installed on the host)<br />
<br />
== Tracing ==<br />
* LTTng 2.x is now supported<br />
<br />
== User-mode emulation ==<br />
* Support for AArch64 user-mode emulation, including all the user-accessible instructions except for the optional CRC and crypto extensions<br />
* Target specific minimum kernel versions, --enable-uname-release configure parameter will be removed in next release.<br />
* Support for timer system calls: timer_create, timer_settime, timer_gettime, timer_getoverrun and timer_delete.<br />
* Support for accept4 socketcall<br />
* Support for sendmmsg/recvmmesg system calls<br />
* Bug fixes</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.0/Testing&diff=4057Planning/2.0/Testing2014-03-18T18:24:06Z<p>AF: Update openSUSE Factory ppc/ppc64 status</p>
<hr />
<div>=== v2.0.0-rc0 status ===<br />
<br />
OpenBSD build fails due to a conflict with our MACHINE cast macro.<br />
<br />
Mac OS X v10.5.8 ppc64 build fails to link, whereas ppc build succeeds.<br />
<br />
openSUSE Factory ppc64le fails acpi-test, whereas ppc and ppc64 succeed.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.0/Testing&diff=4056Planning/2.0/Testing2014-03-18T17:49:20Z<p>AF: Added OSX ppc build status</p>
<hr />
<div>=== v2.0.0-rc0 status ===<br />
<br />
OpenBSD build fails due to a conflict with our MACHINE cast macro.<br />
<br />
Mac OS X v10.5.8 ppc64 build fails to link, whereas ppc build succeeds.<br />
<br />
openSUSE Factory ppc64le fails acpi-test.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/2.0/Testing&diff=4055Planning/2.0/Testing2014-03-18T17:43:07Z<p>AF: Initial</p>
<hr />
<div>=== v2.0.0-rc0 status ===<br />
<br />
OpenBSD build fails due to a conflict with our MACHINE cast macro.<br />
<br />
openSUSE Factory ppc64le fails acpi-test.</div>AFhttps://wiki.qemu.org/index.php?title=Contribute&diff=4042Contribute2014-03-13T21:59:59Z<p>AF: Added link to META emulation</p>
<hr />
<div>== Project Infrastructure ==<br />
* Source repository: [http://git.qemu.org Mainline qemu.git] and [http://repo.or.cz/w/qemu.git developer repositories]<br />
* Mailing list: [[MailingLists|mailing list]]<br />
* IRC: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
* Bug tracker: [[Contribute/ReportABug|launchpad]]<br />
* Continuous integration: [[ContinuousIntegration|buildbot]]<br />
* Wiki: [[Main_Page|this website]]<br />
* Phone call: Scheduled for Tuesdays on as-needed basis for agenda topics raised on mailing list. Contact [mailto:quintela@redhat.com Juan Quintela] for dial-in details. To find the time in your location, use:<br />
date -d 'TZ="America/New_York" Tuesday 10:00 am'<br />
<br />
== Key Information ==<br />
* [[Documentation/GettingStartedDevelopers|Getting started for developers]]<br />
* [[Contribute/SubmitAPatch|How to submit a patch]]<br />
* [[Contribute/TrivialPatches|How to submit a trivial patch]]<br />
* [[Contribute/ReportABug|How to report a bug]]<br />
<br />
== Students ==<br />
<br />
QEMU participated in Google's Summer of Code 2011 program.<br />
<br />
Some reports on the processed topics (partially or fully) from 2010 can be found here:<br />
* [[Google Summer of Code 2010/QMP|QMP]] - about syncing QEMU monitor and QEMU Machine Protocol (QMP) features<br />
* [[Google Summer of Code 2010/VNC|VNC]] - about improvements in speed and features of QEMU supported VNC protocols<br />
<br />
For more information on GSoC-2011 and especially lots more of probably still open topics for improvement please see [[Google_Summer_of_Code_2011|this page]].<br />
<br />
== Planning ==<br />
* [[Planning/1.7| 1.7]]<br />
* [[Planning/1.6| 1.6]]<br />
* [[Planning/1.5| 1.5]]<br />
* [[Planning/1.4| 1.4]]<br />
* [[Planning/1.3| 1.3]]<br />
* [[Planning/1.2| 1.2]]<br />
* [[Planning/1.1| 1.1]]<br />
* [[Planning/1.0| 1.0]]<br />
* [[Planning/0.15| 0.15]]<br />
* [[Planning/0.15-example| 0.15 example]]<br />
* [[Planning/0.14/Testing| 0.14 testing]]<br />
* [[Planning/0.14| 0.14]]<br />
<br />
== Features ==<br />
* [[Features|Features]]<br />
* [[Features/0.13| 0.13]]<br />
* [[Features/0.13/HelperNetworking| 0.13/HelperNetworking]]<br />
* [[Features/0.13|Proposed 0.13 Features]]<br />
* [[Features/AHCI|AHCI]]<br />
* [[Features/Block/Merge|Block/Merge]]<br />
* [[Features/CPUModels| CPUModels]]<br />
* [[Features/Cow2| Cow2]]<br />
* [[Features/DriveRefactoring| DriveRefactoring]]<br />
* [[Features/DiskIOLimits| DiskIOLimits]]<br />
* [[Features/FVD| FVD]]<br />
* [[Features/FVD/Compare| FVD/Compare]]<br />
* [[Features/FVD/Design| FVD/Design]]<br />
* [[Features/FVD/Engineering| FVD/Engineering]]<br />
* [[Features/FVD/Experiment| FVD/Experiment]]<br />
* [[Features/FVD/Specification| FVD/Specification]]<br />
* [[Features/FVD/WhyFVD| FVD/WhyFVD]]<br />
* [[Features/FaultTolerance| FaultTolerance]]<br />
* [[Features/HelperNetworking| HelperNetworking]]<br />
* [[Features/NetDeviceFailover| NetDeviceFailover]]<br />
* [[Features/PCIMemoryAPI| PCIMemoryAPI]]<br />
* [[Features/PostCopyLiveMigration| PostCopy LiveMigration]]<br />
* [[Features/PVCrashDetection| PVCrashDetection]]<br />
* [[Features/Q35| Q35]]<br />
* [[Features/QDevCleanup| QDevCleanup]]<br />
* [[Features/QED| QED]]<br />
* [[Features/QED/OnlineDefrag| QED/OnlineDefrag]]<br />
* [[Features/QED/OutstandingWork| QED/OutstandingWork]]<br />
* [[Features/QED/ParallelSubmission| QED/ParallelSubmission]]<br />
* [[Features/QED/ScanAvoidance| QED/ScanAvoidance]]<br />
* [[Features/QED/Specification| QED/Specification]]<br />
* [[Features/QED/Streaming| QED/Streaming]]<br />
* [[Features/QED/Trim| QED/Trim]]<br />
* [[Features/QMP2| QMP2]]<br />
* [[Features/QMP_0.14| QMP_0.14]]<br />
* [[Features/QOM| QOM]]<br />
* [[Features/QOM/CPU| QOM/CPU]]<br />
* [[Features/Qcow2DataIntegrity| Qcow2DataIntegrity]]<br />
* [[Features/RamAPI| RamAPI]]<br />
* [[Features/ResetAPI| ResetAPI]]<br />
* [[Features/Sheepdog| Sheepdog]]<br />
* [[Features/Sheepdog/Corosync_Config| Sheepdog/Corosync]]<br />
* [[Features/Sheepdog/Getting_Started| Sheepdog/Getting]]<br />
* [[Features/Smartcard| Smartcard]]<br />
* [[Features/Smartcard/Specification| Smartcard/Specification]]<br />
* [[Features/Snapshots| Snapshots]]<br />
* [[Features/Snapshots2| Snapshots2]]<br />
* [[Features/SnapshottingImprovements| SnapshottingImprovements]]<br />
* [[Features/TCI| TCG Interpreter ]]<br />
* [[Features/Tracing| Tracing]]<br />
* [[Features/Tracing/Roadmap| Tracing/Roadmap]]<br />
* [[Features/Tracing/UseCases| Tracing/UseCases]]<br />
* [[Features/Usability |Usability]]<br />
* [[Features/VirtioBlkBoot| VirtioBlkBoot]]<br />
* [[Features/VirtioIoeventfd| VirtioIoeventfd]]<br />
<br />
=== Work in progress ===<br />
* [[Features/40p| 40p]]<br />
* [[Features/BeBox| BeBox]]<br />
* [[Features/CPUHotplug|CPUHotplug]]<br />
* [[Features/GtkDisplayState| GtkDisplayState]]<br />
* [[Features/PRePCleanup|PReP cleanup]]<br />
* [[Features/Q35|Q35]]<br />
* [[Features/RL78| RL78]]<br />
* [[Features/Tegra2|Tegra2]]<br />
* [[Features/RDMALiveMigration|RDMA Live Migration]]<br />
* [[Features/MicroCheckpointing|Micro Checkpointing]]<br />
<br />
=== Downstream ===<br />
* 6502 (on [https://github.com/AVEx-6502/qemu-6502 GitHub])<br />
* AT91SAM9263 (on [https://github.com/Dushistov/qemu_at91sam9263 Github])<br />
* Beagleboard (at Linaro)<br />
* Blackfin<br />
* Goldfish (at Android)<br />
* [[Features/HPPA| HPPA]]<br />
* Meta (on [https://github.com/img-meta/qemu GitHub])<br />
* Taskit Portux920T (on [https://github.com/daro-tuberlin/Qemu-taskit-920T GitHub])<br />
* [[Features/Z80| Z80]]<br />
<br />
== GIT repo ==<br />
* [http://git.qemu.org/ QEMU.org GIT repo]<br />
* [http://repo.or.cz/w/qemu.git repo.or.cz]<br />
* [http://repo.or.cz/w/qemu/aliguori.git Anthony Liguori's QEMU tree]<br />
* [http://repo.or.cz/w/qemu/aliguori-queue.git Anthony Liguori's QEMU queue]<br />
* [http://git.kernel.org/?p=linux/kernel/git/mst/qemu.git;a=summary Qemu patches by Michael S. Tsirkin. Warning: constantly rebased. pci subsystem]<br />
* [http://repo.or.cz/w/qemu/kevin.git kwolf Random patches. block device]<br />
* [http://blackfin.uclinux.org/git/?p=users/vapier/qemu.git Blackfin QEMU tree]<br />
<br />
== Developers and Maintainers ==<br />
<br />
* [[User:Agraf |Alexander Graf ]] (maintainer for PPC, S390)<br />
* [[User:AnthonyLiguori |Anthony Liguori ]] (committer, maintainer)<br />
* [[User:Wmat |Bill Traynor ]]<br />
* [[User:Blueswirl |Blueswirl ]] (committer, maintainer for SPARC, bsd-user)<br />
* [[User:edgar |Edgar E. Iglesias ]] (committer, maintainer for CRIS, Microblaze)<br />
* [[User:Kraxel |Gerd Hoffmann ]] (maintainer for audio, SPICE, USB)<br />
* [[User:Joro |Joro ]]<br />
* [[User:LuizCapitulino |Luiz Capitulino ]] (maintainer for QMP/QAPI)<br />
* [[User:Mariusmm |Màrius Montón ]]<br />
* [[User:MichaelTsirkin |Michael Tsirkin ]] (maintainer for PCI, vhost)<br />
* [[User:Miguel |Miguel Di Ciurcio Filho ]]<br />
* [[User:NataliaPortillo |Natalia Portillo ]]<br />
* [[User:Paolo_Bonzini |Paolo Bonzini ]] (maintainer for NBD, SCSI)<br />
* [[User:Pbrook |Paul Brook ]] (committer, maintainer for ARM, m68k)<br />
* [[User:Stefan_Weil |Stefan Weil ]] (maintainer for [[Features/TCI|TCI]], [[Hosts/W32|w32, w64]])<br />
* [[User:Stefanha |Stefan Hajnoczi ]] (maintainer for tracing)<br />
* [[User:wuzhy |Zhi Yong Wu ]] ([[Features/DiskIOLimits|Block I/O throttling]], [[Features/VirtioSCSI|virtio-scsi&tcm_vhost]])<br />
<br />
See file [http://repo.or.cz/w/qemu.git/blob_plain/HEAD:/MAINTAINERS MAINTAINERS] in the QEMU source distribution for the latest list<br />
of QEMU maintainers.</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.6&diff=3824ChangeLog/1.62013-08-12T17:46:00Z<p>AF: Added gdbstub to known issues list</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Device emulation ===<br />
<br />
==== Block devices ====<br />
* New device "nvme" provides a PCI device that implements the NVMe standard.<br />
* Fix for a possible data loss on crashes with IDE disks (due to mishandling of FLUSH requests)<br />
<br />
==== Device assignment ====<br />
* Legacy PCI assignment supports CPU affinity for MSI interrupts.<br />
<br />
==== USB ====<br />
* The XHCI (USB 3.0) controller supports live migration.<br />
<br />
==== PCI ====<br />
* ACPI hotplug of devices behind a PCI bridge is supported. See See [[Features/PCIBridgeHotplug|Features/PCIBridgeHotplug]]<br />
<br />
=== ARM ===<br />
* The 32-bit ARMv8 LDA/STL instructions for load-acquire/store-release are supported (only with -cpu any); the remainder of the new v8 instructions will follow in a future release.<br />
* The vexpress-a9 and vexpress-a15 boards have experimental support for virtio devices via a virtio-mmio transport. Note that the virtio command lines used with x86 systems won't work as they will create PCI virtio devices; use the devices "virtio-blk-device", "virtio-net-device", etc instead. Note that this functionality may change in future releases.<br />
* The -initrd option now accepts ramdisks with a U-Boot header.<br />
* A model of the Calxeda ECX-2000 / Midway system is now supported ("midway").<br />
<br />
=== PPC ===<br />
* Mac OS X guests supported (10.2-10.4 for PPC, 10.4 for PPC64)<br />
* pSeries guests support live migration and savevm.<br />
<br />
=== s390x ===<br />
* If the kernel supports it, virtio-ccw supports ioeventfd and vhost when running on KVM.<br />
* The dump-guest-memory command is supported.<br />
<br />
=== SPARC ===<br />
* Sun4c and Sun4d architectures and related CPUs were not fully implemented and have been removed.<br />
* 24-bit display mode works<br />
<br />
=== x86 ===<br />
* Firmware can be exposed to the guest as a flash device (using -pflash) also when running on KVM.<br />
* In addition to the "xenfv" machine type, which is kept for backwards compatibility, Xen can now use the pc machine type (including versioned machine types) using "-M pc -machine accel=xen". Note that using PV-on-HVM drivers requires "-M pc -machine accel=xen -device xen-platform".<br />
* QEMU can expose the full set of ACPI tables to the guest: See [[Features/ACPITableGeneration|Features/ACPITableGeneration]]<br />
* Conroe, Penryn and Nehalem CPUs have had their CPUID values fixed<br />
* "-M isapc" now works on KVM too.<br />
* -pflash can be used with KVM too.<br />
<br />
=== Monitor ===<br />
* info block now returns different output for HMP. HMP is not a programmatic interface, please use QMP if you need a stable programmatic interface.<br />
* "-serial mon:stdio" will now trap signals in the same way that "-nographic" has always done. This means that ^C will be passed to the guest.<br />
<br />
=== Block devices ===<br />
* The "whitelist" that lets packagers specify which block device formats are supported by QEMU will now allow specifying formats that QEMU should only allow when opened as read-only. The --block-drv-whitelist configure option is thus split in two new options, --block-drv-rw-whitelist and --block-drv-ro-whitelist.<br />
* Support for a new block device background job. Started by ''drive-backup'', it will backup a disk's content to a new file. Unlike ''drive-mirror'', the new file will include the source disk's content ''at the time the backup job was started''. Atomic backup of multiple disks is supported using the "transaction" QMP command.<br />
* Several bugfixes for VMDK and curl backends.<br />
* Support for thin provisioning ("discard") on qcow2 images. When a device is opened with "-drive ...,discard=on", discard requests from the guest are forwarded to the underlying file system or block device as is the case for "raw" format images.<br />
<br />
=== Live Migration ===<br />
* Initial support for live migration over RDMA using "migrate x-rdma:''HOST'':''PORT''".<br />
* Support for auto-convergence ("CPU stunning")<br />
<br />
=== User interface ===<br />
* BSDs now support the GTK+ user interface.<br />
* The GTK+ interface supports -full-screen and -no-quit<br />
* The Cocoa user interface now supports Mac OS X 10.6 better.<br />
<br />
== User-mode emulation ==<br />
* Support for /proc/self has been extnded to include /proc/$$ (where $$ is the result of the ''getpid()'' system call).<br />
* The longstanding problem where fork() would typically fail "Invalid argument" for some guest architectures (most notably i386) has been fixed.<br />
<br />
== Guest agent ==<br />
* On Win32, the state directory will be placed under CSIDL_COMMON_APPDATA, which typically is "C:\Documents and Settings\All Users\Application Data".<br />
<br />
== Host support ==<br />
* linux-user does not support anymore *at system calls on glibc versions older than 2.5.<br />
* New TCG target for aarch64.<br />
* Build ARM, Microblaze and PPC targets will now use a bundled libfdt if the library is not available on the host.<br />
* Support for TUN/TAP on Mac OS X (http://tuntaposx.sourceforge.net)<br />
<br />
* It is now possible to build an installer for QEMU on Windows (make all installer). For this feature, NSIS must be installed on the build host. NSIS is also available for cross development.<br />
<br />
== Known problems ==<br />
* In TCG mode, GTK terminal windows loose characters and can raise deadlocks.<br />
* The MIPS system emulations (Malta, ...) are no longer able to boot a Linux kernel. This regression (from a user's point of view) was caused by the improved handling of unassigned memory access which now correctly raises an exception. The boot problems are caused by an incomplete device emulation.<br />
* SPARC64 emulation is broken in -rc0 and will be fixed during hard freeze.<br />
* GDB 'g' packets may contain more registers than expected for arm, m68k and ppc guests.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/1.6&diff=3823Planning/1.62013-08-12T17:44:21Z<p>AF: Added gdbstub to known issues list</p>
<hr />
<div>This release will span a single quarter (3 months). We will have a 2.5 week freeze of the master branch. During this time, only bug fixes will be committed.<br />
<br />
== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2013-05-20<br />
| Beginning of 1.6 development phase<br />
|-<br />
| 2013-06-15<br />
| Mid-point of development cycle<br />
|-<br />
| 2013-07-15<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Major features should have initial code committed by this date.<br />
|-<br />
| 2013-07-29<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag v1.6.0-rc0, only bug fixes committed after this point<br />
|-<br />
| 2013-08-01<br />
| Tag v1.6.0-rc1<br />
|-<br />
| 2013-08-07<br />
| Tag v1.6.0-rc2<br />
|-<br />
| 2013-08-12<br />
| Tag v1.6.0-rc3<br />
|-<br />
| 2013-08-15<br />
| Tag v1.6.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
* Some MIPS machines are suffering from more strict unassigned memory access handling.<br />
* GDB 'g' packets may contain more registers than expected for arm, m68k and ppc guests.<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/1.6]] for full details.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/1.6&diff=3814Planning/1.62013-08-01T21:52:29Z<p>AF: Turn known issue into unordered list</p>
<hr />
<div>This release will span a single quarter (3 months). We will have a 2.5 week freeze of the master branch. During this time, only bug fixes will be committed.<br />
<br />
== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2013-05-20<br />
| Beginning of 1.6 development phase<br />
|-<br />
| 2013-06-15<br />
| Mid-point of development cycle<br />
|-<br />
| 2013-07-15<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Major features should have initial code committed by this date.<br />
|-<br />
| 2013-07-29<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag v1.6.0-rc0, only bug fixes committed after this point<br />
|-<br />
| 2013-08-01<br />
| Tag v1.6.0-rc1<br />
|-<br />
| 2013-08-07<br />
| Tag v1.6.0-rc2<br />
|-<br />
| 2013-08-12<br />
| Tag v1.6.0-rc3<br />
|-<br />
| 2013-08-15<br />
| Tag v1.6.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
* Some MIPS machines are suffering from more strict unassigned memory access handling.<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/1.6]] for full details.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/1.6&diff=3813Planning/1.62013-08-01T21:51:44Z<p>AF: Add known issue for MIPS</p>
<hr />
<div>This release will span a single quarter (3 months). We will have a 2.5 week freeze of the master branch. During this time, only bug fixes will be committed.<br />
<br />
== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2013-05-20<br />
| Beginning of 1.6 development phase<br />
|-<br />
| 2013-06-15<br />
| Mid-point of development cycle<br />
|-<br />
| 2013-07-15<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Major features should have initial code committed by this date.<br />
|-<br />
| 2013-07-29<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag v1.6.0-rc0, only bug fixes committed after this point<br />
|-<br />
| 2013-08-01<br />
| Tag v1.6.0-rc1<br />
|-<br />
| 2013-08-07<br />
| Tag v1.6.0-rc2<br />
|-<br />
| 2013-08-12<br />
| Tag v1.6.0-rc3<br />
|-<br />
| 2013-08-15<br />
| Tag v1.6.0<br />
|}<br />
<br />
== Known issues ==<br />
<br />
Some MIPS machines are suffering from more strict unassigned memory access handling.<br />
<br />
== Targeted Features ==<br />
<br />
See the [[ChangeLog/1.6]] for full details.</div>AFhttps://wiki.qemu.org/index.php?title=DeveloperNews&diff=3731DeveloperNews2013-07-08T11:29:04Z<p>AF: Paolo's memory PULL has been merged last night</p>
<hr />
<div>This page highlights some news bits from [https://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] that all QEMU developers should be aware of.<br />
It is not a replacement for reading the mailing list nor a place to announce cool new [[Contribute/StartHere#Features|features]] for users.<br />
<br />
* [[User:MichaelTsirkin|Michael S. Tsirkin]] is [http://www.mail-archive.com/kvm@vger.kernel.org/msg92073.html about to move] '''ACPI''' table generation code to qemu. Any patches that need ACPI support should integrate with that.<br />
* [[User:Paolo Bonzini|Paolo]] has [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00798.html extended] '''MemoryRegion'''s to reference an '''owner''' Object. Therefore new MemoryRegions should not carry the name of its containing device but its purpose within that device.<br/> Note that this pull touches on ''every'' <code>memory_region_init()</code>, <code>memory_region_init_io()</code> and <code>memory_region_init_ram()</code> in the tree (in patch 18/66) and is thus likely to conflict with any patch adding a new device.<br />
* The staging tree '''[https://github.com/afaerber/qemu-cpu/commits/qom-next qom-next]''' was [http://lists.gnu.org/archive/html/qemu-devel/2013-06/msg05470.html revived] by [[User:AF|Andreas]] for '''QOM refactoring''' patches (type constants, cast macros, QOM realize). It should not be used as base for new feature or bugfix patches.<br />
* All new devices derived from '''SysBusDevice''' should [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00041.html use QOM realize] (DeviceClass::'''realize''') rather than SysBusDeviceClass::init. Work is under way to convert existing devices. It is permissable to implement neither realize [http://git.qemu.org/?p=qemu.git;a=commit;h=4ce5dae88ecf2bafa0cd663de7e923728b1b3672 nor init].<br/> QOM realize was first [http://lists.gnu.org/archive/html/qemu-devel/2012-01/msg04025.html presented] by [[User:AnthonyLiguori|Anthony]] on the 2012-01-31 KVM call and after much debate of scope [http://git.qemu.org/?p=qemu.git;a=commit;h=249d41720b7dfbb5951b430b9eefdbee7464f515 minimally implemented] for DeviceState by [[User:AF|Andreas]] for v1.4. Some extensions by [[User:Paolo Bonzini|Paolo]] (recursive realization) are still pending device preparations.<br />
* It has been requested to mark PULL request patches <code>[PULL n/m]</code> (rather than <code>[PATCH n/m]</code>) to avoid prompting people in CC to start re-reviewing an in-flight PULL request.<br />
* [[Planning/1.6|v'''1.6''' roadmap]] has been added by [[User:AnthonyLiguori|Anthony]].<br />
* Page [[QOMConventions|'''QOM'''Conventions]] was created by [[User:AF|Andreas]] to summarize some review comments and acceptance guidelines for patches that affect '''all devices'''.<br />
* An '''I2C''' libqos test framework was [http://git.qemu.org/?p=qemu.git;a=commit;h=2bf7b4572b39a494403190636b4e7d44967504c0 contributed] by [[User:AF|Andreas]], so any new I2C host controllers should come with a libqos driver implementation and new I2C devices should be accompanied by a qtest test case.</div>AFhttps://wiki.qemu.org/index.php?title=DeveloperNews&diff=3729DeveloperNews2013-07-08T09:20:56Z<p>AF: </p>
<hr />
<div>This page highlights some news bits from [https://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] that all QEMU developers should be aware of.<br />
It is not a replacement for reading the mailing list nor a place to announce cool new [[Contribute/StartHere#Features|features]] for users.<br />
<br />
* [[User:MichaelTsirkin|Michael S. Tsirkin]] is [http://www.mail-archive.com/kvm@vger.kernel.org/msg92073.html about to move] '''ACPI''' table generation code to qemu. Any patches that need ACPI support should integrate with that.<br />
* [[User:Paolo Bonzini|Paolo]] is [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00798.html about to extend] '''MemoryRegion'''s to reference an '''owner''' Object. Therefore new MemoryRegions should not carry the name of its containing device but its purpose within that device.<br/> Note that this pull touches on ''every'' <code>memory_region_init()</code>, <code>memory_region_init_io()</code> and <code>memory_region_init_ram()</code> in the tree (in patch 18/66) and is thus likely to conflict with any patch adding a new device.<br />
* The staging tree '''[https://github.com/afaerber/qemu-cpu/commits/qom-next qom-next]''' was [http://lists.gnu.org/archive/html/qemu-devel/2013-06/msg05470.html revived] by [[User:AF|Andreas]] for '''QOM refactoring''' patches (type constants, cast macros, QOM realize). It should not be used as base for new feature or bugfix patches.<br />
* All new devices derived from '''SysBusDevice''' should [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00041.html use QOM realize] (DeviceClass::'''realize''') rather than SysBusDeviceClass::init. Work is under way to convert existing devices. It is permissable to implement neither realize [http://git.qemu.org/?p=qemu.git;a=commit;h=4ce5dae88ecf2bafa0cd663de7e923728b1b3672 nor init].<br/> QOM realize was first [http://lists.gnu.org/archive/html/qemu-devel/2012-01/msg04025.html presented] by [[User:AnthonyLiguori|Anthony]] on the 2012-01-31 KVM call and after much debate of scope [http://git.qemu.org/?p=qemu.git;a=commit;h=249d41720b7dfbb5951b430b9eefdbee7464f515 minimally implemented] for DeviceState by [[User:AF|Andreas]] for v1.4. Some extensions by [[User:Paolo Bonzini|Paolo]] (recursive realization) are still pending device preparations.<br />
* It has been requested to mark PULL request patches <code>[PULL n/m]</code> (rather than <code>[PATCH n/m]</code>) to avoid prompting people in CC to start re-reviewing an in-flight PULL request.<br />
* [[Planning/1.6|v'''1.6''' roadmap]] has been added by [[User:AnthonyLiguori|Anthony]].<br />
* Page [[QOMConventions|'''QOM'''Conventions]] was created by [[User:AF|Andreas]] to summarize some review comments and acceptance guidelines for patches that affect '''all devices'''.<br />
* An '''I2C''' libqos test framework was [http://git.qemu.org/?p=qemu.git;a=commit;h=2bf7b4572b39a494403190636b4e7d44967504c0 contributed] by [[User:AF|Andreas]], so any new I2C host controllers should come with a libqos driver implementation and new I2C devices should be accompanied by a qtest test case.</div>AFhttps://wiki.qemu.org/index.php?title=DeveloperNews&diff=3724DeveloperNews2013-07-05T23:38:13Z<p>AF: Mention I2C libqos</p>
<hr />
<div>This page highlights some news bits from [https://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] that all QEMU developers should be aware of.<br />
It is not a replacement for reading the mailing list nor a place to announce cool new [[Contribute/StartHere#Features|features]] for users.<br />
<br />
* [[User:Paolo Bonzini|Paolo]] is [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00798.html about to extend] '''MemoryRegion'''s to reference an '''owner''' Object. Therefore new MemoryRegions should not carry the name of its containing device but its purpose within that device.<br/> Note that this pull touches on ''every'' <code>memory_region_init()</code>, <code>memory_region_init_io()</code> and <code>memory_region_init_ram()</code> in the tree (in patch 18/66) and is thus likely to conflict with any patch adding a new device.<br />
* The staging tree '''[https://github.com/afaerber/qemu-cpu/commits/qom-next qom-next]''' was [http://lists.gnu.org/archive/html/qemu-devel/2013-06/msg05470.html revived] by [[User:AF|Andreas]] for '''QOM refactoring''' patches (type constants, cast macros, QOM realize). It should not be used as base for new feature or bugfix patches.<br />
* All new devices derived from '''SysBusDevice''' should [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00041.html use QOM realize] (DeviceClass::'''realize''') rather than SysBusDeviceClass::init. Work is under way to convert existing devices. It is permissable to implement neither realize [http://git.qemu.org/?p=qemu.git;a=commit;h=4ce5dae88ecf2bafa0cd663de7e923728b1b3672 nor init].<br/> QOM realize was first [http://lists.gnu.org/archive/html/qemu-devel/2012-01/msg04025.html presented] by [[User:AnthonyLiguori|Anthony]] on the 2012-01-31 KVM call and after much debate of scope [http://git.qemu.org/?p=qemu.git;a=commit;h=249d41720b7dfbb5951b430b9eefdbee7464f515 minimally implemented] for DeviceState by [[User:AF|Andreas]] for v1.4. Some extensions by [[User:Paolo Bonzini|Paolo]] (recursive realization) are still pending device preparations.<br />
* It has been requested to mark PULL request patches <code>[PULL n/m]</code> (rather than <code>[PATCH n/m]</code>) to avoid prompting people in CC to start re-reviewing an in-flight PULL request.<br />
* [[Planning/1.6|v'''1.6''' roadmap]] has been added by [[User:AnthonyLiguori|Anthony]].<br />
* Page [[QOMConventions|'''QOM'''Conventions]] was created by [[User:AF|Andreas]] to summarize some review comments and acceptance guidelines for patches that affect '''all devices'''.<br />
* An '''I2C''' libqos test framework was [http://git.qemu.org/?p=qemu.git;a=commit;h=2bf7b4572b39a494403190636b4e7d44967504c0 contributed] by [[User:AF|Andreas]], so any new I2C host controllers should come with a libqos driver implementation and new I2C devices should be accompanied by a qtest test case.</div>AFhttps://wiki.qemu.org/index.php?title=DeveloperNews&diff=3723DeveloperNews2013-07-05T23:29:47Z<p>AF: Clearly attribute QOM realize to Anthony</p>
<hr />
<div>This page highlights some news bits from [https://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] that all QEMU developers should be aware of.<br />
It is not a replacement for reading the mailing list nor a place to announce cool new [[Contribute/StartHere#Features|features]] for users.<br />
<br />
* [[User:Paolo Bonzini|Paolo]] is [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00798.html about to extend] '''MemoryRegion'''s to reference an '''owner''' Object. Therefore new MemoryRegions should not carry the name of its containing device but its purpose within that device.<br/> Note that this pull touches on ''every'' <code>memory_region_init()</code>, <code>memory_region_init_io()</code> and <code>memory_region_init_ram()</code> in the tree (in patch 18/66) and is thus likely to conflict with any patch adding a new device.<br />
* The staging tree '''[https://github.com/afaerber/qemu-cpu/commits/qom-next qom-next]''' was [http://lists.gnu.org/archive/html/qemu-devel/2013-06/msg05470.html revived] by [[User:AF|Andreas]] for '''QOM refactoring''' patches (type constants, cast macros, QOM realize). It should not be used as base for new feature or bugfix patches.<br />
* All new devices derived from '''SysBusDevice''' should [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00041.html use QOM realize] (DeviceClass::'''realize''') rather than SysBusDeviceClass::init. Work is under way to convert existing devices. It is permissable to implement neither realize [http://git.qemu.org/?p=qemu.git;a=commit;h=4ce5dae88ecf2bafa0cd663de7e923728b1b3672 nor init].<br/> QOM realize was first [http://lists.gnu.org/archive/html/qemu-devel/2012-01/msg04025.html presented] by [[User:AnthonyLiguori|Anthony]] on the 2012-01-31 KVM call and after much debate of scope [http://git.qemu.org/?p=qemu.git;a=commit;h=249d41720b7dfbb5951b430b9eefdbee7464f515 minimally implemented] for DeviceState by [[User:AF|Andreas]] for v1.4. Some extensions by [[User:Paolo Bonzini|Paolo]] (recursive realization) are still pending device preparations.<br />
* It has been requested to mark PULL request patches <code>[PULL n/m]</code> (rather than <code>[PATCH n/m]</code>) to avoid prompting people in CC to start re-reviewing an in-flight PULL request.<br />
* [[Planning/1.6|v'''1.6''' roadmap]] has been added by [[User:AnthonyLiguori|Anthony]].<br />
* Page [[QOMConventions|'''QOM'''Conventions]] was created by [[User:AF|Andreas]] to summarize some review comments and acceptance guidelines for patches that affect '''all devices'''.</div>AFhttps://wiki.qemu.org/index.php?title=DeveloperNews&diff=3722DeveloperNews2013-07-05T22:31:37Z<p>AF: Initial set of news items</p>
<hr />
<div>This page highlights some news bits from [https://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel] that all QEMU developers should be aware of.<br />
It is not a replacement for reading the mailing list nor a place to announce cool new [[Contribute/StartHere#Features|features]] for users.<br />
<br />
* [[User:Paolo Bonzini|Paolo]] is [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00798.html about to extend] '''MemoryRegion'''s to reference an '''owner''' Object. Therefore new MemoryRegions should not carry the name of its containing device but its purpose within that device.<br/> Note that this pull touches on ''every'' <code>memory_region_init()</code>, <code>memory_region_init_io()</code> and <code>memory_region_init_ram()</code> in the tree (in patch 18/66) and is thus likely to conflict with any patch adding a new device.<br />
* The staging tree '''[https://github.com/afaerber/qemu-cpu/commits/qom-next qom-next]''' was [http://lists.gnu.org/archive/html/qemu-devel/2013-06/msg05470.html revived] by [[User:AF|Andreas]] for '''QOM refactoring''' patches (type constants, cast macros, QOM realize). It should not be used as base for new feature or bugfix patches.<br />
* All new devices derived from '''SysBusDevice''' should [http://lists.gnu.org/archive/html/qemu-devel/2013-07/msg00041.html use QOM realize] (DeviceClass::'''realize''') rather than SysBusDeviceClass::init. Work is under way to convert existing devices. It is permissable to implement neither realize [http://git.qemu.org/?p=qemu.git;a=commit;h=4ce5dae88ecf2bafa0cd663de7e923728b1b3672 nor init].<br/> QOM realize was first [http://lists.gnu.org/archive/html/qemu-devel/2012-01/msg04025.html presented] on the 2012-01-31 KVM call and after much debate of scope [http://git.qemu.org/?p=qemu.git;a=commit;h=249d41720b7dfbb5951b430b9eefdbee7464f515 minimally implemented] for DeviceState by [[User:AF|Andreas]] for v1.4. Some extensions by [[User:Paolo Bonzini|Paolo]] (recursive realization) are still pending device preparations.<br />
* It has been requested to mark PULL request patches <code>[PULL n/m]</code> (rather than <code>[PATCH n/m]</code>) to avoid prompting people in CC to start re-reviewing an in-flight PULL request.<br />
* [[Planning/1.6|v'''1.6''' roadmap]] has been added by [[User:AnthonyLiguori|Anthony]].<br />
* Page [[QOMConventions|'''QOM'''Conventions]] was created by [[User:AF|Andreas]] to summarize some review comments and acceptance guidelines for patches that affect '''all devices'''.</div>AFhttps://wiki.qemu.org/index.php?title=Documentation/QOMConventions&diff=3566Documentation/QOMConventions2013-05-02T12:29:13Z<p>AF: Fix and extend inline usage examples</p>
<hr />
<div>== [[Features/QOM|QOM]] Coding Conventions ==<br />
<br />
* DO use <code>TYPE_''FOO''</code> constants, defined in a header if used in other parts of code<br />
* DO use verbose cast macro names<br />
** bad: <code>PHB(obj)</code><br />
** bad: <code>PCI_HOST(obj)</code><br />
** good: <code>PCI_HOST_BRIDGE(obj)</code><br />
** excessive: <code>PERIPHERAL_COMPONENT_INTERCONNECT_HOST_BRIDGE(obj)</code><br />
* DO use names-separated-by-dashes<br />
* DON'T duplicate literal string type names<br />
<br />
#define TYPE_EXAMPLE "example"<br />
<br />
.name = TYPE_EXAMPLE,<br />
<br />
object_new(TYPE_EXAMPLE)<br />
qdev_create(NULL, TYPE_EXAMPLE)<br />
<br />
* DO place parent field first<br />
* '''DON'T''' use <code>busdev</code> or similar qdev conventions<br />
<br />
typedef struct MyState {<br />
/*< private >*/<br />
Object parent_obj; /* or PCIDevice parent_obj etc. */<br />
/*< public >*/<br />
<br />
uint32_t some_register_value;<br />
} MyState;<br />
<br />
* DO use QOM cast macros (based on struct layout)<br />
* '''DON'T''' rely on qdev's <code>DO_UPCAST()</code> macro (field names)<br />
* DO use per-type variable declarations<br />
* Avoid using cast macros other than <code>OBJECT()</code> inline<br />
<br />
void do_something_with(MyDeviceState *s) {<br />
PCIDevice *pci = PCI_DEVICE(s);<br />
<br />
pci->field = foo; /* not s->pci.field or PCI_DEVICE(s)->field */<br />
qdev_foo(DEVICE(s)); /* okay if cast is not repeated */<br />
<br />
=== When to create class types and macros ===<br />
<br />
If your class (a) will be subclassed or (b) has member fields it needs to put in its class struct then you should write all of:<br />
* a <code>FOO_CLASS</code> macro<br />
* a <code>FOO_GET_CLASS</code> macro<br />
* a FooClass structure definition containing at least the parent class field:<br />
typedef struct {<br />
/*< private >*/<br />
MyParentClass parent_class;<br />
/*< public >*/<br />
<br />
[any fields you need]<br />
} FooClass;<br />
* and your <code>TypeInfo</code> for this class should set the <code>.class_size</code> field to <code>sizeof(FooClass)</code>.<br />
<br />
These ensure that nothing in future should need changing if new fields are added to your class struct, and that any subclasses have the correct typenames available so they won't need to change either even if your implementation changes.<br />
<br />
If your class meets neither of the above requirements (ie it is a simple leaf class) then:<br />
* don't provide <code>FOO_CLASS</code> or <code>FOO_GET_CLASS</code><br />
* don't provide a FooClass structure<br />
* leave the <code>TypeInfo</code>'s <code>.class_size</code> field unset.<br />
<br />
If a change means a class which didn't provide these macros/types now needs to provide them, then your change should add all of them (ie move the class from the latter category to the former).</div>AFhttps://wiki.qemu.org/index.php?title=Documentation/QOMConventions&diff=3419Documentation/QOMConventions2013-02-23T14:45:21Z<p>AF: Restrict TYPE_FOO header placement, add examples and apply some prettifications</p>
<hr />
<div>== [[Features/QOM|QOM]] Coding Conventions ==<br />
<br />
* DO use <code>TYPE_''FOO''</code> constants, defined in a header if used in other parts of code<br />
* DO use verbose cast macro names<br />
** bad: <code>PHB(obj)</code><br />
** bad: <code>PCI_HOST(obj)</code><br />
** good: <code>PCI_HOST_BRIDGE(obj)</code><br />
** excessive: <code>PERIPHERAL_COMPONENT_INTERCONNECT_HOST_BRIDGE(obj)</code><br />
* DO use names-separated-by-dashes<br />
* DON'T duplicate literal string type names<br />
<br />
#define TYPE_EXAMPLE "example"<br />
<br />
.name = TYPE_EXAMPLE,<br />
<br />
object_new(TYPE_EXAMPLE)<br />
qdev_create(NULL, TYPE_EXAMPLE)<br />
<br />
* DO place parent field first<br />
* '''DON'T''' use <code>busdev</code> or similar qdev conventions<br />
<br />
typedef struct MyState {<br />
/*< private >*/<br />
Object parent_obj; /* or PCIDevice parent_obj etc. */<br />
/*< public >*/<br />
<br />
uint32_t some_register_value;<br />
} MyState;<br />
<br />
* DO use QOM cast macros (based on struct layout)<br />
* '''DON'T''' rely on qdev's <code>DO_UPCAST()</code> macro (field names)<br />
* DO use per-type variable declarations<br />
* Avoid using cast macros other than <code>OBJECT()</code> inline<br />
<br />
void do_something_with(MyDeviceState *s) {<br />
PCIDevice *pci = PCI_DEVICE(s);<br />
<br />
pci->field = foo; /* not s->pci.field or PCI(s)->field */<br />
<br />
=== When to create class types and macros ===<br />
<br />
If your class (a) will be subclassed or (b) has member fields it needs to put in its class struct then you should write all of:<br />
* a <code>FOO_CLASS</code> macro<br />
* a <code>FOO_GET_CLASS</code> macro<br />
* a FooClass structure definition containing at least the parent class field:<br />
typedef struct {<br />
/*< private >*/<br />
MyParentClass parent_class;<br />
/*< public >*/<br />
<br />
[any fields you need]<br />
} FooClass;<br />
* and your <code>TypeInfo</code> for this class should set the <code>.class_size</code> field to <code>sizeof(FooClass)</code>.<br />
<br />
These ensure that nothing in future should need changing if new fields are added to your class struct, and that any subclasses have the correct typenames available so they won't need to change either even if your implementation changes.<br />
<br />
If your class meets neither of the above requirements (ie it is a simple leaf class) then:<br />
* don't provide <code>FOO_CLASS</code> or <code>FOO_GET_CLASS</code><br />
* don't provide a FooClass structure<br />
* leave the <code>TypeInfo</code>'s <code>.class_size</code> field unset.<br />
<br />
If a change means a class which didn't provide these macros/types now needs to provide them, then your change should add all of them (ie move the class from the latter category to the former).</div>AFhttps://wiki.qemu.org/index.php?title=Planning/1.4/Testing&diff=3375Planning/1.4/Testing2013-02-15T18:22:21Z<p>AF: Add note on gnutls warnings</p>
<hr />
<div>== Compilation test ==<br />
<br />
{| border="1"<br />
| OS || w/o || KVM || Xen<br />
|-<br />
| openSUSE 12.2 x86_64 || ? || <font color="green">'''rc2'''</font> || <font color="green">'''rc2'''</font><br />
|-<br />
| openSUSE Factory ppc64 || ? || <font color="green">'''rc2'''</font> || N/A<br />
|-<br />
| SLES 11 SP2 s390x || ? || <font color="green">'''rc2'''</font> || N/A<br />
|-<br />
| Mac OS X v10.5.8 ppc/ppc64 || <font color="green">'''rc2'''</font> || N/A || N/A<br />
|-<br />
| OpenBSD 5.2 x86_64 || <font color="green">'''rc2'''</font> || N/A || N/A<br />
|-<br />
| OpenIndiana 151a7 amd64 || <font color="green">'''rc2'''</font> || N/A || N/A<br />
|-<br />
| SmartOS || ? || ? || N/A<br />
|-<br />
| MinGW32 (cross-compilation) || ? || N/A || N/A<br />
|}<br />
<br />
* openSUSE Factory (arm) breaks with gnutls and --enable-werror due to deprecation warnings<br />
* SLE11 SP2 pixman package breaks with --enable-werror due to -Wno-redundant-decls<br />
* Mac OS X GCC shows some redundant redeclaration and potentially uninitialized variable warnings<br />
* OpenBSD build output is cluttered due to system headers incompatible with -Wno-redundant-decls<br />
* OpenBSD amd64 has time_t as int, leading to warnings for TIME_MAX defined as LONG_MAX<br />
* illumos has struct option (getopt.h) with non-const char*, leading to warnings for string constants<br />
<br />
== Block ==<br />
<br />
{| border="1"<br />
| Test || Result<br />
|-<br />
| qemu-iotests -qcow2 || <font color="green">'''rc2'''</font><br />
|-<br />
| qemu-iotests -raw || <font color="green">'''rc2'''</font><br />
|}</div>AFhttps://wiki.qemu.org/index.php?title=Documentation/QOMConventions&diff=3373Documentation/QOMConventions2013-02-15T16:03:46Z<p>AF: keep the class example in one piece</p>
<hr />
<div>== [[Features/QOM|QOM]] Coding Conventions ==<br />
<br />
* DO use TYPE_FOO constants defined in a header<br />
* DO use verbose macro names<br />
* DO use names-separated-by-dashes<br />
* DON'T duplicate literal string type names<br />
<br />
#define TYPE_EXAMPLE "example"<br />
<br />
.name = TYPE_EXAMPLE,<br />
<br />
object_new(TYPE_EXAMPLE)<br />
qdev_create(NULL, TYPE_EXAMPLE)<br />
<br />
* DO place parent field first<br />
* DON'T use “busdev” or similar qdev conventions<br />
<br />
typedef struct MyState {<br />
/*< private >*/<br />
Object parent_obj; /* or PCIDevice parent_obj etc. */<br />
/*< public >*/<br />
<br />
uint32_t some_register_value;<br />
} MyState;<br />
<br />
* DO use cast macros (based on struct layout)<br />
* DON'T rely on DO_UPCAST() (field names)<br />
* DO use per-type variable declarations<br />
* Avoid using cast macros other than OBJECT() inline<br />
<br />
void do_something_with(MyDeviceState *s) {<br />
PCIDevice *pci = PCI_DEVICE(s);<br />
<br />
pci->field = foo; /* not s->pci.field or PCI(s)->field */<br />
<br />
=== When to create class types and macros ===<br />
<br />
CAUTION: section still under discussion<br />
<br />
If your class (a) will be subclassed or (b) has member fields it needs to put in its class struct then you should write all of:<br />
* a <code>FOO_CLASS</code> macro<br />
* a <code>FOO_GET_CLASS</code> macro<br />
* a FooClass structure definition containing at least the parent class field:<br />
typedef struct {<br />
/*< private >*/<br />
MyParentClass parent_class;<br />
/*< public >*/<br />
<br />
[any fields you need]<br />
} FooClass;<br />
* and your <code>TypeInfo</code> for this class should set the <code>.class_size</code> field to <code>sizeof(FooClass)</code>.<br />
<br />
These ensure that nothing in future should need changing if new fields are added to your class struct, and that any subclasses have the correct typenames available so they won't need to change either even if your implementation changes.<br />
<br />
If your class meets neither of the above requirements (ie it is a simple leaf class) then:<br />
* don't provide <code>FOO_CLASS</code> or <code>FOO_GET_CLASS</code><br />
* don't provide a FooClass structure<br />
* leave the <code>TypeInfo</code>'s <code>.class_size</code> field unset.<br />
<br />
If a change means a class which didn't provide these macros/types now needs to provide them, then your change should add all of them (ie move the class from the latter category to the former).</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3364ChangeLog/1.42013-02-14T16:08:18Z<p>AF: Mention CPU being a device now.</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Device emulation ===<br />
<br />
* New QOM infrastructure was introduced, exposing a boolean "realized" property.<br />
* The CPU is now a device. Adding CPUs via -device or HMP/QMP device_add is not supported yet.<br />
<br />
==== Device assignment ====<br />
<br />
==== USB ====<br />
<br />
=== ARM ===<br />
<br />
* Various minor bugfixes; no new features in this release.<br />
<br />
=== MIPS ===<br />
<br />
=== PowerPC ===<br />
* Pseries: NVRAM support for improved guest installation experience<br />
* G3/G4: Allow dcbzl (for Mac OS X guests)<br />
* e500: Linux guests don't use use SWTLB anymore, freeing memory for real applications<br />
* e500: MSI support<br />
* e500: Allow for up to 31 PCI devices with -M ppce500<br />
* e500: Support idle hcall when running KVM on e500mc or above<br />
* e500: Emulate the EPR facility (e500mc and above)<br />
* PReP: Emulate a full PC87312 Super I/O chipset. This adds a parallel port. Changing the chipset configuration register at runtime is not yet supported.<br />
* g3beige: New openBIOS version can load Mac OS X guests<br />
<br />
=== S390 ===<br />
* New virtio-ccw machine and transport support<br />
* Add -cpu ? support<br />
<br />
=== x86 ===<br />
* testdev?<br />
* xlevel argument for -cpu option currently silently fix-ups it's value if it's less than 0x80000000. Fix-up will be removed in future QEMU versions and users are expected to provide valid xlevel value or QEMU will fail to start.<br />
<br />
==== KVM ====<br />
<br />
==== Xen ====<br />
* persistent grants support implemented in xen_disk (up to 450% speed in improvement with 15 guests!!);<br />
* safer and correcter flush operation (BLKIF_OP_FLUSH_DISKCACHE) introduced in xen_disk;<br />
* multiple secondary PV consoles support in xen_console;<br />
* many bug fixes.<br />
<br />
=== QMP ===<br />
<br />
=== Network devices ===<br />
<br />
==== SLIRP ====<br />
<br />
=== Block devices ===<br />
<br />
=== Live Migration ===<br />
<br />
Move migration from a timer to a thread. Migration was blocking the iothread for too long. Latency of the other threads have improved, and measurements/throughput/latency of migration has also improved.<br />
<br />
== User-mode emulation ==<br />
<br />
* Fix ppc guest signal handling<br />
* Fix MIPS target<br />
<br />
== Guest agent ==<br />
<br />
== Host support ==</div>AFhttps://wiki.qemu.org/index.php?title=Planning/1.4/Testing&diff=3363Planning/1.4/Testing2013-02-14T03:10:33Z<p>AF: Document some test results</p>
<hr />
<div>== Compilation test ==<br />
<br />
{| border="1"<br />
| OS || w/o || KVM || Xen<br />
|-<br />
| openSUSE 12.2 x86_64 || ? || <font color="green">'''rc2'''</font> || <font color="green">'''rc2'''</font><br />
|-<br />
| openSUSE Factory ppc64 || ? || <font color="green">'''rc2'''</font> || N/A<br />
|-<br />
| SLES 11 SP2 s390x || ? || <font color="green">'''rc2'''</font> || N/A<br />
|-<br />
| Mac OS X v10.5.8 ppc/ppc64 || <font color="green">'''rc2'''</font> || N/A || N/A<br />
|-<br />
| OpenBSD 5.2 x86_64 || <font color="green">'''rc2'''</font> || N/A || N/A<br />
|-<br />
| OpenIndiana 151a7 amd64 || <font color="green">'''rc2'''</font> || N/A || N/A<br />
|-<br />
| SmartOS || ? || ? || N/A<br />
|-<br />
| MinGW32 (cross-compilation) || ? || N/A || N/A<br />
|}<br />
<br />
* SLE11 SP2 pixman package breaks with --enable-werror due to -Wno-redundant-decls<br />
* Mac OS X GCC shows some redundant redeclaration and potentially uninitialized variable warnings<br />
* OpenBSD build output is cluttered due to system headers incompatible with -Wno-redundant-decls<br />
* OpenBSD amd64 has time_t as int, leading to warnings for TIME_MAX defined as LONG_MAX<br />
* illumos has struct option (getopt.h) with non-const char*, leading to warnings for string constants</div>AFhttps://wiki.qemu.org/index.php?title=Documentation/Debugging&diff=3360Documentation/Debugging2013-02-12T21:29:36Z<p>AF: SIGUSR2 -> SIGUSR1</p>
<hr />
<div>== Using valgrind ==<br />
<br />
You can use [http://www.valgrind.org valgrind] to detect memory corruption and leaks within QEMU. valgrind really doesn't function well when using KVM so it's advised to use TCG. Additionally, you will need to use the <code>--smc-check=all</code> option to instruct valgrind to detect self-modifying which TCG makes extensive use of.<br />
<br />
== Using gdb ==<br />
<br />
You can use gdb in a range of ways. <br />
<br />
If you invoke qemu from within gdb, you'll probably want to skip SIGUSR1 ("handle SIGUSR1 noprint").<br />
<br />
You can also invoke qemu with the -gdb option (or -s shortcut) which provides a gdb stub. You can then connect from any machine on the network (start up gdb, then use "target remote <ip>:<portnum>"). See the man page for more information.<br />
<br />
Depending on what you are trying to debug, it may help to use the -S option to qemu (which freezes the CPU on startup), so you can get qemu up, attach gdb and get it set up, then continue.<br />
<br />
On some architectures, using hardware breakpoints (gdb hbreak command) may work better than software breakpoints (gdb break command)</div>AFhttps://wiki.qemu.org/index.php?title=Documentation/QOMConventions&diff=3332Documentation/QOMConventions2013-02-07T14:57:57Z<p>AF: Add link to QOM feature page</p>
<hr />
<div>== [[Features/QOM|QOM]] Coding Conventions ==<br />
<br />
* DO use TYPE_FOO constants defined in a header<br />
* DO use verbose macro names<br />
* DO use names-separated-by-dashes<br />
* DON'T duplicate literal string type names<br />
<br />
#define TYPE_EXAMPLE "example"<br />
<br />
.name = TYPE_EXAMPLE,<br />
<br />
object_new(TYPE_EXAMPLE)<br />
qdev_create(NULL, TYPE_EXAMPLE)<br />
<br />
* DO place parent field first<br />
* DON'T use “busdev” or similar qdev conventions<br />
<br />
typedef struct MyState {<br />
/*< private >*/<br />
Object parent_obj; /* or PCIDevice parent_obj etc. */<br />
/*< public >*/<br />
<br />
uint32_t some_register_value;<br />
} MyState;<br />
<br />
* DO use cast macros (based on struct layout)<br />
* DON'T rely on DO_UPCAST() (field names)<br />
* DO use per-type variable declarations<br />
* Avoid using cast macros other than OBJECT() inline<br />
<br />
void do_something_with(MyDeviceState *s) {<br />
PCIDevice *pci = PCI_DEVICE(s);<br />
<br />
pci->field = foo; /* not s->pci.field or PCI(s)->field */</div>AFhttps://wiki.qemu.org/index.php?title=Documentation/QOMConventions&diff=3331Documentation/QOMConventions2013-02-07T14:52:34Z<p>AF: Document some collected QOM conventions from my KVM Forum 2012 QOM vadis talk</p>
<hr />
<div>== QOM Coding Conventions ==<br />
<br />
* DO use TYPE_FOO constants defined in a header<br />
* DO use verbose macro names<br />
* DO use names-separated-by-dashes<br />
* DON'T duplicate literal string type names<br />
<br />
#define TYPE_EXAMPLE "example"<br />
<br />
.name = TYPE_EXAMPLE,<br />
<br />
object_new(TYPE_EXAMPLE)<br />
qdev_create(NULL, TYPE_EXAMPLE)<br />
<br />
* DO place parent field first<br />
* DON'T use “busdev” or similar qdev conventions<br />
<br />
typedef struct MyState {<br />
/*< private >*/<br />
Object parent_obj; /* or PCIDevice parent_obj etc. */<br />
/*< public >*/<br />
<br />
uint32_t some_register_value;<br />
} MyState;<br />
<br />
* DO use cast macros (based on struct layout)<br />
* DON'T rely on DO_UPCAST() (field names)<br />
* DO use per-type variable declarations<br />
* Avoid using cast macros other than OBJECT() inline<br />
<br />
void do_something_with(MyDeviceState *s) {<br />
PCIDevice *pci = PCI_DEVICE(s);<br />
<br />
pci->field = foo; /* not s->pci.field or PCI(s)->field */</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3311ChangeLog/1.42013-01-24T09:27:05Z<p>AF: Mention pc87312 adding parallel port (from ChangeLog/1.2)</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Device emulation ===<br />
<br />
* New QOM infrastructure was introduced exposing a boolean "realized" property.<br />
<br />
==== Device assignment ====<br />
<br />
==== USB ====<br />
<br />
=== ARM ===<br />
<br />
=== MIPS ===<br />
<br />
=== PowerPC ===<br />
* Pseries: NVRAM support for improved guest installation experience<br />
* e500: Linux guests don't use use SWTLB anymore, freeing memory for real applications<br />
* e500: MSI support<br />
* e500: Allow for up to 31 PCI devices with -M ppce500<br />
* e500: Support idle hcall when running KVM on e500mc or above<br />
* e500: Emulate the EPR facility (e500mc and above)<br />
* PReP: Emulate a full PC87312 Super I/O chipset. This adds a parallel port. Changing the chipset configuration register at runtime is not yet supported.<br />
<br />
=== S390 ===<br />
<br />
=== x86 ===<br />
* testdev?<br />
* xlevel argument for -cpu option currently silently fix-ups it's value if it's less than 0x80000000. Fix-up will be removed in future QEMU versions and users are expected to provide valid xlevel value or QEMU will fail to start.<br />
<br />
==== KVM ====<br />
<br />
==== Xen ====<br />
* persistent grants support implemented in xen_disk (up to 450% speed in improvement with 15 guests!!);<br />
* safer and correcter flush operation (BLKIF_OP_FLUSH_DISKCACHE) introduced in xen_disk;<br />
* multiple secondary PV consoles support in xen_console;<br />
* many bug fixes.<br />
<br />
=== QMP ===<br />
<br />
=== Network devices ===<br />
<br />
==== SLIRP ====<br />
<br />
=== Block devices ===<br />
<br />
=== Live Migration ===<br />
<br />
Move migration from a timer to a thread. Migration was blocking the iothread for too long. Latency of the other threads have improved, and measurements/throughput/latency of migration has also improved.<br />
<br />
== User-mode emulation ==<br />
<br />
* Fix ppc guest signal handling<br />
* Fix MIPS target<br />
<br />
== Guest agent ==<br />
<br />
== Host support ==</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.2&diff=3310ChangeLog/1.22013-01-24T09:25:07Z<p>AF: Drop PC87312, the corresponding pull was not merged</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* ... QMP error changes go here ...<br />
* File descriptors can be passed to qemu using the new ''add-fd/remove-fd'' QMP commands. It is intended that they can be used in any place where QEMU would expect a file name. This is ensured for disk images, support in other parts of QEMU may still be inconsistent.<br />
<br />
=== ARM ===<br />
* LPAE (large physical address extensions) are now supported for the Cortex-A15 CPU; you can now run a vexpress-a15 model with more than 4GB of RAM<br />
* The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.<br />
* New board model: i.MX31<br />
<br />
=== PowerPC ===<br />
* The pSeries target correctly creates segment size device tree nodes (fixes odd bugs with HV vs PR KVM)<br />
* The pSeries target implements an IOMMU.<br />
* ... pSeries VGA, USB, etc.? ...<br />
* The E500 target generates its device tree dynamically<br />
* New mpc8544ds -machine option: dumpdtb. This allows to dump the dynamically generated device tree to a file.<br />
* Emulation for e5500 cores<br />
<br />
=== x86 ===<br />
* Support for PCI passthrough is available for Xen fully-virtualized domains.<br />
* The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.<br />
* When using KVM, the in-kernel APIC supports MSI.<br />
* Also when using KVM, new PV EOI feature improves performance when both host and guest run linux 3.6-rc1 and up. To enable, add +kvm_pv_eoi to -cpu option, e.g.<br />
-cpu kvm64,+kvm_pv_eoi<br />
* The "cpudef" config file section is being deprecated and may be removed in v1.3.<br />
<br />
=== Device emulation ===<br />
* VGA and QXL cards (obtained with ''-vga std'' and ''-vga qxl'') have 16 MB of VRAM rather than 8 MB.<br />
* Three new SCSI host bus adapter devices are available: ''am53c974'' and ''dc390'' emulate respectively an AMD PCI PCscsi and a Tekram DC-390 device, both of which are supported on older operating systems including MS DOS 6.2, MS Windows 3.11, 98 SE, NT 3.1 and NT 4.0. ''megasas'' emulated an LSI SAS1078 RAID controller. The next version of SeaBIOS will support booting from am53c974 and dc390 disks.<br />
* An USB-attached SCSI controller is now available.<br />
<br />
=== Audio devices ===<br />
* The PC speaker audio card is now available by default.<br />
<br />
=== Network devices ===<br />
* The guestfwd argument to slirp now supports running an arbitrary command on every TCP connection (as in inetd). This is invoked by specifying a target that starts with "cmd:".<br />
<br />
=== Block devices ===<br />
* Emulated IDE and SCSI as well as virtio-blk devices can now switch the cache mode between writethrough and writeback. virtio-blk automatically switches to writethrough if the guest driver doesn't support flushes.<br />
* The default cache mode for images is now ''writeback''.<br />
* Emulated SCSI devices can be given a custom vendor name, product name and WWN.<br />
* Improved support for passthrough of SCSI tapes and media changers.<br />
* libiscsi can be used together with scsi-generic to pass iSCSI tapes and media changers to the guest.<br />
* When raw files are streamed, parts of the files that are holes in the underlying filesystem are treated as unallocated (as long as the OS supports either the FIEMAP ioctl or the SEEK_HOLE/SEEK_DATA modes)<br />
* CD-ROM drives can now be used with AHCI<br />
<br />
==== qcow2 ====<br />
* qcow2 images support a new option, ''lazy_refcounts''. If on, the speed of cache=writethrough mode will be improved, at the cost of requiring an fsck-like pass (and thus QEMU 1.2) to use the image again after a power loss.<br />
* ''qemu-img check'' can now repair qcow2 and QED images with the new ''-r'' option.<br />
<br />
==== VMDK ====<br />
* Support for images in the ''streamOptimized'' subformat has been fixed. This is a VMDK subformat commonly used with OVF appliances.<br />
<br />
==== rbd ====<br />
* rbd no longer ignores the cache setting<br />
<br />
=== Live Migration, Save/Restore ===<br />
* Migration works much better with guests with large memory.<br />
* USB mass storage and passthrough devices support live migration.<br />
<br />
=== VNC ===<br />
* The threaded VNC server is now enabled by default.<br />
<br />
== Guest agent ==<br />
* A new command "fstrim" was added to the guest agent.<br />
<br />
== New targets ==<br />
* OpenRISC is now supported for both user-mode and system emulation.<br />
<br />
== Build dependencies ==<br />
* No changes from 1.1.0.</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3309ChangeLog/1.42013-01-24T09:22:32Z<p>AF: Mention pc87312 emulation (PReP)</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Device emulation ===<br />
<br />
* New QOM infrastructure was introduced exposing a boolean "realized" property.<br />
<br />
==== Device assignment ====<br />
<br />
==== USB ====<br />
<br />
=== ARM ===<br />
<br />
=== MIPS ===<br />
<br />
=== PowerPC ===<br />
* Pseries: NVRAM support for improved guest installation experience<br />
* e500: Linux guests don't use use SWTLB anymore, freeing memory for real applications<br />
* e500: MSI support<br />
* e500: Allow for up to 31 PCI devices with -M ppce500<br />
* e500: Support idle hcall when running KVM on e500mc or above<br />
* e500: Emulate the EPR facility (e500mc and above)<br />
* PReP: Emulate a full PC87312 Super I/O chipset. Changing its configuration register at runtime is not yet supported.<br />
<br />
=== S390 ===<br />
<br />
=== x86 ===<br />
* testdev?<br />
* xlevel argument for -cpu option currently silently fix-ups it's value if it's less than 0x80000000. Fix-up will be removed in future QEMU versions and users are expected to provide valid xlevel value or QEMU will fail to start.<br />
<br />
==== KVM ====<br />
<br />
==== Xen ====<br />
* persistent grants support implemented in xen_disk (up to 450% speed in improvement with 15 guests!!);<br />
* safer and correcter flush operation (BLKIF_OP_FLUSH_DISKCACHE) introduced in xen_disk;<br />
* multiple secondary PV consoles support in xen_console;<br />
* many bug fixes.<br />
<br />
=== QMP ===<br />
<br />
=== Network devices ===<br />
<br />
==== SLIRP ====<br />
<br />
=== Block devices ===<br />
<br />
=== Live Migration ===<br />
<br />
Move migration from a timer to a thread. Migration was blocking the iothread for too long. Latency of the other threads have improved, and measurements/throughput/latency of migration has also improved.<br />
<br />
== User-mode emulation ==<br />
<br />
* Fix ppc guest signal handling<br />
* Fix MIPS target<br />
<br />
== Guest agent ==<br />
<br />
== Host support ==</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3308ChangeLog/1.42013-01-24T09:19:28Z<p>AF: Mentioned QOM "realized" property</p>
<hr />
<div>== System emulation ==<br />
<br />
=== Device emulation ===<br />
<br />
* New QOM infrastructure was introduced exposing a boolean "realized" property.<br />
<br />
==== Device assignment ====<br />
<br />
==== USB ====<br />
<br />
=== ARM ===<br />
<br />
=== MIPS ===<br />
<br />
=== PowerPC ===<br />
* Pseries: NVRAM support for improved guest installation experience<br />
* e500: Linux guests don't use use SWTLB anymore, freeing memory for real applications<br />
* e500: MSI support<br />
* e500: Allow for up to 31 PCI devices with -M ppce500<br />
* e500: Support idle hcall when running KVM on e500mc or above<br />
* e500: Emulate the EPR facility (e500mc and above)<br />
<br />
=== S390 ===<br />
<br />
=== x86 ===<br />
* testdev?<br />
* xlevel argument for -cpu option currently silently fix-ups it's value if it's less than 0x80000000. Fix-up will be removed in future QEMU versions and users are expected to provide valid xlevel value or QEMU will fail to start.<br />
<br />
==== KVM ====<br />
<br />
==== Xen ====<br />
* persistent grants support implemented in xen_disk (up to 450% speed in improvement with 15 guests!!);<br />
* safer and correcter flush operation (BLKIF_OP_FLUSH_DISKCACHE) introduced in xen_disk;<br />
* multiple secondary PV consoles support in xen_console;<br />
* many bug fixes.<br />
<br />
=== QMP ===<br />
<br />
=== Network devices ===<br />
<br />
==== SLIRP ====<br />
<br />
=== Block devices ===<br />
<br />
=== Live Migration ===<br />
<br />
Move migration from a timer to a thread. Migration was blocking the iothread for too long. Latency of the other threads have improved, and measurements/throughput/latency of migration has also improved.<br />
<br />
== User-mode emulation ==<br />
<br />
* Fix ppc guest signal handling<br />
* Fix MIPS target<br />
<br />
== Guest agent ==<br />
<br />
== Host support ==</div>AFhttps://wiki.qemu.org/index.php?title=Features/CPUHotplug&diff=3179Features/CPUHotplug2012-11-09T13:34:23Z<p>AF: Filled in commit ID for APIC init move</p>
<hr />
<div>= Summary =<br />
This feature is about allowing CPU hotplug in QEMU.<br />
<br />
= Owner =<br />
<br />
* '''Name:''' Igor Mammedov<br />
* '''Email:''' imammedo@redhat.com<br />
<br />
= Detailed Summary =<br />
It was proposed to use device-add/device-del interface for hot-plugging CPUs<br />
instead of using it's own interface. For this to work CPUs should become<br />
child of Device and do not require external calls for creating or<br />
initializing it. <br />
<br />
= Roadmap for QEMU 1.3 =<br />
== X86CPU ==<br />
* CPU cleanups. Move CPU internals inside CPU object<br />
* move tcg init code CPU. commits d65e98, 84e3b60, eeec69d, 130a038, <br />
* move CPU reset from board level into CPU. commits 65dee3805, dd673288<br />
* move APIC creation/initialization into CPU object. commit [http://git.qemu.org/?p=qemu.git;a=commit;h=bdeec802170d5dc9f0f8a01235c3488dca3ff83b bdeec802170d5dc9f0f8a01235c3488dca3ff83b]<br />
* CPU as Device<br />
* needed for converting "CPUID features to properties"<br />
* allows to use X86CPU with device_add command after CPU subclasses is<br />
implemented.<br />
* http://www.mail-archive.com/qemu-devel@nongnu.org/msg136505.html<br />
* CPUID features to properties<br />
* ability to set/get features using common FEAT_FOO=VAL property interfaces<br />
* needed for conversion from CPU models to CPU subclasses.<br />
* obsolete series with dynamic properties<br />
http://comments.gmane.org/gmane.comp.emulators.qemu/165728<br />
rewrite to static properties in progress ...<br />
* CPU models as CPU subclasses<br />
* should provide complete QOM object interface to CPU subclasses.<br />
* gives ability to create/initialize CPUs using CPU subclass name without<br />
any ad-hoc calls.</div>AFhttps://wiki.qemu.org/index.php?title=Contribute&diff=3155Contribute2012-10-16T14:27:43Z<p>AF: Add link to CPU hotplug</p>
<hr />
<div>== Project Infrastructure ==<br />
* Source repository: [http://git.qemu.org Mainline qemu.git] and [http://repo.or.cz/w/qemu.git developer repositories]<br />
* Mailing list: [[MailingLists|mailing list]]<br />
* IRC: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
* Bug tracker: [[Contribute/ReportABug|launchpad]]<br />
* Continuous integration: [[ContinuousIntegration|buildbot]]<br />
* Wiki: [[Main_Page|this website]]<br />
<br />
== Key Information ==<br />
* [[Documentation/GettingStartedDevelopers|Getting started for developers]]<br />
* [[Contribute/SubmitAPatch|How to submit a patch]]<br />
* [[Contribute/TrivialPatches|How to submit a trivial patch]]<br />
* [[Contribute/ReportABug|How to report a bug]]<br />
<br />
== Students ==<br />
<br />
QEMU participated in Google's Summer of Code 2011 program.<br />
<br />
Some reports on the processed topics (partially or fully) from 2010 can be found here:<br />
* [[Google Summer of Code 2010/QMP|QMP]] - about syncing QEMU monitor and QEMU Machine Protocol (QMP) features<br />
* [[Google Summer of Code 2010/VNC|VNC]] - about improvements in speed and features of QEMU supported VNC protocols<br />
<br />
For more information on GSoC-2011 and especially lots more of probably still open topics for improvement please see [[Google_Summer_of_Code_2011|this page]].<br />
<br />
== Planning ==<br />
* [[Planning/1.3| 1.3]]<br />
* [[Planning/1.2| 1.2]]<br />
* [[Planning/1.1| 1.1]]<br />
* [[Planning/1.0| 1.0]]<br />
* [[Planning/0.15| 0.15]]<br />
* [[Planning/0.15-example| 0.15 example]]<br />
* [[Planning/0.14/Testing| 0.14 testing]]<br />
* [[Planning/0.14| 0.14]]<br />
<br />
== Features ==<br />
* [[Features |/Features ]]<br />
* [[Features/0.13| 0.13]]<br />
* [[Features/0.13/HelperNetworking| 0.13/HelperNetworking]]<br />
* [[Features/0.13|Proposed 0.13 Features]]<br />
* [[Features/AHCI| AHCI]]<br />
* [[Features/Block/Merge| Block/Merge]]<br />
* [[Features/CPUModels| CPUModels]]<br />
* [[Features/Cow2| Cow2]]<br />
* [[Features/DriveRefactoring| DriveRefactoring]]<br />
* [[Features/DiskIOLimits| DiskIOLimits]]<br />
* [[Features/FVD| FVD]]<br />
* [[Features/FVD/Compare| FVD/Compare]]<br />
* [[Features/FVD/Design| FVD/Design]]<br />
* [[Features/FVD/Engineering| FVD/Engineering]]<br />
* [[Features/FVD/Experiment| FVD/Experiment]]<br />
* [[Features/FVD/Specification| FVD/Specification]]<br />
* [[Features/FVD/WhyFVD| FVD/WhyFVD]]<br />
* [[Features/FaultTolerance| FaultTolerance]]<br />
* [[Features/HelperNetworking| HelperNetworking]]<br />
* [[Features/NetDeviceFailover| NetDeviceFailover]]<br />
* [[Features/PCIMemoryAPI| PCIMemoryAPI]]<br />
* [[Features/PostCopyLiveMigration| PostCopy LiveMigration]]<br />
* [[Features/PVCrashDetection| PVCrashDetection]]<br />
* [[Features/Q35| Q35]]<br />
* [[Features/QDevCleanup| QDevCleanup]]<br />
* [[Features/QED| QED]]<br />
* [[Features/QED/OnlineDefrag| QED/OnlineDefrag]]<br />
* [[Features/QED/OutstandingWork| QED/OutstandingWork]]<br />
* [[Features/QED/ParallelSubmission| QED/ParallelSubmission]]<br />
* [[Features/QED/ScanAvoidance| QED/ScanAvoidance]]<br />
* [[Features/QED/Specification| QED/Specification]]<br />
* [[Features/QED/Streaming| QED/Streaming]]<br />
* [[Features/QED/Trim| QED/Trim]]<br />
* [[Features/QMP2| QMP2]]<br />
* [[Features/QMP_0.14| QMP_0.14]]<br />
* [[Features/QOM| QOM]]<br />
* [[Features/QOM/CPU| QOM/CPU]]<br />
* [[Features/Qcow2DataIntegrity| Qcow2DataIntegrity]]<br />
* [[Features/RamAPI| RamAPI]]<br />
* [[Features/ResetAPI| ResetAPI]]<br />
* [[Features/Sheepdog| Sheepdog]]<br />
* [[Features/Sheepdog/Corosync_Config| Sheepdog/Corosync]]<br />
* [[Features/Sheepdog/Getting_Started| Sheepdog/Getting]]<br />
* [[Features/Smartcard| Smartcard]]<br />
* [[Features/Smartcard/Specification| Smartcard/Specification]]<br />
* [[Features/Snapshots| Snapshots]]<br />
* [[Features/Snapshots2| Snapshots2]]<br />
* [[Features/SnapshottingImprovements| SnapshottingImprovements]]<br />
* [[Features/TCI| TCG Interpreter ]]<br />
* [[Features/Tracing| Tracing]]<br />
* [[Features/Tracing/Roadmap| Tracing/Roadmap]]<br />
* [[Features/Tracing/UseCases| Tracing/UseCases]]<br />
* [[Features/Usability |Usability]]<br />
* [[Features/VirtioBlkBoot| VirtioBlkBoot]]<br />
* [[Features/VirtioIoeventfd| VirtioIoeventfd]]<br />
<br />
=== Work in progress ===<br />
* [[Features/40p| 40p]]<br />
* [[Features/BeBox| BeBox]]<br />
* [[Features/CPUHotplug|CPUHotplug]]<br />
* [[Features/GtkDisplayState| GtkDisplayState]]<br />
* [[Features/PRePCleanup|PReP cleanup]]<br />
* [[Features/Q35|Q35]]<br />
* [[Features/RL78| RL78]]<br />
* [[Features/Tegra2|Tegra2]]<br />
<br />
=== Downstream ===<br />
* 6502 (on [https://github.com/AVEx-6502/qemu-6502 GitHub])<br />
* AT91SAM9263 (on [https://github.com/Dushistov/qemu_at91sam9263 Github])<br />
* Beagleboard (at Linaro)<br />
* Blackfin<br />
* Goldfish (at Android)<br />
* [[Features/HPPA| HPPA]]<br />
* Taskit Portux920T (on [https://github.com/daro-tuberlin/Qemu-taskit-920T GitHub])<br />
* [[Features/Z80| Z80]]<br />
<br />
== GIT repo ==<br />
* [http://git.qemu.org/ QEMU.org GIT repo]<br />
* [http://repo.or.cz/w/qemu.git repo.or.cz]<br />
* [http://repo.or.cz/w/qemu/aliguori.git Anthony Liguori's QEMU tree]<br />
* [http://repo.or.cz/w/qemu/aliguori-queue.git Anthony Liguori's QEMU queue]<br />
* [http://git.kernel.org/?p=linux/kernel/git/mst/qemu.git;a=summary Qemu patches by Michael S. Tsirkin. Warning: constantly rebased. pci subsystem]<br />
* [http://repo.or.cz/w/qemu/kevin.git kwolf Random patches. block device]<br />
* [http://blackfin.uclinux.org/git/?p=users/vapier/qemu.git Blackfin QEMU tree]<br />
<br />
== Developers and Maintainers ==<br />
<br />
* [[User:Agraf |Alexander Graf ]] (maintainer for PPC, S390)<br />
* [[User:AnthonyLiguori |Anthony Liguori ]] (committer, maintainer)<br />
* [[User:Wmat |Bill Traynor ]]<br />
* [[User:Blueswirl |Blueswirl ]] (committer, maintainer for SPARC, bsd-user)<br />
* [[User:edgar |Edgar E. Iglesias ]] (committer, maintainer for CRIS, Microblaze)<br />
* [[User:Joro |Joro ]]<br />
* [[User:LuizCapitulino |Luiz Capitulino ]] (maintainer for QMP/QAPI)<br />
* [[User:Mariusmm |Màrius Montón ]]<br />
* [[User:MichaelTsirkin |Michael Tsirkin ]] (maintainer for PCI, vhost)<br />
* [[User:Miguel |Miguel Di Ciurcio Filho ]]<br />
* [[User:NataliaPortillo |Natalia Portillo ]]<br />
* [[User:Paolo_Bonzini |Paolo Bonzini ]] (maintainer for NBD, SCSI)<br />
* [[User:Pbrook |Paul Brook ]] (committer, maintainer for ARM, m68k)<br />
* [[User:Stefan_Weil |Stefan Weil ]] (maintainer for [[Features/TCI|TCI]], [[Hosts/W32|w32, w64]])<br />
* [[User:Stefanha |Stefan Hajnoczi ]] (maintainer for tracing)<br />
* [[User:wuzhy |Zhi Yong Wu ]] ([[Features/DiskIOLimits|Block I/O throttling]], [[Features/VirtioSCSI|virtio-scsi&tcm_vhost]])<br />
<br />
See file [http://repo.or.cz/w/qemu.git/blob_plain/HEAD:/MAINTAINERS MAINTAINERS] in the QEMU source distribution for the latest list<br />
of QEMU maintainers.</div>AFhttps://wiki.qemu.org/index.php?title=Features/CPUHotplug&diff=3154Features/CPUHotplug2012-10-16T14:16:52Z<p>AF: contents by Igor</p>
<hr />
<div>= Summary =<br />
This feature is about allowing CPU hotplug in QEMU.<br />
<br />
= Owner =<br />
<br />
* '''Name:''' Igor Mammedov<br />
* '''Email:''' imammedo@redhat.com<br />
<br />
= Detailed Summary =<br />
It was proposed to use device-add/device-del interface for hot-plugging CPUs<br />
instead of using it's own interface. For this to work CPUs should become<br />
child of Device and do not require external calls for creating or<br />
initializing it. <br />
<br />
= Roadmap for QEMU 1.3 =<br />
== X86CPU ==<br />
* CPU cleanups. Move CPU internals inside CPU object<br />
* move tcg init code CPU. commits d65e98, 84e3b60, eeec69d, 130a038, <br />
* move CPU reset from board level into CPU. commits 65dee3805, dd673288<br />
* move APIC creation/initialization into CPU object. http://www.mail-archive.com/qemu-devel@nongnu.org/msg136235.html<br />
* CPU as Device<br />
* needed for converting "CPUID features to properties"<br />
* allows to use X86CPU with device_add command after CPU subclasses is<br />
implemented.<br />
* http://www.mail-archive.com/qemu-devel@nongnu.org/msg136505.html<br />
* CPUID features to properties<br />
* ability to set/get features using common FEAT_FOO=VAL property interfaces<br />
* needed for conversion from CPU models to CPU subclasses.<br />
* obsolete series with dynamic properties<br />
http://comments.gmane.org/gmane.comp.emulators.qemu/165728<br />
rewrite to static properties in progress ...<br />
* CPU models as CPU subclasses<br />
* should provide complete QOM object interface to CPU subclasses.<br />
* gives ability to create/initialize CPUs using CPU subclass name without<br />
any ad-hoc calls.</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.2&diff=3118ChangeLog/1.22012-08-31T16:25:08Z<p>AF: Add deprecation note for -cpudef</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* ... QMP error changes go here ...<br />
* File descriptors can be passed to qemu using the new ''add-fd/remove-fd'' QMP commands. It is intended that they can be used in any place where QEMU would expect a file name. This is ensured for disk images, support in other parts of QEMU may still be inconsistent.<br />
<br />
=== ARM ===<br />
* The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.<br />
* New board model: i.MX31<br />
<br />
=== PowerPC ===<br />
* The pSeries target correctly creates segment size device tree nodes (fixes odd bugs with HV vs PR KVM)<br />
* The pSeries target implements an IOMMU.<br />
* ... pSeries VGA, USB, etc.? ...<br />
* The E500 target generates its device tree dynamically<br />
* New mpc8544ds -machine option: dumpdtb. This allows to dump the dynamically generated device tree to a file.<br />
* Emulation for e5500 cores<br />
* PC87312 Super I/O chipset emulation for PReP, adding parallel port to prep machine<br />
<br />
=== x86 ===<br />
* Support for PCI passthrough is available for Xen fully-virtualized domains.<br />
* The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.<br />
* When using KVM, the in-kernel APIC supports MSI.<br />
* The "-cpudef" command line option is being deprecated and may be removed in v1.3.<br />
<br />
=== Device emulation ===<br />
* VGA and QXL cards (obtained with ''-vga std'' and ''-vga qxl'') have 16 MB of VRAM rather than 8 MB.<br />
* Three new SCSI host bus adapter devices are available: ''am53c974'' and ''dc390'' emulate respectively an AMD PCI PCscsi and a Tekram DC-390 device, both of which are supported on older operating systems including MS DOS 6.2, MS Windows 3.11, 98 SE, NT 3.1 and NT 4.0. ''megasas'' emulated an LSI SAS1078 RAID controller. The next version of SeaBIOS will support booting from am53c974 and dc390 disks.<br />
* An USB-attached SCSI controller is now available.<br />
<br />
=== Audio devices ===<br />
* The PC speaker audio card is now available by default.<br />
<br />
=== Network devices ===<br />
* The guestfwd argument to slirp now supports running an arbitrary command on every TCP connection (as in inetd). This is invoked by specifying a target that starts with "cmd:".<br />
<br />
=== Block devices ===<br />
* Emulated IDE and SCSI as well as virtio-blk devices can now switch the cache mode between writethrough and writeback. virtio-blk automatically switches to writethrough if the guest driver doesn't support flushes.<br />
* The default cache mode for images is now ''writeback''.<br />
* Emulated SCSI devices can be given a custom vendor name, product name and WWN.<br />
* Improved support for passthrough of SCSI tapes and media changers.<br />
* libiscsi can be used together with scsi-generic to pass iSCSI tapes and media changers to the guest.<br />
* When raw files are streamed, parts of the files that are holes in the underlying filesystem are treated as unallocated (as long as the OS supports either the FIEMAP ioctl or the SEEK_HOLE/SEEK_DATA modes)<br />
* CD-ROM drives can now be used with AHCI<br />
<br />
==== qcow2 ====<br />
* qcow2 images support a new option, ''lazy_refcounts''. If on, the speed of cache=writethrough mode will be improved, at the cost of requiring an fsck-like pass (and thus QEMU 1.2) to use the image again after a power loss.<br />
* ''qemu-img check'' can now repair qcow2 and QED images with the new ''-r'' option.<br />
<br />
==== VMDK ====<br />
* Support for images in the ''streamOptimized'' subformat has been fixed. This is a VMDK subformat commonly used with OVF appliances.<br />
<br />
==== rbd ====<br />
* rbd no longer ignores the cache setting<br />
<br />
=== Live Migration, Save/Restore ===<br />
* Migration works much better with guests with large memory.<br />
* USB mass storage and passthrough devices support live migration.<br />
<br />
=== VNC ===<br />
* The threaded VNC server is now enabled by default.<br />
<br />
== Guest agent ==<br />
* A new command "fstrim" was added to the guest agent.<br />
<br />
== New targets ==<br />
* OpenRISC is now supported for both user-mode and system emulation.<br />
<br />
== Build dependencies ==<br />
* No changes from 1.1.0.</div>AFhttps://wiki.qemu.org/index.php?title=ChangeLog/1.2&diff=3093ChangeLog/1.22012-08-17T14:47:47Z<p>AF: Mention pc87312 emulation (PReP)</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* ... QMP error changes go here ...<br />
* File descriptors can be passed to qemu using the new ''add-fd/remove-fd'' QMP commands. It is intended that they can be used in any place where QEMU would expect a file name. This is ensured for disk images, support in other parts of QEMU may still be inconsistent.<br />
<br />
=== ARM ===<br />
* The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.<br />
* New board model: i.MX31<br />
<br />
=== PowerPC ===<br />
* The pSeries target correctly creates segment size device tree nodes (fixes odd bugs with HV vs PR KVM)<br />
* The pSeries target implements an IOMMU.<br />
* ... pSeries VGA, USB, etc.? ...<br />
* The E500 target generates its device tree dynamically<br />
* New mpc8544ds -machine option: dumpdtb. This allows to dump the dynamically generated device tree to a file.<br />
* Emulation for e5500 cores<br />
* PC87312 Super I/O chipset emulation for PReP, adding parallel port to prep machine<br />
<br />
=== x86 ===<br />
* Support for PCI passthrough is available for Xen fully-virtualized domains.<br />
* The new monitor command "dump-guest-memory" creates an ELF dump of the guest memory.<br />
* When using KVM, the in-kernel APIC supports MSI.<br />
<br />
=== Device emulation ===<br />
* VGA and QXL cards (obtained with ''-vga std'' and ''-vga qxl'') have 16 MB of VRAM rather than 8 MB.<br />
* Three new SCSI host bus adapter devices are available: ''am53c974'' and ''dc390'' emulate respectively an AMD PCI PCscsi and a Tekram DC-390 device, both of which are supported on older operating systems including MS DOS 6.2, MS Windows 3.11, 98 SE, NT 3.1 and NT 4.0. ''megasas'' emulated an LSI SAS1078 RAID controller. The next version of SeaBIOS will support booting from am53c974 and dc390 disks.<br />
* An USB-attached SCSI controller is now available.<br />
<br />
=== Audio devices ===<br />
* The PC speaker audio card is now available by default.<br />
<br />
=== Network devices ===<br />
* The guestfwd argument to slirp now supports running an arbitrary command on every TCP connection (as in inetd). This is invoked by specifying a target that starts with "cmd:".<br />
<br />
=== Block devices ===<br />
* Emulated IDE and SCSI as well as virtio-blk devices can now switch the cache mode between writethrough and writeback. virtio-blk automatically switches to writethrough if the guest driver doesn't support flushes.<br />
* Emulated SCSI devices can be given a custom vendor name, product name and WWN.<br />
* Improved support for passthrough of SCSI tapes and media changers.<br />
* libiscsi can be used together with scsi-generic to pass iSCSI tapes and media changers to the guest.<br />
* When raw files are streamed, parts of the files that are holes in the underlying filesystem are treated as unallocated (as long as the OS supports either the FIEMAP ioctl or the SEEK_HOLE/SEEK_DATA modes)<br />
* CD-ROM drives can now be used with AHCI<br />
<br />
==== qcow2 ====<br />
* qcow2 images support a new option, ''lazy_refcounts''. If on, the speed of cache=writethrough mode will be improved, at the cost of requiring an fsck-like pass (and thus QEMU 1.2) to use the image again after a power loss.<br />
* ''qemu-img check'' can now repair qcow2 and QED images with the new ''-r'' option.<br />
<br />
==== rbd ====<br />
* rbd no longer ignores the cache setting<br />
<br />
=== Live Migration, Save/Restore ===<br />
* Migration works much better with guests with large memory.<br />
* USB mass storage and passthrough devices support live migration.<br />
<br />
=== VNC ===<br />
* The threaded VNC server is now enabled by default.<br />
<br />
== Guest agent ==<br />
* A new command "fstrim" was added to the guest agent.<br />
<br />
== New targets ==<br />
* OpenRISC is now supported for both user-mode and system emulation.<br />
<br />
== Build dependencies ==<br />
* No changes from 1.1.0.</div>AFhttps://wiki.qemu.org/index.php?title=Planning/1.2&diff=3075Planning/1.22012-07-31T15:02:17Z<p>AF: Add some initial targeted features for the 1.2 soft freeze</p>
<hr />
<div>This release will span a single quarter (3 months). We will have a 2.5 week freeze of the master branch. During this time, only bug fixes will be committed.<br />
<br />
== Release Schedule ==<br />
<br />
{| border="1"<br />
| 2011-06-01<br />
| Beginning of 1.2 development phase<br />
|-<br />
| 2012-07-01<br />
| [[Planning/Sprint|Sprint]] 1<br />
|-<br />
| 2012-08-01<br />
| [[Planning/SoftFeatureFreeze|Soft feature freeze]]. Major features should have initial code committed by this date.<br />
|-<br />
| 2012-08-15<br />
| [[Planning/HardFeatureFreeze|Hard feature freeze]]. Tag v1.2.0-rc0, only bug fixes committed after this point<br />
|-<br />
| 2012-08-22<br />
| Tag v1.2.0-rc1<br />
|-<br />
| 2012-08-29<br />
| Tag v1.2.0-rc2<br />
|-<br />
| 2012-09-01<br />
| Tag v1.2.0<br />
|}<br />
<br />
== Targeted Features ==<br />
<br />
* MegaSAS - TODO: WWN<br />
* [[Features/QOM/CPU|QOM/CPU]] - CPU as a DeviceState?</div>AFhttps://wiki.qemu.org/index.php?title=Contribute&diff=3053Contribute2012-06-26T14:31:47Z<p>AF: Add link to Taskit Portux920T emulation</p>
<hr />
<div>== Project Infrastructure ==<br />
* Source repository: [http://git.qemu.org Mainline qemu.git] and [http://repo.or.cz/w/qemu.git developer repositories]<br />
* Mailing list: [[MailingLists|mailing list]]<br />
* IRC: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
* Bug tracker: [[Contribute/ReportABug|launchpad]]<br />
* Continuous integration: [[ContinuousIntegration|buildbot]]<br />
* Wiki: [[Main_Page|this website]]<br />
<br />
== Key Information ==<br />
* [[Documentation/GettingStartedDevelopers|Getting started for developers]]<br />
* [[Contribute/SubmitAPatch|How to submit a patch]]<br />
* [[Contribute/TrivialPatches|How to submit a trivial patch]]<br />
* [[Contribute/ReportABug|How to report a bug]]<br />
<br />
== Students ==<br />
<br />
QEMU participated in Google's Summer of Code 2011 program.<br />
<br />
Some reports on the processed topics (partially or fully) from 2010 can be found here:<br />
* [[Google Summer of Code 2010/QMP|QMP]] - about syncing QEMU monitor and QEMU Machine Protocol (QMP) features<br />
* [[Google Summer of Code 2010/VNC|VNC]] - about improvements in speed and features of QEMU supported VNC protocols<br />
<br />
For more information on GSoC-2011 and especially lots more of probably still open topics for improvement please see [[Google_Summer_of_Code_2011|this page]].<br />
<br />
== Planning ==<br />
* [[Planning/1.2| 1.2]]<br />
* [[Planning/1.1| 1.1]]<br />
* [[Planning/1.0| 1.0]]<br />
* [[Planning/0.15| 0.15]]<br />
* [[Planning/0.15-example| 0.15 example]]<br />
* [[Planning/0.14/Testing| 0.14 testing]]<br />
* [[Planning/0.14| 0.14]]<br />
<br />
== Features ==<br />
* [[Features |/Features ]]<br />
* [[Features/0.13| 0.13]]<br />
* [[Features/0.13/HelperNetworking| 0.13/HelperNetworking]]<br />
* [[Features/0.13|Proposed 0.13 Features]]<br />
* [[Features/AHCI| AHCI]]<br />
* [[Features/Block/Merge| Block/Merge]]<br />
* [[Features/CPUModels| CPUModels]]<br />
* [[Features/Cow2| Cow2]]<br />
* [[Features/DriveRefactoring| DriveRefactoring]]<br />
* [[Features/DiskIOLimits| DiskIOLimits]]<br />
* [[Features/FVD| FVD]]<br />
* [[Features/FVD/Compare| FVD/Compare]]<br />
* [[Features/FVD/Design| FVD/Design]]<br />
* [[Features/FVD/Engineering| FVD/Engineering]]<br />
* [[Features/FVD/Experiment| FVD/Experiment]]<br />
* [[Features/FVD/Specification| FVD/Specification]]<br />
* [[Features/FVD/WhyFVD| FVD/WhyFVD]]<br />
* [[Features/FaultTolerance| FaultTolerance]]<br />
* [[Features/HelperNetworking| HelperNetworking]]<br />
* [[Features/NetDeviceFailover| NetDeviceFailover]]<br />
* [[Features/PCIMemoryAPI| PCIMemoryAPI]]<br />
* [[Features/PostCopyLiveMigration| PostCopy LiveMigration]]<br />
* [[Features/PVCrashDetection| PVCrashDetection]]<br />
* [[Features/Q35| Q35]]<br />
* [[Features/QDevCleanup| QDevCleanup]]<br />
* [[Features/QED| QED]]<br />
* [[Features/QED/OnlineDefrag| QED/OnlineDefrag]]<br />
* [[Features/QED/OutstandingWork| QED/OutstandingWork]]<br />
* [[Features/QED/ParallelSubmission| QED/ParallelSubmission]]<br />
* [[Features/QED/ScanAvoidance| QED/ScanAvoidance]]<br />
* [[Features/QED/Specification| QED/Specification]]<br />
* [[Features/QED/Streaming| QED/Streaming]]<br />
* [[Features/QED/Trim| QED/Trim]]<br />
* [[Features/QMP2| QMP2]]<br />
* [[Features/QMP_0.14| QMP_0.14]]<br />
* [[Features/QOM| QOM]]<br />
* [[Features/QOM/CPU| QOM/CPU]]<br />
* [[Features/Qcow2DataIntegrity| Qcow2DataIntegrity]]<br />
* [[Features/RamAPI| RamAPI]]<br />
* [[Features/ResetAPI| ResetAPI]]<br />
* [[Features/Sheepdog| Sheepdog]]<br />
* [[Features/Sheepdog/Corosync_Config| Sheepdog/Corosync]]<br />
* [[Features/Sheepdog/Getting_Started| Sheepdog/Getting]]<br />
* [[Features/Smartcard| Smartcard]]<br />
* [[Features/Smartcard/Specification| Smartcard/Specification]]<br />
* [[Features/Snapshots| Snapshots]]<br />
* [[Features/Snapshots2| Snapshots2]]<br />
* [[Features/SnapshottingImprovements| SnapshottingImprovements]]<br />
* [[Features/TCI| TCG Interpreter ]]<br />
* [[Features/Tracing| Tracing]]<br />
* [[Features/Tracing/Roadmap| Tracing/Roadmap]]<br />
* [[Features/Tracing/UseCases| Tracing/UseCases]]<br />
* [[Features/Usability |Usability]]<br />
* [[Features/VirtioBlkBoot| VirtioBlkBoot]]<br />
* [[Features/VirtioIoeventfd| VirtioIoeventfd]]<br />
<br />
=== Work in progress ===<br />
* [[Features/40p| 40p]]<br />
* [[Features/BeBox| BeBox]]<br />
* [[Features/GtkDisplayState| GtkDisplayState]]<br />
* [[Features/PRePCleanup|PReP cleanup]]<br />
* [[Features/Q35|Q35]]<br />
* [[Features/RL78| RL78]]<br />
* [[Features/Tegra2|Tegra2]]<br />
<br />
=== Downstream ===<br />
* 6502 (on [https://github.com/AVEx-6502/qemu-6502 GitHub])<br />
* AT91SAM9263 (on [https://github.com/Dushistov/qemu_at91sam9263 Github])<br />
* Beagleboard (at Linaro)<br />
* Blackfin<br />
* Goldfish (at Android)<br />
* [[Features/HPPA| HPPA]]<br />
* Taskit Portux920T (on [https://github.com/daro-tuberlin/Qemu-taskit-920T GitHub])<br />
* [[Features/Z80| Z80]]<br />
<br />
== GIT repo ==<br />
* [http://git.qemu.org/ QEMU.org GIT repo]<br />
* [http://repo.or.cz/w/qemu.git repo.or.cz]<br />
* [http://repo.or.cz/w/qemu/aliguori.git Anthony Liguori's QEMU tree]<br />
* [http://repo.or.cz/w/qemu/aliguori-queue.git Anthony Liguori's QEMU queue]<br />
* [http://git.kernel.org/?p=linux/kernel/git/mst/qemu.git;a=summary Qemu patches by Michael S. Tsirkin. Warning: constantly rebased. pci subsystem]<br />
* [http://repo.or.cz/w/qemu/kevin.git kwolf Random patches. block device]<br />
* [http://blackfin.uclinux.org/git/?p=users/vapier/qemu.git Blackfin QEMU tree]<br />
<br />
== Developers and Maintainers ==<br />
<br />
* [[User:Agraf |Alexander Graf ]] (maintainer for PPC, S390)<br />
* [[User:AnthonyLiguori |Anthony Liguori ]] (committer, maintainer)<br />
* [[User:Wmat |Bill Traynor ]]<br />
* [[User:Blueswirl |Blueswirl ]] (committer, maintainer for SPARC, bsd-user)<br />
* [[User:edgar |Edgar E. Iglesias ]] (committer, maintainer for CRIS, Microblaze)<br />
* [[User:Joro |Joro ]]<br />
* [[User:LuizCapitulino |Luiz Capitulino ]] (maintainer for QMP/QAPI)<br />
* [[User:Mariusmm |Màrius Montón ]]<br />
* [[User:Miguel |Miguel Di Ciurcio Filho ]]<br />
* [[User:NataliaPortillo |Natalia Portillo ]]<br />
* [[User:Paolo_Bonzini |Paolo Bonzini ]] (maintainer for NBD, SCSI)<br />
* [[User:Pbrook |Paul Brook ]] (committer, maintainer for ARM, m68k)<br />
* [[User:Stefan_Weil |Stefan Weil ]] (maintainer for [[Features/TCI|TCI]], [[Hosts/W32|w32, w64]])<br />
* [[User:Stefanha |Stefan Hajnoczi ]] (maintainer for tracing)<br />
* [[User:wuzhy |Zhi Yong Wu ]] (Block I/O throttling, virtio-scsi&tcm_vhost)<br />
<br />
See file [http://repo.or.cz/w/qemu.git/blob_plain/HEAD:/MAINTAINERS MAINTAINERS] in the QEMU source distribution for the latest list<br />
of QEMU maintainers.</div>AFhttps://wiki.qemu.org/index.php?title=Contribute&diff=3052Contribute2012-06-26T14:21:01Z<p>AF: Basic QOM CPU was merged for v1.1, so move it into the main features section</p>
<hr />
<div>== Project Infrastructure ==<br />
* Source repository: [http://git.qemu.org Mainline qemu.git] and [http://repo.or.cz/w/qemu.git developer repositories]<br />
* Mailing list: [[MailingLists|mailing list]]<br />
* IRC: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
* Bug tracker: [[Contribute/ReportABug|launchpad]]<br />
* Continuous integration: [[ContinuousIntegration|buildbot]]<br />
* Wiki: [[Main_Page|this website]]<br />
<br />
== Key Information ==<br />
* [[Documentation/GettingStartedDevelopers|Getting started for developers]]<br />
* [[Contribute/SubmitAPatch|How to submit a patch]]<br />
* [[Contribute/TrivialPatches|How to submit a trivial patch]]<br />
* [[Contribute/ReportABug|How to report a bug]]<br />
<br />
== Students ==<br />
<br />
QEMU participated in Google's Summer of Code 2011 program.<br />
<br />
Some reports on the processed topics (partially or fully) from 2010 can be found here:<br />
* [[Google Summer of Code 2010/QMP|QMP]] - about syncing QEMU monitor and QEMU Machine Protocol (QMP) features<br />
* [[Google Summer of Code 2010/VNC|VNC]] - about improvements in speed and features of QEMU supported VNC protocols<br />
<br />
For more information on GSoC-2011 and especially lots more of probably still open topics for improvement please see [[Google_Summer_of_Code_2011|this page]].<br />
<br />
== Planning ==<br />
* [[Planning/1.2| 1.2]]<br />
* [[Planning/1.1| 1.1]]<br />
* [[Planning/1.0| 1.0]]<br />
* [[Planning/0.15| 0.15]]<br />
* [[Planning/0.15-example| 0.15 example]]<br />
* [[Planning/0.14/Testing| 0.14 testing]]<br />
* [[Planning/0.14| 0.14]]<br />
<br />
== Features ==<br />
* [[Features |/Features ]]<br />
* [[Features/0.13| 0.13]]<br />
* [[Features/0.13/HelperNetworking| 0.13/HelperNetworking]]<br />
* [[Features/0.13|Proposed 0.13 Features]]<br />
* [[Features/AHCI| AHCI]]<br />
* [[Features/Block/Merge| Block/Merge]]<br />
* [[Features/CPUModels| CPUModels]]<br />
* [[Features/Cow2| Cow2]]<br />
* [[Features/DriveRefactoring| DriveRefactoring]]<br />
* [[Features/DiskIOLimits| DiskIOLimits]]<br />
* [[Features/FVD| FVD]]<br />
* [[Features/FVD/Compare| FVD/Compare]]<br />
* [[Features/FVD/Design| FVD/Design]]<br />
* [[Features/FVD/Engineering| FVD/Engineering]]<br />
* [[Features/FVD/Experiment| FVD/Experiment]]<br />
* [[Features/FVD/Specification| FVD/Specification]]<br />
* [[Features/FVD/WhyFVD| FVD/WhyFVD]]<br />
* [[Features/FaultTolerance| FaultTolerance]]<br />
* [[Features/HelperNetworking| HelperNetworking]]<br />
* [[Features/NetDeviceFailover| NetDeviceFailover]]<br />
* [[Features/PCIMemoryAPI| PCIMemoryAPI]]<br />
* [[Features/PostCopyLiveMigration| PostCopy LiveMigration]]<br />
* [[Features/PVCrashDetection| PVCrashDetection]]<br />
* [[Features/Q35| Q35]]<br />
* [[Features/QDevCleanup| QDevCleanup]]<br />
* [[Features/QED| QED]]<br />
* [[Features/QED/OnlineDefrag| QED/OnlineDefrag]]<br />
* [[Features/QED/OutstandingWork| QED/OutstandingWork]]<br />
* [[Features/QED/ParallelSubmission| QED/ParallelSubmission]]<br />
* [[Features/QED/ScanAvoidance| QED/ScanAvoidance]]<br />
* [[Features/QED/Specification| QED/Specification]]<br />
* [[Features/QED/Streaming| QED/Streaming]]<br />
* [[Features/QED/Trim| QED/Trim]]<br />
* [[Features/QMP2| QMP2]]<br />
* [[Features/QMP_0.14| QMP_0.14]]<br />
* [[Features/QOM| QOM]]<br />
* [[Features/QOM/CPU| QOM/CPU]]<br />
* [[Features/Qcow2DataIntegrity| Qcow2DataIntegrity]]<br />
* [[Features/RamAPI| RamAPI]]<br />
* [[Features/ResetAPI| ResetAPI]]<br />
* [[Features/Sheepdog| Sheepdog]]<br />
* [[Features/Sheepdog/Corosync_Config| Sheepdog/Corosync]]<br />
* [[Features/Sheepdog/Getting_Started| Sheepdog/Getting]]<br />
* [[Features/Smartcard| Smartcard]]<br />
* [[Features/Smartcard/Specification| Smartcard/Specification]]<br />
* [[Features/Snapshots| Snapshots]]<br />
* [[Features/Snapshots2| Snapshots2]]<br />
* [[Features/SnapshottingImprovements| SnapshottingImprovements]]<br />
* [[Features/TCI| TCG Interpreter ]]<br />
* [[Features/Tracing| Tracing]]<br />
* [[Features/Tracing/Roadmap| Tracing/Roadmap]]<br />
* [[Features/Tracing/UseCases| Tracing/UseCases]]<br />
* [[Features/Usability |Usability]]<br />
* [[Features/VirtioBlkBoot| VirtioBlkBoot]]<br />
* [[Features/VirtioIoeventfd| VirtioIoeventfd]]<br />
<br />
=== Work in progress ===<br />
* [[Features/40p| 40p]]<br />
* [[Features/BeBox| BeBox]]<br />
* [[Features/GtkDisplayState| GtkDisplayState]]<br />
* [[Features/PRePCleanup|PReP cleanup]]<br />
* [[Features/Q35|Q35]]<br />
* [[Features/RL78| RL78]]<br />
* [[Features/Tegra2|Tegra2]]<br />
<br />
=== Downstream ===<br />
* 6502 (on [https://github.com/AVEx-6502/qemu-6502 GitHub])<br />
* AT91SAM9263 (on [https://github.com/Dushistov/qemu_at91sam9263 Github])<br />
* Beagleboard (at Linaro)<br />
* Blackfin<br />
* Goldfish (at Android)<br />
* [[Features/HPPA| HPPA]]<br />
* [[Features/Z80| Z80]]<br />
<br />
== GIT repo ==<br />
* [http://git.qemu.org/ QEMU.org GIT repo]<br />
* [http://repo.or.cz/w/qemu.git repo.or.cz]<br />
* [http://repo.or.cz/w/qemu/aliguori.git Anthony Liguori's QEMU tree]<br />
* [http://repo.or.cz/w/qemu/aliguori-queue.git Anthony Liguori's QEMU queue]<br />
* [http://git.kernel.org/?p=linux/kernel/git/mst/qemu.git;a=summary Qemu patches by Michael S. Tsirkin. Warning: constantly rebased. pci subsystem]<br />
* [http://repo.or.cz/w/qemu/kevin.git kwolf Random patches. block device]<br />
* [http://blackfin.uclinux.org/git/?p=users/vapier/qemu.git Blackfin QEMU tree]<br />
<br />
== Developers and Maintainers ==<br />
<br />
* [[User:Agraf |Alexander Graf ]] (maintainer for PPC, S390)<br />
* [[User:AnthonyLiguori |Anthony Liguori ]] (committer, maintainer)<br />
* [[User:Wmat |Bill Traynor ]]<br />
* [[User:Blueswirl |Blueswirl ]] (committer, maintainer for SPARC, bsd-user)<br />
* [[User:edgar |Edgar E. Iglesias ]] (committer, maintainer for CRIS, Microblaze)<br />
* [[User:Joro |Joro ]]<br />
* [[User:LuizCapitulino |Luiz Capitulino ]] (maintainer for QMP/QAPI)<br />
* [[User:Mariusmm |Màrius Montón ]]<br />
* [[User:Miguel |Miguel Di Ciurcio Filho ]]<br />
* [[User:NataliaPortillo |Natalia Portillo ]]<br />
* [[User:Paolo_Bonzini |Paolo Bonzini ]] (maintainer for NBD, SCSI)<br />
* [[User:Pbrook |Paul Brook ]] (committer, maintainer for ARM, m68k)<br />
* [[User:Stefan_Weil |Stefan Weil ]] (maintainer for [[Features/TCI|TCI]], [[Hosts/W32|w32, w64]])<br />
* [[User:Stefanha |Stefan Hajnoczi ]] (maintainer for tracing)<br />
* [[User:wuzhy |Zhi Yong Wu ]] (Block I/O throttling, virtio-scsi&tcm_vhost)<br />
<br />
See file [http://repo.or.cz/w/qemu.git/blob_plain/HEAD:/MAINTAINERS MAINTAINERS] in the QEMU source distribution for the latest list<br />
of QEMU maintainers.</div>AFhttps://wiki.qemu.org/index.php?title=Contribute&diff=3051Contribute2012-06-26T14:19:52Z<p>AF: Added link to Anthony's Q35 page mentioned on the KVM call</p>
<hr />
<div>== Project Infrastructure ==<br />
* Source repository: [http://git.qemu.org Mainline qemu.git] and [http://repo.or.cz/w/qemu.git developer repositories]<br />
* Mailing list: [[MailingLists|mailing list]]<br />
* IRC: #qemu on [http://www.oftc.net/ irc.oftc.net]<br />
* Bug tracker: [[Contribute/ReportABug|launchpad]]<br />
* Continuous integration: [[ContinuousIntegration|buildbot]]<br />
* Wiki: [[Main_Page|this website]]<br />
<br />
== Key Information ==<br />
* [[Documentation/GettingStartedDevelopers|Getting started for developers]]<br />
* [[Contribute/SubmitAPatch|How to submit a patch]]<br />
* [[Contribute/TrivialPatches|How to submit a trivial patch]]<br />
* [[Contribute/ReportABug|How to report a bug]]<br />
<br />
== Students ==<br />
<br />
QEMU participated in Google's Summer of Code 2011 program.<br />
<br />
Some reports on the processed topics (partially or fully) from 2010 can be found here:<br />
* [[Google Summer of Code 2010/QMP|QMP]] - about syncing QEMU monitor and QEMU Machine Protocol (QMP) features<br />
* [[Google Summer of Code 2010/VNC|VNC]] - about improvements in speed and features of QEMU supported VNC protocols<br />
<br />
For more information on GSoC-2011 and especially lots more of probably still open topics for improvement please see [[Google_Summer_of_Code_2011|this page]].<br />
<br />
== Planning ==<br />
* [[Planning/1.2| 1.2]]<br />
* [[Planning/1.1| 1.1]]<br />
* [[Planning/1.0| 1.0]]<br />
* [[Planning/0.15| 0.15]]<br />
* [[Planning/0.15-example| 0.15 example]]<br />
* [[Planning/0.14/Testing| 0.14 testing]]<br />
* [[Planning/0.14| 0.14]]<br />
<br />
== Features ==<br />
* [[Features |/Features ]]<br />
* [[Features/0.13| 0.13]]<br />
* [[Features/0.13/HelperNetworking| 0.13/HelperNetworking]]<br />
* [[Features/0.13|Proposed 0.13 Features]]<br />
* [[Features/AHCI| AHCI]]<br />
* [[Features/Block/Merge| Block/Merge]]<br />
* [[Features/CPUModels| CPUModels]]<br />
* [[Features/Cow2| Cow2]]<br />
* [[Features/DriveRefactoring| DriveRefactoring]]<br />
* [[Features/DiskIOLimits| DiskIOLimits]]<br />
* [[Features/FVD| FVD]]<br />
* [[Features/FVD/Compare| FVD/Compare]]<br />
* [[Features/FVD/Design| FVD/Design]]<br />
* [[Features/FVD/Engineering| FVD/Engineering]]<br />
* [[Features/FVD/Experiment| FVD/Experiment]]<br />
* [[Features/FVD/Specification| FVD/Specification]]<br />
* [[Features/FVD/WhyFVD| FVD/WhyFVD]]<br />
* [[Features/FaultTolerance| FaultTolerance]]<br />
* [[Features/HelperNetworking| HelperNetworking]]<br />
* [[Features/NetDeviceFailover| NetDeviceFailover]]<br />
* [[Features/PCIMemoryAPI| PCIMemoryAPI]]<br />
* [[Features/PostCopyLiveMigration| PostCopy LiveMigration]]<br />
* [[Features/PVCrashDetection| PVCrashDetection]]<br />
* [[Features/Q35| Q35]]<br />
* [[Features/QDevCleanup| QDevCleanup]]<br />
* [[Features/QED| QED]]<br />
* [[Features/QED/OnlineDefrag| QED/OnlineDefrag]]<br />
* [[Features/QED/OutstandingWork| QED/OutstandingWork]]<br />
* [[Features/QED/ParallelSubmission| QED/ParallelSubmission]]<br />
* [[Features/QED/ScanAvoidance| QED/ScanAvoidance]]<br />
* [[Features/QED/Specification| QED/Specification]]<br />
* [[Features/QED/Streaming| QED/Streaming]]<br />
* [[Features/QED/Trim| QED/Trim]]<br />
* [[Features/QMP2| QMP2]]<br />
* [[Features/QMP_0.14| QMP_0.14]]<br />
* [[Features/QOM| QOM]]<br />
* [[Features/Qcow2DataIntegrity| Qcow2DataIntegrity]]<br />
* [[Features/RamAPI| RamAPI]]<br />
* [[Features/ResetAPI| ResetAPI]]<br />
* [[Features/Sheepdog| Sheepdog]]<br />
* [[Features/Sheepdog/Corosync_Config| Sheepdog/Corosync]]<br />
* [[Features/Sheepdog/Getting_Started| Sheepdog/Getting]]<br />
* [[Features/Smartcard| Smartcard]]<br />
* [[Features/Smartcard/Specification| Smartcard/Specification]]<br />
* [[Features/Snapshots| Snapshots]]<br />
* [[Features/Snapshots2| Snapshots2]]<br />
* [[Features/SnapshottingImprovements| SnapshottingImprovements]]<br />
* [[Features/TCI| TCG Interpreter ]]<br />
* [[Features/Tracing| Tracing]]<br />
* [[Features/Tracing/Roadmap| Tracing/Roadmap]]<br />
* [[Features/Tracing/UseCases| Tracing/UseCases]]<br />
* [[Features/Usability |Usability]]<br />
* [[Features/VirtioBlkBoot| VirtioBlkBoot]]<br />
* [[Features/VirtioIoeventfd| VirtioIoeventfd]]<br />
<br />
=== Work in progress ===<br />
* [[Features/40p| 40p]]<br />
* [[Features/BeBox| BeBox]]<br />
* [[Features/GtkDisplayState| GtkDisplayState]]<br />
* [[Features/PRePCleanup|PReP cleanup]]<br />
* [[Features/Q35|Q35]]<br />
* [[Features/QOM/CPU| QOM/CPU]]<br />
* [[Features/RL78| RL78]]<br />
* [[Features/Tegra2|Tegra2]]<br />
<br />
=== Downstream ===<br />
* 6502 (on [https://github.com/AVEx-6502/qemu-6502 GitHub])<br />
* AT91SAM9263 (on [https://github.com/Dushistov/qemu_at91sam9263 Github])<br />
* Beagleboard (at Linaro)<br />
* Blackfin<br />
* Goldfish (at Android)<br />
* [[Features/HPPA| HPPA]]<br />
* [[Features/Z80| Z80]]<br />
<br />
== GIT repo ==<br />
* [http://git.qemu.org/ QEMU.org GIT repo]<br />
* [http://repo.or.cz/w/qemu.git repo.or.cz]<br />
* [http://repo.or.cz/w/qemu/aliguori.git Anthony Liguori's QEMU tree]<br />
* [http://repo.or.cz/w/qemu/aliguori-queue.git Anthony Liguori's QEMU queue]<br />
* [http://git.kernel.org/?p=linux/kernel/git/mst/qemu.git;a=summary Qemu patches by Michael S. Tsirkin. Warning: constantly rebased. pci subsystem]<br />
* [http://repo.or.cz/w/qemu/kevin.git kwolf Random patches. block device]<br />
* [http://blackfin.uclinux.org/git/?p=users/vapier/qemu.git Blackfin QEMU tree]<br />
<br />
== Developers and Maintainers ==<br />
<br />
* [[User:Agraf |Alexander Graf ]] (maintainer for PPC, S390)<br />
* [[User:AnthonyLiguori |Anthony Liguori ]] (committer, maintainer)<br />
* [[User:Wmat |Bill Traynor ]]<br />
* [[User:Blueswirl |Blueswirl ]] (committer, maintainer for SPARC, bsd-user)<br />
* [[User:edgar |Edgar E. Iglesias ]] (committer, maintainer for CRIS, Microblaze)<br />
* [[User:Joro |Joro ]]<br />
* [[User:LuizCapitulino |Luiz Capitulino ]] (maintainer for QMP/QAPI)<br />
* [[User:Mariusmm |Màrius Montón ]]<br />
* [[User:Miguel |Miguel Di Ciurcio Filho ]]<br />
* [[User:NataliaPortillo |Natalia Portillo ]]<br />
* [[User:Paolo_Bonzini |Paolo Bonzini ]] (maintainer for NBD, SCSI)<br />
* [[User:Pbrook |Paul Brook ]] (committer, maintainer for ARM, m68k)<br />
* [[User:Stefan_Weil |Stefan Weil ]] (maintainer for [[Features/TCI|TCI]], [[Hosts/W32|w32, w64]])<br />
* [[User:Stefanha |Stefan Hajnoczi ]] (maintainer for tracing)<br />
* [[User:wuzhy |Zhi Yong Wu ]] (Block I/O throttling, virtio-scsi&tcm_vhost)<br />
<br />
See file [http://repo.or.cz/w/qemu.git/blob_plain/HEAD:/MAINTAINERS MAINTAINERS] in the QEMU source distribution for the latest list<br />
of QEMU maintainers.</div>AFhttps://wiki.qemu.org/index.php?title=Features/QOM/CPU&diff=3038Features/QOM/CPU2012-06-14T23:14:09Z<p>AF: Added R-Mobile A1 to list of mixed-architecture SoCs</p>
<hr />
<div>== Summary ==<br />
<br />
Convert CPUState to [[Features/QOM|QOM]].<br />
<br />
=== Motivation ===<br />
<br />
# Short-term: Allow inspecting and modifying CPU properties via QOM.<br />
# Short-term: Avoid common target code doing ifs or switches on CPU identifiers.<br />
#* target-arm/helper.c: cpu_reset_model_id()<br />
# Short-term: Replace CPU_COMMON macro and duplicated reset code by inheritance.<br />
# Mid-term: Avoid dependency of common code on #defines from cpu.h.<br />
# Mid-term: Ease instantiation of mixed software-visible cores within one target, e.g.<br />
#* NXP LPC43xx: Cortex-M4 + Cortex-M0<br />
#* ARM big.LITTLE: Cortex-A15 + Cortex-A7<br />
#* Freescale Vybrid VF6xx/VF7xx: Cortex-A5 + Cortex-M4<br />
#* TI OMAP5: Cortex-A15 + Cortex-M4<br />
# Long-term: Work towards allowing to compile multiple targets into one executable.<br />
#* Renesas R-Car H1, M1A: ARM Cortex-A9 + SH-4A<br />
#* Renesas R-Home S1: ARM Cortex-A9 + SH-4A + ARM7TDMI-S<br />
#* Renesas R-Mobile A1: ARM Cortex-A9 + SH4A<br />
<br />
=== "CPU" name conflict ===<br />
{| border="1"<br />
!Identifier<br />
!current<br />
!interim<br />
!final<br />
|-<br />
|struct CPU''$arch''State ''or''<br />struct CPUState_''$arch''<br />
|colspan="2"|defined in target-*/cpu.h<br />
|???<br />
|-<br />
|#define CPUState<br />
|colspan="2"|alias to CPU''$arch''State / CPUState_''$arch''<br />
|dropped in favor of '''CPU'''<br />
|-<br />
|struct CPUClass<br />
|<br />
|colspan="2"|class<br />
|-<br />
|#define CPU_CLASS(class)<br />
|<br />
|colspan="2"|cast macro for class<br />
|-<br />
|struct '''CPU'''<br />
|<br />
|colspan="2"|object<br />
|-<br />
|#define '''CPU'''(obj)<br />
|<br />
|colspan="2"|cast macro for object<br />
|-<br />
|#define CPU_GET_CLASS(obj)<br />
|<br />
|colspan="2"|macro to obtain class pointer<br />
|}<br />
<br />
Resolved by renaming existing CPUState to '''CPUArchState''' and by using struct '''CPUState''' for the object state,<br />
while using '''CPU'''(obj) as macro for casting.<br />
<br />
== Owner ==<br />
<br />
* '''Name:''' Andreas Färber<br />
* '''Email:''' afaerber@suse.de<br />
<br />
== Status ==<br />
<br />
QOM CPUState exists, former CPUState is renamed to CPUArchState. All targets have been converted for v1.1-rc0.<br />
<br />
Initial field movements from CPUArchState to CPUState and subsequent signature adaptations are on the list.<br />
<br />
TLB redesign is still open - suggestions welcome.<br />
<br />
=== Patch series and branches ===<br />
<br />
''NB: Due to hosting issues, branches have moved to GitHub.''<br />
<br />
{| border="1"<br />
!name<br />
!depends on<br />
|-<br />
|<del>type_init()</del><br />
|<br />
|-<br />
|<del>qom-user</del><br />
|<del>type_init()</del><br />
|-<br />
|<del>object_class_get_list()</del><br />
|<br />
|-<br />
|<del>qom-cpu</del><br />
|<del>qom-user</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-s390 qom-cpu-s390]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 1</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sparc qom-cpu-sparc]</del><br />
|<del>qom-cpu, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-ppc qom-cpu-ppc]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-lm32 qom-cpu-lm32]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-xtensa qom-cpu-xtensa]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del>, qom-cpu-alpha<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-cris qom-cpu-cris]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-microblaze qom-cpu-microblaze]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del>, qom-cpu-cris<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 1</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-sparc, qom-cpu-lm32, qom-cpu-microblaze</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-m68k qom-cpu-m68k]</del><br />
|<del>qom-cpu, object_class_get_list(), qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-mips qom-cpu-mips]</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-lm32, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 2 (cleanup)</del><br />
|<del>qom-cpu-arm, qom-cpu-unicore32, qom-cpu-s390, qom-cpu-x86, qom-cpu-sparc, qom-cpu-ppc, qom-cpu-alpha, qom-cpu-lm32, qom-cpu-xtensa, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k, qom-cpu-mips</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 2 (props)</del><br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-1.1 qom-1.1]'''<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-1.1 qom-cpu-1.1] (cleanups)<br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-next qom-next]'''<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-reset qom-cpu], part 3 (reset)</del><br />
|<del>qom-cpu-1.1</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 3 (classes)<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha], part 2<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm], part 2 (followups to qom-cpu part 3 and cherry-picks from part 4)</del><br />
|<del>qom-cpu-reset</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 4 (common)<br />
|qom-next<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-dev qom-cpu], part 5 (device)<br />
|qom-next<br />
|}</div>AFhttps://wiki.qemu.org/index.php?title=Features/QOM/CPU&diff=3037Features/QOM/CPU2012-06-14T23:08:49Z<p>AF: Add OMAP5 to list of mixed-core SoCs</p>
<hr />
<div>== Summary ==<br />
<br />
Convert CPUState to [[Features/QOM|QOM]].<br />
<br />
=== Motivation ===<br />
<br />
# Short-term: Allow inspecting and modifying CPU properties via QOM.<br />
# Short-term: Avoid common target code doing ifs or switches on CPU identifiers.<br />
#* target-arm/helper.c: cpu_reset_model_id()<br />
# Short-term: Replace CPU_COMMON macro and duplicated reset code by inheritance.<br />
# Mid-term: Avoid dependency of common code on #defines from cpu.h.<br />
# Mid-term: Ease instantiation of mixed software-visible cores within one target, e.g.<br />
#* NXP LPC43xx: Cortex-M4 + Cortex-M0<br />
#* ARM big.LITTLE: Cortex-A15 + Cortex-A7<br />
#* Freescale Vybrid VF6xx/VF7xx: Cortex-A5 + Cortex-M4<br />
#* TI OMAP5: Cortex-A15 + Cortex-M4<br />
# Long-term: Work towards allowing to compile multiple targets into one executable.<br />
#* Renesas R-Car H1, M1A: ARM Cortex-A9 + SH-4A<br />
#* Renesas R-Home S1: ARM Cortex-A9 + SH-4A + ARM7TDMI-S<br />
<br />
=== "CPU" name conflict ===<br />
{| border="1"<br />
!Identifier<br />
!current<br />
!interim<br />
!final<br />
|-<br />
|struct CPU''$arch''State ''or''<br />struct CPUState_''$arch''<br />
|colspan="2"|defined in target-*/cpu.h<br />
|???<br />
|-<br />
|#define CPUState<br />
|colspan="2"|alias to CPU''$arch''State / CPUState_''$arch''<br />
|dropped in favor of '''CPU'''<br />
|-<br />
|struct CPUClass<br />
|<br />
|colspan="2"|class<br />
|-<br />
|#define CPU_CLASS(class)<br />
|<br />
|colspan="2"|cast macro for class<br />
|-<br />
|struct '''CPU'''<br />
|<br />
|colspan="2"|object<br />
|-<br />
|#define '''CPU'''(obj)<br />
|<br />
|colspan="2"|cast macro for object<br />
|-<br />
|#define CPU_GET_CLASS(obj)<br />
|<br />
|colspan="2"|macro to obtain class pointer<br />
|}<br />
<br />
Resolved by renaming existing CPUState to '''CPUArchState''' and by using struct '''CPUState''' for the object state,<br />
while using '''CPU'''(obj) as macro for casting.<br />
<br />
== Owner ==<br />
<br />
* '''Name:''' Andreas Färber<br />
* '''Email:''' afaerber@suse.de<br />
<br />
== Status ==<br />
<br />
QOM CPUState exists, former CPUState is renamed to CPUArchState. All targets have been converted for v1.1-rc0.<br />
<br />
Initial field movements from CPUArchState to CPUState and subsequent signature adaptations are on the list.<br />
<br />
TLB redesign is still open - suggestions welcome.<br />
<br />
=== Patch series and branches ===<br />
<br />
''NB: Due to hosting issues, branches have moved to GitHub.''<br />
<br />
{| border="1"<br />
!name<br />
!depends on<br />
|-<br />
|<del>type_init()</del><br />
|<br />
|-<br />
|<del>qom-user</del><br />
|<del>type_init()</del><br />
|-<br />
|<del>object_class_get_list()</del><br />
|<br />
|-<br />
|<del>qom-cpu</del><br />
|<del>qom-user</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-s390 qom-cpu-s390]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 1</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sparc qom-cpu-sparc]</del><br />
|<del>qom-cpu, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-ppc qom-cpu-ppc]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-lm32 qom-cpu-lm32]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-xtensa qom-cpu-xtensa]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del>, qom-cpu-alpha<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-cris qom-cpu-cris]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-microblaze qom-cpu-microblaze]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del>, qom-cpu-cris<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 1</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-sparc, qom-cpu-lm32, qom-cpu-microblaze</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-m68k qom-cpu-m68k]</del><br />
|<del>qom-cpu, object_class_get_list(), qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-mips qom-cpu-mips]</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-lm32, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 2 (cleanup)</del><br />
|<del>qom-cpu-arm, qom-cpu-unicore32, qom-cpu-s390, qom-cpu-x86, qom-cpu-sparc, qom-cpu-ppc, qom-cpu-alpha, qom-cpu-lm32, qom-cpu-xtensa, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k, qom-cpu-mips</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 2 (props)</del><br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-1.1 qom-1.1]'''<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-1.1 qom-cpu-1.1] (cleanups)<br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-next qom-next]'''<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-reset qom-cpu], part 3 (reset)</del><br />
|<del>qom-cpu-1.1</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 3 (classes)<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha], part 2<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm], part 2 (followups to qom-cpu part 3 and cherry-picks from part 4)</del><br />
|<del>qom-cpu-reset</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 4 (common)<br />
|qom-next<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-dev qom-cpu], part 5 (device)<br />
|qom-next<br />
|}</div>AFhttps://wiki.qemu.org/index.php?title=Features/QOM/CPU&diff=2986Features/QOM/CPU2012-05-24T20:38:07Z<p>AF: Update status with new qom-cpu-dev branch</p>
<hr />
<div>== Summary ==<br />
<br />
Convert CPUState to [[Features/QOM|QOM]].<br />
<br />
=== Motivation ===<br />
<br />
# Short-term: Allow inspecting and modifying CPU properties via QOM.<br />
# Short-term: Avoid common target code doing ifs or switches on CPU identifiers.<br />
#* target-arm/helper.c: cpu_reset_model_id()<br />
# Short-term: Replace CPU_COMMON macro and duplicated reset code by inheritance.<br />
# Mid-term: Avoid dependency of common code on #defines from cpu.h.<br />
# Mid-term: Ease instantiation of mixed software-visible cores within one target, e.g.<br />
#* NXP LPC43xx: Cortex-M4 + Cortex-M0<br />
#* ARM big.LITTLE: Cortex-A15 + Cortex-A7<br />
#* Freescale Vybrid VF6xx/VF7xx: Cortex-A5 + Cortex-M4<br />
# Long-term: Work towards allowing to compile multiple targets into one executable.<br />
#* Renesas R-Car H1, M1A: ARM Cortex-A9 + SH-4A<br />
#* Renesas R-Home S1: ARM Cortex-A9 + SH-4A + ARM7TDMI-S<br />
<br />
=== "CPU" name conflict ===<br />
{| border="1"<br />
!Identifier<br />
!current<br />
!interim<br />
!final<br />
|-<br />
|struct CPU''$arch''State ''or''<br />struct CPUState_''$arch''<br />
|colspan="2"|defined in target-*/cpu.h<br />
|???<br />
|-<br />
|#define CPUState<br />
|colspan="2"|alias to CPU''$arch''State / CPUState_''$arch''<br />
|dropped in favor of '''CPU'''<br />
|-<br />
|struct CPUClass<br />
|<br />
|colspan="2"|class<br />
|-<br />
|#define CPU_CLASS(class)<br />
|<br />
|colspan="2"|cast macro for class<br />
|-<br />
|struct '''CPU'''<br />
|<br />
|colspan="2"|object<br />
|-<br />
|#define '''CPU'''(obj)<br />
|<br />
|colspan="2"|cast macro for object<br />
|-<br />
|#define CPU_GET_CLASS(obj)<br />
|<br />
|colspan="2"|macro to obtain class pointer<br />
|}<br />
<br />
Resolved by renaming existing CPUState to '''CPUArchState''' and by using struct '''CPUState''' for the object state,<br />
while using '''CPU'''(obj) as macro for casting.<br />
<br />
== Owner ==<br />
<br />
* '''Name:''' Andreas Färber<br />
* '''Email:''' afaerber@suse.de<br />
<br />
== Status ==<br />
<br />
QOM CPUState exists, former CPUState is renamed to CPUArchState. All targets have been converted for v1.1-rc0.<br />
<br />
Initial field movements from CPUArchState to CPUState and subsequent signature adaptations are on the list.<br />
<br />
TLB redesign is still open - suggestions welcome.<br />
<br />
=== Patch series and branches ===<br />
<br />
''NB: Due to hosting issues, branches have moved to GitHub.''<br />
<br />
{| border="1"<br />
!name<br />
!depends on<br />
|-<br />
|<del>type_init()</del><br />
|<br />
|-<br />
|<del>qom-user</del><br />
|<del>type_init()</del><br />
|-<br />
|<del>object_class_get_list()</del><br />
|<br />
|-<br />
|<del>qom-cpu</del><br />
|<del>qom-user</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-s390 qom-cpu-s390]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 1</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sparc qom-cpu-sparc]</del><br />
|<del>qom-cpu, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-ppc qom-cpu-ppc]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-lm32 qom-cpu-lm32]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-xtensa qom-cpu-xtensa]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del>, qom-cpu-alpha<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-cris qom-cpu-cris]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-microblaze qom-cpu-microblaze]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del>, qom-cpu-cris<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 1</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-sparc, qom-cpu-lm32, qom-cpu-microblaze</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-m68k qom-cpu-m68k]</del><br />
|<del>qom-cpu, object_class_get_list(), qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-mips qom-cpu-mips]</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-lm32, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 2 (cleanup)</del><br />
|<del>qom-cpu-arm, qom-cpu-unicore32, qom-cpu-s390, qom-cpu-x86, qom-cpu-sparc, qom-cpu-ppc, qom-cpu-alpha, qom-cpu-lm32, qom-cpu-xtensa, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k, qom-cpu-mips</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 2 (props)</del><br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-1.1 qom-1.1]'''<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-1.1 qom-cpu-1.1] (cleanups)<br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-next qom-next]'''<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-reset qom-cpu], part 3 (reset)</del><br />
|<del>qom-cpu-1.1</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 3 (classes)<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha], part 2<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm], part 2 (followups to qom-cpu part 3 and cherry-picks from part 4)</del><br />
|<del>qom-cpu-reset</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 4 (common)<br />
|qom-next<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-dev qom-cpu], part 5 (device)<br />
|qom-next<br />
|}</div>AFhttps://wiki.qemu.org/index.php?title=Features/QOM/CPU&diff=2976Features/QOM/CPU2012-05-23T15:18:25Z<p>AF: Status update: qom-cpu-arm part 2 applied to qom-next, qom-cpu part 4 is based on to qom-next now</p>
<hr />
<div>== Summary ==<br />
<br />
Convert CPUState to [[Features/QOM|QOM]].<br />
<br />
=== Motivation ===<br />
<br />
# Short-term: Allow inspecting and modifying CPU properties via QOM.<br />
# Short-term: Avoid common target code doing ifs or switches on CPU identifiers.<br />
#* target-arm/helper.c: cpu_reset_model_id()<br />
# Short-term: Replace CPU_COMMON macro and duplicated reset code by inheritance.<br />
# Mid-term: Avoid dependency of common code on #defines from cpu.h.<br />
# Mid-term: Ease instantiation of mixed software-visible cores within one target, e.g.<br />
#* NXP LPC43xx: Cortex-M4 + Cortex-M0<br />
#* ARM big.LITTLE: Cortex-A15 + Cortex-A7<br />
#* Freescale Vybrid VF6xx/VF7xx: Cortex-A5 + Cortex-M4<br />
# Long-term: Work towards allowing to compile multiple targets into one executable.<br />
#* Renesas R-Car H1, M1A: ARM Cortex-A9 + SH-4A<br />
#* Renesas R-Home S1: ARM Cortex-A9 + SH-4A + ARM7TDMI-S<br />
<br />
=== "CPU" name conflict ===<br />
{| border="1"<br />
!Identifier<br />
!current<br />
!interim<br />
!final<br />
|-<br />
|struct CPU''$arch''State ''or''<br />struct CPUState_''$arch''<br />
|colspan="2"|defined in target-*/cpu.h<br />
|???<br />
|-<br />
|#define CPUState<br />
|colspan="2"|alias to CPU''$arch''State / CPUState_''$arch''<br />
|dropped in favor of '''CPU'''<br />
|-<br />
|struct CPUClass<br />
|<br />
|colspan="2"|class<br />
|-<br />
|#define CPU_CLASS(class)<br />
|<br />
|colspan="2"|cast macro for class<br />
|-<br />
|struct '''CPU'''<br />
|<br />
|colspan="2"|object<br />
|-<br />
|#define '''CPU'''(obj)<br />
|<br />
|colspan="2"|cast macro for object<br />
|-<br />
|#define CPU_GET_CLASS(obj)<br />
|<br />
|colspan="2"|macro to obtain class pointer<br />
|}<br />
<br />
Resolved by renaming existing CPUState to '''CPUArchState''' and by using struct '''CPUState''' for the object state,<br />
while using '''CPU'''(obj) as macro for casting.<br />
<br />
== Owner ==<br />
<br />
* '''Name:''' Andreas Färber<br />
* '''Email:''' afaerber@suse.de<br />
<br />
== Status ==<br />
<br />
QOM CPUState exists, former CPUState is renamed to CPUArchState. All targets have been converted for v1.1-rc0.<br />
<br />
Initial field movements from CPUArchState to CPUState and subsequent signature adaptations are on the list.<br />
<br />
TLB redesign is still open - suggestions welcome.<br />
<br />
=== Patch series and branches ===<br />
<br />
''NB: Due to hosting issues, branches have moved to GitHub.''<br />
<br />
{| border="1"<br />
!name<br />
!depends on<br />
|-<br />
|<del>type_init()</del><br />
|<br />
|-<br />
|<del>qom-user</del><br />
|<del>type_init()</del><br />
|-<br />
|<del>object_class_get_list()</del><br />
|<br />
|-<br />
|<del>qom-cpu</del><br />
|<del>qom-user</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-s390 qom-cpu-s390]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 1</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sparc qom-cpu-sparc]</del><br />
|<del>qom-cpu, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-ppc qom-cpu-ppc]</del><br />
|<del>qom-cpu</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-lm32 qom-cpu-lm32]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-xtensa qom-cpu-xtensa]</del><br />
|<del>qom-cpu, qom-cpu-unicore32</del>, qom-cpu-alpha<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-cris qom-cpu-cris]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-microblaze qom-cpu-microblaze]</del><br />
|<del>qom-cpu, qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32</del>, qom-cpu-cris<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 1</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-sparc, qom-cpu-lm32, qom-cpu-microblaze</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-m68k qom-cpu-m68k]</del><br />
|<del>qom-cpu, object_class_get_list(), qom-cpu-arm, qom-cpu-s390, qom-cpu-lm32, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-mips qom-cpu-mips]</del><br />
|<del>qom-cpu, qom-cpu-s390, qom-cpu-lm32, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 2 (cleanup)</del><br />
|<del>qom-cpu-arm, qom-cpu-unicore32, qom-cpu-s390, qom-cpu-x86, qom-cpu-sparc, qom-cpu-ppc, qom-cpu-alpha, qom-cpu-lm32, qom-cpu-xtensa, qom-cpu-cris, qom-cpu-microblaze, qom-cpu-sh4, qom-cpu-m68k, qom-cpu-mips</del><br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 2 (props)</del><br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-1.1 qom-1.1]'''<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-1.1 qom-cpu-1.1] (cleanups)<br />
|<br />
|-<br />
|'''[http://repo.or.cz/w/qemu/afaerber.git/shortlog/refs/heads/qom-next qom-next]'''<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-reset qom-cpu], part 3 (reset)</del><br />
|<del>qom-cpu-1.1</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-x86 qom-cpu-x86], part 3 (classes)<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-sh4 qom-cpu-sh4], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-unicore32 qom-cpu-unicore32], part 2<br />
|<br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-alpha qom-cpu-alpha], part 2<br />
|<br />
|-<br />
|<del>[https://github.com/afaerber/qemu-cpu/commits/qom-cpu-arm qom-cpu-arm], part 2 (followups to qom-cpu part 3 and cherry-picks from part 4)</del><br />
|<del>qom-cpu-reset</del><br />
|-<br />
|[https://github.com/afaerber/qemu-cpu/commits/qom-cpu qom-cpu], part 4 (common)<br />
|qom-next<br />
|}</div>AF