<?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=Narendramind</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=Narendramind"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/Narendramind"/>
	<updated>2026-04-22T06:24:07Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=2996</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=2996"/>
		<updated>2010-05-30T10:41:11Z</updated>

		<summary type="html">&lt;p&gt;Narendramind: &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 MSR_EFER on i386, on processors which support it&lt;br /&gt;
* Add HPET support to qemu and kvm&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;
* Store command line options in an empty snapshot in a qcow2 format image file.  This allows an image file to be self contained: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;qemu file.img&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; should be enough to launch a fully configured virtual machine. (this is probably a bad idea--see qemu-devel/kvm-devel discussion)&lt;br /&gt;
* 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)&lt;br /&gt;
* 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.(Available in QEMU as virtio-serial)&lt;br /&gt;
* 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)&lt;br /&gt;
* Allow userspace to manage which msrs are emulated as no-ops (read zero, write ignored) to hack support for some guests&lt;br /&gt;
* Reduce qemu memory footprint when using kvm&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;
* Implement direct page tables on paravirt_ops enabled Linux guests&lt;br /&gt;
&lt;br /&gt;
==== x86 emulator updates: ====&lt;br /&gt;
* Trap #UD and emulate sysenter/syscall/sysret/sysexit.  These instructions don&#039;t exist on all cpus in all modes, so they hinder cross-vendor migration (in progress)&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;
&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;
* Implement an external module for the iommus, so that KVM VT-d works on old kernels.&lt;br /&gt;
* Implement Linux pci-stub module to “hide” pass-through device from host kernel’s device driver.&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;
&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.  Test by running a VM in a VT guest in an SVM guest on VT hardware, as well as running a VM in an SVM guest in a VT guest on SVM hardware.&lt;br /&gt;
* Emulate the VT and SVM instruction sets on qemu.  This would be very beneficial to debugging kvm.&lt;br /&gt;
* Keep this TODO up to date&lt;br /&gt;
* Add [http://www.cs.toronto.edu/~andreslc/xen-gl/ vmgl] support to qemu.  Port to virtio.  Write a Windows driver.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Narendramind</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=2995</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=2995"/>
		<updated>2010-05-29T16:32:05Z</updated>

		<summary type="html">&lt;p&gt;Narendramind: &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 MSR_EFER on i386, on processors which support it&lt;br /&gt;
* Add HPET support to qemu and kvm&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;
* Store command line options in an empty snapshot in a qcow2 format image file.  This allows an image file to be self contained: &amp;lt;code&amp;gt;&amp;lt;nowiki&amp;gt;qemu file.img&amp;lt;/nowiki&amp;gt;&amp;lt;/code&amp;gt; should be enough to launch a fully configured virtual machine. (this is probably a bad idea--see qemu-devel/kvm-devel discussion)&lt;br /&gt;
* 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)&lt;br /&gt;
* 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.(In Progress)&lt;br /&gt;
* 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)&lt;br /&gt;
* Allow userspace to manage which msrs are emulated as no-ops (read zero, write ignored) to hack support for some guests&lt;br /&gt;
* Reduce qemu memory footprint when using kvm&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;
* Implement direct page tables on paravirt_ops enabled Linux guests&lt;br /&gt;
&lt;br /&gt;
==== x86 emulator updates: ====&lt;br /&gt;
* Trap #UD and emulate sysenter/syscall/sysret/sysexit.  These instructions don&#039;t exist on all cpus in all modes, so they hinder cross-vendor migration (in progress)&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;
&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;
* Implement an external module for the iommus, so that KVM VT-d works on old kernels.&lt;br /&gt;
* Implement Linux pci-stub module to “hide” pass-through device from host kernel’s device driver.&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;
&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.  Test by running a VM in a VT guest in an SVM guest on VT hardware, as well as running a VM in an SVM guest in a VT guest on SVM hardware.&lt;br /&gt;
* Emulate the VT and SVM instruction sets on qemu.  This would be very beneficial to debugging kvm.&lt;br /&gt;
* Keep this TODO up to date&lt;br /&gt;
* Add [http://www.cs.toronto.edu/~andreslc/xen-gl/ vmgl] support to qemu.  Port to virtio.  Write a Windows driver.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Narendramind</name></author>
	</entry>
</feed>