https://wiki.qemu.org/api.php?action=feedcontributions&user=Agraf&feedformat=atomQEMU - User contributions [en]2024-03-29T11:06:14ZUser contributionsMediaWiki 1.39.1https://wiki.qemu.org/index.php?title=Internships/ProjectIdeas/QEMUNitroEnclave&diff=10835Internships/ProjectIdeas/QEMUNitroEnclave2022-03-16T13:34:04Z<p>Agraf: </p>
<hr />
<div>=== Implement -M nitro-enclave in QEMU ===<br />
<br />
'''Summary:''' AWS EC2 provides the ability to create an isolated sibling VM context from within a VM. This project implements the machine model and input data format parsing needed to run these sibling VMs stand alone in QEMU.<br />
<br />
Nitro Enclaves are the first widely adopted implementation of hypervisor assisted compute isolation. Similar to technologies like SGX, it allows to spawn a separate context that is inaccessible by the parent Operating System. This is implemented by "giving up" resources of the parent VM (CPU cores, memory) to the hypervisor which then spawns a second vmm to execute a completely separate virtual machine. That new VM only has a vsock communication channel to the parent and has a built-in lightweight TPM.<br />
<br />
One big challenge with Nitro Enclaves is that due to its roots in security, there are very few debugging / introspection capabilities. That makes OS bringup, debugging and bootstrapping very difficult. Having a local dev&test environment that looks like an Enclave, but is 100% controlled by the developer and introspectable would make life a lot easier for everyone working on them. It also may pave the way to see Nitro Enclaves adopted in VM environments outside of EC2.<br />
<br />
This project will consist of adding a new machine model to QEMU that mimics a Nitro Enclave environment, including the lightweight TPM, the vsock communication channel and building firmware which loads the special "EIF" file format which contains kernel, initramfs and metadata from a -kernel image.<br />
<br />
'''Tasks:'''<br />
* Implement a device model for the TPM device (link to spec or driver<br />
code below)<br />
* Implement a new machine model<br />
* Implement firmware for the new machine model that implements EIF parsing<br />
* Add tests for the TPM device<br />
* Add integration test for the machine model executing an actual EIF payload<br />
<br />
'''Links:'''<br />
* https://aws.amazon.com/ec2/nitro/nitro-enclaves/<br />
* https://lore.kernel.org/lkml/20200921121732.44291-10-andraprs@amazon.com/T/<br />
* https://github.com/aws/aws-nitro-enclaves-sdk-bootstrap/blob/main/nsm-driver/nsm.c<br />
<br />
'''Details:'''<br />
* Skill level: intermediate - advanced (some understanding of QEMU machine modeling would be good) <br />
* Language: C<br />
* Mentor: tbd, agraf will find a mentor<br />
* Suggested by: Alexander Graf (OFTC: agraf, Email: graf@amazon.com)</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2022&diff=10834Google Summer of Code 20222022-03-16T13:28:37Z<p>Agraf: </p>
<hr />
<div>= Introduction =<br />
<br />
QEMU has been accepted into [https://summerofcode.withgoogle.com/ Google Summer of Code 2022]. This page contains our ideas list and information for applicants and mentors. Google Summer of Code is an open source internship program offering paid remote work.<br />
<br />
= Application Process =<br />
<br />
=== 1. Discuss the project idea with the mentor(s) ===<br />
<br />
Read the project ideas list and choose one you are interested in. Read the links in the project idea description and start thinking about how you would approach this. Ask yourself:<br />
* Do I have the necessary technical skills to complete this project?<br />
* Will I be able to work independently without the physical presence of my mentor?<br />
<br />
If you answer no to these questions, choose another project idea and/or organization that fits your skills.<br />
<br />
Once you have identified a suitable project idea, email the mentor(s) your questions about the idea and explain your understanding of the project idea to them to verify that you are on the right track.<br />
<br />
=== 2. Fill out the application form ===<br />
<br />
The [https://summerofcode.withgoogle.com/ application form] asks for a problem description and outline of how you intend to implement a solution. You will need to do some background research (looking at source code, browsing relevant specifications, etc) in order to decide how to tackle the project. The form asks for an initial project schedule which you should create by breaking down the project into tasks and estimating how long they will take. The schedule can be adjusted during the summer so don't worry about getting everything right ahead of time.<br />
<br />
=== 3. IRC interview including a coding exercise ===<br />
<br />
You may be invited to an IRC interview. The interview consists of a 30-minute coding exercise, followed by technical discussion and a chance to ask questions you have about the project idea, QEMU, and GSoC. The coding exercise is designed to show fluency in the programming language for your project idea (QEMU projects are typically in C but could also be in Python or Rust).<br />
<br />
Here is a C coding exercise we have used in previous years when interviewing applicants: [http://pastebin.com/6J1wwDhK 2014 coding exercise]<br />
<br />
Try it and see if you can complete it comfortably. We cannot answer questions about the previous coding exercise but hopefully it should be self-explanatory.<br />
<br />
If you find the exercise challenging, think about applying to other organizations where you have a stronger technical background and will be more competitive compared with other candidates.<br />
<br />
== Key Dates ==<br />
<br />
From the [https://developers.google.com/open-source/gsoc/timeline timeline]<br />
<br />
* March 7 - Organizations and project ideas announced<br />
* April 4 to 19 18:00 UTC - Application period<br />
* May 20 - Accepted applicants announced<br />
* June 13 to September 12 - Coding period<br />
<br />
= Find Us =<br />
<br />
* IRC (GSoC specific): [https://webchat.oftc.net/?channels=qemu-gsoc #qemu-gsoc on irc.oftc.net]<br />
<br />
* IRC (development):<br />
** QEMU: [https://webchat.oftc.net/?channels=qemu #qemu on irc.oftc.net]<br />
** KVM: #kvm on chat.freenode.net<br />
<br />
* Mailing lists:<br />
** QEMU: [http://lists.nongnu.org/mailman/listinfo/qemu-devel qemu-devel]<br />
** KVM: [http://www.linux-kvm.org/page/Lists,_IRC linux-kvm]<br />
<br />
For general questions about QEMU in GSoC, please contact the following people:<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]] <stefanha@gmail.com> (stefanha on IRC)<br />
<br />
= Project Ideas =<br />
This is the listing of suggested project ideas. Students are free to suggest their own projects, see [[#How to propose a custom project idea]] below.<br />
<br />
{{:Internships/ProjectIdeas/VirtIOBlkZonedBlockDevices}}<br />
{{:Internships/ProjectIdeas/VIRTIO_F_IN_ORDER}}<br />
{{:Internships/ProjectIdeas/EncryptedStorageInVMBasedContainerRuntimes}}<br />
{{:Internships/ProjectIdeas/S390xRISU/}}<br />
{{:Internships/ProjectIdeas/SnapshotFuzzingDevice}}<br />
{{:Internships/ProjectIdeas/CoverageGuidedDiskImageFuzzer}}<br />
{{:Internships/ProjectIdeas/NVMePerformance}}<br />
{{:Internships/ProjectIdeas/RustVMMReferenceAarch64}}<br />
{{:Internships/ProjectIdeas/LibclangRefactoring}}<br />
{{:Internships/ProjectIdeas/QEMUNitroEnclave}}<br />
<br />
== How to add a project idea ==<br />
# Create a new wiki page under "Internships/ProjectIdeas/YourIdea" and follow [[#Project idea template]].<br />
# Add a link from this page like this: <nowiki>{{:Internships/ProjectIdeas/YourIdea}}</nowiki><br />
<br />
Example idea from a previous year: [[Internships/ProjectIdeas/I2CPassthrough]]<br />
<br />
== Project idea template ==<br />
<br />
<nowiki>=== TITLE ===<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
'''Details:'''<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
= How to propose a custom project idea =<br />
<br />
Applicants are welcome to propose their own project ideas. The process is as follows:<br />
<br />
# Email your project idea to qemu-devel@nongnu.org. CC Stefan Hajnoczi <stefanha@gmail.com> and regular QEMU contributors who you think might be interested in mentoring.<br />
# If a mentor is willing to take on the project idea, work with them to fill out the "Project idea template" above and email Stefan Hajnoczi <stefanha@gmail.com>.<br />
# Stefan will add the project idea to the wiki.<br />
<br />
Note that other candidates can apply for newly added project ideas. This ensures that custom project ideas are fair and open.<br />
<br />
= How to get familiar with our software =<br />
<br />
See what people are developing and talking about on the mailing lists:<br />
* [http://thread.gmane.org/gmane.comp.emulators.qemu/ qemu-devel]<br />
* [https://www.redhat.com/archives/libvir-list/ libvir-list]<br />
* [http://www.spinics.net/lists/kvm/ kvm]<br />
<br />
Grab the source code or browse it:<br />
* [http://git.qemu-project.org/?p=qemu.git;a=summary qemu.git]<br />
* [http://libvirt.org/git/?p=libvirt.git;a=summary libvirt.git]<br />
* [https://git.kernel.org/cgit/virt/kvm/kvm.git/ kvm.git]<br />
<br />
Build QEMU and run it: [http://wiki.qemu-project.org/Hosts/Linux QEMU on Linux Hosts]<br />
<br />
= Links =<br />
<br />
* [https://google.github.io/gsocguides/student/ Student Manual]<br />
* [https://developers.google.com/open-source/gsoc/faq FAQ]<br />
* [https://developers.google.com/open-source/gsoc/timeline Timeline]<br />
* [http://blog.vmsplice.net/2011/03/advice-for-students-applying-to-google.html Advice for students applying (from 2011 but still relevant!)]<br />
<br />
= Information for mentors =<br />
<br />
Mentors are responsible for keeping in touch with their intern and assessing progress. GSoC has evaluations where both the mentor and intern assess each other.<br />
<br />
The mentor typically gives advice, reviews the intern's code, and has regular communication with the intern to ensure progress is being made.<br />
<br />
Being a mentor is a significant time commitment, plan for 5 hours per week. Make sure you can make this commitment because backing out during the summer will affect the intern's experience.<br />
<br />
The mentor chooses their intern by reviewing application forms and conducting IRC interviews with applicants. Depending on the number of candidates, this can be time-consuming in itself. Choosing the right intern is critical so that both the mentor and the intern can have a successful experience.<br />
<br />
[[Category:GSoC]]</div>Agrafhttps://wiki.qemu.org/index.php?title=Internships/ProjectIdeas/QEMUNitroEnclave&diff=10833Internships/ProjectIdeas/QEMUNitroEnclave2022-03-16T13:28:28Z<p>Agraf: </p>
<hr />
<div>=== Implement -M nitro-enclave in QEMU ===<br />
<br />
'''Summary:''' AWS EC2 provides the ability to create an isolated sibling VM context from within a VM. This project implements the machine model and input data format parsing needed to run these sibling VMs stand alone in QEMU.<br />
<br />
Nitro Enclaves are the first widely adopted implementation of hypervisor assisted compute isolation. Similar to technologies like SGX, it allows to spawn a separate context that is inaccessible by the parent Operating System. This is implemented by "giving up" resources of the parent VM (CPU cores, memory) to the hypervisor which then spawns a second vmm to execute a completely separate virtual machine. That new VM only has a vsock communication channel to the parent and has a built-in lightweight TPM.<br />
<br />
One big challenge with Nitro Enclaves is that due to its roots in security, there are very few debugging / introspection capabilities. That makes OS bringup, debugging and bootstrapping very difficult. Having a local dev&test environment that looks like an Enclave, but is 100% controlled by the developer and introspectable would make life a lot easier for everyone working on them. It also may pave the way to see Nitro Enclaves adopted in VM environments outside of EC2.<br />
<br />
This project will consist of adding a new machine model to QEMU that mimics a Nitro Enclave environment, including the lightweight TPM, the vsock communication channel and building firmware which loads the special "EIF" file format which contains kernel, initramfs and metadata from a -kernel image. <br />
<br />
<br />
'''Links:'''<br />
* https://aws.amazon.com/ec2/nitro/nitro-enclaves/<br />
* https://lore.kernel.org/lkml/20200921121732.44291-10-andraprs@amazon.com/T/<br />
<br />
'''Details:'''<br />
* Skill level: intermediate - advanced (some understanding of QEMU machine modeling would be good) <br />
* Language: C<br />
* Mentor: tbd, agraf will find a mentor<br />
* Suggested by: Alexander Graf (OFTC: agraf, Email: graf@amazon.com)</div>Agrafhttps://wiki.qemu.org/index.php?title=Internships/ProjectIdeas/QEMUNitroEnclave&diff=10832Internships/ProjectIdeas/QEMUNitroEnclave2022-03-16T13:28:06Z<p>Agraf: </p>
<hr />
<div>=== Implement -M nitro-enclave in QEMU ===<br />
<br />
'''Summary:''' AWS EC2 provides the ability to create an isolated sibling VM context from within a VM. This project implements the machine model and input data format needed to run the sibling VMs stand alone in QEMU.<br />
<br />
Nitro Enclaves are the first widely adopted implementation of hypervisor assisted compute isolation. Similar to technologies like SGX, it allows to spawn a separate context that is inaccessible by the parent Operating System. This is implemented by "giving up" resources of the parent VM (CPU cores, memory) to the hypervisor which then spawns a second vmm to execute a completely separate virtual machine. That new VM only has a vsock communication channel to the parent and has a built-in lightweight TPM.<br />
<br />
One big challenge with Nitro Enclaves is that due to its roots in security, there are very few debugging / introspection capabilities. That makes OS bringup, debugging and bootstrapping very difficult. Having a local dev&test environment that looks like an Enclave, but is 100% controlled by the developer and introspectable would make life a lot easier for everyone working on them. It also may pave the way to see Nitro Enclaves adopted in VM environments outside of EC2.<br />
<br />
This project will consist of adding a new machine model to QEMU that mimics a Nitro Enclave environment, including the lightweight TPM, the vsock communication channel and building firmware which loads the special "EIF" file format which contains kernel, initramfs and metadata from a -kernel image. <br />
<br />
<br />
'''Links:'''<br />
* https://aws.amazon.com/ec2/nitro/nitro-enclaves/<br />
* https://lore.kernel.org/lkml/20200921121732.44291-10-andraprs@amazon.com/T/<br />
<br />
'''Details:'''<br />
* Skill level: intermediate - advanced (some understanding of QEMU machine modeling would be good) <br />
* Language: C<br />
* Mentor: tbd, agraf will find a mentor<br />
* Suggested by: Alexander Graf (OFTC: agraf, Email: graf@amazon.com)</div>Agrafhttps://wiki.qemu.org/index.php?title=Internships/ProjectIdeas/QEMUNitroEnclave&diff=10831Internships/ProjectIdeas/QEMUNitroEnclave2022-03-16T13:27:50Z<p>Agraf: Created page with "=== Implement -M nitro-enclave in QEMU === '''Summary:''' AWS EC2 provides the ability to create an isolated sibling VM context from within a VM. This project implements t..."</p>
<hr />
<div>=== Implement -M nitro-enclave in QEMU ===<br />
<br />
'''Summary:''' AWS EC2 provides the ability to create an isolated sibling VM context from within a VM. This project implements the machine model and input data format needed to run the sibling VMs stand alone in QEMU.<br />
<br />
Nitro Enclaves are the first widely adopted implementation of hypervisor assisted compute isolation. Similar to technologies like SGX, it allows to spawn a separate context that is inaccessible by the parent Operating System. This is implemented by "giving up" resources of the parent VM (CPU cores, memory) to the hypervisor which then spawns a second vmm to execute a completely separate virtual machine. That new VM only has a vsock communication channel to the parent and has a built-in lightweight TPM.<br />
<br />
One big challenge with Nitro Enclaves is that due to its roots in security, there are very few debugging / introspection capabilities. That makes OS bringup, debugging and bootstrapping very difficult. Having a local dev&test environment that looks like an Enclave, but is 100% controlled by the developer and introspectable would make life a lot easier for everyone working on them. It also may pave the way to see Nitro Enclaves adopted in VM environments outside of EC2.<br />
<br />
This project will consist of adding a new machine model to QEMU that mimics a Nitro Enclave environment, including the lightweight TPM, the vsock communication channel and building firmware which loads the special "EIF" file format which contains kernel, initramfs and metadata from a -kernel image. <br />
<br />
<br />
'''Links:'''<br />
* https://aws.amazon.com/ec2/nitro/nitro-enclaves/<br />
* https://lore.kernel.org/lkml/20200921121732.44291-10-andraprs@amazon.com/T/<br />
<br />
'''Details:'''<br />
* Skill level: intermediate - advanced (some understanding of QEMU machine modeling would be good) <br />
* Language: C<br />
* Mentor: tbd, agraf will find a mentor<br />
* Suggested by: Alexander Graf (OFTC: agraf, Email: graf@amazon.com)</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.2&diff=4491ChangeLog/2.22014-12-14T15:30:32Z<p>Agraf: /* PowerPC */</p>
<hr />
<div>== System emulation ==<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Support for loading a device tree even with no -kernel option or when booting ELF images<br />
* Support for input interrupts in the PL061 GPIO controller<br />
* TCG can emulate breakpoints and watchpoints.<br />
* Support for PSCI firmware interface emulating in TCG<br />
** enables clean shutdown from non-kvm guests<br />
<br />
=== MIPS ===<br />
* Support for MIPS64 Release 6 emulation.<br />
* Support for MIPS SIMD Architecture emulation.<br />
* Fix for incorrectly handled delay slots in MIPS16 and microMIPS.<br />
=== PowerPC ===<br />
* Mac OS X 10.2, 10.3 and 10.4 guests run with the mac99 machine type (CD-ROM emulation known broken).<br />
* Bugfixes and optimization for TCG emulation of PowerPC targets.<br />
==== IBM (pSeries) ====<br />
* Support for the "nmi" monitor command, to enter the kernel debugger.<br />
* Live migration support for NVRAM<br />
==== Freescale (BookE) ====<br />
* Breakpoint support on KVM.<br />
* Support for the e500 platform bus and dynamic instantiation of FreeScale eTSEC devices (''-device eTSEC'').<br />
* Support for MPC8XXX gpio controller to enable shutdown with 3.19+ Linux guests<br />
<br />
=== s390 ===<br />
* Enhance support for boot from DASD to handle more formats.<br />
* Support for memory hotplug.<br />
* Support for cpu state handling and migration.<br />
* Support for booting newer kernels under TCG.<br />
* Improved SMP startup and cpu online/offline performance especially for large guests<br />
<br />
=== SPARC ===<br />
* Emulation of TCX hardware acceleration (allows X to run under NetBSD and Solaris)<br />
* NetBSD and OpenBSD can now run under qemu-system-sparc64 in -nographic mode<br />
<br />
=== TriCore ===<br />
* New target.<br />
=== x86 ===<br />
* Support for IOMMU (VT-d) emulation on the Q35 machine type, enabled with "-machine iommu=on".<br />
* Support for specifying drives in short form on the command-line (i.e. using -cdrom, -hda, -drive if=ide) on the Q35 machine type.<br />
* TCG is reported to run QNX.<br />
* All CPUs now work with "-cpu ''MODEL'',enforce", of course as long as TCG or KVM support the CPU's set of features. Previously, a few CPUs included extraneous CPUID flags that cause "-cpu ''MODEL'',enforce" to fail.<br />
==== KVM ====<br />
* More robust live migration of the kvm pv clock<br />
* Support for AVX512<br />
==== Xen ====<br />
* QEMU can now boot a bzImage or multiboot kernel under Xen, using the command line option -kernel.<br />
<br />
=== Xtensa ===<br />
* New script for automatic core import from xtensa configuration overlay.<br />
=== Device emulation and assignment ===<br />
* The boot order set for hot-plugged devices will take effect during reboot. In addition, the boot order can be dynamically modified via QOM.<br />
==== IDE ====<br />
* More accurate emulation of AHCI, especially visible with Windows guests.<br />
==== SCSI ====<br />
* Passthrough of vendor-specific commands now works (only with the virtio-scsi HBA).<br />
* Initial support in virtio-scsi for a threaded backend, which is used in the same way as virtio-blk ("-object iothread,id=''id''" and "-device virtio-scsi-pci,iothread=''id''"). Note that the code has known thread-safety problems that can lead to QEMU using freed memory. They should not happen in normal use, they can be triggered easily by malicious guests. This option should only be used if you are interested in making relevant parts of QEMU thread safe.<br />
* Support for LSI MegaRAID SAS 2108 HBAs (-device megasas-gen2). Note that booting from this device does not work yet.<br />
* virtio-scsi can now execute Abort Task and Abort Task Set task management functions asynchronously.<br />
==== PCI/PCIe ====<br />
* MSIs are now (correctly) disabled until bus master DMA is enabled for the device.<br />
* Support for ARI forwarding on PCIe root ports.<br />
==== USB ====<br />
* Support for hot-plugging XHCI/EHCI/UHCI controllers (in the case of EHCI/UHCI, only if there are no companion controllers).<br />
* Support for USB 2.0 (high speed) mice and keyboards, complementing the existing support for high speed USB tablets. High speed devices avoid the less efficient UHCI controller, and thus use less CPU on the host.<br />
==== VGA ====<br />
* The default vga device on x86 has been switched from cirrus to stdvga, which works better for most guests. However, Windows XP will not suspend to RAM anymore; the change can be undone with "-vga cirrus" and does not affect PC machine types of versions 2.1 and earlier. <br />
=== Character devices ===<br />
* Support for automatic reconnection of client sockets (e.g. "-chardev socket,host=localhost,port=12345,nowait,reconnect=5").<br />
=== GUI ===<br />
=== Monitor ===<br />
* The "info pcmcia" command was removed. PCMCIA hotplug was never implemented, and thus the command could only return static information.<br />
=== Migration ===<br />
=== Network ===<br />
* Samba 4.1 is now supported.<br />
=== Block devices in system emulation ===<br />
* The list of functionality now supported in threaded virtio-blk backend is growing: new in 2.2 are resizing of disks, device hot-unplug, the embedded NBD server, and background jobs (backup, stream, mirror, commit).<br />
<br />
== Block devices and tools ==<br />
* QEMU is more resistent against failure of large allocations in the block layer<br />
* Support for Archipelago as a QEMU block backend<br />
* Support for Parallels images larger than 2TB.<br />
* Migration now works when using qcow2 over Ceph.<br />
* Network-based drivers (NBD, libiscsi, etc.) now work on Win32 hosts too.<br />
* Source image cache mode can be set for qemu-img check, convert and rebase<br />
* qemu-nbd has a new --detect-zeroes option.<br />
* Progress report for qemu-img commit and qemu-img amend<br />
<br />
== TCG ==<br />
* In icount mode, it is possible to slow down emulation to match the requested CPU frequency (thus ensuring that the host and guest clocks remain aligned). This is enabled with "-icount N,align=on".<br />
* A new "victim TLB" provides a 5-10% performance improvement.<br />
== Tracing ==<br />
* QEMU provides a SystemTap script that outputs binary trace data, for use in flight-recorder mode. The resulting traces can be parsed with QEMU's simpletrace.py script (using the --no-header command-line option).<br />
== User-mode emulation ==<br />
<br />
* New option: setting AT_RANDOM auxval with -seed option or QEMU_RAND_SEED env variable<br />
* New system calls supported<br />
** timerfd_create, timerfd_gettime and timerfd_settime<br />
** ioprio_get and ioprio_set<br />
** setns<br />
** unshare<br />
* epoll_pwait has been enabled on ARM<br />
* Signal handling support added for PPC64<br />
* Emulated contents of /proc/self/maps fixed<br />
<br />
== Build dependencies ==<br />
== Known issues ==</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.2&diff=4443ChangeLog/2.22014-11-20T14:03:58Z<p>Agraf: /* PowerPC */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Support for loading a device tree even with no -kernel option or when booting ELF images<br />
* Support for input interrupts in the PL061 GPIO controller<br />
* TCG can emulate breakpoints and watchpoints.<br />
* Support for PSCI firmware interface emulating in TCG<br />
** enables clean shutdown from non-kvm guests<br />
<br />
=== LM32 ===<br />
=== Microblaze ===<br />
=== MIPS ===<br />
* Support for MIPS64 Release 6 emulation.<br />
* Support for MIPS SIMD Architecture emulation.<br />
* Fix for incorrectly handled delay slots in MIPS16 and microMIPS.<br />
=== PowerPC ===<br />
* Mac OS X 10.2, 10.3 and 10.4 guests run with the mac99 machine type.<br />
* Bugfixes and optimization for TCG emulation of PowerPC targets.<br />
==== IBM (pSeries) ====<br />
* Support for the "nmi" monitor command, to enter the kernel debugger.<br />
* Live migration support for NVRAM<br />
==== Freescale (BookE) ====<br />
* Breakpoint support on KVM.<br />
* Support for the e500 platform bus and dynamic instantiation of FreeScale eTSEC devices (''-device eTSEC'').<br />
* Support for MPC8XXX gpio controller to enable shutdown with 3.19+ Linux guests<br />
<br />
=== s390 ===<br />
* Enhance support for boot from DASD to handle more formats.<br />
* Support for memory hotplug.<br />
* Support for cpu state handling and migration.<br />
* Support for booting newer kernels under TCG.<br />
* Improved SMP startup and cpu online/offline performance especially for large guests<br />
<br />
=== SPARC ===<br />
* Emulation of TCX hardware acceleration (allows X to run under NetBSD and Solaris)<br />
* NetBSD and OpenBSD can now run under qemu-system-sparc64 in -nographic mode<br />
<br />
=== TriCore ===<br />
* New target.<br />
=== x86 ===<br />
* Support for IOMMU (VT-d) emulation on the Q35 machine type, enabled with "-machine iommu=on".<br />
* Support for specifying drives in short form on the command-line (i.e. using -cdrom, -hda, -drive if=ide) on the Q35 machine type.<br />
* Support for AVX512 emulation.<br />
* All CPUs now work with "-cpu ''MODEL'',enforce", of course as long as TCG or KVM support the CPU's set of features. Previously, a few CPUs included extraneous CPUID flags that cause "-cpu ''MODEL'',enforce" to fail.<br />
==== KVM ====<br />
* More robust live migration of the kvm pv clock<br />
==== Xen ====<br />
* QEMU can now boot a bzImage or multiboot kernel under Xen, using the command line option -kernel.<br />
<br />
=== Xtensa ===<br />
* New script for automatic core import from xtensa configuration overlay.<br />
=== Device emulation and assignment ===<br />
* The boot order set for hot-plugged devices will take effect during reboot. In addition, the boot order can be dynamically modified via QOM.<br />
==== IDE ====<br />
* More accurate emulation of AHCI, especially visible with Windows guests.<br />
==== SCSI ====<br />
* Passthrough of vendor-specific commands now works (only with the virtio-scsi HBA).<br />
* Initial support in virtio-scsi for a threaded backend, which is used in the same way as virtio-blk ("-object iothread,id=''id''" and "-device virtio-scsi-pci,iothread=''id''"). Note that the code has known thread-safety problems that can lead to QEMU using freed memory. They should not happen in normal use, they can be triggered easily by malicious guests. This option should only be used if you are interested in making relevant parts of QEMU thread safe.<br />
* Support for LSI MegaRAID SAS 2108 HBAs (-device megasas-gen2). Note that booting from this device does not work yet.<br />
* virtio-scsi can now execute Abort Task and Abort Task Set task management functions asynchronously.<br />
==== PCI/PCIe ====<br />
* MSIs are now (correctly) disabled until bus master DMA is enabled for the device.<br />
* Support for ARI forwarding on PCIe root ports.<br />
==== USB ====<br />
* Support for hot-plugging XHCI/EHCI/UHCI controllers (in the case of EHCI/UHCI, only if there are no companion controllers).<br />
* Support for USB 2.0 (high speed) mice and keyboards, complementing the existing support for high speed USB tablets. High speed devices avoid the less efficient UHCI controller, and thus use less CPU on the host.<br />
==== VGA ====<br />
* The default vga device on x86 has been switched from cirrus to stdvga (2.2+ machine types only).<br />
==== VFIO ====<br />
<br />
=== Character devices ===<br />
* Support for automatic reconnection of client sockets (e.g. "-chardev socket,host=localhost,port=12345,nowait,reconnect=5").<br />
=== GUI ===<br />
=== Monitor ===<br />
* The "info pcmcia" command was removed. PCMCIA hotplug was never implemented, and thus the command could only return static information.<br />
=== Migration ===<br />
=== Network ===<br />
* Samba 4.1 is now supported.<br />
=== Block devices in system emulation ===<br />
* Many fixes to AHCI emulation.<br />
* The list of functionality now supported in threaded virtio-blk backend is growing: new in 2.2 are resizing of disks, device hot-unplug, the embedded NBD server, and background jobs (backup, stream, mirror, commit).<br />
=== Various ===<br />
== Block devices and tools ==<br />
* QEMU is more resistent against failure of large allocations in the block layer<br />
* Support for Archipelago as a QEMU block backend<br />
* Support for Parallels images larger than 2TB.<br />
* Migration now works when using qcow2 over Ceph.<br />
* Network-based drivers (NBD, libiscsi, etc.) now work on Win32 hosts too.<br />
* qemu-img source cache option?<br />
* qemu-nbd has a new --detect-zeroes option.<br />
* Progress report for qemu-img commit and qemu-img amend<br />
<br />
== TCG ==<br />
* In icount mode, it is possible to slow down emulation to match the requested CPU frequency (thus ensuring that the host and guest clocks remain aligned). This is enabled with "-icount N,align=on".<br />
* A new "victim TLB" provides a 5-10% performance improvement.<br />
== Tracing ==<br />
* QEMU provides a SystemTap script that outputs binary trace data, for use in flight-recorder mode. The resulting traces can be parsed with QEMU's simpletrace.py script (using the --no-header command-line option).<br />
== User-mode emulation ==<br />
<br />
* New option: setting AT_RANDOM auxval with -seed option or QEMU_RAND_SEED env variable<br />
* New system calls supported<br />
** timerfd_create, timerfd_gettime and timerfd_settime<br />
** ioprio_get and ioprio_set<br />
** setns<br />
** unshare<br />
* epoll_pwait has been enabled on ARM<br />
* Signal handling support added for PPC64<br />
* Emulated contents of /proc/self/maps fixed<br />
<br />
== Build dependencies ==<br />
== Known issues ==</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4245ChangeLog/2.12014-07-08T13:24:36Z<p>Agraf: /* IBM */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== PowerPC ===<br />
<br />
==== IBM ====<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* Support for PAPR compliant old CPU type compatibility<br />
* Little Endian guest support for dump-guest-memory, virtio and gdbstub<br />
* Magic page support for -M pseries with PR KVM<br />
* Improved live migration support (not stable yet!)<br />
<br />
==== Freescale ====<br />
<br />
* e500 machines now boot into u-boot by default<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4244ChangeLog/2.12014-07-08T13:23:32Z<p>Agraf: /* System emulation */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== PowerPC ===<br />
<br />
==== IBM ====<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* Support for PAPR compliant old CPU type compatibility<br />
* Little Endian guest support for dump-guest-memory, virtio and gdbstub<br />
* Improved live migration support (not stable yet!)<br />
<br />
==== Freescale ====<br />
<br />
* e500 machines now boot into u-boot by default<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4243ChangeLog/2.12014-07-08T13:19:13Z<p>Agraf: /* IBM PowerPC */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== IBM PowerPC ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* Support for PAPR compliant old CPU type compatibility<br />
* Little Endian guest support for dump-guest-memory, virtio and gdbstub<br />
* Improved live migration support (not stable yet!)<br />
<br />
=== Freescale PowerPC ===<br />
<br />
* e500 machines now boot into u-boot by default<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4242ChangeLog/2.12014-07-08T13:14:49Z<p>Agraf: /* IBM PowerPC */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== IBM PowerPC ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* dump-guest-memory is supported for little endian ppc64<br />
* Support for virtio on little endian ppc64le.<br />
* Little Endian guest support for core dump and gdbstub<br />
* Improved live migration support (not stable yet!)<br />
<br />
=== Freescale PowerPC ===<br />
<br />
* e500 machines now boot into u-boot by default<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4241ChangeLog/2.12014-07-08T13:14:06Z<p>Agraf: /* Power */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== IBM PowerPC ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* dump-guest-memory is supported for little endian ppc64<br />
* Support for virtio on little endian ppc64le.<br />
* Little Endian guest support for core dump and gdbstub<br />
<br />
=== Freescale PowerPC ===<br />
<br />
* e500 machines now boot into u-boot by default<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4240ChangeLog/2.12014-07-08T13:11:51Z<p>Agraf: /* Power */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== Power ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* dump-guest-memory is supported for little endian ppc64<br />
* Support for virtio on little endian ppc64le.<br />
* Little Endian guest support for core dump and gdbstub<br />
* e500 machines now boot into u-boot by default<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4239ChangeLog/2.12014-07-08T13:09:01Z<p>Agraf: /* Power */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== Power ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* dump-guest-memory is supported for little endian ppc64<br />
* Support for virtio on little endian ppc64le.<br />
* Little Endian guest support for core dump and gdbstub<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4238ChangeLog/2.12014-07-08T13:07:49Z<p>Agraf: /* x86 */</p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== Power ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* dump-guest-memory is supported for little endian ppc64<br />
* Support for virtio on little endian ppc64le.<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
* More robust live migration of the kvm pv clock<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/2.1&diff=4237ChangeLog/2.12014-07-08T13:02:55Z<p>Agraf: </p>
<hr />
<div>== System emulation ==<br />
=== Incompatible changes ===<br />
* The 82573L NIC was incorrectly treated as an 8254xx model. It no longer works correctly on either Linux (3.14.*) or Windows 7 and has been removed.<br />
<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 xyz.jkl, -readconfig will standardize on the name for the command line option.<br />
<br />
=== ARM ===<br />
* Firmware can be passed to the vexpress machine via -bios.<br />
* Improvements to Allwinner SoC emulation.<br />
* AArch64 TCG system emulation support.<br />
* Initial support in TCG for EL2 and EL3.<br />
* AArch64 SHA and Crypto instruction support.<br />
<br />
=== LM32 ===<br />
* Support for semihosting.<br />
<br />
=== Microblaze ===<br />
* Support for u-boot initrd images.<br />
<br />
=== MIPS ===<br />
* Support for KVM in the Malta board.<br />
<br />
=== Power ===<br />
* Support for VFIO (with guest-side IOMMU) on pSeries.<br />
* Support for emulation of decimal number instructions.<br />
* dump-guest-memory is supported for little endian ppc64<br />
* Support for virtio on little endian ppc64le.<br />
<br />
=== s390 ===<br />
* virtio-ccw supports migration<br />
* support for irqfds on adapter-interrupt enabled virtio-ccw devices<br />
* gdb server support for software breakpoints and hardware breakpoints (via PER)<br />
* enable CMMA on supported kernels<br />
* The s390-ccw bios now supports IPL (boot) from ECKD DASD (CDL, LDL or CMS formatted).<br />
<br />
=== SPARC ===<br />
* Improved IOMMU emulation.<br />
<br />
=== x86 ===<br />
* QEMU now presents version 0x14 for the emulated local APIC, for consistency with KVM and improved compatibility with Mac OS X.<br />
* More faithful SMBus controller emulation.<br />
* More faithful CPL (current privilege level) emulation in TCG mode.<br />
* More faithful MMU emulation in TCG mode, including support for 1GB pages and SMEP/SMAP bugfixes.<br />
* Support for pinning memory on host NUMA nodes. The existing options "-mem-prealloc", "-mem-path", "-machine mem-merge" and "-machine dump-guest-core" are subsumed by the QOM objects "memory-backend-ram" and "memory-backend-file", and by the "memdev" option of "-numa node". This will be extended to other machines in future releases.<br />
* Support for memory hotplug using the new "pc-dimm" device and the QOM objects "memory-backend-ram" and "memory-backend-file".<br />
* New Broadwell CPU model.<br />
* TCG supports the "check" and "enforce" suboptions of "-cpu".<br />
<br />
==== KVM ====<br />
* New "invtsc" (Invariant TSC) CPU feature. When enabled, this will block migration and savevm, so it is not enabled by default on any CPU model. To enable invtsc, the <tt>migratable=no</tt> flag (supported only by <tt>-cpu host</tt>, by now) is required. So, invtsc is available only if using: <tt>-cpu host,migratable=no,+invtsc</tt>.<br />
<br />
==== Xen ====<br />
<br />
=== Xtensa ===<br />
* Support for loading uImage, device tree and initrd.<br />
<br />
=== Device emulation and assignment ===<br />
==== SCSI ====<br />
* Support for MSI and MSI-X in the megasas emulation.<br />
<br />
==== USB ====<br />
* Support for file-sharing via MTP emulation<br />
* Host USB3 device can be attached to a EHCI (USB 2.0) controller in the guest<br />
* Support for attaching keyboards and mice to a specific video card (multi-seat).<br />
<br />
==== VFIO ====<br />
* Support for RTL8168 NICs.<br />
<br />
=== GUI ===<br />
* Many bug fixes for the GTK+ interface.<br />
* Mouse wheel support for the SDL 2.0 interface.<br />
* Support for multi-seat in the GTK+ and SDL 2.0 interfaces.<br />
<br />
=== Monitor ===<br />
* Ctrl-L (form feed) can be used to clear the screen in the monitor.<br />
* More commands support command-line completion.<br />
* New monitor command "info memdev" (with the QMP counterpart "query-memdev").<br />
* New QMP command "query-acpi-ospm-status" and event "ACPI_DEVICE_OST" provide information from the guest's invocation of the _OST method.<br />
<br />
=== Migration ===<br />
* Many fixes to XBZRLE.<br />
* A new utility, scripts/vmstate-static-checker.py that checks two different QEMU vmstate information files to flag migration-related bugs that may have been introduced. The vmstate information files are produced with the new -dump-vmstate parameter to QEMU.<br />
<br />
=== Network ===<br />
* Improved emulation of link auto-negotiation fixes bugs in Mac OS X.<br />
* More variants of the e1000 NIC are supported (e1000-82540em, e1000-82544gc, e1000-82545em). The default e1000 fails with versions of Mac OS X starting at 10.9, while the new e1000-82545em works with all versions of Mac OS X starting at 10.6.<br />
* New "vhost-user" backend for -net and -netdev allows connecting with an external process on the same machine.<br />
* New "l2tpv3" transport is similar to "socket" but uses the standard Ethernet over L2TPv3 protocol. The transport supports all options present in the Linux kernel implementation, and allows QEMU to connect to any Linux host running kernel 3.3+, most routers and network devices as well as other QEMU instances.<br />
<br />
=== Block devices in system emulation ===<br />
* virtio-blk dataplane, the threaded virtio-blk implementation introduced in QEMU 1.4, now supports almost all features of the block layer including: image formats, POSIX AIO (aio=threads), I/O throttling, statistics and error recovery (rerror/werror). It also does not require anymore manually setting config-wce=off. It is still considered experimental and is still missing support for long-running jobs (streaming, mirroring, snapshot deletion, backup, etc.).<br />
* The command-line interface for the threaded virtio-blk backend is now stable and looks like "-object iothread,id=''id'' -device virtio-blk-pci,iothread=''id''". As in 2.0, this interface allows a M:N threading model. The old interface ("-device virtio-blk-pci,x-data-plane=on") is still present for backwards compatibility.<br />
* The option "top" to the "block-commit" QMP command is now optional, serving as a witness of support for active commit.<br />
* The new "change-backing-file" QMP command modifies the backing filename of a block device, as well as serving as a witness of a new optional "backing-file" option to "block-stream" and "block-commit".<br />
* "block-mirror" has a new optional ''replaces'' argument to move the target into the position of an existing block driver state node on completion. This can be used to repair broken quorum devices by replacing a child after block-mirror has synchronized it. The command also allows specifying the ''node-name'' for the mirror target.<br />
* Xen PV disks now support the discard operation.<br />
<br />
=== PCIe ===<br />
* Basic hot-plug/hot-unplug support for Q35 machine.<br />
<br />
=== Various ===<br />
* Non-contiguous host CPUs can be assigned to a single NUMA node. Commas in the CPU list have to be escaped, as in "-numa node,cpus=0-3,,4-7"<br />
<br />
== Block devices and tools ==<br />
* Filenames can be JSON objects preceded by "json:", for example ''json:{'driver':'raw','file.filename':'test.img'}''. This new syntax can be used in the file property for -drive, but also in qemu-io, qemu-img or backing file names.<br />
* curl: The new ''sslverify'' option allows to use images over https with a self-signed certificate. Also some bugs were fixed which could lead to hangs with a slow connection.<br />
* nfs: A new option to set the readahead size was added.<br />
* quorum: The ''rewrite-corrupted'' option allows to automatically correct corrupted copies of the image.<br />
* vmdk: Support for compressed (streamOptimized) VMDK images as conversion targets.<br />
<br />
== TCG ==<br />
* Improvement to AArch64, Alpha, ia64, MIPS, S390 and SPARC backends.<br />
* ABIv2 support for PowerPC<br />
<br />
== Tracing ==<br />
* Support for enabling multiple trace backends using for example "--enable-trace-backends=simple,ftrace" on the configure command line.<br />
<br />
== User-mode emulation ==<br />
* --enable-uname-release configure parameter has been removed <br />
* Improved support for FreeBSD.<br />
* Support for opening /proc/self/exe and /proc/self/cmdline<br />
* Support ARM HWCAP2 flags<br />
* Fixes in getrusage, wait4, uname, sched_getaffinity, settimeofday and epoll syscalls<br />
* New target ppc64le-linux-user, for little-endian Power platforms.<br />
<br />
== Known issues ==<br />
* The long-standing issue requiring configuration with --disable-coroutine-pool on Win32 is finally fixed.</div>Agrafhttps://wiki.qemu.org/index.php?title=Features&diff=4190Features2014-06-06T11:29:35Z<p>Agraf: update ppc-next git url</p>
<hr />
<div>This page tells you about all the features QEMU has and will get and/or lose in the foreseeable future.<br />
<br />
== Primary and Secondary ==<br />
<br />
A primary feature is a feature that is actively maintained. Breaking it by introducing new code is a no-go.<br />
<br />
Secondary features are there and work, but either there's no active maintainer caring enough about it or people don't deem the feature important enough to declare breakages here a blocking issue.<br />
<br />
== Guest CPU support ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
| Alpha Guest<br />
| Secondary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| ARM Guest<br />
| Primary<br />
| Paul Brook<br>Peter Maydell<br />
| git://git.linaro.org/people/pmaydell/qemu-arm.git target-arm.next, arm-devs.next<br />
| -<br />
|-<br />
<br />
| CRIS Guest<br />
| Secondary<br />
| Edgar E. Iglesias<br />
| -<br />
| -<br />
|-<br />
<br />
| x86 Guest<br />
| Primary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| x86-64 Guest<br />
| Primary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| LM32 Guest<br />
| Secondary<br />
| Michael Walle<br />
| -<br />
| -<br />
|-<br />
<br />
| m68k Guest<br />
| Secondary<br />
| Paul Brook<br />
| -<br />
| -<br />
|-<br />
<br />
| MicroBlaze Guest<br />
| Secondary<br />
| Edgar E. Iglesias<br />
| -<br />
| -<br />
|-<br />
<br />
| MIPS Guest<br />
| Secondary<br />
| Aurelien Jarno<br />
| -<br />
| -<br />
|-<br />
<br />
| PPC Guest<br />
| Primary<br />
| Alexander Graf<br />
| git://github.com/agraf/qemu.git ppc-next<br />
| -<br />
|-<br />
<br />
| S390x Guest<br />
| Secondary<br />
| Alexander Graf<br />
| -<br />
| -<br />
|-<br />
<br />
| SH4 Guest<br />
| Secondary<br />
| Aurelien Jarno<br />
| -<br />
| -<br />
|-<br />
<br />
| Sparc Guest<br />
| Secondary<br />
| Blue Swirl<br />
| -<br />
| -<br />
|-<br />
<br />
| Xtensa Guest<br />
| Secondary<br />
| Max Filippov<br />
| -<br />
| -<br />
|-<br />
|}<br />
<br />
== Host CPU support ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
| Alpha Host<br />
| Secondary<br />
| Richard Henderson<br />
| -<br />
| -<br />
|-<br />
<br />
<br />
<br />
<br />
| ARM Host<br />
| Secondary<br />
| Paul Brook<br>Peter Maydell<br />
| -<br />
| -<br />
|-<br />
<br />
| HPPA Host<br />
| Secondary<br />
| Richard Henderson<br />
| -<br />
| -<br />
|-<br />
<br />
| x86 Host<br />
| Primary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| x86_64 Host<br />
| Primary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| IA64 Host<br />
| Secondary<br />
| Aurelien Jarno<br />
| -<br />
| -<br />
|-<br />
<br />
| MIPS Host<br />
| Secondary<br />
| Aurelien Jarno<br />
| -<br />
| -<br />
|-<br />
<br />
| PPC(64) Host<br />
| Secondary<br />
| malc<br />
| -<br />
| -<br />
|-<br />
<br />
| S390x Host<br />
| Secondary<br />
| Richard Henderson<br />
| -<br />
| -<br />
|-<br />
<br />
| Sparc Host<br />
| Secondary<br />
| Blue Swirl<br />
| -<br />
| -<br />
|-<br />
<br />
| [[Features/TCI|Other Hosts]]<br />
| Experimental<br />
| [[User:Stefan_Weil |Stefan Weil ]]<br />
| -<br />
| -<br />
|-<br />
|}<br />
<br />
== Block layer ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
| Generic block layer<br />
| Primary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| qemu-img Tool<br />
| Primary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| qemu-nbd Tool<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| qemu-io Tool<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| bochs Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| cloop Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| .cow Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| curl (http/ftp) Protocol<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| .dmg Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| nbd Protocol<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| parallels Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| qcow Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| qcow2 Format<br />
| Primary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| qed Format<br />
| Primary<br />
| Kevin Wolf<br>Stefan Hajnoczi<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| raw Format<br />
| Primary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| sheepdog Format<br />
| Secondary<br />
| MORITA Kazutaka<br />
| -<br />
| -<br />
|-<br />
<br />
| .vdi Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| .vmdk Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| vpc Format<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
<br />
| vvfat Protocol<br />
| Secondary<br />
| Kevin Wolf<br />
| git://repo.or.cz/qemu/kevin.git block<br />
| -<br />
|-<br />
|}<br />
<br />
== User interfaces ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
| Human Monitor<br />
| Primary<br />
| ?<br />
| git://repo.or.cz/qemu/qmp-unstable.git queue/qmp<br />
| -<br />
|-<br />
<br />
| QMP<br />
| Primary<br />
| Luiz Capitulino<br />
| git://repo.or.cz/qemu/qmp-unstable.git queue/qmp<br />
| -<br />
|-<br />
<br />
| VNC Output<br />
| Primary<br />
| Anthony Liguori<br />
| -<br />
| -<br />
|-<br />
<br />
| Threaded VNC Output<br />
| Primary<br />
| Corentin Chary<br />
| -<br />
| -<br />
|-<br />
<br />
| SPICE Output<br />
| Primary<br />
| Gerd Hoffmann<br />
| git://anongit.freedesktop.org/spice/qemu ?<br />
| -<br />
|-<br />
<br />
| SDL Output<br />
| Primary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| curses Output<br />
| Secondary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| cocoa Output<br />
| Secondary<br />
| Andreas Färber<br />
| git://repo.or.cz/qemu/afaerber.git ?<br />
| -<br />
|-<br />
|}<br />
<br />
== Host platform ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
| Linux<br />
| Primary<br />
| ?<br />
| -<br />
| -<br />
|-<br />
<br />
| *BSD<br />
| Secondary<br />
| Blue Swirl<br />
| -<br />
| -<br />
|-<br />
<br />
| W32<br />
| Secondary<br />
| [[User:Stefan_Weil |Stefan Weil ]]<br />
| -<br />
| This includes w32 and w64 hosts.<br />
|-<br />
<br />
| Mac OS X<br />
| Secondary<br />
| Andreas Färber<br />
| git://repo.or.cz/qemu/afaerber.git ?<br />
| -<br />
|-<br />
<br />
| AIX<br />
| Secondary<br />
| malc<br />
| -<br />
| -<br />
|-<br />
|}<br />
<br />
== Hypervisor support ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
<br />
| x86/x86_64 KVM<br />
| Primary<br />
| Avi Kivity<br>Marcelo Tosatti<br />
| git://github.com/avikivity/qemu.git uq/master<br />
| -<br />
|-<br />
<br />
<br />
| x86/x86_64 Xen<br />
| Secondary<br />
| Stefano Stabellini<br />
| -<br />
| -<br />
|-<br />
<br />
| PowerPC BookE KVM<br />
| Primary<br />
| Alexander Graf<br />
| -<br />
| -<br />
|-<br />
<br />
| PowerPC Book3S KVM<br />
| Primary<br />
| Alexander Graf<br />
| -<br />
| -<br />
|-<br />
<br />
| S390x KVM<br />
| Primary<br />
| Alexander Graf<br />
| -<br />
| -<br />
|-<br />
<br />
|}<br />
<br />
== Other subsystems ==<br />
<br />
{| border="1" cellspacing="0" cellpadding="2"<br />
|-<br />
!scope="col"| Feature<br />
!scope="col"| Importance<br />
!scope="col"| Maintainer<br />
!scope="col"| git tree<br />
!scope="col"| Comment<br />
|-<br />
<br />
| linux-user<br />
| Primary<br />
| Riku Voipio<br />
| git://git.linaro.org/people/rikuvoipio/qemu.git linux-user-for-upstream<br />
| -<br />
|-<br />
<br />
| PCI<br />
| Primary<br />
| Michael S. Tsirkin<br />
| git://github.com/mstsirkin/qemu.git ?<br />
| -<br />
|-<br />
<br />
| SLIRP<br />
| Secondary<br />
| Jan Kiszka<br />
| git://git.kiszka.org/qemu.git queues/slirp<br />
| -<br />
|-<br />
<br />
| Trivial patches<br />
| N/A<br />
| Stefan Hajnoczi<br />
| git://repo.or.cz/qemu/stefanha.git trivial-patches <br />
| -<br />
|-<br />
<br />
| Tracing<br />
| Primary<br />
| Stefan Hajnoczi<br />
| git://repo.or.cz/qemu/stefanha.git tracing<br />
| -<br />
|-<br />
<br />
<br />
| USB<br />
| Primary<br />
| Gerd Hoffman<br />
| git://git.kraxel.org/qemu ?<br />
| -<br />
|-<br />
<br />
|}</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2014&diff=4003Google Summer of Code 20142014-02-11T10:33:10Z<p>Agraf: Add TianoCore boot.efi support as idea</p>
<hr />
<div>= Introduction =<br />
<br />
QEMU is applying as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2014]. This page contains our ideas list and information for students and mentors.<br />
<br />
'''''Note to students'': Google has not yet announced participating organizations for 2014. We do not know whether or not QEMU can participate this year, so use your time wisely and don't invest too much effort yet.'''<br />
<br />
= Find Us =<br />
<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* IRC (development):<br />
** QEMU: #qemu on irc.oftc.net<br />
* Mailing list:<br />
** QEMU: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
Please contact the mentor for the project idea you are interested in. IRC is usually the quickest way to get an answer.<br />
<br />
For general questions about QEMU in GSoC, please contact the following people:<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]] (stefanha on IRC)<br />
* [[User:AnthonyLiguori|Anthony Liguori]] (aliguori on IRC)<br />
<br />
= Important links =<br />
<br />
* [http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2014/help_page FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2014 Program Timeline]<br />
<br />
= Project Ideas =<br />
<br />
This is the listing of suggested project ideas. Students are free to suggest their own projects by emailing qemu-devel@nongnu.org and (optionally) CCing potential mentors.<br />
<br />
== QEMU projects ==<br />
<br />
=== Device driver framework for low-level testing ===<br />
<br />
'''Summary:''' Implement bus drivers and example device tests <br />
<br />
Modern hardware requires elaborate setup before it can be accessed. So much low-level configuration is necessary before devices become available that we (mostly) don't bother to write test cases for emulated devices. This project is going to change that - let's make testing emulated devices easy!<br />
<br />
QEMU's libqos library aims to provide a device driver framework for writing PCI, I2C, fw_cfg, and other device tests. libqos has several areas that need improvement before emulated device testing becomes generally useful:<br />
<br />
* Add support for virtio. This requires you to implement at least one of the virtio transports: virtio-pci, virtio-mmio, or virtio-ccw.<br />
<br />
* Add support for USB. This requires you to implement at least one USB Host Controller driver: xHCI, EHCI, UHCI, or OHCI.<br />
<br />
* Add I2C/SMBus controller drivers for pc (i440fx) and pc-q35 (ICH9) x86 machines.<br />
<br />
* Add PCI controller drivers for ppc machines.<br />
<br />
* Make device test cases work for multiple machine types. For example, a PCI network card test case should work on both x86 and ppc machines. This requires that you first implement more controller drivers (see above). Some busses, like PCI, can detect devices and therefore decide which device tests to execute for the emulated machine.<br />
<br />
Pick one or more of these areas to work on.<br />
<br />
This project will give you an opportunity to work on low-level device driver code, learn how modern hardware works, and familiarize yourself with device driver frameworks. The libqos approach is similar to kernel device driver frameworks that Linux, FreeBSD, Windows, or Darwin have. If you are not familiar with device drivers already, make sure to look at the free Linux Device Drivers book to get some background.<br />
<br />
'''Links:'''<br />
* [http://git.qemu-project.org/?p=qemu.git;a=tree;f=tests/libqos;h=7b67620d176feb10e40c4278957d1f6a65dea4df;hb=HEAD libqos]<br />
* [http://git.qemu-project.org/?p=qemu.git;a=blob;f=tests/ide-test.c;h=4a0d97f19764b6f704f94e6fe8e17dc32e7104bc;hb=HEAD IDE controller test case]<br />
* Linux kernel device driver model [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/include/linux/device.h header file] and [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/driver-model documentation]<br />
* [https://lwn.net/Kernel/LDD3/ Linux Device Drivers, 3rd Edition]<br />
<br />
'''Details:'''<br />
* Skill level: intermediate to advanced<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@redhat.com> (stefanha on IRC), Paolo Bonzini <pbonzini@redhat.com><br />
<br />
=== Disk image fuzz testing ===<br />
<br />
'''Summary:''' Implement fuzz testing for image file formats to identify security vulnerabilities before the bad guys do<br />
<br />
QEMU supports a range of image file formats including qcow2, VMDK, and VHDX.<br />
Image files are often uploaded by untrusted users to cloud providers or shared<br />
online as untrusted "demo appliances". Any bug in QEMU that can be triggered<br />
by a malicious image file could be used to compromise the host opening the<br />
image file.<br />
<br />
Fuzz testing is an automated random testing technique that explores a<br />
program's code paths by trying random inputs. When the program under test<br />
crashes, a bug has been found. These techniques have been used successfully<br />
in other areas such as testing the Linux system call interface.<br />
<br />
Your task is to implement fuzz tests for qcow2, VMDK, and VHDX. These tests<br />
will be merged into qemu.git and part of the test suite. You can either fix<br />
bugs found by your tests yourself, or work with the community to report them<br />
and provide fixes.<br />
<br />
You should consider different approaches to fuzzing that interest you (e.g.<br />
combining with code coverage metrics). Using an existing fuzzing framework<br />
may be a good idea too.<br />
<br />
'''Links:'''<br />
* https://en.wikipedia.org/wiki/Fuzz_testing<br />
* [http://git.qemu-project.org/?p=qemu.git;a=tree;f=tests/qemu-iotests;h=3731f5a20482282c096d280f5e9b3ac132377e50;hb=HEAD qemu-iotests test suite (has no fuzz tests)]<br />
* [http://codemonkey.org.uk/projects/trinity/ Trinity Linux system call fuzzer]<br />
* [http://git.qemu-project.org/?p=qemu.git;a=blob;f=docs/specs/qcow2.txt;h=f19536a46faa2155022d5bd57b8f17aecae96cce;hb=HEAD qcow2 file format specification]<br />
<br />
'''Details:'''<br />
* Skill level: intermediate<br />
* Language: Python and/or shell<br />
* Mentor: Stefan Hajnoczi <stefanha@redhat.com> (stefanha on IRC)<br />
<br />
=== Incremental backup of block images ===<br />
<br />
'''Summary:''' Implement persistent incremental image backup.<br />
<br />
Users want to do regular backup of VM image to protect data from<br />
unexpected loss. Incremental backup is a backup strategy that only copies out<br />
the "new data" that is changed since previous backup, to reduce the overhead of<br />
backup and improve the storage utilization. To track which part of guest data<br />
is changed, QEMU needs to store image's "dirty bitmap" on the disk as well as<br />
the image data itself.<br />
<br />
The task is to implement a new block driver (a filter) to load/store this<br />
persistent dirty bitmap file, and maintain the dirty bits while the guest<br />
writes to the data image. As a prerequisite, you also need to make the design<br />
of this bitmap file format. Then, design test cases and write scripts to test<br />
the driver.<br />
<br />
The persistent bitmap file must contain:<br />
<br />
* Magic bits to identify the format of this file.<br />
* Bitmap granularity (e.g. 64 KB)<br />
* The actual bitmap (1 TB disk @ 64 KB granularity = 2 MB bitmap)<br />
* Flags including a "clean" flag. The "clean" flag is used to tell whether the persistent bitmap file is safe to use again. When QEMU opens the persistent dirty bitmap, it clears the "clean" flag. When QEMU deactivates and finishes writing out the dirty bitmap, it sets the "clean" flag. If the QEMU process crashes it is not safe to trust the dirty bitmap; a full backup must be performed. Make use of this flag in the driver to limit the performance overhead.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/Incremental_backup<br />
* [http://lists.nongnu.org/archive/html/qemu-devel/2014-01/msg02156.html QMP: Introduce incremental drive-backup with in-memory dirty bitmap]<br />
<br />
'''Details:'''<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentors: Fam Zheng <famz@redhat.com> (fam on IRC), Stefan Hajnoczi <stefanha@redhat.com> (stefanha on IRC)<br />
<br />
=== TianoCore support for Apple's boot.efi ===<br />
<br />
'''Summary:''' Make TianoCore / OVMF support boot.efi for an out-of-the-box boot experience of Mac OS X<br />
<br />
The only way today to boot Mac OS X inside of QEMU / KVM is to go through a hacked up version of Apple's legacy BIOS boot loader. That solution is neither future proof nor streamlined for end users. Wouldn't it be nice if you could just do -cdrom 10.9.iso and the guest would boot straight into Mac OS X?<br />
<br />
We're pretty close to get to that point. We do have a uEFI compatible firmware (OVMF) which is only missing HFS+ support and probably a few Apple proprietary interfaces that we have to mimick.<br />
<br />
If we do finish early, there are a few items that we could try to tackle to make Mac OS X a first class citizen:<br />
<br />
* e1000 EFI option rom to enable the link before XNU comes up<br />
* MONITOR / MWAIT support in KVM<br />
<br />
'''Links:'''<br />
* [http://www.linux-kvm.org/page/OVMF OVMF KVM page]<br />
* [http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OvmfPkg OVMF TianoCore page]<br />
* [https://developer.apple.com/library/mac/documentation/Darwin/Conceptual/KernelProgramming/booting/booting.html XNU boot loader concepts]<br />
* [http://homepage.ntlworld.com/jonathan.deboynepollard/FGA/efi-boot-process.html#Apple Apple EFI boot loader concepts]<br />
* [http://developer.apple.com./mac/library/DOCUMENTATION/Darwin/References/ManPages/man8/bless.8.html bless man page]<br />
* [http://www.rodsbooks.com/refind/drivers.html HFS+ driver for EFI]<br />
* [http://clover-wiki.zetam.org/What-is-what Clover description]<br />
<br />
'''Details:'''<br />
* Skill level: advanced<br />
* Language: C<br />
* Mentor: Alexander Graf <agraf@suse.de> (agraf on Freenode and OFTC)<br />
* Suggested by: Alexander Graf<br />
<br />
== Libvirt projects ==<br />
<br />
=== Introducing job control to the storage driver ===<br />
<br />
Currently, libvirt support job cancellation and progress reporting on domains.<br />
That is, if there's a long running job on a domain, e.g. migration, libvirt<br />
reports how much data has already been transferred to the destination and how<br />
much still needs to be transferred. However, libvirt lacks such information<br />
reporting in storage area, to which libvirt developers refer to as the storage<br />
driver. The aim is to report progress on several storage tasks, like volume<br />
wiping, file allocation an others.<br />
<br />
* Skill level: intermediate<br />
<br />
=== Rewriting VirtualBox driver ===<br />
<br />
If you have ever looked into our VirtualBox driver, you still may experience occasional headaches. I still do. The code is horribly structured so we would be more than happy to have somebody to rewrite the code and bring cleanliness that we strive to keep in the rest of the code.<br />
<br />
* Skill level: beginner<br />
<br />
=== Enhancing libvirt-snmp or libvirt-designer ===<br />
<br />
Both project are in their very early stage of life. [http://wiki.libvirt.org/page/Libvirt-snmp Libvirt-snmp] aims to provide libvirt APIs over SNMP, so various network monitoring systems can access statistics of virtual machines. The [https://www.redhat.com/archives/libvirt-announce/2012-October/msg00003.html libvirt-designer] tries to ease generation of libvirt XML with coworking with libosinfo project. Contact me and we can find something suitable.<br />
<br />
* Skill level: beginer<br />
<br />
=== Making virsh more bash like ===<br />
<br />
If you have ever used virsh, you certainly reached the point where you stuggle with its user friendliness. Or unfriendliness I should rather say. Virsh is missing a lot of bash functionality that users consider natural: from automatic completion of object names, through redirecting command outputs through piping commands together. The aim would be to make these functions available in virsh and thus make user experience better.<br />
<br />
* Skill level: Advanced<br />
<br />
=== Your own idea ===<br />
<br />
Just catch me (Michal Privoznik) on IRC and we can discuss what interests you.<br />
<br />
'''Links:'''<br />
* http://libvirt.org/<br />
* http://wiki.libvirt.org/page/Main_Page<br />
* http://www.ibm.com/developerworks/linux/library/l-libvirt/index.html?ca=drs-<br />
* https://www.berrange.com/topics/libvirt/<br />
* https://www.redhat.com/archives/libvir-list/<br />
<br />
'''Details:'''<br />
* Component: libvirt<br />
* Skill level: (see description to each item)<br />
* Language: C<br />
* Mentor: Michal Privoznik <mprivozn@redhat.com>, mprivozn on IRC (#virt OFTC)<br />
* Suggested by: Michal Privoznik <mprivozn@redhat.com><br />
<br />
== Project idea template ==<br />
<br />
<nowiki>=== TITLE ===<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
'''Details:'''<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
= Information for mentors =<br />
<br />
Mentors are responsible for keeping in touch with their student and assessing the student's progress. GSoC has a mid-term evaluation and a final evaluation where both the mentor and student assess each other.<br />
<br />
The mentor typically gives advice, reviews the student's code, and has regular communication with the student to ensure progress is being made.<br />
<br />
Being a mentor is a significant time commitment, plan for 5 hours per week. Make sure you can make this commitment because backing out during the summer will affect the student's experience.<br />
<br />
The mentor chooses their student by reviewing student application forms and conducting IRC interviews with candidates. Depending on the number of candidates, this can be time-consuming in itself. Choosing the right student is critical so that both the mentor and the student can have a successful experience.</div>Agrafhttps://wiki.qemu.org/index.php?title=Documentation/TCG&diff=3829Documentation/TCG2013-08-15T15:12:44Z<p>Agraf: </p>
<hr />
<div>= Tiny Code Generator (TCG) =<br />
<br />
The Tiny Code Generator (TCG) exists to transform target insns (the processor being emulated) via the TCG frontend to TCG ops which are then transformed into host insns (the processor executing QEMU itself) via the TCG backend.<br />
<br />
People who wish to port QEMU to run on a new processor need to be concerned with the backend. Although this whole exercise might be obsoleted by the [[Features/TCI|TCI (TCG Interpreter)]] effort.<br />
<br />
People who wish to port QEMU to emulate a new processor need to be concerned with the frontend.<br />
<br />
* [[Documentation/TCG/backend-ops|Backend Ops]]<br />
* [[Documentation/TCG/frontend-ops|Frontend Ops]]<br />
* [http://git.qemu.org/?p=qemu.git;a=blob_plain;f=tcg/README;hb=HEAD TCG README]<br />
* [https://dl.dropboxusercontent.com/u/8976842/TCG.pdf Slides] and [http://chemnitzer.linux-tage.de/2012/vortraege/1062 recording] of a talk on TCG mechanics</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.5&diff=3560ChangeLog/1.52013-04-26T18:49:30Z<p>Agraf: </p>
<hr />
<div>== General ==<br />
<br />
* The default for log output enabled via the '-d' command line switch is now standard error rather than a file. You can obtain the previous behaviour using the '-D' command line switch to specify a file to send the logging to.<br />
* QEMU now uses ''poll'' rather than ''select'', and thus does not have any restriction on the number of open file descriptors.<br />
<br />
== System emulation ==<br />
<br />
=== Device emulation ===<br />
* New support for passing the host's TPM (Trusted Platform Module) to the guest.<br />
<br />
==== Device assignment ====<br />
* VFIO supports primary VGA passthrough using the experimental "x-vga=on" option. The following devices seem to work: Nvidia 8400gs, 73001e, NVS290; ATI/AMD Radeon HD5450 and HD7850.<br />
* VFIO devices support the bootindex= property to override the default boot order for assigned PCI devices.<br />
<br />
==== USB ====<br />
* Experimental support for USB 3.0 streams, both in the nec-usb-xhci controller and in the usb-uas USB-attached SCSI device emulation.<br />
* USB device passthrough has been rewritten to use libusb. For Linux, the two backends can be compiled in a single QEMU executable (if libusb is enabled, usb-host-linux will be the legacy implementation, usb-host will be the libusb-based one; if libusb is disabled, usb-host will be the legacy implementation). For BSD, it has to be chosen at configure time using --enable/disable-libusb (the default is to use libusb if it is available, otherwise use the legacy implementation).<br />
<br />
=== ARM ===<br />
* The Zynq board provides a SD host controller interface.<br />
* versatile_pci supports MMIO BARs and implements the correct PCI IRQ mapping so that it can work on recent Linux kernels.<br />
<br />
=== PPC ===<br />
* Various improvements to TCG code generation<br />
* KVM synchronizes more state<br />
* Fix a few issues that blocked Mac OS X from working (still not 100% there though!)<br />
* Refactoring and improvement of soft mmu emulation for book3s<br />
* Implement various new instructions for ISA 2.05 and ISA 2.06 compatibility (-cpu POWER7)<br />
* Implement support for KVM based e500 family watchdog<br />
<br />
=== s390x ===<br />
* Various accuracy fixes for device emulation<br />
* Faster I/O hypercalls<br />
* Add firmware to boot from virtio-ccw disks<br />
<br />
=== x86 ===<br />
* x86 supports emulation of a TPM (Trusted Platform Module) on machines that have a hardware TPM<br />
* Various speedups in TCG emulation of x86<br />
* The iPXE ROMs that are distributed with QEMU support EFI<br />
* TCG supports the SSE4.1, SSE4.2, PCLMULQDQ, AES-NI, BMI and ADX extensions.<br />
<br />
=== QMP ===<br />
* QEMU now generates a DEVICE_DELETED event when the guest acknowledges a device hot-unplug operation.<br />
* Much better handling for non-ASCII codepoints in JSON strings<br />
<br />
=== Character devices ===<br />
* Character devices gained support for flow control. More details in [[Features/ChardevFlowControl]]<br />
* All kinds of character devices can now be hot-plugged. Character device hotplug is also supported from the "human" monitor.<br />
<br />
=== Block devices ===<br />
* IDE and SCSI disks always have the ability to issue "discard" (aka TRIM or UNMAP) commands. However, by default "discard" commands are silently ignored as they can cause performance degradation and fragmentation. To enable them, the "-drive" option now supports a "discard" suboption; the default value is "ignore" (or its synonym "off"), and the other valid value is "unmap" (or "on").<br />
* Sheepdog drives can also be specified with URIs.<br />
* iSCSI disks support on-line resizing using block_resize. Similar to block devices, the resize has to be done first outside QEMU.<br />
* Various performance improvements in qcow2 internal snapshots (savevm).<br />
* The NBD backend has improved latency.<br />
* qemu-nbd can now skip image format probing using the -f/--format command-line option.<br />
<br />
=== SCSI ===<br />
* QEMU can now emulate the VMware PVSCSI device, vmw_pvscsi.<br />
* QEMU can now use tcm_vhost, a virtio-scsi device model based on the Linux-iSCSI implementation of SCSI.<br />
<br />
=== Live Migration ===<br />
* Further improvements in throughput, up to +130% (4.2 Gbps in 1.5 vs 1.8 Gbps in 1.4) and latency.<br />
* Reviewed-By received for RDMA [PATCH v6] [http://wiki.qemu.org/Features/RDMALiveMigration]<br />
<br />
=== User interface ===<br />
* QEMU now provides a GTK+ interface. The interface uses the VTE library to provide better terminal emulation for serial consoles and the monitor.<br />
<br />
== User-mode emulation ==<br />
* Threaded programs are now more stable, though still experimental.<br />
<br />
== Guest agent ==<br />
* New commands in qemu-ga let the host put CPUs online/offline with help from the OS (Linux only)<br />
<br />
== Host support ==<br />
* QEMU is now a lot faster on Windows hosts than in previous versions</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3368ChangeLog/1.42013-02-14T23:53:12Z<p>Agraf: </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 />
<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>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3362ChangeLog/1.42013-02-13T10:14:28Z<p>Agraf: </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 />
* 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>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3361ChangeLog/1.42013-02-13T10:06:57Z<p>Agraf: </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 />
* 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 />
<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>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.4&diff=3283ChangeLog/1.42013-01-18T17:35:55Z<p>Agraf: </p>
<hr />
<div>== System emulation ==<br />
<br />
=== Device emulation ===<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 />
<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>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.2&diff=3049ChangeLog/1.22012-06-23T23:13:33Z<p>Agraf: /* PowerPC */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
<br />
<br />
=== ARM ===<br />
<br />
<br />
=== PowerPC ===<br />
* PPC is now areg0 free<br />
* Pseries target correctly creates segment size device tree nodes (fixes odd bugs with HV vs PR KVM)<br />
* 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 />
=== S/390 ===<br />
<br />
<br />
=== SPARC ===<br />
<br />
<br />
=== x86 ===<br />
<br />
<br />
=== Device emulation ===<br />
<br />
<br />
=== Audio devices ===<br />
<br />
<br />
=== Block devices ===<br />
<br />
<br />
=== Network devices ===<br />
<br />
<br />
=== Live Migration, Save/Restore ===<br />
<br />
<br />
== Guest agent ==<br />
<br />
<br />
== Host support ==<br />
<br />
<br />
== User-mode emulation ==<br />
<br />
<br />
== Testing ==<br />
<br />
<br />
== Build dependencies ==</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2966ChangeLog/1.12012-05-18T15:52:37Z<p>Agraf: /* PowerPC */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.<br> PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.<br />
* -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.<br />
* PCI-to-PCI bridges are supported [...]<br />
* PCI emulation includes a standrd hot-plug controller [...]<br />
<br />
=== ARM ===<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
* A device tree can be passed to the kernel using -dtb option (or alternatively ''-machine dtb=...'').<br />
* New 'nuri' and 'smbkc210' models of Samsung Exynos4210 based devboards<br />
* New 'highbank' model of the Calxeda Highbank<br />
* New 'vexpress-a15' model of the Versatile Express Cortex-A15<br />
<br />
=== PowerPC ===<br />
* The Bamboo machine now works with TCG, before only KVM was able to execute 440 code.<br />
* Pseries handles PCI, allowing for virtio devices with -M pseries<br />
* Pseries works with PR KVM allowing for -M pseries -enable-kvm to work on G5s<br />
* We can now emulate e500mc cores, but no e500mc based board is emulated yet. You need to use -M mpc8544ds and a special guest kernel.<br />
* Timers on ppc405 now work and don't segfault QEMU<br />
<br />
=== S/390 ===<br />
* Added support to -kernel to allow booting of ELF binaries<br />
* Fixed -kernel to allow booting of newer guest kernels<br />
* Devices can now be hotplug add'ed (remove is not there yet)<br />
* Rebooting a virtual machine now works<br />
<br />
=== x86 ===<br />
* NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.<br />
* The -rtc-td-hack option is now available as a qdev property (''-global mc146818rtc.lost_tick_policy=slew'') and as such can be specified in a -readconfig configuration file.<br />
* When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with ''-global isa-serial.wakeup=1''), and the ''system_wakeup'' monitor command.<br />
* KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the ''-machine ...,kernel_irqchip=on'' command-line option. MSI is not supported yet when using the kernel_irqchip option.<br />
* Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See [[Features/PC System Flash]] for more information.<br />
* KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.<br />
<br />
=== Device emulation ===<br />
<br />
* The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.<br />
* QEMU now includes experimental support for USB 3.0 (xHCI).<br />
<br />
=== Audio devices ===<br />
* Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).<br />
<br />
=== Block devices ===<br />
<br />
* QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.<br />
* The new QMP command ''transaction'' can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See [[Features/SnapshotsMultipleDevices]] for more information.<br />
* The new monitor command ''block_stream'' lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the ''copy-on-read'' option of the -drive command-line option, which only transfers data when the guest needs it.<br />
* An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use ''qemu-img create -f qcow2 -o compat=1.1 <filename> <size>'' for creating the image. Note that older versions of QEMU won't be able to read such images.<br />
<br />
=== Network devices ===<br />
<br />
* QEMU supports a new type of network device, ''bridge'' (used with ''-net bridge'' or ''-netdev bridge''). The new type is similar to ''tap'', but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as ''setuid''. The helper program supports a simple ACL and configuration mechanism, see [http://git.qemu.org/?p=qemu.git;a=commit;h=bdef79a2994d6f0383e07e9597675711662b3031 the commit message] and [[Features/HelperNetworking|feature page]] for documentation.<br />
<br />
=== Live Migration, Save/Restore ===<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported<br />
* Live migration supports IPv6. IPv6 addresses can be expressed as ''tcp:host:port''. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.<br />
<br />
== Guest agent ==<br />
<br />
* qemu-ga has been ported to Windows.<br />
* Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces<br />
* Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.<br />
* An easier to use reset mechanism has been added: guest-sync-delimited<br />
<br />
== Host support ==<br />
<br />
* ARM hosts are now supported again (they were broken in 1.0)<br />
* Sockets and SLIRP on Windows hosts was broken in 0.14 and works again<br />
* 64-bit Windows hosts are now supported.<br />
<br />
== User-mode emulation ==<br />
<br />
* User-mode emulation can provide some information from the /proc filesystem.<br />
* On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.<br />
<br />
== Build dependencies ==<br />
<br />
* Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2965ChangeLog/1.12012-05-18T15:49:29Z<p>Agraf: /* S/390 */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.<br> PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.<br />
* -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.<br />
* PCI-to-PCI bridges are supported [...]<br />
* PCI emulation includes a standrd hot-plug controller [...]<br />
<br />
=== ARM ===<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
* A device tree can be passed to the kernel using -dtb option (or alternatively ''-machine dtb=...'').<br />
* New 'nuri' and 'smbkc210' models of Samsung Exynos4210 based devboards<br />
* New 'highbank' model of the Calxeda Highbank<br />
* New 'vexpress-a15' model of the Versatile Express Cortex-A15<br />
<br />
=== PowerPC ===<br />
* The Bamboo machine now works with TCG, before only KVM was able to execute 440 code.<br />
* Pseries handles PCI, allowing for virtio devices with -M pseries<br />
* Pseries works with PR KVM allowing for -M pseries -enable-kvm to work on G5s<br />
* We can now emulate e500mc cores, but no e500mc based board is emulated yet. You need to use -M mpc8544ds and a special guest kernel.<br />
<br />
=== S/390 ===<br />
* Added support to -kernel to allow booting of ELF binaries<br />
* Fixed -kernel to allow booting of newer guest kernels<br />
* Devices can now be hotplug add'ed (remove is not there yet)<br />
* Rebooting a virtual machine now works<br />
<br />
=== x86 ===<br />
* NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.<br />
* The -rtc-td-hack option is now available as a qdev property (''-global mc146818rtc.lost_tick_policy=slew'') and as such can be specified in a -readconfig configuration file.<br />
* When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with ''-global isa-serial.wakeup=1''), and the ''system_wakeup'' monitor command.<br />
* KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the ''-machine ...,kernel_irqchip=on'' command-line option. MSI is not supported yet when using the kernel_irqchip option.<br />
* Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See [[Features/PC System Flash]] for more information.<br />
* KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.<br />
<br />
=== Device emulation ===<br />
<br />
* The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.<br />
* QEMU now includes experimental support for USB 3.0 (xHCI).<br />
<br />
=== Audio devices ===<br />
* Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).<br />
<br />
=== Block devices ===<br />
<br />
* QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.<br />
* The new QMP command ''transaction'' can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See [[Features/SnapshotsMultipleDevices]] for more information.<br />
* The new monitor command ''block_stream'' lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the ''copy-on-read'' option of the -drive command-line option, which only transfers data when the guest needs it.<br />
* An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use ''qemu-img create -f qcow2 -o compat=1.1 <filename> <size>'' for creating the image. Note that older versions of QEMU won't be able to read such images.<br />
<br />
=== Network devices ===<br />
<br />
* QEMU supports a new type of network device, ''bridge'' (used with ''-net bridge'' or ''-netdev bridge''). The new type is similar to ''tap'', but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as ''setuid''. The helper program supports a simple ACL and configuration mechanism, see [http://git.qemu.org/?p=qemu.git;a=commit;h=bdef79a2994d6f0383e07e9597675711662b3031 the commit message] and [[Features/HelperNetworking|feature page]] for documentation.<br />
<br />
=== Live Migration, Save/Restore ===<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported<br />
* Live migration supports IPv6. IPv6 addresses can be expressed as ''tcp:host:port''. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.<br />
<br />
== Guest agent ==<br />
<br />
* qemu-ga has been ported to Windows.<br />
* Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces<br />
* Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.<br />
* An easier to use reset mechanism has been added: guest-sync-delimited<br />
<br />
== Host support ==<br />
<br />
* ARM hosts are now supported again (they were broken in 1.0)<br />
* Sockets and SLIRP on Windows hosts was broken in 0.14 and works again<br />
* 64-bit Windows hosts are now supported.<br />
<br />
== User-mode emulation ==<br />
<br />
* User-mode emulation can provide some information from the /proc filesystem.<br />
* On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.<br />
<br />
== Build dependencies ==<br />
<br />
* Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2964ChangeLog/1.12012-05-18T15:46:52Z<p>Agraf: /* PowerPC */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.<br> PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.<br />
* -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.<br />
* PCI-to-PCI bridges are supported [...]<br />
* PCI emulation includes a standrd hot-plug controller [...]<br />
<br />
=== ARM ===<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
* A device tree can be passed to the kernel using -dtb option (or alternatively ''-machine dtb=...'').<br />
* New 'nuri' and 'smbkc210' models of Samsung Exynos4210 based devboards<br />
* New 'highbank' model of the Calxeda Highbank<br />
* New 'vexpress-a15' model of the Versatile Express Cortex-A15<br />
<br />
=== PowerPC ===<br />
* The Bamboo machine now works with TCG, before only KVM was able to execute 440 code.<br />
* Pseries handles PCI, allowing for virtio devices with -M pseries<br />
* Pseries works with PR KVM allowing for -M pseries -enable-kvm to work on G5s<br />
* We can now emulate e500mc cores, but no e500mc based board is emulated yet. You need to use -M mpc8544ds and a special guest kernel.<br />
<br />
=== S/390 ===<br />
* -kernel now also supports ELF binaries<br />
* -kernel can boot new guest kernels<br />
* Devices can now be hotplug add'ed (remove is not there yet)<br />
<br />
=== x86 ===<br />
* NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.<br />
* The -rtc-td-hack option is now available as a qdev property (''-global mc146818rtc.lost_tick_policy=slew'') and as such can be specified in a -readconfig configuration file.<br />
* When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with ''-global isa-serial.wakeup=1''), and the ''system_wakeup'' monitor command.<br />
* KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the ''-machine ...,kernel_irqchip=on'' command-line option. MSI is not supported yet when using the kernel_irqchip option.<br />
* Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See [[Features/PC System Flash]] for more information.<br />
* KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.<br />
<br />
=== Device emulation ===<br />
<br />
* The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.<br />
* QEMU now includes experimental support for USB 3.0 (xHCI).<br />
<br />
=== Audio devices ===<br />
* Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).<br />
<br />
=== Block devices ===<br />
<br />
* QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.<br />
* The new QMP command ''transaction'' can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See [[Features/SnapshotsMultipleDevices]] for more information.<br />
* The new monitor command ''block_stream'' lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the ''copy-on-read'' option of the -drive command-line option, which only transfers data when the guest needs it.<br />
* An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use ''qemu-img create -f qcow2 -o compat=1.1 <filename> <size>'' for creating the image. Note that older versions of QEMU won't be able to read such images.<br />
<br />
=== Network devices ===<br />
<br />
* QEMU supports a new type of network device, ''bridge'' (used with ''-net bridge'' or ''-netdev bridge''). The new type is similar to ''tap'', but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as ''setuid''. The helper program supports a simple ACL and configuration mechanism, see [http://git.qemu.org/?p=qemu.git;a=commit;h=bdef79a2994d6f0383e07e9597675711662b3031 the commit message] and [[Features/HelperNetworking|feature page]] for documentation.<br />
<br />
=== Live Migration, Save/Restore ===<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported<br />
* Live migration supports IPv6. IPv6 addresses can be expressed as ''tcp:host:port''. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.<br />
<br />
== Guest agent ==<br />
<br />
* qemu-ga has been ported to Windows.<br />
* Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces<br />
* Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.<br />
* An easier to use reset mechanism has been added: guest-sync-delimited<br />
<br />
== Host support ==<br />
<br />
* ARM hosts are now supported again (they were broken in 1.0)<br />
* Sockets and SLIRP on Windows hosts was broken in 0.14 and works again<br />
* 64-bit Windows hosts are now supported.<br />
<br />
== User-mode emulation ==<br />
<br />
* User-mode emulation can provide some information from the /proc filesystem.<br />
* On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.<br />
<br />
== Build dependencies ==<br />
<br />
* Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2963ChangeLog/1.12012-05-18T15:41:18Z<p>Agraf: /* PowerPC */</p>
<hr />
<div>== System emulation ==<br />
<br />
=== All targets ===<br />
* qdev properties of type hex8 and hex32 used to accept hexadecimal values not prefixed with "0x"; the prefix is mandatory starting with this version. These properties are: iobase, membase, io_base for all devices that support the properties; vram_size for sysbus-g364 and SUNW,tcx; version for sb16 and iommu; ctl_iobase and data_iobase for fw_cfg; readback for debugcon; elcr_addr and elcr_mask for i8259.<br> PCI addresses can still be addressed with a pair of hexadecimal device and function without a "0x" prefix.<br />
* -kernel, -initrd and -append are now aliases for suboptions of -machine (for example -machine kernel=foo), and as such they are also available with -readconfig.<br />
* PCI-to-PCI bridges are supported [...]<br />
* PCI emulation includes a standrd hot-plug controller [...]<br />
<br />
=== ARM ===<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
* A device tree can be passed to the kernel using -dtb option (or alternatively ''-machine dtb=...'').<br />
* New 'nuri' and 'smbkc210' models of Samsung Exynos4210 based devboards<br />
* New 'highbank' model of the Calxeda Highbank<br />
* New 'vexpress-a15' model of the Versatile Express Cortex-A15<br />
<br />
=== PowerPC ===<br />
* Bamboo now works with TCG<br />
* Pseries handles PCI<br />
* Pseries works with PR KVM<br />
* Add e500mc emulation (no board yet, need to use mpc8544ds)<br />
<br />
=== S/390 ===<br />
* -kernel now also supports ELF binaries<br />
* -kernel can boot new guest kernels<br />
* Devices can now be hotplug add'ed (remove is not there yet)<br />
<br />
=== x86 ===<br />
* NMIs are correctly injected through the LAPIC (rather than sent directly to the guest CPU) and respect the LINT1 mask, thus fixing kdump.<br />
* The -rtc-td-hack option is now available as a qdev property (''-global mc146818rtc.lost_tick_policy=slew'') and as such can be specified in a -readconfig configuration file.<br />
* When the system is suspended to RAM, QEMU will now stop executing the guest until a wakeup event occurs. Implemented wakeup events include key presses, mouse button presses, RTC alarm, ACPI timer expiration, serial console input (off by default; enable with ''-global isa-serial.wakeup=1''), and the ''system_wakeup'' monitor command.<br />
* KVM can optionally use kernel-based emulation of the local APIC, IOAPIC, i8259 PIC and i8254 PIT. This is supported with the ''-machine ...,kernel_irqchip=on'' command-line option. MSI is not supported yet when using the kernel_irqchip option.<br />
* Emulation of a PC System Flash device. The feature is enabled by adding a pflash drive. This feature is not supported when KVM is enabled. See [[Features/PC System Flash]] for more information.<br />
* KVM guests support Hyper-V enlightenments. These are enabled by the -cpu features hv_spinlocks, hv_relaxed and hv_vapic.<br />
<br />
=== Device emulation ===<br />
<br />
* The virtio-scsi device is now supported by QEMU. The guest driver will be supported in Linux starting at version 3.4.<br />
* QEMU now includes experimental support for USB 3.0 (xHCI).<br />
<br />
=== Audio devices ===<br />
* Audio devices can now use volume control capabilities exposed by the PulseAudio and Spice backends. (Note: all audio devices do not expose their volume control unless --enable-mixemu is turned on).<br />
<br />
=== Block devices ===<br />
<br />
* QEMU's NBD client implementation and the qemu-nbd server both fully support asynchronous I/O.<br />
* The new QMP command ''transaction'' can be used to perform a set of multiple snapshots atomically, rolling back to the original images if there is a problem along the way. See [[Features/SnapshotsMultipleDevices]] for more information.<br />
* The new monitor command ''block_stream'' lets guest copy data from the backing file to the current image while the guest is running. This lets users enables quick provisioning of new virtual machines using shared remote storage, and lets the guest transition incrementally to fast local storage. An alternative to streaming is the ''copy-on-read'' option of the -drive command-line option, which only transfers data when the guest needs it.<br />
* An experimental extension of the qcow2 file format has been introduced. With the implementation as of QEMU 1.1, the most important addition is zero clusters, which allows image streaming and copy-on-read to leave images sparse if the backing file they are copying from is sparse. In order to enable the extension, use ''qemu-img create -f qcow2 -o compat=1.1 <filename> <size>'' for creating the image. Note that older versions of QEMU won't be able to read such images.<br />
<br />
=== Network devices ===<br />
<br />
* QEMU supports a new type of network device, ''bridge'' (used with ''-net bridge'' or ''-netdev bridge''). The new type is similar to ''tap'', but uses a helper program instead of a script to attach the device to a bridge. The helper program can then be installed as ''setuid''. The helper program supports a simple ACL and configuration mechanism, see [http://git.qemu.org/?p=qemu.git;a=commit;h=bdef79a2994d6f0383e07e9597675711662b3031 the commit message] and [[Features/HelperNetworking|feature page]] for documentation.<br />
<br />
=== Live Migration, Save/Restore ===<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported<br />
* Live migration supports IPv6. IPv6 addresses can be expressed as ''tcp:host:port''. Brackets around a numeric host address are required if a port is also specified, otherwise they can be omitted.<br />
<br />
== Guest agent ==<br />
<br />
* qemu-ga has been ported to Windows.<br />
* Interfaces added for suspending guests to disk/ram, and retrieving information about network interfaces<br />
* Interfaces for filesystem freeze have been hardened, and no longer depend on guest agent runtime state to determine whether a system is currently frozen.<br />
* An easier to use reset mechanism has been added: guest-sync-delimited<br />
<br />
== Host support ==<br />
<br />
* ARM hosts are now supported again (they were broken in 1.0)<br />
* Sockets and SLIRP on Windows hosts was broken in 0.14 and works again<br />
* 64-bit Windows hosts are now supported.<br />
<br />
== User-mode emulation ==<br />
<br />
* User-mode emulation can provide some information from the /proc filesystem.<br />
* On 64-bit hosts user-mode emulation now defaults to reserving 0xf7000000 bytes of address space for the guest. This significantly reduces the likelihood of QEMU having to fail a guest mmap() request when there is still memory available. This reservation can be overridden with the -R command line option.<br />
<br />
== Build dependencies ==<br />
<br />
* Building QEMU requires glib 2.12 on POSIX systems, and glib 2.20 on Win32 systems.</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2771Google Summer of Code 20122012-02-24T11:32:51Z<p>Agraf: </p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
'''Details:'''<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
'''Details:'''<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: iggy, [[User:Agraf|Alexander Graf]]<br />
* Suggested by: iggy<br />
<br />
== In-process NBD server ==<br />
<br />
'''Summary:''' Integrate qemu-nbd server functionality into qemu so disk images can be accessed remotely while the VM is running<br />
<br />
The qemu-nbd utility is a stand-alone Network Block Device server which exports disk images (qcow2, qed, vmdk, etc). Linux has an NBD driver, this makes it possible to attach NBD devices like iSCSI or ATA-over-Ethernet volumes and operate on them like local block devices using mkfs, mount, and other common tools.<br />
<br />
It is not safe to run qemu-nbd while the VM is running because the disk image could be corrupted by simultaneous updates or read access could give inconsistent results. The goal of this project is to make the qemu-nbd functionality available for a running VM by integrating it into qemu proper.<br />
<br />
New QEMU monitor commands must be added to allow disk images to be exported from inside qemu while the VM is running. For safety the in-process NBD server would only allow read access. It should be possible to export not just top-level image files but also backing files.<br />
<br />
This new feature will enable online backup, data migration, and other interesting scenarios.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/Network_block_device<br />
* http://blog.vmsplice.net/2011/02/how-to-access-virtual-machine-image.html<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi<br />
<br />
== Partial device emulation in KVM ==<br />
<br />
'''Summary:''' Add support for and benchmark partial device emulation in KVM<br />
<br />
When using KVM, almost all device emulation is done in user space (QEMU). While this is really nice from an architecture point of view, it's not the greatest thing when it comes to latencies. Some devices like IDE, VGA, HPET have very hot path registers that can be easily emulated in the kernel (KVM), with all heavier operations going to user space.<br />
<br />
This project is about prototyping such partial device emulation to see if it actually does give us speedups. If you manage to show great performance improvements with it, we would then work on finding clean solutions to integrate this upstream and also push it upstream.<br />
<br />
With a bit of luck, we might end up getting significant speedups to KVM!<br />
<br />
<br />
Mid-term goal: Implement prototype for one of the 3 mentioned devices, do benchmarks<br />
<br />
Final goal: If the prototype was successful, work on upstreaming it, if not, pick another device and implement a prototype for that<br />
<br />
<br />
'''Links:'''<br />
* [http://suif.stanford.edu/~csapuntz/ide.html IDE specs]<br />
* [ftp://ftp.sas.ewi.utwente.nl/Outgoing/TM_2300_4000_4500/Manuals/Specification/Hpet/Intel_HPET_Specification.pdf HPET spec]<br />
* [http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf VGA spec]<br />
<br />
'''Details:'''<br />
* Component: QEMU, KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]<br />
<br />
== IA64 emulation ==<br />
<br />
'''Summary:''' Add support for IA64 system emulation in QEMU<br />
<br />
The KVM project had a working IA64 port that was able to run a virtualized system with KVM and QEMU as it was back in those times. If we take the hardware emulation from that and add CPU emulation to the mix, we should get a workable solution for IA64 emulation.<br />
<br />
Because most applicants won't own their own IA64 box, I will provide access to one so that we can rule out the CPU emulation bits of the equation and focus on getting the device model working well enough to at least run the firmware as a first target milestone. CPU emulation comes second.<br />
<br />
Mid-term goal: Make (current) QEMU work on IA64 with KVM<br />
<br />
Final goal: Implement CPU emulation to a point where TianoCore works<br />
<br />
<br />
'''Links:'''<br />
* [http://qemu.mercurysquad.com/ Last year's attempt at IA64 emulation]<br />
* [http://www.mjmwired.net/kernel/Documentation/ia64/kvm.txt KVM help text in the kernel for IA64]<br />
* [http://www.linux-kvm.org/wiki/images/1/12/KvmForum2007$KVM-IA64_forum_083107.pdf Talk on IA64 KVM]<br />
* [http://ski.sourceforge.net/ SKI - a working IA64 emulator]<br />
* [http://tianocore.sourceforge.net/ TianoCore - the open source EFI firmware]<br />
* [http://lists.xen.org/archives/html/xen-ia64-devel/ Xen IA64 ML]<br />
* [http://pdub.net/proj/usenix08boston/xen_drive/resources/xensummit/slides/Xenia64_HP_DMagenheimer.pdf Talk on IA64 Xen]<br />
<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate/advanced<br />
* Language: C, IA64 asm<br />
* Mentor: [[User:Agraf|Alexander Graf]], Jakub Jermar<br />
* Suggested by: Jakub Jermar</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2755Google Summer of Code 20122012-02-16T12:27:56Z<p>Agraf: /* Partial device emulation in KVM */</p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
'''Details:'''<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
'''Details:'''<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: iggy, [[User:Agraf|Alexander Graf]]<br />
* Suggested by: iggy<br />
<br />
== In-process NBD server ==<br />
<br />
'''Summary:''' Integrate qemu-nbd server functionality into qemu so disk images can be accessed remotely while the VM is running<br />
<br />
The qemu-nbd utility is a stand-alone Network Block Device server which exports disk images (qcow2, qed, vmdk, etc). Linux has an NBD driver, this makes it possible to attach NBD devices like iSCSI or ATA-over-Ethernet volumes and operate on them like local block devices using mkfs, mount, and other common tools.<br />
<br />
It is not safe to run qemu-nbd while the VM is running because the disk image could be corrupted by simultaneous updates or read access could give inconsistent results. The goal of this project is to make the qemu-nbd functionality available for a running VM by integrating it into qemu proper.<br />
<br />
New QEMU monitor commands must be added to allow disk images to be exported from inside qemu while the VM is running. For safety the in-process NBD server would only allow read access. It should be possible to export not just top-level image files but also backing files.<br />
<br />
This new feature will enable online backup, data migration, and other interesting scenarios.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/Network_block_device<br />
* http://blog.vmsplice.net/2011/02/how-to-access-virtual-machine-image.html<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi<br />
<br />
== Partial device emulation in KVM ==<br />
<br />
'''Summary:''' Add support for and benchmark partial device emulation in KVM<br />
<br />
When using KVM, almost all device emulation is done in user space (QEMU). While this is really nice from an architecture point of view, it's not the greatest thing when it comes to latencies. Some devices like IDE, VGA, HPET have very hot path registers that can be easily emulated in the kernel (KVM), with all heavier operations going to user space.<br />
<br />
This project is about prototyping such partial device emulation to see if it actually does give us speedups. If you manage to show great performance improvements with it, we would then work on finding clean solutions to integrate this upstream and also push it upstream.<br />
<br />
With a bit of luck, we might end up getting significant speedups to KVM!<br />
<br />
<br />
Mid-term goal: Implement prototype for one of the 3 mentioned devices, do benchmarks<br />
<br />
Final goal: If the prototype was successful, work on upstreaming it, if not, pick another device and implement a prototype for that<br />
<br />
<br />
'''Links:'''<br />
* [http://suif.stanford.edu/~csapuntz/ide.html IDE specs]<br />
* [ftp://ftp.sas.ewi.utwente.nl/Outgoing/TM_2300_4000_4500/Manuals/Specification/Hpet/Intel_HPET_Specification.pdf HPET spec]<br />
* [http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf VGA spec]<br />
<br />
'''Details:'''<br />
* Component: QEMU, KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2754Google Summer of Code 20122012-02-16T12:26:11Z<p>Agraf: add "details" subsection to proposals</p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
'''Details:'''<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
'''Details:'''<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: iggy, [[User:Agraf|Alexander Graf]]<br />
* Suggested by: iggy<br />
<br />
== In-process NBD server ==<br />
<br />
'''Summary:''' Integrate qemu-nbd server functionality into qemu so disk images can be accessed remotely while the VM is running<br />
<br />
The qemu-nbd utility is a stand-alone Network Block Device server which exports disk images (qcow2, qed, vmdk, etc). Linux has an NBD driver, this makes it possible to attach NBD devices like iSCSI or ATA-over-Ethernet volumes and operate on them like local block devices using mkfs, mount, and other common tools.<br />
<br />
It is not safe to run qemu-nbd while the VM is running because the disk image could be corrupted by simultaneous updates or read access could give inconsistent results. The goal of this project is to make the qemu-nbd functionality available for a running VM by integrating it into qemu proper.<br />
<br />
New QEMU monitor commands must be added to allow disk images to be exported from inside qemu while the VM is running. For safety the in-process NBD server would only allow read access. It should be possible to export not just top-level image files but also backing files.<br />
<br />
This new feature will enable online backup, data migration, and other interesting scenarios.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/Network_block_device<br />
* http://blog.vmsplice.net/2011/02/how-to-access-virtual-machine-image.html<br />
<br />
'''Details:'''<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi<br />
<br />
== Partial device emulation in KVM ==<br />
<br />
'''Summary:''' Add support for and benchmark partial device emulation in KVM<br />
<br />
When using KVM, almost all device emulation is done in user space (QEMU). While this is really nice from an architecture point of view, it's not the greatest thing when it comes to latencies. Some devices like IDE, VGA, HPET have very hot path registers that can be easily emulated in the kernel (KVM), with all heavier operations going to user space.<br />
<br />
This project is about prototyping such partial device emulation to see if it actually does give us speedups. If you manage to show great performance improvements with it, we would then work on finding clean solutions to integrate this upstream and also push it upstream.<br />
<br />
Mid-term goal: Implement prototype for one of the 3 mentioned devices, do benchmarks<br />
Final goal: If the prototype was successful, work on upstreaming it, if not, pick another device and implement a prototype for that<br />
<br />
With a bit of luck, we might end up getting significant speedups to KVM!<br />
<br />
'''Links:'''<br />
* [http://suif.stanford.edu/~csapuntz/ide.html IDE specs]<br />
* [ftp://ftp.sas.ewi.utwente.nl/Outgoing/TM_2300_4000_4500/Manuals/Specification/Hpet/Intel_HPET_Specification.pdf HPET spec]<br />
* [http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf VGA spec]<br />
<br />
'''Details:'''<br />
* Component: QEMU, KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]</div>Agrafhttps://wiki.qemu.org/index.php?title=User:Agraf&diff=2753User:Agraf2012-02-16T12:25:51Z<p>Agraf: </p>
<hr />
<div>== About ==<br />
<br />
Alexander is a freelancer working for SUSE most of the time. There he works for the [http://www.susestudio.com SUSE Studio] team and is responsible for the KVM based backend parts. While not occupied with that work, he is an active Qemu and KVM developer. He is<br />
<br />
* Maintainer and developer of the Book3S PowerPC KVM port<br />
* Maintainer and developer of the S390x Qemu guest support<br />
* Developer of various other bits, such as<br />
** [http://www.linux-kvm.org/wiki/images/2/2b/KvmForum2008$kdf2008_8.pdf Mac OS X in KVM]<br />
** [http://www.mail-archive.com/qemu-commits@nongnu.org/msg00189.html the Curl block backend]<br />
** [http://copilotco.com/mail-archives/qemu.2009/msg02007.html VNC zlib support]<br />
** [http://copilotco.com/mail-archives/qemu.2007/msg03762.html SVM emulation]<br />
** [http://avikivity.blogspot.com/2008/09/nested-svm-virtualization-for-kvm.html KVM Nested SVM]<br />
<br />
<br />
email: agraf@suse.de<br />
<br />
IRC nick: agraf__, agraf_, agraf<br />
<br />
IRC networks: OFTC, Freenode</div>Agrafhttps://wiki.qemu.org/index.php?title=User:Agraf&diff=2752User:Agraf2012-02-16T12:25:18Z<p>Agraf: </p>
<hr />
<div>== About ==<br />
<br />
Alexander is a freelancer working for SUSE most of the time. There he works for the [http://www.susestudio.com SUSE Studio] team and is responsible for the KVM based backend parts. While not occupied with that work, he is an active Qemu and KVM developer. He is<br />
<br />
* Maintainer and developer of the Book3S PowerPC KVM port<br />
* Maintainer and developer of the S390x Qemu guest support<br />
* Developer of various other bits, such as<br />
** [http://www.linux-kvm.org/wiki/images/2/2b/KvmForum2008$kdf2008_8.pdf Mac OS X in KVM]<br />
** [http://www.mail-archive.com/qemu-commits@nongnu.org/msg00189.html the Curl block backend]<br />
** [http://copilotco.com/mail-archives/qemu.2009/msg02007.html VNC zlib support]<br />
** [http://copilotco.com/mail-archives/qemu.2007/msg03762.html SVM emulation]<br />
** [http://avikivity.blogspot.com/2008/09/nested-svm-virtualization-for-kvm.html KVM Nested SVM]<br />
<br />
email: agraf@suse.de<br />
IRC nick: agraf__, agraf_, agraf<br />
IRC networks: OFTC, Freenode</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2012&diff=2751Google Summer of Code 20122012-02-16T12:23:29Z<p>Agraf: add partial device emulation idea</p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2011| did last year]], QEMU is going to apply as a mentoring organization for [http://google-melange.com/ Google Summer of Code 2012]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU in GSoC, please contact the following people.<br />
<br />
* [[User:Stefanha|Stefan Hajnoczi]]<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2012/faqs FAQ]<br />
* [http://www.google-melange.com/gsoc/events/google/gsoc2012 Program Timeline]<br />
* [http://google-melange.appspot.com/document/show/gsoc_program/google/gsoc2012/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted.<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2011#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
<nowiki>== TITLE ==<br />
<br />
'''Summary:''' Short description of the project<br />
<br />
Detailed description of the project.<br />
<br />
'''Links:'''<br />
* Wiki links to relevant material<br />
* External links to mailing lists or web sites<br />
<br />
* Component: QEMU or KVM or libvirt<br />
* Skill level: beginner or intermediate or advanced<br />
* Language: C<br />
* Mentor: Email address and IRC nick<br />
* Suggested by: Person who suggested the idea</nowiki><br />
<br />
== git style front-end to QEMU ==<br />
<br />
'''Summary:''' Provide a git like front-end for QEMU that allows for enumerating running instances and manipulating them from a command line.<br />
<br />
Starting in the 1.0 release, we freed up the ''qemu'' executable name in order to allow a script to be introduced that would provide an easier to use scripting interface to QEMU. It would provide a series of sub commands like ''list'', ''create'', ''shutdown'', etc. that would provide an alternative command line front-end to QEMU that the qemu-system executables.<br />
<br />
'''Links:'''<br />
* [http://schacon.github.com/git/user-manual.html git user manual]<br />
<br />
* Component: QEMU<br />
* Skill level: beginner<br />
* Language: Python<br />
* Mentor: Anthony Liguori <aliguori@us.ibm.com> (IRC: aliguori)<br />
* Suggested by: Anthony Liguori<br />
<br />
== Finish OS X Virtualization Support ==<br />
<br />
'''Summary:''' Finish up the last remaining pieces to enable running Mac OS X guests on Linux on Mac hardware<br />
<br />
There are a few remaining pieces of work to allow virtualizing OS X guests in KVM. A few devices still need to be up-streamed. Testing needs to be done, and likely some new code will have to be written to fix certain bugs. The last time anyone was successful in running OS X in KVM was OS X 10.4. Support for newer versions would be required. The most recently updated patches that I know of would be in the OpenSUSE src rpm for the kvm package.<br />
<br />
'''Links:'''<br />
* [http://d4wiki.goddamm.it/index.php?title=Howto:_Mac_OSX_on_KVM most recent howto]<br />
<br />
* Component: QEMU/KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: iggy, [[User:Agraf|Alexander Graf]]<br />
* Suggested by: iggy<br />
<br />
== In-process NBD server ==<br />
<br />
'''Summary:''' Integrate qemu-nbd server functionality into qemu so disk images can be accessed remotely while the VM is running<br />
<br />
The qemu-nbd utility is a stand-alone Network Block Device server which exports disk images (qcow2, qed, vmdk, etc). Linux has an NBD driver, this makes it possible to attach NBD devices like iSCSI or ATA-over-Ethernet volumes and operate on them like local block devices using mkfs, mount, and other common tools.<br />
<br />
It is not safe to run qemu-nbd while the VM is running because the disk image could be corrupted by simultaneous updates or read access could give inconsistent results. The goal of this project is to make the qemu-nbd functionality available for a running VM by integrating it into qemu proper.<br />
<br />
New QEMU monitor commands must be added to allow disk images to be exported from inside qemu while the VM is running. For safety the in-process NBD server would only allow read access. It should be possible to export not just top-level image files but also backing files.<br />
<br />
This new feature will enable online backup, data migration, and other interesting scenarios.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/Network_block_device<br />
* http://blog.vmsplice.net/2011/02/how-to-access-virtual-machine-image.html<br />
<br />
* Component: QEMU<br />
* Skill level: intermediate<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi<br />
<br />
== Partial device emulation in KVM ==<br />
<br />
'''Summary:''' Add support for and benchmark partial device emulation in KVM<br />
<br />
When using KVM, almost all device emulation is done in user space (QEMU). While this is really nice from an architecture point of view, it's not the greatest thing when it comes to latencies. Some devices like IDE, VGA, HPET have very hot path registers that can be easily emulated in the kernel (KVM), with all heavier operations going to user space.<br />
<br />
This project is about prototyping such partial device emulation to see if it actually does give us speedups. If you manage to show great performance improvements with it, we would then work on finding clean solutions to integrate this upstream and also push it upstream.<br />
<br />
Mid-term goal: Implement prototype for one of the 3 mentioned devices, do benchmarks<br />
Final goal: If the prototype was successful, work on upstreaming it, if not, pick another device and implement a prototype for that<br />
<br />
With a bit of luck, we might end up getting significant speedups to KVM!<br />
<br />
'''Links:'''<br />
* [http://suif.stanford.edu/~csapuntz/ide.html IDE specs]<br />
* [ftp://ftp.sas.ewi.utwente.nl/Outgoing/TM_2300_4000_4500/Manuals/Specification/Hpet/Intel_HPET_Specification.pdf HPET spec]<br />
* [http://www.mcamafia.de/pdf/ibm_vgaxga_trm2.pdf VGA spec]<br />
<br />
'''Details:'''<br />
* Component: QEMU, KVM<br />
* Skill level: intermediate/advanced<br />
* Language: C<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2269ChangeLog/1.12012-01-13T12:59:32Z<p>Agraf: </p>
<hr />
<div>== ARM ==<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
<br />
== PowerPC ==<br />
* Bamboo now works with TCG<br />
* Pseries handles PCI<br />
* Pseries works with PR KVM<br />
<br />
== S/390 ==<br />
* -kernel now also supports ELF binaries<br />
* -kernel can boot new guest kernels<br />
* Devices can now be hotplug add'ed (remove is not there yet)<br />
<br />
== Live Migration, Save/Restore ==<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2268ChangeLog/1.12012-01-13T12:58:54Z<p>Agraf: </p>
<hr />
<div>== ARM ==<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
<br />
== PowerPC ==<br />
* Bamboo now works with TCG<br />
* Pseries handles PCI<br />
* Pseries works with PR KVM<br />
<br />
== S/390 ==<br />
* -kernel now also supports ELF binaries<br />
* -kernel can boot new guest kernels<br />
<br />
== Live Migration, Save/Restore ==<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/1.1&diff=2267ChangeLog/1.12012-01-13T12:30:18Z<p>Agraf: </p>
<hr />
<div>== ARM ==<br />
* The syborg machine type has been removed since the Symbian Virtual Platform is no longer relevant with the disbanding of Symbian.<br />
<br />
== PowerPC ==<br />
* Bamboo now works with TCG<br />
* Pseries handles PCI<br />
* Pseries works with PR KVM<br />
<br />
== Live Migration, Save/Restore ==<br />
<br />
* Live migration (or save/restore) from QEMU releases prior to 0.13 to QEMU 1.1 is not supported</div>Agrafhttps://wiki.qemu.org/index.php?title=Planning/1.0/Testing&diff=2080Planning/1.0/Testing2011-11-10T01:10:44Z<p>Agraf: /* s390x */</p>
<hr />
<div>=QEMU 1.0 Test day: Nov 7=<br />
<br />
== Compilation test==<br />
<br />
{| border="1"<br />
| OS || Xen? || KVM? || Ceph? || Spice? || libfdt? || libiscsi<br />
|-<br />
| Fedora 15 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| Fedora 16 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| RHEL/CentOS 5 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| RHEL/CentOS 6 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| Debian 6.0 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| Debian testing || ? || ? || ? || ? || ? || ?<br />
|-<br />
| Ubuntu 10.04 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| Ubuntu 11.04 || ? || <b><font color="green">rc1</font></b> || <b><font color="green">rc1</font></b> || ? || ? || ?<br />
|-<br />
| SLES 10 SP4 ppc64 || ? || <b><font color="red">rc1</font></b> || ? || ? || ? || ?<br />
|-<br />
| SLES 11 SP1 s390x || ? || <b><font color="red">rc1</font></b> || ? || ? || ? || ?<br />
|-<br />
| openSUSE 11.4 || ? || ? || ? || ? || ? || ?<br />
|-<br />
| openSUSE 12.1 RC2 x86_64 || ? || <b><font color="green">rc0</font></b> <b><font color="green">rc0-22-g932eacc</font></b> <b><font color="green">rc1</font></b> || ? || ? || <b><font color="green">rc0</font></b> <b><font color="green">rc0-22-g932eacc</font></b> <b><font color="green">rc1</font></b> || ?<br />
|-<br />
| MinGW32 || N/A || N/A || ? || N/A || ? || N/A<br />
|-<br />
| MinGW32 (cross-compile) || N/A || N/A || ? || N/A || ? || N/A<br />
|}<br />
<br />
== Block subsystem ==<br />
<br />
Hints: qemu-iotests, qemu-nbd, install your favorite OS, ...<br />
<br />
=== Raw ===<br />
* qemu-iotests <b><font color="green">rc0</font></b> [Stefan]<br />
<br />
=== QCow2 ===<br />
* qemu-iotests <b><font color="orange">rc0</font></b> [Stefan]<br />
** rc0 - 026 leaked cluster output is different<br />
* Windows Server 2003 install <b><font color="red">rc0</font> <font color="green">rc1</font></b> [Stefan]<br />
** rc0 - guest hangs on a black screen when the installer reboots, fixed in rc1 by https://github.com/aliguori/qemu/commit/3f8aeaa<br />
* Red Hat Enterprise Linux 6 install <b><font color="green">rc1</font></b> [Stefan]<br />
<br />
=== QED ===<br />
* qemu-iotests <b><font color="green">rc0</font></b> [Stefan]<br />
* Windows Server 2003 install <b><font color="green">rc1</font></b> [Stefan]<br />
* Red Hat Enterprise Linux 6 install <b><font color="green">rc1</font></b> [Stefan]<br />
<br />
=== VHD ===<br />
* Windows 7 + IE8 Internet Explorer Application Compatibility VPC Image boot <b><font color="green">rc1</font></b> [Andreas]<br />
<br />
=== NBD ===<br />
<br />
=== Ceph ===<br />
* rc0 and ceph 0.37 ok [Martin]<br />
<br />
=== Sheepdog ===<br />
<br />
=== vmdk ===<br />
<br />
=== qemu-nbd ===<br />
<br />
=== CD-ROM ===<br />
* Eject/insert Host CD-ROM passthrough [Need tester]<br />
* Eject/insert ISO CD-ROM [Need tester]<br />
<br />
Ubuntu 11.10 have a broken support for cdrom tray locking.<br />
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/854814<br />
<br />
=== iSCSI ===<br />
libiscsi source: [http://people.redhat.com/pbonzini/qemu-test-day/libiscsi-1.0.1.tar.gz .tar.gz] - RHEL6/Fedora packages: [http://people.redhat.com/pbonzini/qemu-test-day/libiscsi-1.0.1-1.75c8fc3.el6.src.rpm src] [http://people.redhat.com/pbonzini/qemu-test-day/libiscsi-1.0.1-1.75c8fc3.el6.x86_64.rpm x86_64] [http://people.redhat.com/pbonzini/qemu-test-day/libiscsi-devel-1.0.1-1.75c8fc3.el6.x86_64.rpm x86_64-devel]<br />
<br />
== System emulation targets ==<br />
<br />
Hints: install your favorite OS, try different hardware configurations<br />
<br />
=== ARM ===<br />
<br />
* Zaurus<br />
<br />
keypad and touchscreen tested by cat /dev/input/event0 and /dev/input/event1 [Benoît]<br />
<br />
{| class="wikitable" border="1"<br />
|-<br />
! Model<br />
! boot<br />
! serial<br />
! Compact FLASH IDE<br />
! touchscreen<br />
! keyboard<br />
! ADC <br />
|-<br />
| akita<br />
| ok<br />
| ok<br />
| none<br />
| ok<br />
| ok<br />
| ok<br />
|-<br />
| borzoi<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
|-<br />
| spitz<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
|-<br />
| terrier<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
| ok<br />
|- <br />
| tosa<br />
| ok<br />
| ok<br />
| ok<br />
| none<br />
| none<br />
| none<br />
|}<br />
<br />
=== PPC (BookE, pSeries, ... including KVM) ===<br />
<br />
* pSeries<br />
** Booting without parameters <b><font color="red">rc1</font></b> [Andreas]<br />
*** rc1 - immediate segfault - fixed by http://patchwork.ozlabs.org/patch/123204/<br />
** Booting AIX<br />
<br />
=== s390x ===<br />
* Boot SLES 11 SP2 Beta8 <b><font color="red">rc1</font></b> [Andreas]<br />
** rc1 - ''qemu-system-s390x: Guest moved used index from 0 to 47802'' - fixed by http://patchwork.ozlabs.org/patch/124768/<br />
<br />
=== x86 (including KVM/Xen) ===<br />
<br />
== User-mode emulation targets ==<br />
<br />
=== ARM ===<br />
<br />
=== PPC ===<br />
<br />
=== s390 ===<br />
<br />
=== x86 ===<br />
<br />
== Emulated hardware ==<br />
<br />
Hints: install your favorite OS, run your favorite benchmarks<br />
<br />
=== SCSI ===<br />
<br />
=== Spice ===<br />
<br />
=== USB ===<br />
<br />
=== Virtio (including vhost-net) ===<br />
<br />
=== Xen ===<br />
<br />
== Management ==<br />
<br />
Hints: install your favorite OS, try weird configurations!<br />
<br />
=== Libvirt ===<br />
* Hotadd of disks/nics/cpu/memory [Supriya]<br />
<br />
=== Xen ===<br />
<br />
=== HMP/QMP/QAPI ===<br />
<br />
* Comprehensive libvirt testing [LuizCapitulino]<br />
* Run kvm-autotest under QMP [LuizCapitulino]<br />
<br />
=== Migration ===<br />
<br />
=== Ganeti ===<br />
<br />
Tested qemu 1.0rc0 under Ganeti 2.5.0-rc4, with the KVM backend (x86_64) on Debian Wheezy.<br />
<br />
No problems found during instance creation, live migration and deletion. For these activities, Ganeti sends commands to QEMU both via the monitor protocol and via the QMP protocol.<br />
<br />
Had problems connecting via SPICE to an instance that does not use QXL drivers (blank screen), but this seems to be a [http://lists.freedesktop.org/archives/spice-devel/2011-November/005931.html known issue].<br />
<br />
=== Tracing ===<br />
<br />
Hints: link to sample systemtap scripts!<br />
<br />
* Simpletrace memory allocation tracing <b><font color="green">rc1</font></b> [Stefan]<br />
* SystemTap clean build <b><font color="green">rc1</font></b> [Stefan]<br />
<br />
== Virtfs (9P Server) ==<br />
<br />
<br />
* Tested all 9p file system ( security models, features like mmap, locking, posixacl, zerocopy) using the basic fs tests, I/O and stress tests on qemu 1.0rc0 with fs driver as local. No Issues found. [Madhuri]</div>Agrafhttps://wiki.qemu.org/index.php?title=Contribute/MailingLists&diff=1976Contribute/MailingLists2011-10-30T16:22:05Z<p>Agraf: </p>
<hr />
<div>* [http://lists.nongnu.org/mailman/listinfo/qemu-devel QEMU developers mailing list]<br />
* [https://lists.nongnu.org/mailman/listinfo/qemu-trivial QEMU trivial patch mailing list]<br />
* [http://lists.nongnu.org/mailman/listinfo/qemu-discuss QEMU users mailing list]<br />
* [http://lists.nongnu.org/mailman/listinfo/qemu-ppc QEMU PowerPC mailing list]<br />
<br />
----<br />
====== See also ======<br />
→ [[Links#External_Documentation|External Documentation]]</div>Agrafhttps://wiki.qemu.org/index.php?title=Planning/0.15&diff=1107Planning/0.152011-04-12T11:30:47Z<p>Agraf: </p>
<hr />
<div>= Release Schedule =<br />
<br />
{| border="1"<br />
| 2011-02-01<br />
| Begin of 0.15 development phase<br />
|-<br />
| 2011-05-16<br />
| Soft feature freeze. Major features should have initial code committed by this date.<br />
|- <br />
| 2011-06-15<br />
| Fork off stable-0.15, development of 0.16 begins. Tag qemu-0.15.0-rc0<br />
|-<br />
| 2011-06-24<br />
| Tag qemu-0.15.0-rc1<br />
|-<br />
| 2011-06-28<br />
| Tag qemu-0.15.0-rc2<br />
|-<br />
| 2011-07-01<br />
| Tag qemu-0.15.0<br />
|}<br />
<br />
= Targeted Features =<br />
* enabling iothread by default and possibly removal of non-iothread code:<br />
**<del>Win32 iothread support</del><br />
**<del>high-precision rt_clock support</del><br />
**-icount support (Paolo Bonzini)<br />
**qemu-kvm conversion to iothread? (Jan Kiszka)<br />
* QAPI<br />
** QAPI Round 0 (JSON improvements) (Anthony Liguori)<br />
** QAPI Round 1 (code generator) (Anthony Liguori)<br />
** QAPI Round 2 (complete conversion) (Anthony Liguori)<br />
** QAPI Round 3 (session discovery, etc.) (Anthony Liguori)<br />
* s390x target support (Alexander Graf)<br />
* Xenner support (Alexander Graf)<br />
* more?<br />
<br />
= Blocker Bugs =</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2011&diff=1070Google Summer of Code 20112011-04-04T21:36:14Z<p>Agraf: </p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2010| did last year]], QEMU is going to apply as a mentoring organization for [http://socghop.appspot.com/ Google Summer of Code 2011]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU on GSoC 2011, please contact one of the following people.<br />
<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/faqs FAQ]<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/timeline Program Timeline]<br />
* [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2011/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2010#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
== QCOW2 <-> QED image converter ==<br />
<br />
'''Summary:''' Design and implement an in-place disk image converter that safely and efficiently changes between the QCOW2 and QED image formats.<br />
<br />
QEMU supports several disk image formats that make it possible to manage and share virtual machine disk images as files. The well known formats include qcow2 (QEMU) and vmdk (VMware), and the QEMU Enhanced Disk (QED) format has pushed new levels of performance.<br />
<br />
In order for users to go between formats, the ''qemu-img convert'' command reads a disk image in one format and outputs it in another format. This has two limitations:<br />
# Twice the amount of space is required since both the old and the new image are kept around.<br />
# Copying data is slow for large images.<br />
<br />
The aim is to design a safe in-place converter to change from QCOW2 to QED (and vice versa) without copying image data. This will require understanding the QCOW2 and QED image formats and how they organize image data. You will need to carefully design the process so image data is never at risk in the event of a crash during conversion. Finally, you will be responsible for adding tests that defend this feature to the ''qemu-iotests'' suite.<br />
<br />
'''Links:'''<br />
* http://people.gnome.org/~markmc/qcow-image-format.html<br />
* [[Features/QED]]<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted for this project idea.<br />
<br />
* Component: QEMU<br />
* Skill level: medium<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi <stefanha@gmail.com><br />
<br />
== Improved image format compatibility ==<br />
<br />
'''Summary:''' Add support for the latest versions of popular image formats.<br />
<br />
There are a number of disk image formats in common use today. The ''qemu-img'' tool already supports the popular image formats. Some formats have evolved since their original support was added and new files cannot be accessed with ''qemu-img''.<br />
<br />
The aim is to address the lag in image format support by understanding the latest formats and implementing their new layouts in QEMU. This will enable ''qemu-img'', ''qemu-io'', and ''qemu-nbd'' to operate on an even wider range of disk images.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/VHD_(file_format)<br />
* http://en.wikipedia.org/wiki/VMDK<br />
* http://en.wikipedia.org/wiki/VirtualBox#VirtualBox_and_VDI<br />
<br />
'''Please get in touch before applying''' so we can arrange for an IRC interview and get to know each other. Students who do not contact the mentor cannot be accepted for this project idea.<br />
<br />
* Component: QEMU<br />
* Skill level: medium<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, Kevin Wolf <kwolf@redhat.com><br />
* Suggested by: Stefan Hajnoczi <stefanha@gmail.com><br />
<br />
== Tracepoint support for the gdbstub ==<br />
<br />
Recent gdb versions allow to define ad-hoc tracepoints that are able to record memory content or register states whenever the target code hits them. This is supposed to happen non-intrusively, while the target is executing (almost) as normal. QEMU could serve as a nice backend for gdb when it comes to using such dynamic tracepoints for (guest) kernel debugging. In contrast to approaches like [http://code.google.com/p/kgtp kgtp] running inside the guest kernel, QEMU is able to perform this in hypervisor context, at most requiring to insert breakpoints into guest visible memory.<br />
<br />
In this project, the QEMU gdbstub shall be extended with support for tracepoints. Architecture specific parts shall at least support x86 guests. Tracepoints shall be usable both in emulation and KVM mode. Extending the KVM kernel services to accelerate tracepoints is not required in this first step. See [http://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html gdb documentation] and specifically the [http://sourceware.org/gdb/onlinedocs/gdb/Tracepoint-Packets.html gdb remote protocol] for further details.<br />
<br />
* Component: QEMU<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: Jan Kiszka <jan.kiszka@web.de><br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Upstreaming EHCI support ==<br />
<br />
There exists a good foundation for EHCI support in out-of-tree repository. But it hasn't been proposed for merge yet due to a few open issues. The list below reflects potential sub-tasks but it's not necessarily up-to-date with latest development:<br />
<br />
* testing and stabilizing host pass-through of various devices<br />
* periodic frames support<br />
* isochronous traffic support<br />
* split transactions support<br />
* improving NAK/reload support<br />
* throttle interrupt rate based on OS settings<br />
* code cleanup<br />
<br />
The primary goal of this task is to fix the most annoying issues of the EHCI emulation and prepare the result of upstream merge.<br />
<br />
* Component: QEMU<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]], any other welcome<br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Improving USB emulation accuracy ==<br />
<br />
There are still a few rough edges in QEMU's USB support beyond the EHCI topic:<br />
<br />
* improve USB device emulation like mass storage devices, network adapters, etc.<br />
* improved topology configuration by modeling it via qdev<br />
* new device emulations, e.g. webcam (playing video files) or IO-warrior-like device<br />
* ...<br />
<br />
The task consists of identifying open issues and use cases by testing them against various guest systems, then fixing the deficits, and proposing the result in form of patch series for upstream merge.<br />
<br />
* Component: QEMU<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]], any other welcome<br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Upstreaming some of the Android emulator bits ==<br />
<br />
The Android Emulator is based on ancient QEMU. To kick off its upstream integration, the existing code shall be analyzed and core elements of the emulated reference platform shall be ported to current QEMU. The goal is to get some Android image booting, bringing it into a usable state so that simple applications can be tested.<br />
<br />
* Skill level: medium..high<br />
* Languages: C<br />
* Mentor: Jan Kiszka <jan.kiszka@web.de><br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Add Macintosh to 68k system emulation ==<br />
<br />
In order to support Macintosh system emulation, almost every device must be implemented on QEMU (SCSI, CUDA, ADB, Apple framebuffers). How they work can be investigated in Inside Macintosh documents and other emulators (MESS, BasiliskII, vMac).<br />
<br />
* Skill level: high<br />
* Languages: C, 68k assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Boot Mac OS >= 8.5 on PowerPC system emulation ==<br />
<br />
Most of Power Macintosh hardware is emulated, things need only to be cleaned and OpenBIOS enhanced to support loading Macintosh Toolbox from the "Mac OS ROM" file present in any Mac OS >= 8.5 system.<br />
<br />
* Skill level: medium<br />
* Languages: C, Forth<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Add a S3 Trio or S3 Virge ==<br />
<br />
More x86 guests have native drivers for that card than for Cirrus GD5446. It was also used for a lot of non-x86 machines (like IBM workstations and servers).<br />
<br />
* Skill level: medium<br />
* Languages: C, x86 assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Enhance, update and integrate Acorn Archimedes system emulation ==<br />
<br />
ARM system emulation should include Acorn Archimedes system emulation. Work-In-Progress was done against 0.9.0 tree. Now with Risc OS open sourced things could be easier. Most problems seems to be rarely used opcodes and 26-bit modes.<br />
<br />
* Skill level: medium<br />
* Languages: C, ARM assembler<br />
* Mentor: tbd ([[User:pbrook|Paul Brook]] proposed himself on GSoC 2010)<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== BeBox system emulation ==<br />
<br />
The BeBox system is just a CHRP compliant dual PowerPC 603 processor machine. Most of the devices are already emulated, only a couple need to be added. Original firmware can be reverse engineered as it is a very simple firmware (not OpenFirmware compliant).<br />
<br />
* Skill level: medium<br />
* Languages: C, maybe PowerPC assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== NeXT machines system emulation ==<br />
<br />
NeXT machines are designed in a similar idea to 68k Macintosh ones. Documentation is almost not available. Original firmware MUST be used. MESS emulator project started a NeXT emulation but it is still work-in-progress so not much ideas can be taken from it.<br />
<br />
* Skill level: high<br />
* Languages: C, 68k assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Upstream and clean-up of USB Video Class device emulation ==<br />
<br />
On mid-2010 I implemented a webcam emulation (passthrough) using USB Video Class on the guest and Video4Linux on the host.<br />
The code was RFC to the mailing list and needs a couple of clean ups to be integrated mainstream.<br />
Once cleaned up, it needs to get implemented multiple resolution, image formats and isochronous transfers.<br />
Desirable is also adding support for Win32 (using WIA or VFW) and Mac OS X hosts.<br />
<br />
* Skill level: medium<br />
* Languages: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Implementation of FireWire OHCI ==<br />
<br />
Implementing a FireWire OHCI emulation will allow us to passthrough FireWire devices (mass storage, tape devices, video devices, IPo1394), or to emulate that devices from different host devices.<br />
<br />
FireWire extensively uses DMA and should be as easy to implement as USB protocol, without the issues of the bulk mode of USB protocol.<br />
<br />
* Skill level: high<br />
* Languages: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Implementation of USB 3.0 XHCI ==<br />
<br />
USB 3.0 gives better support for virtualization, and also unlike EHCI does not request the presence of previous generation controllers (EHCI, OHCI, UHCI) for handling previous generation devices (USB 2.0, USB 1.x).<br />
<br />
This requires also taking in account Gerd patches for multiple speeds support on existing USB devices.<br />
<br />
* Skill level: high<br />
* Languages: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Virtagent Windows guest support ==<br />
<br />
'''Summary:''' Create a virtagent compatible guest agent for Windows operating systems.<br />
<br />
Virtagent is a host/guest communication protocol that is designed to enable easier and more reliable guest management. An RPC channel is created over either a virtio-serial or isa-serial device. Various commands are implemented such as: shutdown, ping and file retrieval. Currently, only Linux guests are supported. In order to make virtagent a more universal management interface, it should be supported on other operating systems (including Windows). This task can be broken down into the following activities:<br />
* virtio-serial support for Windows<br />
* Base Windows client support (Windows service programming / virtagent transport protocol implementation)<br />
* Implement RPC functions (OS Shutdown, file transfers, filesystem freeze/thaw, etc)<br />
* Windows package / installer<br />
<br />
Applicants will need to have experience with Windows system programming.<br />
<br />
* Component: QEMU<br />
* Skill level: medium<br />
* Language: C<br />
* Mentor: Adam Litke <agl@us.ibm.com>, 'aglitke' on IRC<br />
* Suggested by: Adam Litke <agl@us.ibm.com><br />
<br />
== KVM for Mac OS X hosts ==<br />
<br />
'''Summary:''' Port KVM code to Mac OS X to run hardware accelerated qemu on Mac OS X<br />
<br />
KVM provides a pretty simple interface for userspace applications like qemu to run virtual machines. There's no reason (except for the license) it should be limited to Linux kernel code though. We could wrap the Linux KVM code around some helpers that provide Linux functionality on XNU - the Mac OS X kernel. That would enable qemu to run virtual machines on Mac OS X hosts.<br />
<br />
Applicants will need to have understanding of the XNU kernel and a broad grasp of KVM's kernel interfaces.<br />
<br />
* Component: KVM<br />
* Skill level: high<br />
* Language: C, x86 asm<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]<br />
<br />
== IA64 emulation ==<br />
<br />
'''Summary:''' Emulating the IA64 instruction set<br />
<br />
Qemu implements all the of still-alive and soon-not-to-be-alive platforms out there, except for one! Itanium! We do have device emulation support for it in the qemu-kvm fork. There is [http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=Welcome existing firmware] out there that even works with KVM on IA64. So all that's necessary to get people who don't have IA64 machines at home the fun of playing with it is CPU emulation code.<br />
<br />
The project would start by getting an ia64-linux-user target rolling that can emulate IA64 Linux applications on other Linux systems. This will probably be enough of a scope for this GSoC.<br />
<br />
* Component: Qemu<br />
* Skill level: high<br />
* Language: C, IA64 asm<br />
* Mentor: [[User:Agraf|Alexander Graf]]? If anyone volunteers, I'll try to find someone who knows IA64 :)<br />
* Suggested by: [[User:Agraf|Alexander Graf]]</div>Agrafhttps://wiki.qemu.org/index.php?title=Documentation/ISAManuals&diff=1058Documentation/ISAManuals2011-03-30T11:02:04Z<p>Agraf: /* x86 */</p>
<hr />
<div>= Instruction Set Manuals =<br />
<br />
Some pointers for the various ISAs that QEMU supports.<br />
<br />
* [http://en.wikibooks.org/wiki/Subject:Assembly_languages Wikibooks (Various languages)]<br />
<br />
== ARM ==<br />
<br />
* [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM]<br />
<br />
== Blackfin ==<br />
<br />
* [http://www.analog.com/static/imported-files/processor_manuals/blackfin_pgr.ref.man.rev1.3.pdf Blackfin]<br />
<br />
== PowerPC ==<br />
<br />
* [http://www.ibm.com/developerworks/systems/library/es-archguide-v2.html PowerPC 2.02]<br />
* [http://www.power.org/resources/downloads/PowerISA_V2.06B_V2_PUBLIC.pdf PowerPC 2.06]<br />
<br />
== S390x (zSeries) ==<br />
<br />
* [http://lars.nocrew.org/computers/processors/ESA390/dz9zr002.pdf S390x]<br />
<br />
== x86 ==<br />
<br />
* [http://developer.amd.com/documentation/guides/pages/default.aspx AMD]<br />
* [http://www.intel.com/products/processor/manuals/ Intel]</div>Agrafhttps://wiki.qemu.org/index.php?title=Documentation/ISAManuals&diff=1057Documentation/ISAManuals2011-03-30T11:01:03Z<p>Agraf: /* Instruction Set Manuals */</p>
<hr />
<div>= Instruction Set Manuals =<br />
<br />
Some pointers for the various ISAs that QEMU supports.<br />
<br />
* [http://en.wikibooks.org/wiki/Subject:Assembly_languages Wikibooks (Various languages)]<br />
<br />
== ARM ==<br />
<br />
* [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM]<br />
<br />
== Blackfin ==<br />
<br />
* [http://www.analog.com/static/imported-files/processor_manuals/blackfin_pgr.ref.man.rev1.3.pdf Blackfin]<br />
<br />
== PowerPC ==<br />
<br />
* [http://www.ibm.com/developerworks/systems/library/es-archguide-v2.html PowerPC 2.02]<br />
* [http://www.power.org/resources/downloads/PowerISA_V2.06B_V2_PUBLIC.pdf PowerPC 2.06]<br />
<br />
== S390x (zSeries) ==<br />
<br />
* [http://lars.nocrew.org/computers/processors/ESA390/dz9zr002.pdf S390x]<br />
<br />
== x86 ==<br />
<br />
* [http://developer.amd.com/documentation/guides/pages/default.aspx AMD]</div>Agrafhttps://wiki.qemu.org/index.php?title=Documentation/ISAManuals&diff=1056Documentation/ISAManuals2011-03-30T10:44:49Z<p>Agraf: update s390 and powerpc specs</p>
<hr />
<div>= Instruction Set Manuals =<br />
<br />
Some pointers for the various ISAs that QEMU supports.<br />
<br />
* [http://en.wikibooks.org/wiki/Subject:Assembly_languages Wikibooks (Various languages)]<br />
* [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.set.architecture/index.html ARM]<br />
* [http://www.analog.com/static/imported-files/processor_manuals/blackfin_pgr.ref.man.rev1.3.pdf Blackfin]<br />
* [http://www.ibm.com/developerworks/systems/library/es-archguide-v2.html PowerPC 2.02]<br />
* [http://www.power.org/resources/downloads/PowerISA_V2.06B_V2_PUBLIC.pdf PowerPC 2.06]<br />
* [http://lars.nocrew.org/computers/processors/ESA390/dz9zr002.pdf S390x]</div>Agrafhttps://wiki.qemu.org/index.php?title=Google_Summer_of_Code_2011&diff=1027Google Summer of Code 20112011-03-11T21:12:29Z<p>Agraf: add kvm for xnu project</p>
<hr />
<div>= Introduction =<br />
<br />
As we [[Google_Summer_of_Code_2010| did last year]], QEMU is going to apply as a mentoring organization for [http://socghop.appspot.com/ Google Summer of Code 2011]. This page contains our ideas list and some additional information for students and mentors.<br />
<br />
Please note that QEMU, as a GSoC organization, also includes the following projects:<br />
<br />
* The Linux Kernel's [http://www.linux-kvm.org/page/Main_Page KVM] module<br />
* [http://www.libvirt.org Libvirt], the virtualization library (pending OK from libvirt people)<br />
<br />
= Organization =<br />
<br />
Any Question, request or problem regarding QEMU on GSoC 2011, please contact one of the following people.<br />
<br />
* [[User:LuizCapitulino|Luiz Capitulino]]<br />
* [[User:AnthonyLiguori|Anthony Liguori]]<br />
<br />
= Find Us =<br />
<br />
* IRC (devel): #qemu on irc.oftc.net<br />
* IRC (GSoC specific): #qemu-gsoc on irc.oftc.net<br />
* Mailing list: http://lists.nongnu.org/mailman/listinfo/qemu-devel<br />
<br />
= GSoC important pages =<br />
<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/faqs FAQ]<br />
* [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2011/timeline Program Timeline]<br />
* [http://socghop.appspot.com/document/show/gsoc_program/google/gsoc2011/userguide Melange User Guide]<br />
* [http://code.google.com/p/google-summer-of-code/wiki/AdviceforMentors Advice for Mentors]<br />
<br />
= Information for students =<br />
<br />
We require students to provide (at least) the following information in their applications:<br />
<br />
* Contact information (email, irc nick, phone number)<br />
* A general personal description (skills, past experiences and possible open source contributions)<br />
* Why QEMU and why this project<br />
* A detailed description of the approach the student will take<br />
<br />
'''VERY IMPORTANT:''' Submitting a patch and having it merged by QEMU or KVM increases your chances of being accepted.<br />
<br />
= Projects Ideas =<br />
<br />
This is the listing of suggested project ideas. It might be useful to check last year's [[Google_Summer_of_Code_2010#Projects_Ideas|page]]. Also note that students are free to suggest their own projects.<br />
<br />
== QCOW2 <-> QED image converter ==<br />
<br />
'''Summary:''' Design and implement an in-place disk image converter that safely and efficiently changes between the QCOW2 and QED image formats.<br />
<br />
QEMU supports several disk image formats that make it possible to manage and share virtual machine disk images as files. The well known formats include qcow2 (QEMU) and vmdk (VMware), and the QEMU Enhanced Disk (QED) format has pushed new levels of performance.<br />
<br />
In order for users to go between formats, the ''qemu-img convert'' command reads a disk image in one format and outputs it in another format. This has two limitations:<br />
# Twice the amount of space is required since both the old and the new image are kept around.<br />
# Copying data is slow for large images.<br />
<br />
The aim is to design a safe in-place converter to change from QCOW2 to QED (and vice versa) without copying image data. This will require understanding the QCOW2 and QED image formats and how they organize image data. You will need to carefully design the process so image data is never at risk in the event of a crash during conversion. Finally, you will be responsible for adding tests that defend this feature to the ''qemu-iotests'' suite.<br />
<br />
'''Links:'''<br />
* http://people.gnome.org/~markmc/qcow-image-format.html<br />
* [[Features/QED]]<br />
<br />
'''Please get in touch before applying''' so we can chat about your ideas and get to know each other.<br />
<br />
* Component: QEMU<br />
* Skill level: medium<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, 'stefanha' on IRC<br />
* Suggested by: Stefan Hajnoczi <stefanha@gmail.com><br />
<br />
== Improved image format compatibility ==<br />
<br />
'''Summary:''' Add support for the latest versions of popular image formats.<br />
<br />
There are a number of disk image formats in common use today. The ''qemu-img'' tool already supports the popular image formats. Some formats have evolved since their original support was added and new files cannot be accessed with ''qemu-img''.<br />
<br />
The aim is to address the lag in image format support by understanding the latest formats and implementing their new layouts in QEMU. This will enable ''qemu-img'', ''qemu-io'', and ''qemu-nbd'' to operate on an even wider range of disk images.<br />
<br />
'''Links:'''<br />
* http://en.wikipedia.org/wiki/VHD_(file_format)<br />
* http://en.wikipedia.org/wiki/VMDK<br />
* http://en.wikipedia.org/wiki/VirtualBox#VirtualBox_and_VDI<br />
<br />
'''Please get in touch before applying''' so we can chat about your ideas and get to know each other.<br />
<br />
* Component: QEMU<br />
* Skill level: medium<br />
* Language: C<br />
* Mentor: Stefan Hajnoczi <stefanha@gmail.com>, Kevin Wolf <kwolf@redhat.com><br />
* Suggested by: Stefan Hajnoczi <stefanha@gmail.com><br />
<br />
== Tracepoint support for the gdbstub ==<br />
<br />
Recent gdb versions allow to define ad-hoc tracepoints that are able to record memory content or register states whenever the target code hits them. This is supposed to happen non-intrusively, while the target is executing (almost) as normal. QEMU could serve as a nice backend for gdb when it comes to using such dynamic tracepoints for (guest) kernel debugging. In contrast to approaches like [http://code.google.com/p/kgtp kgtp] running inside the guest kernel, QEMU is able to perform this in hypervisor context, at most requiring to insert breakpoints into guest visible memory.<br />
<br />
In this project, the QEMU gdbstub shall be extended with support for tracepoints. Architecture specific parts shall at least support x86 guests. Tracepoints shall be usable both in emulation and KVM mode. Extending the KVM kernel services to accelerate tracepoints is not required in this first step. See [http://sourceware.org/gdb/onlinedocs/gdb/Tracepoints.html gdb documentation] and specifically the [http://sourceware.org/gdb/onlinedocs/gdb/Tracepoint-Packets.html gdb remote protocol] for further details.<br />
<br />
* Component: QEMU<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: Jan Kiszka <jan.kiszka@web.de><br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Adding basic KVM support to MIPS architecture ==<br />
<br />
Summary: This project intends to add kvm virtualizaiton support on MIPS architecture. <br />
<br />
KVM supports several main CPU architectures such as x86,power PC, [http://www.ncl.cs.columbia.edu/publications/ols2010_kvmarm.pdf arm]. However there is no MIPS support currently. MIPS is a one of the popular architectures in embedded world. So it is really good if we can add kvm support to it.<br />
<br />
MIPS architecture does not have hardware virtualization support, the trap-emulation is the easy way for the CPU virtualization. For the memory virtualization, MMU is bypassed by MIPS's kseg0 segment, in which the kernel code residing. We either need to trap every memory access to this segment or remapping the guest linux kernel to other segment.<br />
<br />
Since adding new architecture support in KVM is a big task for GSOC, so this project just wants to add *basic* support. The GSOC goal of this project is a working KVM kernel module and KVM user program which can boot the guest linux kernel (without the rootfs).<br />
<br />
* Component: QEMU/KVM<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: Aurelien <aurelien@aurel32.net><br />
* Suggested by: yajin <yajin@vm-kernel.org><br />
<br />
== Upstreaming EHCI support ==<br />
<br />
There exists a good foundation for EHCI support in out-of-tree repository. But it hasn't been proposed for merge yet due to a few open issues. The list below reflects potential sub-tasks but it's not necessarily up-to-date with latest development:<br />
<br />
* testing and stabilizing host pass-through of various devices<br />
* periodic frames support<br />
* isochronous traffic support<br />
* split transactions support<br />
* improving NAK/reload support<br />
* throttle interrupt rate based on OS settings<br />
* code cleanup<br />
<br />
The primary goal of this task is to fix the most annoying issues of the EHCI emulation and prepare the result of upstream merge.<br />
<br />
* Component: QEMU<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]], any other welcome<br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Improving USB emulation accuracy ==<br />
<br />
There are still a few rough edges in QEMU's USB support beyond the EHCI topic:<br />
<br />
* improve USB device emulation like mass storage devices, network adapters, etc.<br />
* improved topology configuration by modeling it via qdev<br />
* new device emulations, e.g. webcam (playing video files) or IO-warrior-like device<br />
* ...<br />
<br />
The task consists of identifying open issues and use cases by testing them against various guest systems, then fixing the deficits, and proposing the result in form of patch series for upstream merge.<br />
<br />
* Component: QEMU<br />
* Skill level: medium..high<br />
* Language: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]], any other welcome<br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Upstreaming some of the Android emulator bits ==<br />
<br />
The Android Emulator is based on ancient QEMU. To kick off its upstream integration, the existing code shall be analyzed and core elements of the emulated reference platform shall be ported to current QEMU. The goal is to get some Android image booting, bringing it into a usable state so that simple applications can be tested.<br />
<br />
* Skill level: medium..high<br />
* Languages: C<br />
* Mentor: Jan Kiszka <jan.kiszka@web.de><br />
* Suggested by: Jan Kiszka <jan.kiszka@web.de><br />
<br />
== Add Macintosh to 68k system emulation ==<br />
<br />
In order to support Macintosh system emulation, almost every device must be implemented on QEMU (SCSI, CUDA, ADB, Apple framebuffers). How they work can be investigated in Inside Macintosh documents and other emulators (MESS, BasiliskII, vMac).<br />
<br />
* Skill level: high<br />
* Languages: C, 68k assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Boot Mac OS >= 8.5 on PowerPC system emulation ==<br />
<br />
Most of Power Macintosh hardware is emulated, things need only to be cleaned and OpenBIOS enhanced to support loading Macintosh Toolbox from the "Mac OS ROM" file present in any Mac OS >= 8.5 system.<br />
<br />
* Skill level: medium<br />
* Languages: C, Forth<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Add a S3 Trio or S3 Virge ==<br />
<br />
More x86 guests have native drivers for that card than for Cirrus GD5446. It was also used for a lot of non-x86 machines (like IBM workstations and servers).<br />
<br />
* Skill level: medium<br />
* Languages: C, x86 assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Enhance, update and integrate Acorn Archimedes system emulation ==<br />
<br />
ARM system emulation should include Acorn Archimedes system emulation. Work-In-Progress was done against 0.9.0 tree. Now with Risc OS open sourced things could be easier. Most problems seems to be rarely used opcodes and 26-bit modes.<br />
<br />
* Skill level: medium<br />
* Languages: C, ARM assembler<br />
* Mentor: tbd ([[User:pbrook|Paul Brook]] proposed himself on GSoC 2010)<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== BeBox system emulation ==<br />
<br />
The BeBox system is just a CHRP compliant dual PowerPC 603 processor machine. Most of the devices are already emulated, only a couple need to be added. Original firmware can be reverse engineered as it is a very simple firmware (not OpenFirmware compliant).<br />
<br />
* Skill level: medium<br />
* Languages: C, maybe PowerPC assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== NeXT machines system emulation ==<br />
<br />
NeXT machines are designed in a similar idea to 68k Macintosh ones. Documentation is almost not available. Original firmware MUST be used. MESS emulator project started a NeXT emulation but it is still work-in-progress so not much ideas can be taken from it.<br />
<br />
* Skill level: high<br />
* Languages: C, 68k assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Upstream and clean-up of USB Video Class device emulation ==<br />
<br />
On mid-2010 I implemented a webcam emulation (passthrough) using USB Video Class on the guest and Video4Linux on the host.<br />
The code was RFC to the mailing list and needs a couple of clean ups to be integrated mainstream.<br />
Once cleaned up, it needs to get implemented multiple resolution, image formats and isochronous transfers.<br />
Desirable is also adding support for Win32 (using WIA or VFW) and Mac OS X hosts.<br />
<br />
* Skill level: medium<br />
* Languages: C<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Implementation of FireWire OHCI ==<br />
<br />
Implementing a FireWire OHCI emulation will allow us to passthrough FireWire devices (mass storage, tape devices, video devices, IPo1394), or to emulate that devices from different host devices.<br />
<br />
FireWire extensively uses DMA and should be as easy to implement as USB protocol, without the issues of the bulk mode of USB protocol.<br />
<br />
* Skill level: high<br />
* Languages: C, 68k assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Implementation of USB 3.0 XHCI ==<br />
<br />
USB 3.0 gives better support for virtualization, and also unlike EHCI does not request the presence of previous generation controllers (EHCI, OHCI, UHCI) for handling previous generation devices (USB 2.0, USB 1.x).<br />
<br />
This requires also taking in account Gerd patches for multiple speeds support on existing USB devices.<br />
<br />
* Skill level: high<br />
* Languages: C, 68k assembler<br />
* Mentor: [[User:NataliaPortillo|Natalia Portillo]]<br />
* Suggested by: [[User:NataliaPortillo|Natalia Portillo]]<br />
<br />
== Virtagent Windows guest support ==<br />
<br />
'''Summary:''' Create a virtagent compatible guest agent for Windows operating systems.<br />
<br />
Virtagent is a host/guest communication protocol that is designed to enable easier and more reliable guest management. An RPC channel is created over either a virtio-serial or isa-serial device. Various commands are implemented such as: shutdown, ping and file retrieval. Currently, only Linux guests are supported. In order to make virtagent a more universal management interface, it should be supported on other operating systems (including Windows). This task can be broken down into the following activities:<br />
* virtio-serial support for Windows<br />
* Base Windows client support (Windows service programming / virtagent transport protocol implementation)<br />
* Implement RPC functions (OS Shutdown, file transfers, filesystem freeze/thaw, etc)<br />
* Windows package / installer<br />
<br />
Applicants will need to have experience with Windows system programming.<br />
<br />
* Component: QEMU<br />
* Skill level: medium<br />
* Language: C<br />
* Mentor: Adam Litke <agl@us.ibm.com>, 'aglitke' on IRC<br />
* Suggested by: Adam Litke <agl@us.ibm.com><br />
<br />
== KVM for Mac OS X hosts ==<br />
<br />
'''Summary:''' Port KVM code to Mac OS X to run hardware accelerated qemu on Mac OS X<br />
<br />
KVM provides a pretty simple interface for userspace applications like qemu to run virtual machines. There's no reason (except for the license) it should be limited to Linux kernel code though. We could wrap the Linux KVM code around some helpers that provide Linux functionality on XNU - the Mac OS X kernel. That would enable qemu to run virtual machines on Mac OS X hosts.<br />
<br />
Applicants will need to have understanding of the XNU kernel and a broad grasp of KVM's kernel interfaces.<br />
<br />
* Component: KVM<br />
* Skill level: high<br />
* Language: C, x86 asm<br />
* Mentor: [[User:Agraf|Alexander Graf]]<br />
* Suggested by: [[User:Agraf|Alexander Graf]]</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/0.14&diff=920ChangeLog/0.142011-02-08T17:09:19Z<p>Agraf: /* IDE / AHCI */</p>
<hr />
<div>'''QEMU 0.14.0 IS NOT YET RELEASED'''<br />
= 0.14.0 =<br />
== Targets ==<br />
=== i386/x86_64 ===<br />
* XXX Still need some help here!<br />
<br />
=== ARM ===<br />
* Most of the changes are related to bug fixes and improvements to match what the real hardware does. For now there is no new board or CPU. [http://git.qemu.org/qemu.git/log/?h=stable-0.14&qt=grep&q=target-arm (list of commits)]<br />
<br />
=== MIPS ===<br />
* Host CPU consumption for idle guests [http://git.qemu.org/qemu.git/commit/?id=4cdc1cd137e0b98766916a7cdf2d5a9b3c6632fa (commit)]<br />
* Timer fixes [http://git.qemu.org/qemu.git/commit/?id=b1dfe6437c776f6441cf8b71c706f32f2456c530 (commit)] [http://git.qemu.org/qemu.git/commit/?id=e027e1f075afe36698ce55d86f01b7817707c8b6 (commit)] [http://git.qemu.org/qemu.git/commit/?id=55807224561b9ac278bb65960b6c12666fd30db9 (commit)]<br />
* FPU improvements [http://git.qemu.org/qemu.git/commit/?id=084d19ba718a08d434dc44a83ff01f3152d59635 (commit)]<br />
<br />
=== SH4 ===<br />
* Various bug fixes and improvements including [http://git.qemu.org/qemu.git/log/?h=stable-0.14&qt=grep&q=sh4 (list of commits)]<br />
** SM501 2D engine copyrect support, needed to boot recent kernels [http://git.qemu.org/qemu.git/commit/?id=07d8a50cb0e096c5cdc5a81b8030e40833664dd3 (commit)]<br />
** MMU mmaped TLB access, needed to boot recent kernels [http://git.qemu.org/qemu.git/commit/?id=c0f809c46aa271f29a9e6268cdeda1f21301a8ef (commit)]<br />
** Floating point exceptions and correct NaN support.<br />
<br />
=== PPC ===<br />
* Fix running recent PPC64 kernels [http://git.qemu.org/qemu.git/commit/?id=f844c817d726cd2bdb431aa41c8217891ede2eaf (commit)]<br />
* New maintainer: Alexander Graf [http://git.qemu.org/qemu.git/commit/?id=42a876582906b1765db1c97152c967bc15401f84 (commit)]<br />
* Improve interrupt injection with KVM [http://git.qemu.org/qemu.git/commit/?id=fc87e185302a96c2675a1c3a86ca47c6a2d657ff (commit)]<br />
* Enable PV enabled guests for speedup with KVM [http://git.qemu.org/qemu.git/commit/?id=419ef5f1c6a9614e8ddcb0b0f826de692e7e4a43 (commit)] [http://git.qemu.org/qemu.git/commit/?id=45024f094c223e8096f366520414cdf1a74dbff3 (commit)]<br />
* Floating point fixes<br />
* Add a ppc-440x5 Xilinx model [http://git.qemu.org/qemu.git/commit/?id=95070372f7477f44add9af9b55970ae1b92c3100 (commit)]<br />
* Add a virtex5 ml507 refdesign board for ppc-440x5 [http://git.qemu.org/qemu.git/commit/?id=2c50e26efdb7e405ecacf89e6a57a60179226dd8 (commit)]<br />
* BookE MMU emulation improvements [http://git.qemu.org/qemu.git/commit/?id=a586e548fb41afa21291bcc96f0a657d5ceaad59 (commit)] [http://git.qemu.org/qemu.git/commit/?id=999fa40e431626121cdee7d244aadfd0c8f2597b (commit)]<br />
<br />
=== s390x ===<br />
* No news, business as usual.<br />
<br />
=== SPARC ===<br />
* Fix div(cc) and sdiv(cc) instruction emulation, fixes Xorg crash in the guest [http://git.qemu.org/qemu.git/commit/?id=0fcec41eec0432c77645b4a407d3a3e030c4abc4 (commit)]<br />
<br />
== Hosts ==<br />
<br />
=== ARM ===<br />
* Fix random crashes [http://git.qemu.org/qemu.git/commit/?id=c69806ab82760a2e5ca880d41e8786276c838152 (commit)]<br />
* Fix 64-bit big-endian targets support [http://git.qemu.org/qemu.git/commit/?id=9a3abc21a61f95799c1f301b0b480a98a29fa0ff (commit)]<br />
<br />
=== MIPS ===<br />
* Fix random crashes [http://git.qemu.org/qemu.git/commit/?id=d43ffce14023df871d6065eb864d1f41eb441f37 (commit)]<br />
<br />
=== IA64 ===<br />
* Fix random crashes for 32-bit targets [http://git.qemu.org/qemu.git/commit/?id=650a217a652a940c164d5a38cedc4d6671da88ce (commit)]<br />
<br />
== Devices ==<br />
=== IDE / AHCI ===<br />
* Added emulation layer for an ICH-9 [http://www.intel.com/technology/serialata/ahci.htm AHCI] controller (not yet stable). Tested with Linux, OpenBSD, Windows Vista and Windows 7. The AHCI emulation supports [http://en.wikipedia.org/wiki/Native_Command_Queuing NCQ], so multiple read or write requests can be outstanding at the same time.[http://git.qemu.org/qemu.git/commit/?id=f6ad2e32f8d833c7f1c75dc084a84a8f02704d64 (commit)]<br />
** to use it, use the following command line snippet: -drive id=disk,file=<your image goes here>,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0<br />
<br />
=== SCSI ===<br />
* Various bug fixes, no new features.<br />
<br />
=== USB ===<br />
* Added USB support for remote wakeup, allowing the guest to suspend the USB bus when idle, which in turn reduces the CPU overhead of an idle machine. [http://git.qemu.org/qemu.git/commit/?id=01eacab6e95267fd894d0c1013aa5bf55c320dc8 (commit)] [http://git.qemu.org/qemu.git/commit/?id=9159f6798ebfe0cdcfd1d1fb91c2c08b6d95954a (commit)] [http://git.qemu.org/qemu.git/commit/?id=34239c7bc972735391ca84283f8c8ad908dc61ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=ac57bbb614ace4f7b8b965562826a7f7fda00cdc (commit)]<br />
* The USB subsystem also got a bunch of patches to prepare it for USB 2.0 support.<br />
<br />
=== virtio ===<br />
* virtio-pci can use [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d34e6b175e61821026893ec5298cc8e7558df43a ioeventfd] for virtqueue notify. On systems that support KVM, the ioeventfd mechanism can be used to make virtqueue notify a lightweight exit by deferring hardware emulation to the iothread and allowing the VM to continue execution. This model is similar to how vhost receives virtqueue notifies. The result of this change is improved performance for userspace virtio devices. Virtio-blk throughput increases especially for multithreaded scenarios and virtio-net transmit throughput increases substantially. Read the commit message for more details. [http://git.qemu.org/qemu.git/commit/?id=25db9ebe15125deb32958c6df74996f745edf1f9 (commit)] [http://git.qemu.org/qemu.git/commit/?id=65d6dcbde84314c6d05a365a26a384f880a5c8fe (commit)]<br />
* Various fixes and stabilization for live-migration: [http://git.qemu.org/qemu.git/commit/?id=783e7706937fe15523b609b545587a028a2bdd03 (commit)] [http://git.qemu.org/qemu.git/commit/?id=954773230484f5afeb675e9ff814c97e54e69e17 (commit)] [http://git.qemu.org/qemu.git/commit/?id=1abeb5a65d515f8a8a9cfc4a82342f731bd9321f (commit)]<br />
* Various virtio-net improvements:<br />
** Make tx_timer timeout configurable [http://git.qemu.org/qemu.git/commit/?id=f0c07c7c7b4fe4f9b63c88341fd32707def5a058 (commit)]<br />
** Limit number of packets sent per TX flush [http://git.qemu.org/qemu.git/commit/?id=e3f30488e5f802547b3a60e40cebaef3b4ec16a3 (commit)]<br />
** Introduce a new bottom half packet TX [http://git.qemu.org/qemu.git/commit/?id=a697a334b3c4d3250e6420f5d38550ea10eb5319 (commit)]<br />
** Fix cross-endianness support [http://git.qemu.org/qemu.git/commit/?id=44b15bc5c65ab6b3103f508504e4adf8ee9902d7 (commit)]<br />
<br />
=== PCI/PCI Express ===<br />
* Improved PCI Express support and functionalities with the implementation of:<br />
**flr [http://www.pcisig.com/specifications/conventional/pci_30/ECN_Conventional_Adv_Caps_27Jul06.pdf (Function Level Reset)] [http://git.qemu.org/qemu.git/commit/?id=0ead87c8debaf12bf4e8cf5130e4e7fb83dbf126 (commit)] <br />
**aer [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/PCI/pcieaer-howto.txt;h=26d3d945c3c21aa965cd9b48c49cc42abf09df3f;hb=HEAD (Advanced Error Reporting)] and other improvements [http://git.qemu.org/qemu.git/commit/?id=1a1ea6f093eb8cf7c01788bc3708ba7003815563 (commit)] [http://git.qemu.org/qemu.git/commit/?id=34e65944c0351fabcd82aa8c85018980c7e87bff (commit)] [http://git.qemu.org/qemu.git/commit/?id=247c97f3f5ab0dae60778a2dea438bfed5c69e68 (commit)] [http://git.qemu.org/qemu.git/commit/?id=d33d9156fdffb87c99564c9630023da52c66f37a (commit)] [http://git.qemu.org/qemu.git/commit/?id=61620c2fff7dda789dbba513c18f534c0062062b (commit)] [http://git.qemu.org/qemu.git/commit/?id=a158f92fa78b1e87e5d196b72b750fedefb7b43e (commit)] [http://git.qemu.org/qemu.git/commit/?id=09b926d44674cbcf198425a5b8255e3cacb398ae (commit)] [http://git.qemu.org/qemu.git/commit/?id=c3f33667a64a6de0b92106c862247d97d81490ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=2b3cb353e7af7a90eec22ba9720dcef2a80c7f6f (commit)] [http://git.qemu.org/qemu.git/commit/?id=5f47c187d992d5147397ddd5323c732d3d39cb8f (commit)] [http://git.qemu.org/qemu.git/commit/?id=513691b7ff20262efe9aafb85c8dd4615588ad48 (commit)]<br />
**A new monitor command to inject errors into the PCI bus: '''pcie_aer_inject_error''' [http://git.qemu.org/qemu.git/commit/?id=2ae63bda50ec864a3e61d375b53c8e453ad50140 (commit)]<br />
* Implementation of [http://en.wikipedia.org/wiki/Message_Signaled_Interrupts Message Signaled Interrupts] (MSI/MSI-X) support [http://git.qemu.org/qemu.git/commit/?id=e4c7d2aef899780f9b9b86343bca4ac34c9e252f (commit)]<br />
* Separation of the PCI bridge code from the main PCI code. [http://git.qemu.org/qemu.git/commit/?id=cfb0a50a06825a0bee349cae3fa94f96242e83a5 (commit)]<br />
<br />
=== Sound ===<br />
* New Intel HD Audio support [http://git.qemu.org/qemu.git/commit/?id=d61a4ce8f01ac9f1810380e043db467d536eeb6b (commit)], adding three new devices:<br />
** intel-hda: Intel HD Audio Controller, the PCI device. <br />
** hda-duplex: HDA Codec. Attaches to the HDA bus. Supports 16bit stereo, rates 16k -> 96k, playback, recording and volume control (with CONFIG_MIXEMU=y).<br />
** hda-output: HDA Codec without recording support. Subset of the hda-duplex codec. Use this if you don't want your guests access your mic.<br />
* Usage: add '-device intel-hda -device hda-duplex' to your command line.<br />
*Tested guests:<br />
** Linux works.<br />
** Win7 works.<br />
** DOS (mpxplay) works.<br />
** WinXP doesn't work.<br />
<br />
=== Real Time Clock ===<br />
* Fix binary/BCD mode switch [http://git.qemu.org/qemu.git/commit/?id=51e08f3e4b8a3b6d27fde9a9e75c8fa32eaa72d0 (commit)]<br />
<br />
=== Video ===<br />
* Fix cirrus VGA crash with some guests [http://git.qemu.org/qemu.git/commit/?id=92d675d1c1f23f3617e24b63c825074a1d1da44b (commit)]<br />
* Fix curses big endian support [http://git.qemu.org/qemu.git/commit/?id=9ae19b657ee20f4d03bdca8dbf367b932801ac93 (commit)]<br />
<br />
== Block Drivers ==<br />
=== qcow2 ===<br />
* Added a writeback metadata cache. This improves performance of scenarios with lots of cluster allocations noticably (e.g. installation or after taking a snapshot), in some benchmarks by a factor of ten or more. Use cache=none or cache=writeback to take advantage from this change. [http://git.qemu.org/qemu.git/commit/?id=493810940bfaad0fd5dd9bfb79cdc89519f89588 (commit)] [http://git.qemu.org/qemu.git/commit/?id=29c1a7301af752de6721e031d31faa48887204bd (commit)] [http://git.qemu.org/qemu.git/commit/?id=3de0a2944bdb3047dce275560631834bcb4afe22 (commit)]<br />
* Copy snapshots out of QCOW2 disk, eg: '''qemu-img convert -f qcow2 -O qcow2 -s snapshot_name src_img bck_img''' [http://git.qemu.org/qemu.git/commit/?id=51ef67270b1d10e1fcf3de7368dccad1ba0bf9d1 (commit)]<br />
* Zero-copy read and write operations [http://git.qemu.org/qemu.git/commit/?id=6f5f060b736cedc2d962114d20805fdd2889513a (commit)] [http://git.qemu.org/qemu.git/commit/?id=bd28f835652e396841bb73080a07bcc08fe21bf0 (commit)]<br />
<br />
* Other fixes and code cleanups:<br />
** qcow2: Invalidate cache after failed read [http://git.qemu.org/qemu.git/commit/?id=1c02e2a17104fe7fc11893125864dc0daf1e6d5b (commit)]<br />
** block: Allow bdrv_flush to return errors [http://git.qemu.org/qemu.git/commit/?id=205ef7961f781496366e0a93a4ec621ad3724bd7 (commit)]<br />
** qcow2: Simplify image creation [http://git.qemu.org/qemu.git/commit/?id=a9420734b617be43d075c55b980479411807512e (commit)]<br />
** qcow2: Fixes unaligned access on IA64 [http://git.qemu.org/qemu.git/commit/?id=653df36bbe58e20258610bc74c5940c456b31084 (commit)]<br />
<br />
=== qed ===<br />
* Introduction of the QEMU Enhanced Disk (qed) image format. It is a disk image format that forgoes features found in qcow2 in favor of better levels of performance and data integrity. Due to its simpler on-disk layout, it is possible to safely perform metadata updates more efficiently. [http://git.qemu.org/qemu.git/commit/?id=75411d236d93d79d8052e0116c3eeebe23e2778b (commit)] [http://git.qemu.org/qemu.git/commit/?id=298800cae72eb2a549374189e87615b2b0b79262 (commit)] [http://git.qemu.org/qemu.git/commit/?id=eabba580e6bb8d6b969c1368c6f90d72b4cde4f4 (commit)]<br />
* More information about qed: http://wiki.qemu.org/Features/QED<br />
* Initial thread discussion: http://lists.nongnu.org/archive/html/qemu-devel/2010-09/msg00310.html<br />
<br />
=== ceph/rbd ===<br />
* Introduction of the new ceph/rbd block driver. RBD is an block driver for the distributed file system Ceph.[http://git.qemu.org/qemu.git/commit/?id=f27aaf4b531bc0eb4f3e1f7accf4931cae36db0d (commit)]<br />
* More information about ceph: http://ceph.newdream.net/<br />
<br />
=== nbd ===<br />
* Improve qemu-nbd performance by 4400 %. This patch combines the reply header and payload send operation. [http://git.qemu.org/qemu.git/commit/?id=5fe16888d33af7aca0d613d888c161af68c755c3 (commit)]<br />
* Introduce NBD named exports. [http://git.qemu.org/qemu.git/commit/?id=1d45f8b542f6b80b24c44533ef0dd9e1a3b17ea5 (commit)]<br />
<br />
== Spice ==<br />
* New support for the SPICE protocol. The project main focus is to provide high-quality remote access to QEMU virtual machines. More information about SPICE can be found at the project's web site: http://spice-space.org/<br />
* New qxl device. qxl is a paravirtual graphics card. The qxl device is the bridge between the guest and the spice server (aka libspice-server). The spice server will send the rendering commands to the spice client, which will actually render them. The spice server is also able to render locally, which is done in case the guest wants read something from video memory. Local rendering is also used to support display over vnc and sdl. qxl is activated using '''-vga qxl'''. qxl supports multihead, additional cards can be added via ''''-device qxl'''.<br />
* Relevant commits:<br />
**spice: core bits [http://git.qemu.org/qemu.git/commit/?id=29b0040be6371c403dae0fef7fec36b814e300e8 (commit)]<br />
**spice: add keyboard [http://git.qemu.org/qemu.git/commit/?id=864401c2a709bcb66182c02372fb60a30055a4d7 (commit)]<br />
**spice: add mouse [http://git.qemu.org/qemu.git/commit/?id=78dd9ac1ca5130ae144a6abe8361a59483a5464b (commit)]<br />
**spice: simple display [http://git.qemu.org/qemu.git/commit/?id=a3e2226031496f479b5fe4a069ec1acd68a17e8d (commit)]<br />
**spice: add tablet support [http://git.qemu.org/qemu.git/commit/?id=869564a9c0f78b1972e1ac51e69cb2016af3b060 (commit)]<br />
**spice: tls support [http://git.qemu.org/qemu.git/commit/?id=c448e8552b0f6135dabddf944a7110f929c08320 (commit)]<br />
**spice: make compression configurable. [http://git.qemu.org/qemu.git/commit/?id=9f04e09e36e430dd57c69c88b0532e9dc5061a47 (commit)]<br />
**spice: add config options for channel security. [http://git.qemu.org/qemu.git/commit/?id=17b6dea08bd8c8484bc48dc67add236d2fe002b5 (commit)]<br />
**spice: add config options for the listening address [http://git.qemu.org/qemu.git/commit/?id=333b0eebcc8941b8453e837293eaa1191e967c25 (commit)]<br />
**spice: add misc config options [http://git.qemu.org/qemu.git/commit/?id=84a23f251fe85768338434040257bb96cf555de8 (commit)]<br />
**spice: add audio [http://git.qemu.org/qemu.git/commit/?id=3e31375378f40558f1ee7c258f3cc63c85596bfc (commit)]<br />
**spice: add qxl device [http://git.qemu.org/qemu.git/commit/?id=a19cbfb346425cc760ed19b4e746417df636b761 (commit)]<br />
**spice: connection events. [http://git.qemu.org/qemu.git/commit/?id=6f8c63fbd7edc0b41c09f8f8e2d41a3a65464a43 (commit)]<br />
<br />
== QMP / monitor ==<br />
* TODO: QMP is now stable, except for error reporting?<br />
* The work to facilitate the management of QEMU instances has been improved. [[QMP]] has received various fixes. Now it is possible to call a traditional monitor command through QMP, in case your application depends on the output or the command is not yet ported to QMP. <br />
* New commands:<br />
** query-spice / info spice [http://git.qemu.org/qemu.git/commit/?id=cb42a870c3f5b38911b1428cb785dd702bc47d0f (commit)]<br />
** human-monitor-command [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)] [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)]<br />
** set_password [http://git.qemu.org/qemu.git/commit/?id=7572150c189c6553c2448334116ab717680de66d (commit)]<br />
** drive_del [http://git.qemu.org/qemu.git/commit/?id=9063f81415f3518ef8206e74085c2a92c96890a0 (commit)]<br />
** block_resize command, allowing resizing of block devices while qemu is running [http://git.qemu.org/qemu.git/commit/?id=6d4a2b3a47959f02e7f307f50396e70e8464f95e (commit)]. For virtio-blk the size is updated automatically when this command is issued on the host. IDE is not supported. For SCSI devices the new size can be updated in Linux guests by doing the following shell command:<br />
echo > /sys/class/scsi_device/0:0:0:0/device/rescan<br />
<br />
== Tracing ==<br />
* Introduction of platform-independent tracing, more information about it: http://wiki.qemu.org/Features/Tracing<br />
* Documentation and tutorial: http://git.qemu.org/qemu.git/plain/docs/tracing.txt<br />
* Some relevant commits:<br />
** Add trace-events file for declaring trace events [http://git.qemu.org/qemu.git/commit/?id=94a420b170b3e997a185a4148accc87bdcd18156 (commit)]<br />
** Add a DTrace tracing backend targetted for SystemTAP compatibility [http://git.qemu.org/qemu.git/commit/?id=b3d08c029dd78ded5e35b74eaaa3d361821f83a7 (commit)]<br />
** Add LTTng Userspace Tracer backend [http://git.qemu.org/qemu.git/commit/?id=7e24e92a0615ee6be036743f2a035554d2ceac56 (commit)]<br />
** Add simple built-in tracing backend [http://git.qemu.org/qemu.git/commit/?id=26f7227bfe9a9abee3fe5190cbfc35dd876e06d9 (commit)]<br />
** Add stderr trace-event backend: [http://git.qemu.org/qemu.git/commit/?id=320fba2a1f384e17db150d74540a2cf005eb47b5 (commit)]<br />
** Support for dynamically enabling/disabling trace events [http://git.qemu.org/qemu.git/commit/?id=22890ab5e825601f4c3d5a1a6b4197904e5d1fee (commit)]<br />
** Specify trace file name [http://git.qemu.org/qemu.git/commit/?id=9410b56c82a107ed48c1f40aa6820c03094d97e9 (commit)]<br />
** Add trace-file command to open/close/flush trace file [http://git.qemu.org/qemu.git/commit/?id=c5ceb523fa6fc168d3f51e306fee3def458e047e (commit)]<br />
<br />
== Other stuff ==<br />
* Extend '''-option-rom''' command to have additional parameter '''bootindex''' [http://git.qemu.org/qemu.git/commit/?id=2e55e84282c545aeab8f5c9dd52a8073deaf3dbc (commit)]<br />
* Little endian / big endian MMIO framework. Until now, most devices had special hacks to allow them to work on big and little endian systems (ppc / x86). With that framework, they should mostly work with both and not require and device specific hacks anymore. [http://git.qemu.org/qemu.git/commit/?id=dd310534e3bf8045096654df41471fd7132887b2 (commit)]</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/0.14&diff=866ChangeLog/0.142011-02-01T17:37:40Z<p>Agraf: /* PPC */</p>
<hr />
<div>'''QEMU 0.14.0 IS NOT YET RELEASED'''<br />
= 0.14.0 =<br />
== Targets ==<br />
=== i386/x86_64 ===<br />
* Waiting for Anthony, Avi or Marcelo.<br />
<br />
=== ARM and MIPS ===<br />
* Waiting for Aurelien.<br />
<br />
=== PPC ===<br />
<br />
* Fix running recent PPC64 kernels [http://git.qemu.org/qemu.git/commit/?id=f844c817d726cd2bdb431aa41c8217891ede2eaf (commit)]<br />
* New maintainer: Alexander Graf [http://git.qemu.org/qemu.git/commit/?id=42a876582906b1765db1c97152c967bc15401f84 (commit)]<br />
* Improve interrupt injection with KVM [http://git.qemu.org/qemu.git/commit/?id=fc87e185302a96c2675a1c3a86ca47c6a2d657ff (commit)]<br />
* Enable PV enabled guests for speedup with KVM [http://git.qemu.org/qemu.git/commit/?id=419ef5f1c6a9614e8ddcb0b0f826de692e7e4a43 (commit)] [http://git.qemu.org/qemu.git/commit/?id=45024f094c223e8096f366520414cdf1a74dbff3 (commit)]<br />
* Floating point fixes<br />
* Add a ppc-440x5 Xilinx model [http://git.qemu.org/qemu.git/commit/?id=95070372f7477f44add9af9b55970ae1b92c3100 (commit)]<br />
* Add a virtex5 ml507 refdesign board for ppc-440x5 [http://git.qemu.org/qemu.git/commit/?id=2c50e26efdb7e405ecacf89e6a57a60179226dd8 (commit)]<br />
* BookE MMU emulation improvements [http://git.qemu.org/qemu.git/commit/?id=a586e548fb41afa21291bcc96f0a657d5ceaad59 (commit)] [http://git.qemu.org/qemu.git/commit/?id=999fa40e431626121cdee7d244aadfd0c8f2597b (commit)]<br />
<br />
=== s390x ===<br />
<br />
* No news, business as usual.<br />
<br />
== Devices ==<br />
=== IDE / AHCI ===<br />
* Added emulation layer for an ICH-9 [http://www.intel.com/technology/serialata/ahci.htm AHCI] controller (not yet stable). Tested with Linux, OpenBSD, Windows Vista and Windows 7. The AHCI emulation supports [http://en.wikipedia.org/wiki/Native_Command_Queuing NCQ], so multiple read or write requests can be outstanding at the same time.[http://git.qemu.org/qemu.git/commit/?id=f6ad2e32f8d833c7f1c75dc084a84a8f02704d64 (commit)]<br />
** Final version series: http://www.mail-archive.com/qemu-devel@nongnu.org/msg49323.html<br />
** to use it, use the following command line snippet: -drive id=disk,file=<your image goes here>,if=none -device ahci,id=ahci -device ide-ive,drive=disk,bus=ahci.0<br />
<br />
=== SCSI ===<br />
* Ask Kevin.<br />
<br />
=== USB ===<br />
* Added USB support for remote wakeup, allowing the guest to suspend the USB bus when idle, which in turn reduces the CPU overhead of an idle machine. [http://git.qemu.org/qemu.git/commit/?id=01eacab6e95267fd894d0c1013aa5bf55c320dc8 (commit)] [http://git.qemu.org/qemu.git/commit/?id=9159f6798ebfe0cdcfd1d1fb91c2c08b6d95954a (commit)] [http://git.qemu.org/qemu.git/commit/?id=34239c7bc972735391ca84283f8c8ad908dc61ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=ac57bbb614ace4f7b8b965562826a7f7fda00cdc (commit)]<br />
* The USB subsystem also got a bunch of patches to prepare it for USB 2.0 support.<br />
<br />
=== virtio ===<br />
* virtio-pci can use [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d34e6b175e61821026893ec5298cc8e7558df43a ioeventfd] for virtqueue notify. On systems that support KVM, the ioeventfd mechanism can be used to make virtqueue notify a lightweight exit by deferring hardware emulation to the iothread and allowing the VM to continue execution. This model is similar to how vhost receives virtqueue notifies. The result of this change is improved performance for userspace virtio devices. Virtio-blk throughput increases especially for multithreaded scenarios and virtio-net transmit throughput increases substantially. Read the commit message for more details. [http://git.qemu.org/qemu.git/commit/?id=25db9ebe15125deb32958c6df74996f745edf1f9 (commit)] [http://git.qemu.org/qemu.git/commit/?id=65d6dcbde84314c6d05a365a26a384f880a5c8fe (commit)]<br />
* Various fixes and stabilization for live-migration: [http://git.qemu.org/qemu.git/commit/?id=783e7706937fe15523b609b545587a028a2bdd03 (commit)] [http://git.qemu.org/qemu.git/commit/?id=954773230484f5afeb675e9ff814c97e54e69e17 (commit)] [http://git.qemu.org/qemu.git/commit/?id=1abeb5a65d515f8a8a9cfc4a82342f731bd9321f (commit)]<br />
* Various virtio-net improvements:<br />
** Make tx_timer timeout configurable [http://git.qemu.org/qemu.git/commit/?id=f0c07c7c7b4fe4f9b63c88341fd32707def5a058 (commit)]<br />
** Limit number of packets sent per TX flush [http://git.qemu.org/qemu.git/commit/?id=e3f30488e5f802547b3a60e40cebaef3b4ec16a3 (commit)]<br />
** Introduce a new bottom half packet TX [http://git.qemu.org/qemu.git/commit/?id=a697a334b3c4d3250e6420f5d38550ea10eb5319 (commit)]<br />
<br />
=== PCI/PCI Express ===<br />
* Improved PCI Express support and functionalities with the implementation of:<br />
**flr [http://www.pcisig.com/specifications/conventional/pci_30/ECN_Conventional_Adv_Caps_27Jul06.pdf (Function Level Reset)] [http://git.qemu.org/qemu.git/commit/?id=0ead87c8debaf12bf4e8cf5130e4e7fb83dbf126 (commit)] <br />
**aer [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/PCI/pcieaer-howto.txt;h=26d3d945c3c21aa965cd9b48c49cc42abf09df3f;hb=HEAD (Advanced Error Reporting)] and other improvements [http://git.qemu.org/qemu.git/commit/?id=1a1ea6f093eb8cf7c01788bc3708ba7003815563 (commit)] [http://git.qemu.org/qemu.git/commit/?id=34e65944c0351fabcd82aa8c85018980c7e87bff (commit)] [http://git.qemu.org/qemu.git/commit/?id=247c97f3f5ab0dae60778a2dea438bfed5c69e68 (commit)] [http://git.qemu.org/qemu.git/commit/?id=d33d9156fdffb87c99564c9630023da52c66f37a (commit)] [http://git.qemu.org/qemu.git/commit/?id=61620c2fff7dda789dbba513c18f534c0062062b (commit)] [http://git.qemu.org/qemu.git/commit/?id=a158f92fa78b1e87e5d196b72b750fedefb7b43e (commit)] [http://git.qemu.org/qemu.git/commit/?id=09b926d44674cbcf198425a5b8255e3cacb398ae (commit)] [http://git.qemu.org/qemu.git/commit/?id=c3f33667a64a6de0b92106c862247d97d81490ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=2b3cb353e7af7a90eec22ba9720dcef2a80c7f6f (commit)] [http://git.qemu.org/qemu.git/commit/?id=5f47c187d992d5147397ddd5323c732d3d39cb8f (commit)] [http://git.qemu.org/qemu.git/commit/?id=513691b7ff20262efe9aafb85c8dd4615588ad48 (commit)]<br />
**A new monitor command to inject errors into the PCI bus: '''pcie_aer_inject_error''' [http://git.qemu.org/qemu.git/commit/?id=2ae63bda50ec864a3e61d375b53c8e453ad50140 (commit)]<br />
* Implementation of [http://en.wikipedia.org/wiki/Message_Signaled_Interrupts Message Signaled Interrupts] (MSI/MSI-X) support [http://git.qemu.org/qemu.git/commit/?id=e4c7d2aef899780f9b9b86343bca4ac34c9e252f (commit)]<br />
* Separation of the PCI bridge code from the main PCI code. [http://git.qemu.org/qemu.git/commit/?id=cfb0a50a06825a0bee349cae3fa94f96242e83a5 (commit)]<br />
<br />
=== Sound ===<br />
* New Intel HD Audio support [http://git.qemu.org/qemu.git/commit/?id=d61a4ce8f01ac9f1810380e043db467d536eeb6b (commit)], adding three new devices:<br />
** intel-hda: Intel HD Audio Controller, the PCI device. <br />
** hda-duplex: HDA Codec. Attaches to the HDA bus. Supports 16bit stereo, rates 16k -> 96k, playback, recording and volume control (with CONFIG_MIXEMU=y).<br />
** hda-output: HDA Codec without recording support. Subset of the hda-duplex codec. Use this if you don't want your guests access your mic.<br />
* Usage: add '-device intel-hda -device hda-duplex' to your command line.<br />
*Tested guests:<br />
** Linux works.<br />
** Win7 works.<br />
** DOS (mpxplay) works.<br />
** WinXP doesn't work.<br />
<br />
== Block Drivers ==<br />
=== qcow2 ===<br />
* Added a writeback metadata cache. This improves performance of scenarios with lots of cluster allocations noticably (e.g. installation or after taking a snapshot), in some benchmarks by a factor of ten or more. Use cache=none or cache=writeback to take advantage from this change. [http://git.qemu.org/qemu.git/commit/?id=493810940bfaad0fd5dd9bfb79cdc89519f89588 (commit)] [http://git.qemu.org/qemu.git/commit/?id=29c1a7301af752de6721e031d31faa48887204bd (commit)] [http://git.qemu.org/qemu.git/commit/?id=3de0a2944bdb3047dce275560631834bcb4afe22 (commit)]<br />
* Copy snapshots out of QCOW2 disk, eg: '''qemu-img convert -f qcow2 -O qcow2 -s snapshot_name src_img bck_img''' [http://git.qemu.org/qemu.git/commit/?id=51ef67270b1d10e1fcf3de7368dccad1ba0bf9d1 (commit)]<br />
* Zero-copy read and write operations [http://git.qemu.org/qemu.git/commit/?id=6f5f060b736cedc2d962114d20805fdd2889513a (commit)] [http://git.qemu.org/qemu.git/commit/?id=bd28f835652e396841bb73080a07bcc08fe21bf0 (commit)]<br />
<br />
* Other fixes and code cleanups:<br />
** qcow2: Invalidate cache after failed read [http://git.qemu.org/qemu.git/commit/?id=1c02e2a17104fe7fc11893125864dc0daf1e6d5b (commit)]<br />
** block: Allow bdrv_flush to return errors [http://git.qemu.org/qemu.git/commit/?id=205ef7961f781496366e0a93a4ec621ad3724bd7 (commit)]<br />
** qcow2: Simplify image creation [http://git.qemu.org/qemu.git/commit/?id=a9420734b617be43d075c55b980479411807512e (commit)]<br />
<br />
=== qed ===<br />
* Introduction of the QEMU Enhanced Disk (qed) image format. It is a disk image format that forgoes features found in qcow2 in favor of better levels of performance and data integrity. Due to its simpler on-disk layout, it is possible to safely perform metadata updates more efficiently. [http://git.qemu.org/qemu.git/commit/?id=75411d236d93d79d8052e0116c3eeebe23e2778b (commit)] [http://git.qemu.org/qemu.git/commit/?id=298800cae72eb2a549374189e87615b2b0b79262 (commit)] [http://git.qemu.org/qemu.git/commit/?id=eabba580e6bb8d6b969c1368c6f90d72b4cde4f4 (commit)]<br />
* More information about qed: http://wiki.qemu.org/Features/QED<br />
* Initial thread discussion: http://lists.nongnu.org/archive/html/qemu-devel/2010-09/msg00310.html<br />
<br />
=== ceph/rbd ===<br />
* Introduction of the new ceph/rbd block driver. RBD is an block driver for the distributed file system Ceph.[http://git.qemu.org/qemu.git/commit/?id=f27aaf4b531bc0eb4f3e1f7accf4931cae36db0d (commit)]<br />
* More information about ceph: http://ceph.newdream.net/<br />
<br />
=== nbd ===<br />
* Improve qemu-nbd performance by 4400 %. This patch combines the reply header and payload send operation. [http://git.qemu.org/qemu.git/commit/?id=5fe16888d33af7aca0d613d888c161af68c755c3 (commit)]<br />
* Introduce NBD named exports. [http://git.qemu.org/qemu.git/commit/?id=1d45f8b542f6b80b24c44533ef0dd9e1a3b17ea5 (commit)]<br />
<br />
== Spice ==<br />
* New support for the SPICE protocol. The project main focus is to provide high-quality remote access to QEMU virtual machines. More information about SPICE can be found at the project's web site: http://spice-space.org/<br />
* New qxl device. qxl is a paravirtual graphics card. The qxl device is the bridge between the guest and the spice server (aka libspice-server). The spice server will send the rendering commands to the spice client, which will actually render them. The spice server is also able to render locally, which is done in case the guest wants read something from video memory. Local rendering is also used to support display over vnc and sdl. qxl is activated using '''-vga qxl'''. qxl supports multihead, additional cards can be added via ''''-device qxl'''.<br />
* Relevant commits:<br />
**spice: core bits [http://git.qemu.org/qemu.git/commit/?id=29b0040be6371c403dae0fef7fec36b814e300e8 (commit)]<br />
**spice: add keyboard [http://git.qemu.org/qemu.git/commit/?id=864401c2a709bcb66182c02372fb60a30055a4d7 (commit)]<br />
**spice: add mouse [http://git.qemu.org/qemu.git/commit/?id=78dd9ac1ca5130ae144a6abe8361a59483a5464b (commit)]<br />
**spice: simple display [http://git.qemu.org/qemu.git/commit/?id=a3e2226031496f479b5fe4a069ec1acd68a17e8d (commit)]<br />
**spice: add tablet support [http://git.qemu.org/qemu.git/commit/?id=869564a9c0f78b1972e1ac51e69cb2016af3b060 (commit)]<br />
**spice: tls support [http://git.qemu.org/qemu.git/commit/?id=c448e8552b0f6135dabddf944a7110f929c08320 (commit)]<br />
**spice: make compression configurable. [http://git.qemu.org/qemu.git/commit/?id=9f04e09e36e430dd57c69c88b0532e9dc5061a47 (commit)]<br />
**spice: add config options for channel security. [http://git.qemu.org/qemu.git/commit/?id=17b6dea08bd8c8484bc48dc67add236d2fe002b5 (commit)]<br />
**spice: add config options for the listening address [http://git.qemu.org/qemu.git/commit/?id=333b0eebcc8941b8453e837293eaa1191e967c25 (commit)]<br />
**spice: add misc config options [http://git.qemu.org/qemu.git/commit/?id=84a23f251fe85768338434040257bb96cf555de8 (commit)]<br />
**spice: add audio [http://git.qemu.org/qemu.git/commit/?id=3e31375378f40558f1ee7c258f3cc63c85596bfc (commit)]<br />
**spice: add qxl device [http://git.qemu.org/qemu.git/commit/?id=a19cbfb346425cc760ed19b4e746417df636b761 (commit)]<br />
**spice: connection events. [http://git.qemu.org/qemu.git/commit/?id=6f8c63fbd7edc0b41c09f8f8e2d41a3a65464a43 (commit)]<br />
<br />
== QMP / monitor ==<br />
* The work to facilitate the management of QEMU instances has been improved. [[QMP]] has received various fixes. Now it is possible to call a traditional monitor command through QMP, in case your application depends on the output or the command is not yet ported to QMP. <br />
* New commands:<br />
** query-spice / info spice [http://git.qemu.org/qemu.git/commit/?id=cb42a870c3f5b38911b1428cb785dd702bc47d0f (commit)]<br />
** human-monitor-command [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)] [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)]<br />
** set_password [http://git.qemu.org/qemu.git/commit/?id=7572150c189c6553c2448334116ab717680de66d (commit)]<br />
** block_resize command, allowing resizing of block devices while qemu is running [http://git.qemu.org/qemu.git/commit/?id=6d4a2b3a47959f02e7f307f50396e70e8464f95e (commit)]. For virtio-blk the size is updated automatically when this command is issued on the host. IDE is not supported. For SCSI devices the new size can be updated in Linux guests by doing the following shell command:<br />
echo > /sys/class/scsi_device/0:0:0:0/device/rescan<br />
<br />
== Tracing ==<br />
* Introduction of platform-independent tracing, more information about it: http://wiki.qemu.org/Features/Tracing<br />
* Documentation and tutorial: http://git.qemu.org/qemu.git/plain/docs/tracing.txt<br />
* Some relevant commits:<br />
** Add trace-events file for declaring trace events [http://git.qemu.org/qemu.git/commit/?id=94a420b170b3e997a185a4148accc87bdcd18156 (commit)]<br />
** Add a DTrace tracing backend targetted for SystemTAP compatibility [http://git.qemu.org/qemu.git/commit/?id=b3d08c029dd78ded5e35b74eaaa3d361821f83a7 (commit)]<br />
** Add LTTng Userspace Tracer backend [http://git.qemu.org/qemu.git/commit/?id=7e24e92a0615ee6be036743f2a035554d2ceac56 (commit)]<br />
** Add simple built-in tracing backend [http://git.qemu.org/qemu.git/commit/?id=26f7227bfe9a9abee3fe5190cbfc35dd876e06d9 (commit)]<br />
** Add stderr trace-event backend: [http://git.qemu.org/qemu.git/commit/?id=320fba2a1f384e17db150d74540a2cf005eb47b5 (commit)]<br />
** Support for dynamically enabling/disabling trace events [http://git.qemu.org/qemu.git/commit/?id=22890ab5e825601f4c3d5a1a6b4197904e5d1fee (commit)]<br />
** Specify trace file name [http://git.qemu.org/qemu.git/commit/?id=9410b56c82a107ed48c1f40aa6820c03094d97e9 (commit)]<br />
** Add trace-file command to open/close/flush trace file [http://git.qemu.org/qemu.git/commit/?id=c5ceb523fa6fc168d3f51e306fee3def458e047e (commit)]<br />
<br />
== Other stuff ==<br />
* Extend '''-option-rom''' command to have additional parameter '''bootindex''' [http://git.qemu.org/qemu.git/commit/?id=2e55e84282c545aeab8f5c9dd52a8073deaf3dbc (commit)]<br />
* Little endian / big endian MMIO framework. Until now, most devices had special hacks to allow them to work on big and little endian systems (ppc / x86). With that framework, they should mostly work with both and not require and device specific hacks anymore. [http://git.qemu.org/qemu.git/commit/?id=dd310534e3bf8045096654df41471fd7132887b2 (commit)]</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/0.14&diff=864ChangeLog/0.142011-02-01T14:48:42Z<p>Agraf: /* IDE / AHCI */</p>
<hr />
<div>'''QEMU 0.14.0 IS NOT YET RELEASED'''<br />
= 0.14.0 =<br />
== Targets ==<br />
=== i386/x86_64 ===<br />
* Waiting for Anthony, Avi or Marcelo.<br />
<br />
=== ARM and MIPS ===<br />
* Waiting for Aurelien.<br />
<br />
=== PPC ===<br />
<br />
* Fix running recent PPC64 kernels [http://git.qemu.org/qemu.git/commit/?id=f844c817d726cd2bdb431aa41c8217891ede2eaf (commit)]<br />
* New maintainer: Alexander Graf [http://git.qemu.org/qemu.git/commit/?id=42a876582906b1765db1c97152c967bc15401f84 (commit)]<br />
* Improve interrupt injection with KVM [http://git.qemu.org/qemu.git/commit/?id=fc87e185302a96c2675a1c3a86ca47c6a2d657ff (commit)]<br />
* Enable PV enabled guests for speedup with KVM [http://git.qemu.org/qemu.git/commit/?id=419ef5f1c6a9614e8ddcb0b0f826de692e7e4a43 (commit)] [http://git.qemu.org/qemu.git/commit/?id=45024f094c223e8096f366520414cdf1a74dbff3 (commit)]<br />
<br />
=== s390x ===<br />
<br />
* No news, business as usual.<br />
<br />
== Devices ==<br />
=== IDE / AHCI ===<br />
* Added emulation layer for an ICH-9 [http://www.intel.com/technology/serialata/ahci.htm AHCI] controller (not yet stable). Tested with Linux, OpenBSD, Windows Vista and Windows 7. The AHCI emulation supports [http://en.wikipedia.org/wiki/Native_Command_Queuing NCQ], so multiple read or write requests can be outstanding at the same time.[http://git.qemu.org/qemu.git/commit/?id=f6ad2e32f8d833c7f1c75dc084a84a8f02704d64 (commit)]<br />
** Final version series: http://www.mail-archive.com/qemu-devel@nongnu.org/msg49323.html<br />
** to use it, use the following command line snippet: -drive id=disk,file=<your image goes here>,if=none -device ahci,id=ahci -device ide-ive,drive=disk,bus=ahci.0<br />
<br />
=== SCSI ===<br />
* Ask Kevin.<br />
<br />
=== USB ===<br />
* Added USB support for remote wakeup, allowing the guest to suspend the USB bus when idle, which in turn reduces the CPU overhead of an idle machine. [http://git.qemu.org/qemu.git/commit/?id=01eacab6e95267fd894d0c1013aa5bf55c320dc8 (commit)] [http://git.qemu.org/qemu.git/commit/?id=9159f6798ebfe0cdcfd1d1fb91c2c08b6d95954a (commit)] [http://git.qemu.org/qemu.git/commit/?id=34239c7bc972735391ca84283f8c8ad908dc61ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=ac57bbb614ace4f7b8b965562826a7f7fda00cdc (commit)]<br />
* The USB subsystem also got a bunch of patches to prepare it for USB 2.0 support.<br />
<br />
=== virtio ===<br />
* virtio-pci can use [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d34e6b175e61821026893ec5298cc8e7558df43a ioeventfd] for virtqueue notify. On systems that support KVM, the ioeventfd mechanism can be used to make virtqueue notify a lightweight exit by deferring hardware emulation to the iothread and allowing the VM to continue execution. This model is similar to how vhost receives virtqueue notifies. The result of this change is improved performance for userspace virtio devices. Virtio-blk throughput increases especially for multithreaded scenarios and virtio-net transmit throughput increases substantially. Read the commit message for more details. [http://git.qemu.org/qemu.git/commit/?id=25db9ebe15125deb32958c6df74996f745edf1f9 (commit)] [http://git.qemu.org/qemu.git/commit/?id=65d6dcbde84314c6d05a365a26a384f880a5c8fe (commit)]<br />
* Various fixes and stabilization for live-migration: [http://git.qemu.org/qemu.git/commit/?id=783e7706937fe15523b609b545587a028a2bdd03 (commit)] [http://git.qemu.org/qemu.git/commit/?id=954773230484f5afeb675e9ff814c97e54e69e17 (commit)] [http://git.qemu.org/qemu.git/commit/?id=1abeb5a65d515f8a8a9cfc4a82342f731bd9321f (commit)]<br />
* Various virtio-net improvements:<br />
** Make tx_timer timeout configurable [http://git.qemu.org/qemu.git/commit/?id=f0c07c7c7b4fe4f9b63c88341fd32707def5a058 (commit)]<br />
** Limit number of packets sent per TX flush [http://git.qemu.org/qemu.git/commit/?id=e3f30488e5f802547b3a60e40cebaef3b4ec16a3 (commit)]<br />
** Introduce a new bottom half packet TX [http://git.qemu.org/qemu.git/commit/?id=a697a334b3c4d3250e6420f5d38550ea10eb5319 (commit)]<br />
<br />
=== PCI/PCI Express ===<br />
* Improved PCI Express support and functionalities with the implementation of:<br />
**flr [http://www.pcisig.com/specifications/conventional/pci_30/ECN_Conventional_Adv_Caps_27Jul06.pdf (Function Level Reset)] [http://git.qemu.org/qemu.git/commit/?id=0ead87c8debaf12bf4e8cf5130e4e7fb83dbf126 (commit)] <br />
**aer [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/PCI/pcieaer-howto.txt;h=26d3d945c3c21aa965cd9b48c49cc42abf09df3f;hb=HEAD (Advanced Error Reporting)] and other improvements [http://git.qemu.org/qemu.git/commit/?id=1a1ea6f093eb8cf7c01788bc3708ba7003815563 (commit)] [http://git.qemu.org/qemu.git/commit/?id=34e65944c0351fabcd82aa8c85018980c7e87bff (commit)] [http://git.qemu.org/qemu.git/commit/?id=247c97f3f5ab0dae60778a2dea438bfed5c69e68 (commit)] [http://git.qemu.org/qemu.git/commit/?id=d33d9156fdffb87c99564c9630023da52c66f37a (commit)] [http://git.qemu.org/qemu.git/commit/?id=61620c2fff7dda789dbba513c18f534c0062062b (commit)] [http://git.qemu.org/qemu.git/commit/?id=a158f92fa78b1e87e5d196b72b750fedefb7b43e (commit)] [http://git.qemu.org/qemu.git/commit/?id=09b926d44674cbcf198425a5b8255e3cacb398ae (commit)] [http://git.qemu.org/qemu.git/commit/?id=c3f33667a64a6de0b92106c862247d97d81490ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=2b3cb353e7af7a90eec22ba9720dcef2a80c7f6f (commit)] [http://git.qemu.org/qemu.git/commit/?id=5f47c187d992d5147397ddd5323c732d3d39cb8f (commit)] [http://git.qemu.org/qemu.git/commit/?id=513691b7ff20262efe9aafb85c8dd4615588ad48 (commit)]<br />
**A new monitor command to inject errors into the PCI bus: '''pcie_aer_inject_error''' [http://git.qemu.org/qemu.git/commit/?id=2ae63bda50ec864a3e61d375b53c8e453ad50140 (commit)]<br />
* Implementation of [http://en.wikipedia.org/wiki/Message_Signaled_Interrupts Message Signaled Interrupts] (MSI/MSI-X) support [http://git.qemu.org/qemu.git/commit/?id=e4c7d2aef899780f9b9b86343bca4ac34c9e252f (commit)]<br />
* Separation of the PCI bridge code from the main PCI code. [http://git.qemu.org/qemu.git/commit/?id=cfb0a50a06825a0bee349cae3fa94f96242e83a5 (commit)]<br />
<br />
=== Sound ===<br />
* New Intel HD Audio support [http://git.qemu.org/qemu.git/commit/?id=d61a4ce8f01ac9f1810380e043db467d536eeb6b (commit)], adding three new devices:<br />
** intel-hda: Intel HD Audio Controller, the PCI device. <br />
** hda-duplex: HDA Codec. Attaches to the HDA bus. Supports 16bit stereo, rates 16k -> 96k, playback, recording and volume control (with CONFIG_MIXEMU=y).<br />
** hda-output: HDA Codec without recording support. Subset of the hda-duplex codec. Use this if you don't want your guests access your mic.<br />
* Usage: add '-device intel-hda -device hda-duplex' to your command line.<br />
*Tested guests:<br />
** Linux works.<br />
** Win7 works.<br />
** DOS (mpxplay) works.<br />
** WinXP doesn't work.<br />
<br />
== Block Drivers ==<br />
=== qcow2 ===<br />
* Added a writeback metadata cache. This improves performance of scenarios with lots of cluster allocations noticably (e.g. installation or after taking a snapshot), in some benchmarks by a factor of ten or more. Use cache=none or cache=writeback to take advantage from this change. [http://git.qemu.org/qemu.git/commit/?id=493810940bfaad0fd5dd9bfb79cdc89519f89588 (commit)] [http://git.qemu.org/qemu.git/commit/?id=29c1a7301af752de6721e031d31faa48887204bd (commit)] [http://git.qemu.org/qemu.git/commit/?id=3de0a2944bdb3047dce275560631834bcb4afe22 (commit)]<br />
* Copy snapshots out of QCOW2 disk, eg: '''qemu-img convert -f qcow2 -O qcow2 -s snapshot_name src_img bck_img''' [http://git.qemu.org/qemu.git/commit/?id=51ef67270b1d10e1fcf3de7368dccad1ba0bf9d1 (commit)]<br />
* Zero-copy read and write operations [http://git.qemu.org/qemu.git/commit/?id=6f5f060b736cedc2d962114d20805fdd2889513a (commit)] [http://git.qemu.org/qemu.git/commit/?id=bd28f835652e396841bb73080a07bcc08fe21bf0 (commit)]<br />
<br />
* Other fixes and code cleanups:<br />
** qcow2: Invalidate cache after failed read [http://git.qemu.org/qemu.git/commit/?id=1c02e2a17104fe7fc11893125864dc0daf1e6d5b (commit)]<br />
** block: Allow bdrv_flush to return errors [http://git.qemu.org/qemu.git/commit/?id=205ef7961f781496366e0a93a4ec621ad3724bd7 (commit)]<br />
** qcow2: Simplify image creation [http://git.qemu.org/qemu.git/commit/?id=a9420734b617be43d075c55b980479411807512e (commit)]<br />
<br />
=== qed ===<br />
* Introduction of the QEMU Enhanced Disk (qed) image format. It is a disk image format that forgoes features found in qcow2 in favor of better levels of performance and data integrity. Due to its simpler on-disk layout, it is possible to safely perform metadata updates more efficiently. [http://git.qemu.org/qemu.git/commit/?id=75411d236d93d79d8052e0116c3eeebe23e2778b (commit)] [http://git.qemu.org/qemu.git/commit/?id=298800cae72eb2a549374189e87615b2b0b79262 (commit)] [http://git.qemu.org/qemu.git/commit/?id=eabba580e6bb8d6b969c1368c6f90d72b4cde4f4 (commit)]<br />
* More information about qed: http://wiki.qemu.org/Features/QED<br />
* Initial thread discussion: http://lists.nongnu.org/archive/html/qemu-devel/2010-09/msg00310.html<br />
<br />
=== ceph/rbd ===<br />
* Introduction of the new ceph/rbd block driver. RBD is an block driver for the distributed file system Ceph.[http://git.qemu.org/qemu.git/commit/?id=f27aaf4b531bc0eb4f3e1f7accf4931cae36db0d (commit)]<br />
* More information about ceph: http://ceph.newdream.net/<br />
<br />
=== nbd ===<br />
* Improve qemu-nbd performance by 4400 %. This patch combines the reply header and payload send operation. [http://git.qemu.org/qemu.git/commit/?id=5fe16888d33af7aca0d613d888c161af68c755c3 (commit)]<br />
* Introduce NBD named exports. [http://git.qemu.org/qemu.git/commit/?id=1d45f8b542f6b80b24c44533ef0dd9e1a3b17ea5 (commit)]<br />
<br />
== Spice ==<br />
* New support for the SPICE protocol. The project main focus is to provide high-quality remote access to QEMU virtual machines. More information about SPICE can be found at the project's web site: http://spice-space.org/<br />
* New qxl device. qxl is a paravirtual graphics card. The qxl device is the bridge between the guest and the spice server (aka libspice-server). The spice server will send the rendering commands to the spice client, which will actually render them. The spice server is also able to render locally, which is done in case the guest wants read something from video memory. Local rendering is also used to support display over vnc and sdl. qxl is activated using '''-vga qxl'''. qxl supports multihead, additional cards can be added via ''''-device qxl'''.<br />
* Relevant commits:<br />
**spice: core bits [http://git.qemu.org/qemu.git/commit/?id=29b0040be6371c403dae0fef7fec36b814e300e8 (commit)]<br />
**spice: add keyboard [http://git.qemu.org/qemu.git/commit/?id=864401c2a709bcb66182c02372fb60a30055a4d7 (commit)]<br />
**spice: add mouse [http://git.qemu.org/qemu.git/commit/?id=78dd9ac1ca5130ae144a6abe8361a59483a5464b (commit)]<br />
**spice: simple display [http://git.qemu.org/qemu.git/commit/?id=a3e2226031496f479b5fe4a069ec1acd68a17e8d (commit)]<br />
**spice: add tablet support [http://git.qemu.org/qemu.git/commit/?id=869564a9c0f78b1972e1ac51e69cb2016af3b060 (commit)]<br />
**spice: tls support [http://git.qemu.org/qemu.git/commit/?id=c448e8552b0f6135dabddf944a7110f929c08320 (commit)]<br />
**spice: make compression configurable. [http://git.qemu.org/qemu.git/commit/?id=9f04e09e36e430dd57c69c88b0532e9dc5061a47 (commit)]<br />
**spice: add config options for channel security. [http://git.qemu.org/qemu.git/commit/?id=17b6dea08bd8c8484bc48dc67add236d2fe002b5 (commit)]<br />
**spice: add config options for the listening address [http://git.qemu.org/qemu.git/commit/?id=333b0eebcc8941b8453e837293eaa1191e967c25 (commit)]<br />
**spice: add misc config options [http://git.qemu.org/qemu.git/commit/?id=84a23f251fe85768338434040257bb96cf555de8 (commit)]<br />
**spice: add audio [http://git.qemu.org/qemu.git/commit/?id=3e31375378f40558f1ee7c258f3cc63c85596bfc (commit)]<br />
**spice: add qxl device [http://git.qemu.org/qemu.git/commit/?id=a19cbfb346425cc760ed19b4e746417df636b761 (commit)]<br />
**spice: connection events. [http://git.qemu.org/qemu.git/commit/?id=6f8c63fbd7edc0b41c09f8f8e2d41a3a65464a43 (commit)]<br />
<br />
== QMP / monitor ==<br />
* The work to facilitate the management of QEMU instances has been improved. [[QMP]] has received various fixes. Now it is possible to call a traditional monitor command through QMP, in case your application depends on the output or the command is not yet ported to QMP. <br />
* New commands:<br />
** query-spice / info spice [http://git.qemu.org/qemu.git/commit/?id=cb42a870c3f5b38911b1428cb785dd702bc47d0f (commit)]<br />
** human-monitor-command [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)] [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)]<br />
** set_password [http://git.qemu.org/qemu.git/commit/?id=7572150c189c6553c2448334116ab717680de66d (commit)]<br />
** block_resize command, allowing resizing of block devices while qemu is running [http://git.qemu.org/qemu.git/commit/?id=6d4a2b3a47959f02e7f307f50396e70e8464f95e (commit)]. For virtio-blk the size is updated automatically when this command is issued on the host. IDE is not supported. For SCSI devices the new size can be updated in Linux guests by doing the following shell command:<br />
echo > /sys/class/scsi_device/0:0:0:0/device/rescan<br />
<br />
== Tracing ==<br />
* Introduction of platform-independent tracing, more information about it: http://wiki.qemu.org/Features/Tracing<br />
* Documentation and tutorial: http://git.qemu.org/qemu.git/plain/docs/tracing.txt<br />
* Some relevant commits:<br />
** Add trace-events file for declaring trace events [http://git.qemu.org/qemu.git/commit/?id=94a420b170b3e997a185a4148accc87bdcd18156 (commit)]<br />
** Add a DTrace tracing backend targetted for SystemTAP compatibility [http://git.qemu.org/qemu.git/commit/?id=b3d08c029dd78ded5e35b74eaaa3d361821f83a7 (commit)]<br />
** Add LTTng Userspace Tracer backend [http://git.qemu.org/qemu.git/commit/?id=7e24e92a0615ee6be036743f2a035554d2ceac56 (commit)]<br />
** Add simple built-in tracing backend [http://git.qemu.org/qemu.git/commit/?id=26f7227bfe9a9abee3fe5190cbfc35dd876e06d9 (commit)]<br />
** Add stderr trace-event backend: [http://git.qemu.org/qemu.git/commit/?id=320fba2a1f384e17db150d74540a2cf005eb47b5 (commit)]<br />
** Support for dynamically enabling/disabling trace events [http://git.qemu.org/qemu.git/commit/?id=22890ab5e825601f4c3d5a1a6b4197904e5d1fee (commit)]<br />
** Specify trace file name [http://git.qemu.org/qemu.git/commit/?id=9410b56c82a107ed48c1f40aa6820c03094d97e9 (commit)]<br />
** Add trace-file command to open/close/flush trace file [http://git.qemu.org/qemu.git/commit/?id=c5ceb523fa6fc168d3f51e306fee3def458e047e (commit)]<br />
<br />
== Other stuff ==<br />
* Extend '''-option-rom''' command to have additional parameter '''bootindex''' [http://git.qemu.org/qemu.git/commit/?id=2e55e84282c545aeab8f5c9dd52a8073deaf3dbc (commit)]<br />
* Little endian / big endian MMIO framework. Until now, most devices had special hacks to allow them to work on big and little endian systems (ppc / x86). With that framework, they should mostly work with both and not require and device specific hacks anymore. [http://git.qemu.org/qemu.git/commit/?id=dd310534e3bf8045096654df41471fd7132887b2 (commit)]</div>Agrafhttps://wiki.qemu.org/index.php?title=ChangeLog/0.14&diff=862ChangeLog/0.142011-02-01T12:25:13Z<p>Agraf: Add changelog for PPC and s390</p>
<hr />
<div>'''QEMU 0.14.0 IS NOT YET RELEASED'''<br />
= 0.14.0 =<br />
== Targets ==<br />
=== i386/x86_64 ===<br />
* Waiting for Anthony, Avi or Marcelo.<br />
<br />
=== ARM and MIPS ===<br />
* Waiting for Aurelien.<br />
<br />
=== PPC ===<br />
<br />
* Fix running recent PPC64 kernels [http://git.qemu.org/qemu.git/commit/?id=f844c817d726cd2bdb431aa41c8217891ede2eaf (commit)]<br />
* New maintainer: Alexander Graf [http://git.qemu.org/qemu.git/commit/?id=42a876582906b1765db1c97152c967bc15401f84 (commit)]<br />
* Improve interrupt injection with KVM [http://git.qemu.org/qemu.git/commit/?id=fc87e185302a96c2675a1c3a86ca47c6a2d657ff (commit)]<br />
* Enable PV enabled guests for speedup with KVM [http://git.qemu.org/qemu.git/commit/?id=419ef5f1c6a9614e8ddcb0b0f826de692e7e4a43 (commit)] [http://git.qemu.org/qemu.git/commit/?id=45024f094c223e8096f366520414cdf1a74dbff3 (commit)]<br />
<br />
=== s390x ===<br />
<br />
* No news, business as usual.<br />
<br />
== Devices ==<br />
=== IDE / AHCI ===<br />
* Added emulation layer for an ICH-9 [http://www.intel.com/technology/serialata/ahci.htm AHCI] controller (not yet stable). Tested with Linux, OpenBSD, Windows Vista and Windows 7. The AHCI emulation supports [http://en.wikipedia.org/wiki/Native_Command_Queuing NCQ], so multiple read or write requests can be outstanding at the same time.[http://git.qemu.org/qemu.git/commit/?id=f6ad2e32f8d833c7f1c75dc084a84a8f02704d64 (commit)]<br />
** Final version series: http://www.mail-archive.com/qemu-devel@nongnu.org/msg49323.html<br />
<br />
=== SCSI ===<br />
* Ask Kevin.<br />
<br />
=== USB ===<br />
* Added USB support for remote wakeup, allowing the guest to suspend the USB bus when idle, which in turn reduces the CPU overhead of an idle machine. [http://git.qemu.org/qemu.git/commit/?id=01eacab6e95267fd894d0c1013aa5bf55c320dc8 (commit)] [http://git.qemu.org/qemu.git/commit/?id=9159f6798ebfe0cdcfd1d1fb91c2c08b6d95954a (commit)] [http://git.qemu.org/qemu.git/commit/?id=34239c7bc972735391ca84283f8c8ad908dc61ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=ac57bbb614ace4f7b8b965562826a7f7fda00cdc (commit)]<br />
* The USB subsystem also got a bunch of patches to prepare it for USB 2.0 support.<br />
<br />
=== virtio ===<br />
* virtio-pci can use [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=d34e6b175e61821026893ec5298cc8e7558df43a ioeventfd] for virtqueue notify. On systems that support KVM, the ioeventfd mechanism can be used to make virtqueue notify a lightweight exit by deferring hardware emulation to the iothread and allowing the VM to continue execution. This model is similar to how vhost receives virtqueue notifies. The result of this change is improved performance for userspace virtio devices. Virtio-blk throughput increases especially for multithreaded scenarios and virtio-net transmit throughput increases substantially. Read the commit message for more details. [http://git.qemu.org/qemu.git/commit/?id=25db9ebe15125deb32958c6df74996f745edf1f9 (commit)] [http://git.qemu.org/qemu.git/commit/?id=65d6dcbde84314c6d05a365a26a384f880a5c8fe (commit)]<br />
* Various fixes and stabilization for live-migration: [http://git.qemu.org/qemu.git/commit/?id=783e7706937fe15523b609b545587a028a2bdd03 (commit)] [http://git.qemu.org/qemu.git/commit/?id=954773230484f5afeb675e9ff814c97e54e69e17 (commit)] [http://git.qemu.org/qemu.git/commit/?id=1abeb5a65d515f8a8a9cfc4a82342f731bd9321f (commit)]<br />
* Various virtio-net improvements:<br />
** Make tx_timer timeout configurable [http://git.qemu.org/qemu.git/commit/?id=f0c07c7c7b4fe4f9b63c88341fd32707def5a058 (commit)]<br />
** Limit number of packets sent per TX flush [http://git.qemu.org/qemu.git/commit/?id=e3f30488e5f802547b3a60e40cebaef3b4ec16a3 (commit)]<br />
** Introduce a new bottom half packet TX [http://git.qemu.org/qemu.git/commit/?id=a697a334b3c4d3250e6420f5d38550ea10eb5319 (commit)]<br />
<br />
=== PCI/PCI Express ===<br />
* Improved PCI Express support and functionalities with the implementation of:<br />
**flr [http://www.pcisig.com/specifications/conventional/pci_30/ECN_Conventional_Adv_Caps_27Jul06.pdf (Function Level Reset)] [http://git.qemu.org/qemu.git/commit/?id=0ead87c8debaf12bf4e8cf5130e4e7fb83dbf126 (commit)] <br />
**aer [http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=blob;f=Documentation/PCI/pcieaer-howto.txt;h=26d3d945c3c21aa965cd9b48c49cc42abf09df3f;hb=HEAD (Advanced Error Reporting)] and other improvements [http://git.qemu.org/qemu.git/commit/?id=1a1ea6f093eb8cf7c01788bc3708ba7003815563 (commit)] [http://git.qemu.org/qemu.git/commit/?id=34e65944c0351fabcd82aa8c85018980c7e87bff (commit)] [http://git.qemu.org/qemu.git/commit/?id=247c97f3f5ab0dae60778a2dea438bfed5c69e68 (commit)] [http://git.qemu.org/qemu.git/commit/?id=d33d9156fdffb87c99564c9630023da52c66f37a (commit)] [http://git.qemu.org/qemu.git/commit/?id=61620c2fff7dda789dbba513c18f534c0062062b (commit)] [http://git.qemu.org/qemu.git/commit/?id=a158f92fa78b1e87e5d196b72b750fedefb7b43e (commit)] [http://git.qemu.org/qemu.git/commit/?id=09b926d44674cbcf198425a5b8255e3cacb398ae (commit)] [http://git.qemu.org/qemu.git/commit/?id=c3f33667a64a6de0b92106c862247d97d81490ef (commit)] [http://git.qemu.org/qemu.git/commit/?id=2b3cb353e7af7a90eec22ba9720dcef2a80c7f6f (commit)] [http://git.qemu.org/qemu.git/commit/?id=5f47c187d992d5147397ddd5323c732d3d39cb8f (commit)] [http://git.qemu.org/qemu.git/commit/?id=513691b7ff20262efe9aafb85c8dd4615588ad48 (commit)]<br />
**A new monitor command to inject errors into the PCI bus: '''pcie_aer_inject_error''' [http://git.qemu.org/qemu.git/commit/?id=2ae63bda50ec864a3e61d375b53c8e453ad50140 (commit)]<br />
* Implementation of [http://en.wikipedia.org/wiki/Message_Signaled_Interrupts Message Signaled Interrupts] (MSI/MSI-X) support [http://git.qemu.org/qemu.git/commit/?id=e4c7d2aef899780f9b9b86343bca4ac34c9e252f (commit)]<br />
* Separation of the PCI bridge code from the main PCI code. [http://git.qemu.org/qemu.git/commit/?id=cfb0a50a06825a0bee349cae3fa94f96242e83a5 (commit)]<br />
<br />
=== Sound ===<br />
* New Intel HD Audio support [http://git.qemu.org/qemu.git/commit/?id=d61a4ce8f01ac9f1810380e043db467d536eeb6b (commit)], adding three new devices:<br />
** intel-hda: Intel HD Audio Controller, the PCI device. <br />
** hda-duplex: HDA Codec. Attaches to the HDA bus. Supports 16bit stereo, rates 16k -> 96k, playback, recording and volume control (with CONFIG_MIXEMU=y).<br />
** hda-output: HDA Codec without recording support. Subset of the hda-duplex codec. Use this if you don't want your guests access your mic.<br />
* Usage: add '-device intel-hda -device hda-duplex' to your command line.<br />
*Tested guests:<br />
** Linux works.<br />
** Win7 works.<br />
** DOS (mpxplay) works.<br />
** WinXP doesn't work.<br />
<br />
== Block Drivers ==<br />
=== qcow2 ===<br />
* Added a writeback metadata cache. This improves performance of scenarios with lots of cluster allocations noticably (e.g. installation or after taking a snapshot), in some benchmarks by a factor of ten or more. Use cache=none or cache=writeback to take advantage from this change. [http://git.qemu.org/qemu.git/commit/?id=493810940bfaad0fd5dd9bfb79cdc89519f89588 (commit)] [http://git.qemu.org/qemu.git/commit/?id=29c1a7301af752de6721e031d31faa48887204bd (commit)] [http://git.qemu.org/qemu.git/commit/?id=3de0a2944bdb3047dce275560631834bcb4afe22 (commit)]<br />
* Copy snapshots out of QCOW2 disk, eg: '''qemu-img convert -f qcow2 -O qcow2 -s snapshot_name src_img bck_img''' [http://git.qemu.org/qemu.git/commit/?id=51ef67270b1d10e1fcf3de7368dccad1ba0bf9d1 (commit)]<br />
* Zero-copy read and write operations [http://git.qemu.org/qemu.git/commit/?id=6f5f060b736cedc2d962114d20805fdd2889513a (commit)] [http://git.qemu.org/qemu.git/commit/?id=bd28f835652e396841bb73080a07bcc08fe21bf0 (commit)]<br />
<br />
* Other fixes and code cleanups:<br />
** qcow2: Invalidate cache after failed read [http://git.qemu.org/qemu.git/commit/?id=1c02e2a17104fe7fc11893125864dc0daf1e6d5b (commit)]<br />
** block: Allow bdrv_flush to return errors [http://git.qemu.org/qemu.git/commit/?id=205ef7961f781496366e0a93a4ec621ad3724bd7 (commit)]<br />
** qcow2: Simplify image creation [http://git.qemu.org/qemu.git/commit/?id=a9420734b617be43d075c55b980479411807512e (commit)]<br />
<br />
=== qed ===<br />
* Introduction of the QEMU Enhanced Disk (qed) image format. It is a disk image format that forgoes features found in qcow2 in favor of better levels of performance and data integrity. Due to its simpler on-disk layout, it is possible to safely perform metadata updates more efficiently. [http://git.qemu.org/qemu.git/commit/?id=75411d236d93d79d8052e0116c3eeebe23e2778b (commit)] [http://git.qemu.org/qemu.git/commit/?id=298800cae72eb2a549374189e87615b2b0b79262 (commit)] [http://git.qemu.org/qemu.git/commit/?id=eabba580e6bb8d6b969c1368c6f90d72b4cde4f4 (commit)]<br />
* More information about qed: http://wiki.qemu.org/Features/QED<br />
* Initial thread discussion: http://lists.nongnu.org/archive/html/qemu-devel/2010-09/msg00310.html<br />
<br />
=== ceph/rbd ===<br />
* Introduction of the new ceph/rbd block driver. RBD is an block driver for the distributed file system Ceph.[http://git.qemu.org/qemu.git/commit/?id=f27aaf4b531bc0eb4f3e1f7accf4931cae36db0d (commit)]<br />
* More information about ceph: http://ceph.newdream.net/<br />
<br />
=== nbd ===<br />
* Improve qemu-nbd performance by 4400 %. This patch combines the reply header and payload send operation. [http://git.qemu.org/qemu.git/commit/?id=5fe16888d33af7aca0d613d888c161af68c755c3 (commit)]<br />
* Introduce NBD named exports. [http://git.qemu.org/qemu.git/commit/?id=1d45f8b542f6b80b24c44533ef0dd9e1a3b17ea5 (commit)]<br />
<br />
== Spice ==<br />
* New support for the SPICE protocol. The project main focus is to provide high-quality remote access to QEMU virtual machines. More information about SPICE can be found at the project's web site: http://spice-space.org/<br />
* New qxl device. qxl is a paravirtual graphics card. The qxl device is the bridge between the guest and the spice server (aka libspice-server). The spice server will send the rendering commands to the spice client, which will actually render them. The spice server is also able to render locally, which is done in case the guest wants read something from video memory. Local rendering is also used to support display over vnc and sdl. qxl is activated using '''-vga qxl'''. qxl supports multihead, additional cards can be added via ''''-device qxl'''.<br />
* Relevant commits:<br />
**spice: core bits [http://git.qemu.org/qemu.git/commit/?id=29b0040be6371c403dae0fef7fec36b814e300e8 (commit)]<br />
**spice: add keyboard [http://git.qemu.org/qemu.git/commit/?id=864401c2a709bcb66182c02372fb60a30055a4d7 (commit)]<br />
**spice: add mouse [http://git.qemu.org/qemu.git/commit/?id=78dd9ac1ca5130ae144a6abe8361a59483a5464b (commit)]<br />
**spice: simple display [http://git.qemu.org/qemu.git/commit/?id=a3e2226031496f479b5fe4a069ec1acd68a17e8d (commit)]<br />
**spice: add tablet support [http://git.qemu.org/qemu.git/commit/?id=869564a9c0f78b1972e1ac51e69cb2016af3b060 (commit)]<br />
**spice: tls support [http://git.qemu.org/qemu.git/commit/?id=c448e8552b0f6135dabddf944a7110f929c08320 (commit)]<br />
**spice: make compression configurable. [http://git.qemu.org/qemu.git/commit/?id=9f04e09e36e430dd57c69c88b0532e9dc5061a47 (commit)]<br />
**spice: add config options for channel security. [http://git.qemu.org/qemu.git/commit/?id=17b6dea08bd8c8484bc48dc67add236d2fe002b5 (commit)]<br />
**spice: add config options for the listening address [http://git.qemu.org/qemu.git/commit/?id=333b0eebcc8941b8453e837293eaa1191e967c25 (commit)]<br />
**spice: add misc config options [http://git.qemu.org/qemu.git/commit/?id=84a23f251fe85768338434040257bb96cf555de8 (commit)]<br />
**spice: add audio [http://git.qemu.org/qemu.git/commit/?id=3e31375378f40558f1ee7c258f3cc63c85596bfc (commit)]<br />
**spice: add qxl device [http://git.qemu.org/qemu.git/commit/?id=a19cbfb346425cc760ed19b4e746417df636b761 (commit)]<br />
**spice: connection events. [http://git.qemu.org/qemu.git/commit/?id=6f8c63fbd7edc0b41c09f8f8e2d41a3a65464a43 (commit)]<br />
<br />
== QMP / monitor ==<br />
* The work to facilitate the management of QEMU instances has been improved. [[QMP]] has received various fixes. Now it is possible to call a traditional monitor command through QMP, in case your application depends on the output or the command is not yet ported to QMP. <br />
* New commands:<br />
** query-spice / info spice [http://git.qemu.org/qemu.git/commit/?id=cb42a870c3f5b38911b1428cb785dd702bc47d0f (commit)]<br />
** human-monitor-command [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)] [http://git.qemu.org/qemu.git/commit/?id=0268d97c51207f35a5a01239ad92ef2c35dcd5ba (commit)]<br />
** set_password [http://git.qemu.org/qemu.git/commit/?id=7572150c189c6553c2448334116ab717680de66d (commit)]<br />
<br />
== Tracing ==<br />
* Introduction of platform-independent tracing, more information about it: http://wiki.qemu.org/Features/Tracing<br />
* Documentation and tutorial: http://git.qemu.org/qemu.git/plain/docs/tracing.txt<br />
* Some relevant commits:<br />
** Add trace-events file for declaring trace events [http://git.qemu.org/qemu.git/commit/?id=94a420b170b3e997a185a4148accc87bdcd18156 (commit)]<br />
** Add a DTrace tracing backend targetted for SystemTAP compatibility [http://git.qemu.org/qemu.git/commit/?id=b3d08c029dd78ded5e35b74eaaa3d361821f83a7 (commit)]<br />
** Add LTTng Userspace Tracer backend [http://git.qemu.org/qemu.git/commit/?id=7e24e92a0615ee6be036743f2a035554d2ceac56 (commit)]<br />
** Add simple built-in tracing backend [http://git.qemu.org/qemu.git/commit/?id=26f7227bfe9a9abee3fe5190cbfc35dd876e06d9 (commit)]<br />
** Support for dynamically enabling/disabling trace events [http://git.qemu.org/qemu.git/commit/?id=22890ab5e825601f4c3d5a1a6b4197904e5d1fee (commit)]<br />
** Specify trace file name [http://git.qemu.org/qemu.git/commit/?id=9410b56c82a107ed48c1f40aa6820c03094d97e9 (commit)]<br />
** Add trace-file command to open/close/flush trace file [http://git.qemu.org/qemu.git/commit/?id=c5ceb523fa6fc168d3f51e306fee3def458e047e (commit)]<br />
<br />
== Other stuff ==<br />
* Extend '''-option-rom''' command to have additional parameter '''bootindex''' [http://git.qemu.org/qemu.git/commit/?id=2e55e84282c545aeab8f5c9dd52a8073deaf3dbc (commit)]<br />
* Little endian / big endian MMIO framework. Until now, most devices had special hacks to allow them to work on big and little endian systems (ppc / x86). With that framework, they should mostly work with both and not require and device specific hacks anymore.</div>Agraf