<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fk</id>
	<title>KVM - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Fk"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/Fk"/>
	<updated>2026-04-21T23:06:02Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3502</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3502"/>
		<updated>2011-02-10T15:10:41Z</updated>

		<summary type="html">&lt;p&gt;Fk: fixed link to VGML homepage&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=ToDo=&lt;br /&gt;
&lt;br /&gt;
The following items need some love. Please post to the list if you are interested in helping out: &lt;br /&gt;
&lt;br /&gt;
* 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).&lt;br /&gt;
* Emulate the architectural performance monitor counters/msrs, for Linux nmi watchdog support.&lt;br /&gt;
* Emulate MSR_IA32_DEBUGCTL for guests which use it&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Implement ACPI memory hotplug&lt;br /&gt;
* Improve ballooning to try to use 2MB pages when possible ( in progress - kern.devel@gmail.com )&lt;br /&gt;
&lt;br /&gt;
The following smaller scale tasks can be a nice entry point to someone wishing to get involved: &lt;br /&gt;
&lt;br /&gt;
* Reduce qemu memory footprint when using kvm&lt;br /&gt;
** this involves dropping the PhysPageDesc array in favour of a memslot-like approach&lt;br /&gt;
* Avoid taking kvm-&amp;gt;lock when issuing mmio.  Need to check lapic and ioapic accesses for correctness.&lt;br /&gt;
&lt;br /&gt;
==== MMU related: ====&lt;br /&gt;
* Improve mmu page eviction algorithm (currently FIFO, change to approximate LRU).&lt;br /&gt;
* Add a read-only memory type.&lt;br /&gt;
** possible using mprotect()?&lt;br /&gt;
* Implement AM20 for dos and the like.&lt;br /&gt;
* O(1) write protection by protecting the PML4Es, then on demand PDPTEs, PDEs, and PTEs&lt;br /&gt;
* O(1) mmu invalidation using a generation number&lt;br /&gt;
&lt;br /&gt;
==== x86 emulator updates: ====&lt;br /&gt;
* 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.&lt;br /&gt;
* 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.&lt;br /&gt;
* Same for ordinary registers, really, copying all registers all the time is gross.&lt;br /&gt;
* Implement mmx and sse memory move instructions; useful for guests that use multimedia extensions for accessing vga&lt;br /&gt;
* Implement an operation queue for the emulator.  The emulator often calls userspace to perform a read or a write, but due to inversion of control it actually restarts instead of continuing.  The queue would allow it to replay all previous operations until it reaches the point it last stopped.&lt;br /&gt;
** if this is done, we can retire -&amp;gt;read_std() in favour of -&amp;gt;read_emulated().&lt;br /&gt;
* push segment base resolution to the last possible moment, i.e. calling ctxt-&amp;gt;ops-&amp;gt;read_emulated(); then implement limit checks in that place&lt;br /&gt;
* convert more instructions to direct dispatch (function pointer in decode table)&lt;br /&gt;
&lt;br /&gt;
==== Interactivity improvements: ====&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are changing, then for the next few frames don&#039;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.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
==== Pass-through/VT-d related: ====&lt;br /&gt;
* Enhance KVM QEMU to return error messages if user attempts to pass-through unsupported devices:&lt;br /&gt;
** Devices with shared host IOAPIC interrupt&lt;br /&gt;
** Conventional PCI devices&lt;br /&gt;
** Devices without FLR capability&lt;br /&gt;
* QEMU PCI pass-through patch needs to be enhanced to same functionality as corresponding file in Xen&lt;br /&gt;
** Remove direct HW access by QEMU for probing PCI BAR size&lt;br /&gt;
** PCI handling of various PCI configuration registers&lt;br /&gt;
** Other enhancements that was done in Xen&lt;br /&gt;
* Host shared interrupt support&lt;br /&gt;
* VT-d2 support (WIP in Linux Kernel)&lt;br /&gt;
** Queued invalidation&lt;br /&gt;
** Interrupt remapping&lt;br /&gt;
** ATS&lt;br /&gt;
* USB 2.0 (EHCI) support&lt;br /&gt;
&lt;br /&gt;
==== Bug fixes: ====&lt;br /&gt;
* Less sexy but ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
==== For the adventurous: ====&lt;br /&gt;
* Emulate the VT and SVM instructions, so that kvm can run in a virtual machine.&lt;br /&gt;
* Emulate the VT and SVM instruction sets on qemu.  This would be very beneficial to debugging kvm ( working on this - kern.devel@gmail.com ).&lt;br /&gt;
* Keep this TODO up to date&lt;br /&gt;
* Add [http://lagarcavilla.org/vmgl/ vmgl] support to qemu.  Port to virtio.  Write a Windows driver.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Fk</name></author>
	</entry>
</feed>