http://kvm.qumranet.com/kvmwiki/TODO
TODO
The
following items need some love. Please post to the list if you are
interested in helping out:
- Real
mode support: VT support for real mode is terrible, so we need to do it
in software. This means extending the x86 emulator (x86_emulate.c) to
handle more instructions, and changing the execution loop to call the
emulator for real mode (in progress).
- Emulate the architectural performance monitor counters/msrs, for
Linux nmi watchdog support.
- Emulate MSR_IA32_DEBUGCTL for guests which use it
- Bring up Windows 95 and Windows 98 guests
- Implement MSR_EFER on i386, on processors which support it
- Add HPET support to qemu and kvm
The following smaller scale tasks can be a nice
entry point to someone wishing to get involved:
-
Store command line options in an empty snapshot
in a qcow2 format image file. This allows an image file to be self
contained: qemu file.img
should be enough to launch a fully configured virtual machine. (this is
probably a bad idea--see qemu-devel/kvm-devel discussion)
- Allow
all cpuid features supported by kvm to be passed to the guest; add a
command line option to specifiy the cpuid explicitly to allow migration
in a heterogeneous server farm. (in progress)
- Add
a Unix domain socket device. With this, the guest can talk to a pci
device which is connected to a Unix domain socket on the host.
- Add
a qemu interface for sharing memory between guests. Using a pci device
to expose the shared memory is probably a good starting point. (this
should use virtio and probably depends on mmu-notifiers)
- Allow userspace to manage which msrs are emulated as no-ops (read
zero, write ignored) to hack support for some guests
- Reduce qemu memory footprint when using kvm
-
Avoid taking kvm->lock when issuing mmio.
Need to check lapic and ioapic accesses for correctness.
MMU related:
- Improve mmu page eviction algorithm (currently FIFO, change to
approximate LRU).
- Add a read-only memory type.
- possible using mprotect()?
- Implement AM20 for dos and the like.
- Implement direct page tables on paravirt_ops enabled Linux guests
x86 emulator updates:
- Trap
#UD and emulate sysenter/syscall/sysret/sysexit. These instructions
don't exist on all cpus in all modes, so they hinder cross-vendor
migration (in progress)
- Add
a NonPT flag (or maybe its inverse, Paging) to instructions that are
never used for page table updates (like add, sub, call). Teach the mmu
to unshadow page tables if a NonPT instruction is executed on them.
- Change
the emulator initialization sequence not to read all segment registers
(this is slow), instead read them on demand. On 64-bit, no segments are
usually needed while on 32-bit only cs and ds are commenly required.
Interactivity improvements:
- If for several frames in a row a large proportion of the
framebuffer pages are changing,
then for the next few frames don't bother to get the dirty page log from kvm, but instead assume that
all pages are dirty. This will reduce page fault overhead on highly interactive workloads.
- When detecting keyboard/video/mouse activity, scale up the frame
rate; when activity dies
down, scale it back down (applicable to qemu as well).
Pass-through/VT-d related:
- Implement an external module for the iommus, so that KVM VT-d
works on old kernels.
- Implement Linux pci-stub module to “hide” pass-through device
from host kernel’s device driver.
- Enhance KVM QEMU to return error messages if user attempts to
pass-through unsupported devices:
- Devices with shared host IOAPIC interrupt
- Conventional PCI devices
- Devices without FLR capability
- QEMU PCI pass-through patch needs to be enhanced to same
functionality as corresponding file in Xen
- Remove direct HW access by QEMU for probing PCI BAR size
- PCI handling of various PCI configuration registers
- Other enhancements that was done in Xen
- Host shared interrupt support
- VT-d2 support (WIP in Linux Kernel)
- Queued invalidation
- Interrupt remapping
- ATS
Bug fixes:
- Less sexy but ever important, fixing bugs is one of the most
important contributions
For the adventurous:
|