<?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=Marcel</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=Marcel"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/Marcel"/>
	<updated>2026-05-09T09:29:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=173554</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=173554"/>
		<updated>2015-10-25T10:37:11Z</updated>

		<summary type="html">&lt;p&gt;Marcel: /* DPDK related projects */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=ToDo=&lt;br /&gt;
__TOC__&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;
* 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;
==== Networking TODO: ====&lt;br /&gt;
* Has its [[NetworkingTodo|own page]]&lt;br /&gt;
&lt;br /&gt;
==== PCI TODO: ====&lt;br /&gt;
* Has its [[PCITodo|own page]]&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;
* Simpler variant: don&#039;t drop large ptes when write protecting; just write protect them. When taking a write fault, either drop the large pte, or convert it to small ptes and write protect those (like O(1) write protection).&lt;br /&gt;
* O(1) mmu invalidation using a generation number&lt;br /&gt;
&lt;br /&gt;
==== x86 emulator updates: ====&lt;br /&gt;
* On-demand register access, really, copying all registers all the time is gross.&lt;br /&gt;
** Can be done by adding &#039;available&#039; and &#039;dirty&#039; bitmasks&lt;br /&gt;
* Implement mmx and sse memory move instructions; useful for guests that use multimedia extensions for accessing vga (partially done)&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;
* convert more instructions to direct dispatch (function pointer in decode table)&lt;br /&gt;
* move init_emulate_ctxt() into x86_decode_insn() and other emulator entry points&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;
==== Random improvements ====&lt;br /&gt;
* Utilize the SVM interrupt queue to avoid extra exits when guest interrupts are disabled&lt;br /&gt;
&lt;br /&gt;
==== For the adventurous: ====&lt;br /&gt;
* Emulate the VMX instruction sets on qemu.  This would be very beneficial to debugging kvm ( working on this - kern.devel@gmail.com ).&lt;br /&gt;
* Add [http://lagarcavilla.org/vmgl/ vmgl] support to qemu.  Port to virtio.  Write a Windows driver.&lt;br /&gt;
* Keep this TODO up to date&lt;br /&gt;
&lt;br /&gt;
==== Nested VMX ====&lt;br /&gt;
* Implement performance features such as EPT and VPID&lt;br /&gt;
&lt;br /&gt;
== KVM Safe Mode ==&lt;br /&gt;
&lt;br /&gt;
An ioctl() from userspace that tells KVM to disable one or more of the following features:&lt;br /&gt;
&lt;br /&gt;
* shadow paging (force direct mapping)&lt;br /&gt;
* instruction emulation (require virtio or mmio hypercall)&lt;br /&gt;
* task switches&lt;br /&gt;
* mode switches (long mode / legacy mode / real mode)&lt;br /&gt;
* IDT/GDT/LDT changes&lt;br /&gt;
* IDT/GDT/LDT write protect&lt;br /&gt;
* write protect important MSRs (*STAR etc)&lt;br /&gt;
&lt;br /&gt;
The idea is both to protect the guest from attacks, and to protect the host from the guest.&lt;br /&gt;
&lt;br /&gt;
== DPDK related projects ==&lt;br /&gt;
&lt;br /&gt;
*virtio:&lt;br /&gt;
**  virtio-1: support for virtio pmd&lt;br /&gt;
**  virtio-1: support for AMD host&lt;br /&gt;
**  virtio-1: support for non-ept processors&lt;br /&gt;
**  virtio-1: support for PCI-e&lt;br /&gt;
**  virtio-1: vhost IOMMU&lt;br /&gt;
**  virtio-net: mtu report to guest (fix OVS with tunneling)&lt;br /&gt;
**  virtio net: emulate host offloads&lt;br /&gt;
**  multi-queue macvlan&lt;br /&gt;
**  ARI support&lt;br /&gt;
**  Kernel live migration support&lt;br /&gt;
&lt;br /&gt;
*vhost-user:&lt;br /&gt;
**  userspace live migration&lt;br /&gt;
**  libvirt support for OVS-DPDK&lt;br /&gt;
**  vhost-user unit-test (without OVS/DPDK)&lt;br /&gt;
&lt;br /&gt;
*misc&lt;br /&gt;
**  NPT support for fast MMIO&lt;br /&gt;
**  multi-queue macvlan &lt;br /&gt;
**  VFIO in QEMU - emulated-IOMMU support&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Marcel</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=173553</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=173553"/>
		<updated>2015-10-25T10:20:55Z</updated>

		<summary type="html">&lt;p&gt;Marcel: Added DPDK related projects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=ToDo=&lt;br /&gt;
__TOC__&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;
* 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;
==== Networking TODO: ====&lt;br /&gt;
* Has its [[NetworkingTodo|own page]]&lt;br /&gt;
&lt;br /&gt;
==== PCI TODO: ====&lt;br /&gt;
* Has its [[PCITodo|own page]]&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;
* Simpler variant: don&#039;t drop large ptes when write protecting; just write protect them. When taking a write fault, either drop the large pte, or convert it to small ptes and write protect those (like O(1) write protection).&lt;br /&gt;
* O(1) mmu invalidation using a generation number&lt;br /&gt;
&lt;br /&gt;
==== x86 emulator updates: ====&lt;br /&gt;
* On-demand register access, really, copying all registers all the time is gross.&lt;br /&gt;
** Can be done by adding &#039;available&#039; and &#039;dirty&#039; bitmasks&lt;br /&gt;
* Implement mmx and sse memory move instructions; useful for guests that use multimedia extensions for accessing vga (partially done)&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;
* convert more instructions to direct dispatch (function pointer in decode table)&lt;br /&gt;
* move init_emulate_ctxt() into x86_decode_insn() and other emulator entry points&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;
==== Random improvements ====&lt;br /&gt;
* Utilize the SVM interrupt queue to avoid extra exits when guest interrupts are disabled&lt;br /&gt;
&lt;br /&gt;
==== For the adventurous: ====&lt;br /&gt;
* Emulate the VMX instruction sets on qemu.  This would be very beneficial to debugging kvm ( working on this - kern.devel@gmail.com ).&lt;br /&gt;
* Add [http://lagarcavilla.org/vmgl/ vmgl] support to qemu.  Port to virtio.  Write a Windows driver.&lt;br /&gt;
* Keep this TODO up to date&lt;br /&gt;
&lt;br /&gt;
==== Nested VMX ====&lt;br /&gt;
* Implement performance features such as EPT and VPID&lt;br /&gt;
&lt;br /&gt;
== KVM Safe Mode ==&lt;br /&gt;
&lt;br /&gt;
An ioctl() from userspace that tells KVM to disable one or more of the following features:&lt;br /&gt;
&lt;br /&gt;
* shadow paging (force direct mapping)&lt;br /&gt;
* instruction emulation (require virtio or mmio hypercall)&lt;br /&gt;
* task switches&lt;br /&gt;
* mode switches (long mode / legacy mode / real mode)&lt;br /&gt;
* IDT/GDT/LDT changes&lt;br /&gt;
* IDT/GDT/LDT write protect&lt;br /&gt;
* write protect important MSRs (*STAR etc)&lt;br /&gt;
&lt;br /&gt;
The idea is both to protect the guest from attacks, and to protect the host from the guest.&lt;br /&gt;
&lt;br /&gt;
== DPDK related projects ==&lt;br /&gt;
&lt;br /&gt;
*virtio:&lt;br /&gt;
** virtio-1: support for virtio pmd&lt;br /&gt;
**  virtio-1: support for AMD host&lt;br /&gt;
**  virtio-1: support for non-ept processors&lt;br /&gt;
**  virtio-1: support for PCI-e&lt;br /&gt;
** virtio-1: /vhost IOMMU&lt;br /&gt;
** virtio-net: mtu report to guest (fix OVS with tunneling)&lt;br /&gt;
** virtio net: emulate host offloads&lt;br /&gt;
**  multi-queue macvlan&lt;br /&gt;
**  ARI support&lt;br /&gt;
**  Kernel live migration support&lt;br /&gt;
&lt;br /&gt;
*vhost-user:&lt;br /&gt;
**  userspace live migration&lt;br /&gt;
**  libvirt support for OVS-DPDK&lt;br /&gt;
**  vhost-user unit-test (without OVS/DPDK)&lt;br /&gt;
&lt;br /&gt;
*misc&lt;br /&gt;
**  NPT support for fast MMIO&lt;br /&gt;
**  multi-queue macvlan &lt;br /&gt;
**  VFIO in Qemu - emulated-IOMMU support&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Marcel</name></author>
	</entry>
</feed>