GSoC/GCI Archive
Google Summer of Code 2013

Web Page:

Mailing List:

QEMU is a generic and open source machine emulator and virtualizer.

When used as a machine emulator, QEMU can run OSes and programs made for one machine (e.g. an ARM board) on a different machine (e.g. your own PC). By using dynamic translation, it achieves very good performance.

When used as a virtualizer, QEMU achieves near native performances by executing the guest code directly on the host CPU. QEMU supports virtualization when executing under the Xen hypervisor or using the KVM kernel module in Linux. When using KVM, QEMU can virtualize x86, server and embedded PowerPC, and S390 guests. also acts as an umbrella organization for QEMU ecosystem projects including libvirt and the KVM Linux kernel module.


  • Add MTP emulation to QEMU Expand the current Media Transfer Protocol device emulation code (which presents a view of the host machine's filesystem as an MTP device to the guest) to run portably and perform writes as well as reads, and ensure the code is robust and properly integrated into the upstream QEMU codebase.
  • Apply for GSoC'13 - Nested Virtualization Project I'm a student of Peking University, China, and now seeking for a master degree. My research area is distributed system and virtualization. I have focused on opensource community (especially Xen & kVM) for some time an I'd like to do something for opensource.
  • Converting coroutines to Continuation Passing C Develop a CPC adapter for QEMU that implements the coroutines.h API, in order to explore a portable coroutines version for porting QEMU to new architectures.
  • Copy/Paste Integration There is already a support for guest copy/paste in Spice if a userspace Spice agent is running in the guest OS. The aim of the project is to add guest copy/paste support to QEMU Graphical User Interfaces like the recently written GTK+ or the long time default SDL.
  • Integrated Copy/Paste Users have come to expect copy-paste between host and guest to work. This is also called clipboard sharing and makes it easier to work with graphical guests.
  • Integrating Kconfig to Qemu The aim of this project is to integrate the Linux kernel's Kconfig configuration system to Qemu's build process, making the configuration easier and better for the end-users.
  • Introduce API to query IP addresses for given domain One of the most desired APIs in libvirt that still hasn't been implemented. The aim is to get/guess list of IP addresses assigned to a given domain. There are several ways to get such list: asking guest agent, snooping for domain traffic, parsing dnsmasq lease file, etc.
  • Libvirt RPC protocol Wireshark dissector libvirt provides client/server model virtual machine management. Communication between client and server is done with libvirt RPC protocol. Mostly in development, we need to look inside the RPC packet to analyse it. The project goal is to provide Wireshark's dissector which supports libvirt RPC protocol analysis. The dissector needs to follow newest libvirt RPC protocol definition. So we need to provide code-generator of dissector, to make fresh build from newest protocol definition.
  • More intelligent virsh auto-completion Even though there's already some auto-completion in virsh, it is not enough. For better user experience, virsh should auto complete objects to virsh commands, e.g. "start <TAB><TAB>" lists not only options that the start command knows, but list of inactive domains as well. Moreover, the same applies to command options.