<?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=AviKivity</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=AviKivity"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/AviKivity"/>
	<updated>2026-04-05T23:02:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=4562</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=4562"/>
		<updated>2012-07-11T14:51:18Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &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;
* 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;
&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;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=4561</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=4561"/>
		<updated>2012-07-11T14:50:28Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Clean up completed tasks&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;
* 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;
&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;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=4533</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=4533"/>
		<updated>2012-04-16T12:45:33Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &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;
* [[Guest PMU]] support&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;
* 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;
&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;
* Same for ordinary registers, 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;
* fold &#039;struct decode_cache&#039; into &#039;struct x88_emulate_context&#039;; reducing a lot of pointless temporary variables.&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;
&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 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;
* 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;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=4516</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=4516"/>
		<updated>2012-03-29T13:16:19Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &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;
* [[Guest PMU]] support&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;
* 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;
&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;
* Same for ordinary registers, 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;
* fold &#039;struct decode_cache&#039; into &#039;struct x88_emulate_context&#039;; reducing a lot of pointless temporary variables.&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;
&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 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;
* 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;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3910</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3910"/>
		<updated>2011-09-06T06:41:21Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.linux-kvm.org/wiki/images/6/6d/Kvm-forum-2011-performance-monitoring.pdf|KVM Forum 2011 presentation] about the state as of August 2011.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;br /&gt;
* Change perf to use an ordinary interrupt instead of NMI when profiling only user space, or only a guest (reduces work in NMI context)&lt;br /&gt;
&lt;br /&gt;
= Git repositories =&lt;br /&gt;
&lt;br /&gt;
Guest PMU: git://github.com/avikivity/kvm.git pmu&lt;br /&gt;
&lt;br /&gt;
exclude_host: git://github.com/avikivity/kvm.git perf-guest-counting&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3909</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3909"/>
		<updated>2011-09-06T06:40:16Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.linux-kvm.org/wiki/images/6/6d/Kvm-forum-2011-performance-monitoring.pdf|KVM Forum 2011 presentation] about the state as of August 2011.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;br /&gt;
* Change perf to use an ordinary interrupt instead of NMI when profiling only user space (reduces work in NMI context)&lt;br /&gt;
&lt;br /&gt;
= Git repositories =&lt;br /&gt;
&lt;br /&gt;
Guest PMU: git://github.com/avikivity/kvm.git pmu&lt;br /&gt;
&lt;br /&gt;
exclude_host: git://github.com/avikivity/kvm.git perf-guest-counting&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3895</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3895"/>
		<updated>2011-09-05T14:37:42Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.linux-kvm.org/wiki/images/6/6d/Kvm-forum-2011-performance-monitoring.pdf|KVM Forum 2011 presentation] about the state as of August 2011.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;br /&gt;
&lt;br /&gt;
= Git repositories =&lt;br /&gt;
&lt;br /&gt;
Guest PMU: git://github.com/avikivity/kvm.git pmu&lt;br /&gt;
&lt;br /&gt;
exclude_host: git://github.com/avikivity/kvm.git perf-guest-counting&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3894</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3894"/>
		<updated>2011-09-05T14:37:26Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: added git repos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.linux-kvm.org/wiki/images/6/6d/Kvm-forum-2011-performance-monitoring.pdf|KVM Forum 2011 presentation] about the state as of August 2011.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;br /&gt;
&lt;br /&gt;
= Git repositories =&lt;br /&gt;
&lt;br /&gt;
Guest PMU: git://github.com/avikivity/kvm.git pmu&lt;br /&gt;
exclude_host: git://github.com/avikivity/kvm.git perf-guest-counting&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3893</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3893"/>
		<updated>2011-09-05T08:54:22Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.linux-kvm.org/wiki/images/6/6d/Kvm-forum-2011-performance-monitoring.pdf|KVM Forum 2011 presentation] about the state as of August 2011.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3892</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=3892"/>
		<updated>2011-09-05T08:48:05Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3891</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3891"/>
		<updated>2011-09-05T08:36:32Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &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;
* [[Guest PMU]] support&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;
* Same for ordinary registers, 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;
* fold &#039;struct decode_cache&#039; into &#039;struct x88_emulate_context&#039;; reducing a lot of pointless temporary variables.&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;
&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 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;
* 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;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=File:Kvm-forum-2011-performance-monitoring.pdf&amp;diff=3742</id>
		<title>File:Kvm-forum-2011-performance-monitoring.pdf</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=File:Kvm-forum-2011-performance-monitoring.pdf&amp;diff=3742"/>
		<updated>2011-08-14T02:57:05Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Performance Monitoring for KVM Guests&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Performance Monitoring for KVM Guests&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=File:Kvm-forum-2011-performance-monitoring.odp&amp;diff=3741</id>
		<title>File:Kvm-forum-2011-performance-monitoring.odp</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=File:Kvm-forum-2011-performance-monitoring.odp&amp;diff=3741"/>
		<updated>2011-08-14T02:56:14Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Performance Monitoring for KVM Guests&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Performance Monitoring for KVM Guests&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=FAQ&amp;diff=3657</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=FAQ&amp;diff=3657"/>
		<updated>2011-07-07T14:15:01Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Removed rant about &amp;quot;Is KVM Stable?&amp;quot;.  It is stable.  If you have issues, report them to the mailing list.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FAQ=&lt;br /&gt;
&lt;br /&gt;
== Preparing to use KVM ==&lt;br /&gt;
=== What do I need to use KVM? ===&lt;br /&gt;
You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list] of compatible processors. For Intel processors, see also [http://ark.intel.com/VTList.aspx the Intel® Virtualization Technology List].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== Are 64bits processors supported under KVM? ===&lt;br /&gt;
Yes they are supported and will allow you to run 32bits and 64 bits guests.&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;Can KVM run a 32-bit guest on a 64-bit host? What about PAE?&#039;&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is Intel VT / AMD-V / hvm? ===&lt;br /&gt;
[http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm Intel VT] and [http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_14287,00.html AMD&#039;s AMD-V] are instruction set extensions that provide hardware assistance to virtual machine monitors. They enable running fully isolated virtual machines at native hardware speeds, for some workloads.&lt;br /&gt;
&lt;br /&gt;
HVM (for Hardware Virtual Machine) is a vendor-neutral term often used to designate the x86 instruction set extensions.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where do I get my kvm kernel modules from? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Getting the kvm kernel modules]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if I have Intel VT or AMD-V? ===&lt;br /&gt;
With a recent enough Linux kernel, run the command:&lt;br /&gt;
&lt;br /&gt;
 . egrep &#039;^flags.*(vmx|svm)&#039; /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
If something shows up, you have VT. You can also check the processor model name (in `/proc/cpuinfo`) in the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
*  You&#039;ll never see (vmx|svm) in /proc/cpuinfo if you&#039;re currently running in  in a dom0 or domU.&amp;lt;br /&amp;gt; The Xen hypervisor suppresses these flags in order to prevent hijacking.&lt;br /&gt;
* Some manufacturers disable VT in the machine&#039;s BIOS, in such a way that it cannot be re-enabled.&lt;br /&gt;
* `/proc/cpuinfo` only shows virtualization capabilities starting with Linux 2.6.15 (Intel) and Linux 2.6.16 (AMD). Use the `uname -r` command to query your kernel version.&lt;br /&gt;
In case of doubt, contact your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;KVM: disabled by BIOS&amp;quot; error ===&lt;br /&gt;
Check if there is an option to enable it in the BIOS. If not, look for a more recent BIOS on the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* On some hardware (e-g HP nx6320), you need to power-off/power-on the machine after enabling virtualization in the BIOS.&lt;br /&gt;
* Enabling some BIOS features may break VT support on some hardware (e-g Enabling Intel AMT on a Thinkpad T500 will prevent kvm-intel from loading with &amp;quot;disabled by bios&amp;quot;)&lt;br /&gt;
* On some Dell hardware, you also need to disable &amp;quot;Trusted Execution&amp;quot;, otherwise VT will not be enabled.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I use AMD-V extension? ===&lt;br /&gt;
 modprobe kvm-amd&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What user space tools does KVM use? ===&lt;br /&gt;
KVM uses a slightly modified [http://www.nongnu.org/qemu QEMU] program to instantiate the virtual machine. Once running, a virtual machine is just a regular process. You can use `top(1), kill(1), taskset(1)` and similar tools to manage virtual machines.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What virtual disk formats can KVM use? ===&lt;br /&gt;
KVM inherits a wealth of disk formats support from QEMU; it supports raw images, the native QEMU format (qcow2), VMware format, and many more.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Are there management tools available to help me manage my virtual machines? ===&lt;br /&gt;
Yes.  Please see the [[Management Tools]] page for some links.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Using KVM ==&lt;br /&gt;
=== How can I use KVM with a non-privileged user? ===&lt;br /&gt;
The cleanest way is probably to create a group, say &#039;&#039;kvm&#039;&#039;, and add the user(s) to that group. Then you will need change /dev/kvm to owned by group &#039;&#039;kvm&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On a system that runs udev, you will probably need to add the following line somewhere in your udev configuration so it will automatically give the right group to the newly created device (i-e for ubuntu add a line to &#039;&#039;/etc/udev/rules.d/40-permissions.rules&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
 KERNEL==&amp;quot;kvm&amp;quot;, GROUP=&amp;quot;kvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I get the most performance out of KVM? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Tuning KVM]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is KVM stable? ===&lt;br /&gt;
KVM is stable and used in production.  As with most open source projects, development snapshots are less stable than the stable release series.&lt;br /&gt;
&lt;br /&gt;
If your name is Andreas Mohr, you&#039;re reporting bugs in the wrong place.&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== That&#039;s alright, but can I really use it for my daily use? ===&lt;br /&gt;
Sure. We continuously run the most often-used OSes and configurations and if anything breaks for the developers, it&#039;s fixed as soon as it was broken. See the [[Guest Support Status]] and [[Host Support Status]] pages to find out more. Please update them with success stories so that new users would benefit from the experience of the community.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How about production use? ===&lt;br /&gt;
For production use, it&#039;s recommended you use the KVM modules shipped by the distribution you&#039;re using to ensure stability. As mentioned above, it&#039;s tempting to use new features, but you never know of (unwanted) surprises hidden away. It&#039;ll be best if you can run the development snapshots with non-critical production load, so that the latest releases are stable for you when you decide to deploy them.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What happens if I kill -9 a VM process? ===&lt;br /&gt;
From the guest&#039;s perspective, it is as if you yanked the power cord out. From the host&#039;s perspective, the process is killed and all resources it uses are reclaimed.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I need help to setup the network for my guest ===&lt;br /&gt;
You can have a look to the [[Networking]] page of this wiki for informations on the most classical networking setup for the guests. You can also refer to the QEMU documentation.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where can I find more documention... ===&lt;br /&gt;
Most usability issues are covered in the QEMU [http://www.nongnu.org/qemu/user-doc.html documentation].  There is also an extensive [http://qemu-buch.de/cgi-bin/moin.cgi/FrequentlyAskedQuestions FAQ] (old vanished link: [http://kidsquid.com/cgi-bin/moin.cgi/FrequentlyAskedQuestions FAQ]).&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== How can I check that I&#039;m not falling back to QEMU with no hardware acceleration? ===&lt;br /&gt;
&lt;br /&gt;
If you think that you might no be using the hardware acceleration provided by the KVM module, here are a few steps to help you check this.&lt;br /&gt;
&lt;br /&gt;
First of all, check that you don&#039;t have messages such as:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 qemu-system-x86_64 -hda myvm.qcow2&lt;br /&gt;
 open /dev/kvm: No such file or directory&lt;br /&gt;
 Could not initialize KVM, will disable KVM support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In that case, you can check that:&lt;br /&gt;
* the modules are correctly loaded &amp;lt;code&amp;gt;lsmod|grep kvm&lt;br /&gt;
* you don&#039;t have a &amp;quot;KVM: disabled by BIOS&amp;quot; line in the output of dmesg&lt;br /&gt;
* /dev/kvm exists and you have the correct rights to use it&lt;br /&gt;
&lt;br /&gt;
Other ways to do the diagnostic:&lt;br /&gt;
* if you have access to the QEMU monitor (Ctrl-Alt-2, use Ctrl-Alt-1 to get back to the VM display), enter the &amp;quot;info kvm&amp;quot; command and it should respond with &amp;quot;KVM support: enabled&amp;quot;&lt;br /&gt;
* the right-end columns of the output from &amp;lt;code&amp;gt;lsmod|grep kvm&amp;lt;/code&amp;gt; on the host system, once the VM is started should show only non zero values. The value on the line corresponding to the architecture specific module (e-g kvm_intel, kvm_amd) show the number of VM using the module. For instance, if I have 2 VM running using the KVM module on a machine with vt, it will report:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 lsmod|grep kvm&lt;br /&gt;
 kvm_intel              44896  2&lt;br /&gt;
 kvm                   159656  1 kvm_intel&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;rect too big&amp;quot; Message when using VNC Display ===&lt;br /&gt;
When connection to a VNC Terminal, a &amp;quot;rect too big&amp;quot; message appears, and the VNC Session disconnects.&lt;br /&gt;
&lt;br /&gt;
This happens because of a VNC protocol flaw on the way on-the-fly pixel format changes are handled (more info at [http://www.mail-archive.com/qemu-devel@nongnu.org/msg04879.html this thread]). If you are using TigerVNC, you can avoid this problem by disabling on-the-fly selection of pixel encoding, using the &amp;lt;tt&amp;gt;-AutoSelect=0&amp;lt;/tt&amp;gt; command-line option of vncviewer. You may also want to check the encoding options on the vncviewer man page, as this will disable automatic selection of encoding based on connection speed.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&#039;&#039;&#039;How do I set up the network such that my guest is accessible from other machines?&#039;&#039;&#039; or&lt;br /&gt;
&lt;br /&gt;
=== My guest network is stuck what should I do? ===&lt;br /&gt;
KVM uses QEMU for its device emulation. Consult the [http://qemu-buch.de/cgi-bin/moin.cgi/QemuNetwork QEMU network wiki page] for detailed network setup instructions.&lt;br /&gt;
&lt;br /&gt;
One would probably be interested in the Root Networking Mode page and the Network Bridge page.&lt;br /&gt;
&lt;br /&gt;
Guest-side network lockups (fortunately restartable) may be happening due to tun/tap bridging erroneous MAC address reconfiguration on host side, see RHEL bug #571991 and others.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I&#039;m experiencing timer drift issues in my VM guests, what to do? ===&lt;br /&gt;
&lt;br /&gt;
Especially in case of networked systems (e.g. via NFS or Samba) it is very important to ensure stable operation of timing (both system timer and RTC).&lt;br /&gt;
Tell-tale signs of related trouble in VMs (apparently qemu/KVM/VMWare etc. are all affected) are e.g.&lt;br /&gt;
&amp;quot;make[2]: Warning: File `XXXXX/cmakelists_rebuilder.stamp&#039; has modification time 0.37 s in the future&amp;quot;&lt;br /&gt;
&amp;quot;Clock skew detected. Your build may be incomplete.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[http://maemovmware.garage.maemo.org/2nd_edition/requirements_documentation.html Maemo docs] state that it&#039;s important to disable UTC and set the correct time zone, however I don&#039;t really see how that would help in case of diverging host/guest clocks.&lt;br /&gt;
IMHO much more useful and important is to configure properly working NTP server (chrony recommended, or ntpd) on both host and guest.&lt;br /&gt;
The single most decisive trick IMHO is to specify the &#039;&#039;&#039;host&#039;&#039;&#039; NTP server as the main entry within guest VM instead of &amp;quot;foreign&amp;quot; NTP servers, to make sure to achieve the most precise coupling between these two related systems (timing drift vs. other systems does not matter nearly as much as a tight time precision for inner host/guest system interaction e.g. in the case of NFS/Samba shares etc.).&lt;br /&gt;
For verification, see chronyc &amp;quot;sources -v&amp;quot;, &amp;quot;tracking&amp;quot; (&amp;quot;System time&amp;quot; row) commands.&lt;br /&gt;
&lt;br /&gt;
After having applied this very tight NTP coupling, this seems to finally have gotten rid of make&#039;s time drift warnings.&lt;br /&gt;
&lt;br /&gt;
Perhaps qemu&#039;s -tdf (timing drift fix) option magically manages to help in your case, too.&lt;br /&gt;
&lt;br /&gt;
See also [https://espace.cern.ch/it-faqs/Lists/faqs/DispForm.aspx?ID=368 Faqs: I received a message about &amp;quot;clock skew&amp;quot;].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== I get &amp;quot;rtc interrupts lost&amp;quot; messages, and the guest is very slow? ===&lt;br /&gt;
Try setting &amp;lt;code&amp;gt;CONFIG_HPET_EMULATE_RTC=y&amp;lt;/code&amp;gt; in your host &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I get an &amp;quot;Exception 13&amp;quot; or &amp;quot;Exception 12&amp;quot; message while booting a guest OS on my Intel host ===&lt;br /&gt;
See the [[Intel Real Mode Emulation Problems]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I have VMware/Parallels/VirtualBox installed and when I modprobe KVM, my system deadlocks. ===&lt;br /&gt;
Neither Intel VT nor AMD-V provide a mechanism to determine whether software is currently using the hardware virtualization extensions.  This means that if you have two kernel modules loaded attempting to use hardware virtualization extensions, very bad things will happen.  If you are using another type of virtualization software and experience any sort of weirdness with KVM, make sure you can reproduce the problem without the kernel modules for that software loaded before you report a bug in KVM.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== There&#039;s nothing on QEMU/KVM screen, but it&#039;s not hanged! I&#039;m trying to install Kubuntu. ===&lt;br /&gt;
Try to run kvm with -std-vga option. It helps if guest operating system uses framebuffer mode like Kubuntu/Ubuntu.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== When I click the guest operating system window, mouse is grabbed. How can I get mouse to not to do that? OR Mouse doesn&#039;t show up / doesn&#039;t work in the guest. What do I do? ===&lt;br /&gt;
From #qemu wiki, try to run kvm/qemu with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -usb -usbdevice tablet&lt;br /&gt;
If that doesn&#039;t work, try this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ export SDL_VIDEO_X11_DGAMOUSE=0&lt;br /&gt;
(from http://wiki.clug.org.za/wiki/QEMU_mouse_not_working )&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== General KVM information ==&lt;br /&gt;
=== What is the difference between KVM and Xen? ===&lt;br /&gt;
Xen is an external hypervisor; it assumes control of the machine and divides resources among guests. On the other hand, KVM is part of Linux and uses the regular Linux scheduler and memory management. This means that KVM is much smaller and simpler to use; it is also more featureful; for example KVM can swap guests to disk in order to free RAM.&lt;br /&gt;
&lt;br /&gt;
KVM only run on processors that supports x86 hvm (vt/svm instructions set) whereas Xen also allows running modified operating systems on non-hvm x86 processors using a technique called paravirtualization. KVM does not support paravirtualization for CPU but may support paravirtualization for device drivers to improve I/O performance.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and VMware? ===&lt;br /&gt;
VMware is a proprietary product. KVM is Free Software released under the GPL.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and QEMU? ===&lt;br /&gt;
QEMU uses emulation; KVM uses processor extensions (HVM) for virtualization.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Do you have a port of KVM for Windows? ===&lt;br /&gt;
Not officially.&lt;br /&gt;
&lt;br /&gt;
Kazushi Takahashi has been working on an experimental version though, called WinKVM, available [http://github.com/ddk50/winkvm here].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What kernel version does it work with? ===&lt;br /&gt;
It depends on what version of KVM you are using. The last release of KVM should work with any recent kernel (2.6.17 and above), older releases even older kernels.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How much RAM do I need? ===&lt;br /&gt;
You will need enough memory to let the guest run comfortably while keeping enough for the host. 1GB is probably a minimum configuration for the host OS.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is dynamic memory management for guests supported? ===&lt;br /&gt;
This is a broad topic covering a few areas.&lt;br /&gt;
&lt;br /&gt;
A. KVM only allocates memory as the guest tries to use it. Once it&#039;s allocated, KVM keeps it. Some guests (namely Microsoft guests) zero all memory at boot time. So they will use all memory.&lt;br /&gt;
&lt;br /&gt;
B. Certain guests (only Linux at the moment) have a balloon driver, so the host can have the guest allocate a certain amount of memory which the guest won&#039;t be able to use anymore and it can then be freed on the host. Ballooning is controlled in the host via the [http://www.nongnu.org/qemu/qemu-doc.html#SEC12 balloon monitor command].&lt;br /&gt;
&lt;br /&gt;
C. Some hosts (presently only RHEL5.4 / CentOS 5.4) have a feature called KSM (Kernel Sharedpage Merging), which collapses together identical pages; this requires kernel support on the host, as well as a kvm new enough to opt in to the behavior. As some guest platforms (most notably Windows) zero out free&#039;d memory, such pages are trivially collapsed. The ksmctl command needs to be used to enable KSM; alternately, the ksmtuned service found in Fedora 12 can be run to dynamically adjust KSM&#039;s aggressiveness based on the amount of free memory available&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What OSs can I run inside KVM VM? ===&lt;br /&gt;
Several.  See the [[Guest Support Status]] page for details. Note that several Linux flavors are known to hang on Intel processors during startup. Workaround is to disable splash screens in grub.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support a live migration feature to move virtual machines from one host to another without downtime? ===&lt;br /&gt;
Yes.  See the [[Migration]] page for details.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support live migration from an AMD host to an Intel host and back? ===&lt;br /&gt;
Yes.  There may be issues on 32-bit Intel hosts which don&#039;t support NX (or XD), but for 64-bit hosts back and forth migration should work well. Migration of 32-bit guests should work between 32-bit hosts and 64-bit hosts.&lt;br /&gt;
If one of your hosts does not support NX, you may consider disabling NX when starting the guest on a NX-capable system. You can do it by passing &amp;quot;-cpu qemu64,-nx&amp;quot; parameter to the guest.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can KVM run a 32-bit guest on a 64-bit host? What about PAE? ===&lt;br /&gt;
KVM supports 32-bit guests on 64-bit hosts, and any combination of PAE and non-PAE guests and hosts. The only unsupported combination is a 64-bit guest on a 32-bit host.&lt;br /&gt;
&lt;br /&gt;
If you are running a Windows Virtual Machine and have problems enabling PAE in your guest see the [[Windows PAE Workaround]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to use USB devices with a guest OS? ===&lt;br /&gt;
Yes, look up how to do it with QEMU, it&#039;s the same way.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can I have higher or widescreen resolutions (eg 1680 x 1050) in KVM? ===&lt;br /&gt;
Use the -vga std parameter while starting the VM to allow high resolution and widescreen displays.&lt;br /&gt;
&lt;br /&gt;
If the resolution you want to use is not available, you can patch the corresponding source files (see http://article.gmane.org/gmane.comp.emulators.kvm.devel/13557 as a reference), or send a mail to the KVM mailing list if you are not able to patch the source yourself.&lt;br /&gt;
&lt;br /&gt;
When using Windows as guest OS and not having issues with people violating the GPL you might want to use the driver from the VBEMP x86 project (http://www.bearwindows.boot-land.net/vbemp.htm) which is based on ReactOS code.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP hosts? ===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP guests? ===&lt;br /&gt;
Yes. Up to 16 CPUs can be specified using the -smp option.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is the name &#039;KVM&#039; trademarked? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3598</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3598"/>
		<updated>2011-05-31T08:34:17Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &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;
* Same for ordinary registers, 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;
* fold &#039;struct decode_cache&#039; into &#039;struct x88_emulate_context&#039;; reducing a lot of pointless temporary variables.&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;
&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 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;
* 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;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Tracing&amp;diff=3516</id>
		<title>Tracing</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Tracing&amp;diff=3516"/>
		<updated>2011-03-09T15:38:15Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: trace-cmd instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Tracing is done by means of kernel tracepoints, the ftrace infrastructure, and trace-cmd.&lt;br /&gt;
&lt;br /&gt;
= Installing trace-cmd =&lt;br /&gt;
&lt;br /&gt;
# Install the udis86 and udis86-devel packages&lt;br /&gt;
# download trace-cmd:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 $ git clone trace-cmd git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/trace-cmd.git&lt;br /&gt;
 $ cd trace-cmd&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
# build and install:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 $ make &amp;amp;&amp;amp; sudo make install&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tracing =&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 # trace-cmd record -b 20000 -e kvm&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
(trace-cmd will wait)&lt;br /&gt;
&lt;br /&gt;
run your workload, then stop trace-cmd with ctrl-C.  trace-cmd will write a trace.dat file.&lt;br /&gt;
&lt;br /&gt;
= Analyzing the trace =&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
 trace-cmd report&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will format and display the contents of the trace.&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Bugs&amp;diff=3515</id>
		<title>Bugs</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Bugs&amp;diff=3515"/>
		<updated>2011-03-09T15:28:15Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: add trace link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Bugs=&lt;br /&gt;
&lt;br /&gt;
Kernel side KVM bugs should be file to the [https://bugzilla.kernel.org/ kernel&#039;s bug tracker].&lt;br /&gt;
&lt;br /&gt;
Userspace bugs should be filed to [https://bugs.launchpad.net/qemu Qemu&#039;s launchpad tracker]. If you think they are qemu-kvm specific (i.e. upstream qemu is not affected), you should mark them clearly as being qemu-kvm specific.&lt;br /&gt;
&lt;br /&gt;
If in doubt, email (kvm@vger.kernel.org) the mailing list first (no need to register) and you will be directed where to file the bug if necessary.&lt;br /&gt;
&lt;br /&gt;
Historical bug reports can be found in the sourceforge [http://sourceforge.net/tracker/?atid=893831&amp;amp;group_id=180599&amp;amp;func=browse bug tracker].            &lt;br /&gt;
&lt;br /&gt;
== Submitting a bug report ==&lt;br /&gt;
&lt;br /&gt;
When submitting a bug report, make sure to provide the following information:&lt;br /&gt;
&lt;br /&gt;
* What cpu model (examples: Intel Core Duo, Intel Core 2 Duo, AMD Opteron 2210).  See /proc/cpuinfo if you&#039;re not sure.                                                                                           &lt;br /&gt;
* What kvm version you are using.  If you&#039;re using git directly, provide the output of &#039;git describe&#039;.&lt;br /&gt;
&lt;br /&gt;
* The host kernel version&lt;br /&gt;
       &lt;br /&gt;
* What host kernel arch you are using (i386 or x86_64)&lt;br /&gt;
&lt;br /&gt;
* What guest you are using, including OS type (Linux, Windows, Solaris, etc.), bitness (32 or 64), kernel version&lt;br /&gt;
                        &lt;br /&gt;
* The qemu command line you are using to start the guest&lt;br /&gt;
&lt;br /&gt;
* Whether the problem goes away if using the &amp;lt;code&amp;gt;-no-kvm-irqchip&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;-no-kvm-pit&amp;lt;/code&amp;gt; switch.&lt;br /&gt;
                            &lt;br /&gt;
* Whether the problem also appears with the &amp;lt;code&amp;gt;-no-kvm&amp;lt;/code&amp;gt; switch.&lt;br /&gt;
&lt;br /&gt;
Please use the latest release version of kvm at the time you submit the bug.  Even if you use kvm from a distribution (Ubuntu starting from Feisty or Fedora starting from 7), it is important to use the latest sources.&lt;br /&gt;
&lt;br /&gt;
In case qemu-kvm exits with SIGSEGV (Segmentation fault) or SIGBUS (Bus error), please make sure ulimit is configured so that a core file can be generated (ulimit -a to report, ulimit -c unlimited to allow unlimited size core files). Then get a backtrace of the error with&lt;br /&gt;
&lt;br /&gt;
(gdb) info threads&lt;br /&gt;
&lt;br /&gt;
And for every thread present do:&lt;br /&gt;
&lt;br /&gt;
(gdb) thread n &lt;br /&gt;
&lt;br /&gt;
(gdb) bt&lt;br /&gt;
&lt;br /&gt;
Attach the output to the bug report.&lt;br /&gt;
&lt;br /&gt;
== Getting a serial console from the guest ==&lt;br /&gt;
&lt;br /&gt;
If a guest crashes on boot, it is sometimes useful to have its console output.  This can be done using&lt;br /&gt;
qemu&#039;s -serial option to emulate a serial port:&lt;br /&gt;
 qemu-system-x86_64 -serial file:serial.log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Depending on the guest OS you will need to do some additional changes to instruct it to use the serial port as a console as shown below :&lt;br /&gt;
&lt;br /&gt;
=== Linux ===&lt;br /&gt;
&lt;br /&gt;
Change the guest kernel&#039;s command line (in the GRUB or LILO menu) to include the string &lt;br /&gt;
 console=ttyS0,115200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If after a crash, there is still no output in the serial.log file and the guest kernel was configured touse a serial console; chances are that the crash was too early in the process to have the console initialized and then the following kernel command line should be used additionally (only to be used as a last resort as it interacts badly with the console boot parameter)&lt;br /&gt;
 earlyprintk=serial,ttyS0,115200&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OpenSolaris ===&lt;br /&gt;
&lt;br /&gt;
Change the guest kernel&#039;s entry in the GRUB menu to include the string &lt;br /&gt;
 -B console=ttya&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if there is already a -B option just add the console parameter to it after a comma &amp;quot;,&amp;quot; and beware that since this will redirect the console to the file you&#039;ll need to tail the serial.log file to see it boot asthere will be no output in the SDL console and you won&#039;t be able to interact with it through the keyboard.&lt;br /&gt;
&lt;br /&gt;
= Tracing =&lt;br /&gt;
&lt;br /&gt;
When debugging kvm, it is often convenient to get a [[Tracing|trace]] of what&#039;s going on.&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3226</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3226"/>
		<updated>2010-09-05T10:34:49Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Update&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;
&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;
&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://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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3032</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3032"/>
		<updated>2010-06-06T16:01:37Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: O(1) MMU items&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;
&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;
* 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;
* 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;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3031</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3031"/>
		<updated>2010-06-06T16:00:03Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: EFER works on i386&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;
&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;
* 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;
* 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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=3030</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=3030"/>
		<updated>2010-06-06T15:59:39Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Drop outdated items&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;
&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;
* 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;
* 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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Getting_the_kvm_kernel_modules&amp;diff=2639</id>
		<title>Getting the kvm kernel modules</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Getting_the_kvm_kernel_modules&amp;diff=2639"/>
		<updated>2009-10-26T08:56:42Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Add summary table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a variety of sources of kvm kernel modules.  Which ones to use depend on whether you are interested in using, testing, or developing kvm.&lt;br /&gt;
&lt;br /&gt;
As of now, all major community and enterprise distributions contain kvm kernel modules and userspace; these are either installed by default or require installing a kvm package.  For someone looking for stability, these are the best choice.  No effort is needed to build or install the modules, support is provided by the distribution, and the distribution/module combination is well tested.&lt;br /&gt;
&lt;br /&gt;
For those stuck on an older kernel, but wishing to run a modern, stable kvm release the kvm maintainers provide an external module kit that can run a modern kvm on an older kernel.  These packages are named kvm-kmod-2.6.x.y (or kvm-kmod-2.6.x), and correspond to the kvm code contained in Linux 2.6.x.y.  They can generally be run on any Linux kernel older than 2.6.x.&lt;br /&gt;
&lt;br /&gt;
If you wish to help testing the kvm component of the next Linux release, but without running a -rc kernel from kernel.org, you may use kvm-kmod-2.6.x-rcy, containing the code from Linux 2.6.x-rcy backported to run on older kernels.  Feedback from running this release will help improve the kvm in the next kernel release.&lt;br /&gt;
&lt;br /&gt;
For testing development snapshots, the kvm-kmod-devel-xx releases are provided.  These don&#039;t correspond exactly to any Linux release, but instead contain code from the kvm.git (the kvm development repository) at the point of their release.  These are generally the most up-to-date modules.&lt;br /&gt;
&lt;br /&gt;
In summary:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
! Release type&lt;br /&gt;
! Suitable for&lt;br /&gt;
|-&lt;br /&gt;
| Distribution provided&lt;br /&gt;
| Mainstream use; supported by distribution&lt;br /&gt;
|-&lt;br /&gt;
| kvm-kmod-2.6.x.y&lt;br /&gt;
| Running modern, stable kvm releases on older kernels&lt;br /&gt;
|-&lt;br /&gt;
| kvm-kmod-2.6.x-rcy&lt;br /&gt;
| Testing the next kvm-kmod-2.6.x.y release&lt;br /&gt;
|-&lt;br /&gt;
| kvm-kmod-devel-xx&lt;br /&gt;
| Testing bleeding-edge development code&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Getting_the_kvm_kernel_modules&amp;diff=2638</id>
		<title>Getting the kvm kernel modules</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Getting_the_kvm_kernel_modules&amp;diff=2638"/>
		<updated>2009-10-26T08:50:32Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are a variety of sources of kvm kernel modules.  Which ones to use depend on whether you are interested in using, testing, or developing kvm.&lt;br /&gt;
&lt;br /&gt;
As of now, all major community and enterprise distributions contain kvm kernel modules and userspace; these are either installed by default or require installing a kvm package.  For someone looking for stability, these are the best choice.  No effort is needed to build or install the modules, support is provided by the distribution, and the distribution/module combination is well tested.&lt;br /&gt;
&lt;br /&gt;
For those stuck on an older kernel, but wishing to run a modern, stable kvm release the kvm maintainers provide an external module kit that can run a modern kvm on an older kernel.  These packages are named kvm-kmod-2.6.x.y (or kvm-kmod-2.6.x), and correspond to the kvm code contained in Linux 2.6.x.y.  They can generally be run on any Linux kernel older than 2.6.x.&lt;br /&gt;
&lt;br /&gt;
If you wish to help testing the kvm component of the next Linux release, but without running a -rc kernel from kernel.org, you may use kvm-kmod-2.6.x-rcy, containing the code from Linux 2.6.x-rcy backported to run on older kernels.  Feedback from running this release will help improve the kvm in the next kernel release.&lt;br /&gt;
&lt;br /&gt;
For testing development snapshots, the kvm-kmod-devel-xx releases are provided.  These don&#039;t correspond exactly to any Linux release, but instead contain code from the kvm.git (the kvm development repository) at the point of their release.  These are generally the most up-to-date modules.&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=FAQ&amp;diff=2637</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=FAQ&amp;diff=2637"/>
		<updated>2009-10-26T08:39:31Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Add link to &amp;quot;Getting the kvm kernel modules&amp;quot; page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FAQ=&lt;br /&gt;
&lt;br /&gt;
== Preparing to use KVM ==&lt;br /&gt;
=== What do I need to use KVM? ===&lt;br /&gt;
You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list] of compatible processors. For Intel processors, see also [http://ark.intel.com/VTList.aspx the Intel® Virtualization Technology List].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== Are 64bits processors supported under KVM? ===&lt;br /&gt;
Yes they are supported and will allow you to run 32bits and 64 bits guests.&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;Can KVM run a 32-bit guest on a 64-bit host? What about PAE?&#039;&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is Intel VT / AMD-V / hvm? ===&lt;br /&gt;
[http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm Intel VT] and [http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_14287,00.html AMD&#039;s AMD-V] are instruction set extensions that provide hardware assistance to virtual machine monitors. They enable running fully isolated virtual machines at native hardware speeds, for some workloads.&lt;br /&gt;
&lt;br /&gt;
HVM (for Hardware Virtual Machine) is a vendor-neutral term often used to designate the x86 instruction set extensions.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where do I get my kvm kernel modules from? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Getting the kvm kernel modules]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if I have Intel VT or AMD-V? ===&lt;br /&gt;
With a recent enough Linux kernel, run the command:&lt;br /&gt;
&lt;br /&gt;
 . egrep &#039;^flags.*(vmx|svm)&#039; /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
If something shows up, you have VT. You can also check the processor model name (in `/proc/cpuinfo`) in the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Some manufacturers disable VT in the machine&#039;s BIOS, in such a way that it cannot be re-enabled.&lt;br /&gt;
* `/proc/cpuinfo` only shows virtualization capabilities starting with Linux 2.6.15 (Intel) and Linux 2.6.16 (AMD). Use the `uname -r` command to query your kernel version.&lt;br /&gt;
In case of doubt, contact your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;KVM: disabled by BIOS&amp;quot; error ===&lt;br /&gt;
Check if there is an option to enable it in the BIOS. If not, look for a more recent BIOS on the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* On some hardware (e-g HP nx6320), you need to power-off/power-on the machine after enabling virtualization in the BIOS.&lt;br /&gt;
* Enabling some BIOS features may break VT support on some hardware (e-g Enabling Intel AMT on a Thinkpad T500 will prevent kvm-intel from loading with &amp;quot;disabled by bios&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I use AMD-V extension? ===&lt;br /&gt;
 modprobe kvm-amd&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What user space tools does KVM use? ===&lt;br /&gt;
KVM uses a slightly modified [http://www.nongnu.org/qemu QEMU] program to instantiate the virtual machine. Once running, a virtual machine is just a regular process. You can use `top(1), kill(1), taskset(1)` and similar tools to manage virtual machines.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What virtual disk formats can KVM use? ===&lt;br /&gt;
KVM inherits a wealth of disk formats support from QEMU; it supports raw images, the native QEMU format (qcow2), VMware format, and many more.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Are there management tools available to help me manage my virtual machines? ===&lt;br /&gt;
Yes.  Please see the [[Management Tools]] page for some links.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Using KVM ==&lt;br /&gt;
=== How can I use KVM with a non-privileged user? ===&lt;br /&gt;
The cleanest way is probably to create a group, say &#039;&#039;kvm&#039;&#039;, and add the user(s) to that group. Then you will need change /dev/kvm to owned by group &#039;&#039;kvm&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On a system that runs udev, you will probably need to add the following line somewhere in your udev configuration so it will automatically give the right group to the newly created device (i-e for ubuntu add a line to &#039;&#039;/etc/udev/rules.d/40-permissions.rules&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
 KERNEL==&amp;quot;kvm&amp;quot;, GROUP=&amp;quot;kvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I get the most performance out of KVM? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Tuning KVM]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is KVM stable? ===&lt;br /&gt;
KVM is stable and used in production.  As with most open source projects, development snapshots are less stable than the stable release series.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== That&#039;s alright, but can I really use it for my daily use? ===&lt;br /&gt;
Sure. We continuously run the most often-used OSes and configurations and if anything breaks for the developers, it&#039;s fixed as soon as it was broken. See the [[Guest Support Status]] and [[Host Support Status]] pages to find out more. Please update them with success stories so that new users would benefit from the experience of the community.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How about production use? ===&lt;br /&gt;
For production use, it&#039;s recommended you use the KVM modules shipped by the distribution you&#039;re using to ensure stability. As mentioned above, it&#039;s tempting to use new features, but you never know of (unwanted) surprises hidden away. It&#039;ll be best if you can run the development snapshots with non-critical production load, so that the latest releases are stable for you when you decide to deploy them.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What happens if I kill -9 a VM process? ===&lt;br /&gt;
From the guest&#039;s perspective, it is as if you yanked the power cord out. From the host&#039;s perspective, the process is killed and all resources it uses are reclaimed.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I need help to setup the network for my guest ===&lt;br /&gt;
You can have a look to the [[Networking]] page of this wiki for informations on the most classical networking setup for the guests. You can also refer to the QEMU documentation.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where can I find more documention... ===&lt;br /&gt;
Most usability issues are covered in the QEMU [http://www.nongnu.org/qemu/user-doc.html documentation].  There is also an extensive [http://kidsquid.com/cgi-bin/moin.cgi/FrequentlyAskedQuestions FAQ].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== How can I check that I&#039;m not falling back to QEMU with no hardware acceleration? ===&lt;br /&gt;
&lt;br /&gt;
If you think that you might no be using the hardware acceleration provided by the KVM module, here are a few steps to help you check this.&lt;br /&gt;
&lt;br /&gt;
First of all, check that you don&#039;t have messages such as:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 qemu-system-x86_64 -hda myvm.qcow2&lt;br /&gt;
 open /dev/kvm: No such file or directory&lt;br /&gt;
 Could not initialize KVM, will disable KVM support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In that case, you can check that:&lt;br /&gt;
* the modules are correctly loaded &amp;lt;code&amp;gt;lsmod|grep kvm&lt;br /&gt;
* you don&#039;t have a &amp;quot;KVM: disabled by BIOS&amp;quot; line in the output of dmesg&lt;br /&gt;
* /dev/kvm exists and you have the correct rights to use it&lt;br /&gt;
&lt;br /&gt;
Other ways to do the diagnostic:&lt;br /&gt;
* if you have access to the QEMU monitor (Ctrl-Alt-2, use Ctrl-Alt-1 to get back to the VM display), enter the &amp;quot;info kvm&amp;quot; command and it should respond with &amp;quot;KVM support: enabled&amp;quot;&lt;br /&gt;
* the right-end columns of the output from &amp;lt;code&amp;gt;lsmod|grep kvm&amp;lt;/code&amp;gt; on the host system, once the VM is started should show only non zero values. The value on the line corresponding to the architecture specific module (e-g kvm_intel, kvm_amd) show the number of VM using the module. For instance, if I have 2 VM running using the KVM module on a machine with vt, it will report:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 lsmod|grep kvm&lt;br /&gt;
 kvm_intel              44896  2&lt;br /&gt;
 kvm                   159656  1 kvm_intel&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;rect too big&amp;quot; Message when using VNC Display ===&lt;br /&gt;
When connection to a VNC Terminal, a &amp;quot;rect too big&amp;quot; message appears, and the VNC Session disconnects.&lt;br /&gt;
&lt;br /&gt;
This happens because of a VNC protocol flaw on the way on-the-fly pixel format changes are handled (more info at [http://www.mail-archive.com/qemu-devel@nongnu.org/msg04879.html this thread]). If you are using TigerVNC, you can avoid this problem by disabling on-the-fly selection of pixel encoding, using the &amp;lt;tt&amp;gt;-AutoSelect=0&amp;lt;/tt&amp;gt; command-line option of vncviewer. You may also want to check the encoding options on the vncviewer man page, as this will disable automatic selection of encoding based on connection speed.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&#039;&#039;&#039;How do I set up the network such that my guest is accessible from other machines?&#039;&#039;&#039; or&lt;br /&gt;
&lt;br /&gt;
=== My guest network is stuck what should I do? ===&lt;br /&gt;
KVM uses QEMU for its device emulation. Consult the [http://kidsquid.com/cgi-bin/moin.cgi/QemuNetwork QEMU network wiki page] for detailed network setup instructions.&lt;br /&gt;
&lt;br /&gt;
One would probably be interested in the Root Networking Mode page and the Network Bridge page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I get an &amp;quot;Exception 13&amp;quot; or &amp;quot;Exception 12&amp;quot; message while booting a guest OS on my Intel host ===&lt;br /&gt;
See the [[Intel Real Mode Emulation Problems]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== I get &amp;quot;rtc interrupts lost&amp;quot; messages, and the guest is very slow? ===&lt;br /&gt;
Try setting &amp;lt;code&amp;gt;CONFIG_HPET_EMULATE_RTC=y&amp;lt;/code&amp;gt; in your host &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I have VMware/Parallels/VirtualBox installed and when I modprobe KVM, my system deadlocks. ===&lt;br /&gt;
Neither Intel VT nor AMD-V provide a mechanism to determine whether software is currently using the hardware virtualization extensions.  This means that if you have two kernel modules loaded attempting to use hardware virtualization extensions, very bad things will happen.  If you are using another type of virtualization software and experience any sort of weirdness with KVM, make sure you can reproduce the problem without the kernel modules for that software loaded before you report a bug in KVM.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== There&#039;s nothing on QEMU/KVM screen, but it&#039;s not hanged! I&#039;m trying to install Kubuntu. ===&lt;br /&gt;
Try to run kvm with -std-vga option. It helps if guest operating system uses framebuffer mode like Kubuntu/Ubuntu.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== When I click the guest operating system window, mouse is grabbed. How can I get mouse to not to do that? OR Mouse doesn&#039;t show up / doesn&#039;t work in the guest. What do I do? ===&lt;br /&gt;
From #qemu wiki, try to run kvm/qemu with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -usb -usbdevice tablet&lt;br /&gt;
If that doesn&#039;t work, try this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ export SDL_VIDEO_X11_DGAMOUSE=0&lt;br /&gt;
(from http://wiki.clug.org.za/wiki/QEMU_mouse_not_working )&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== General KVM information ==&lt;br /&gt;
=== What is the difference between KVM and Xen? ===&lt;br /&gt;
Xen is an external hypervisor; it assumes control of the machine and divides resources among guests. On the other hand, KVM is part of Linux and uses the regular Linux scheduler and memory management. This means that KVM is much smaller and simpler to use; it is also more featureful; for example KVM can swap guests to disk in order to free RAM.&lt;br /&gt;
&lt;br /&gt;
KVM only run on processors that supports x86 hvm (vt/svm instructions set) whereas Xen also allows running modified operating systems on non-hvm x86 processors using a technique called paravirtualization. KVM does not support paravirtualization for CPU but may support paravirtualization for device drivers to improve I/O performance.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and VMware? ===&lt;br /&gt;
VMware is a proprietary product. KVM is Free Software released under the GPL.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and QEMU? ===&lt;br /&gt;
QEMU uses emulation; KVM uses processor extensions (HVM) for virtualization.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Do you have a port of KVM for Windows? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What kernel version does it work with? ===&lt;br /&gt;
It depends on what version of KVM you are using. The last release of KVM should work with any recent kernel (2.6.17 and above), older releases even older kernels.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How much RAM do I need? ===&lt;br /&gt;
You will need enough memory to let the guest run comfortably while keeping enough for the host. 1GB is probably a minimum configuration for the host OS.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is dynamic use of RAM for guest operating system supported? ===&lt;br /&gt;
Yes. If you set -m 6144, guest can get a maximum of 6GB of RAM, but doesn&#039;t necessarily uses all. Please note however that the usual platform limits will apply so you won&#039;t be able to see more than 4GB of RAM on a 32 bits guest unless you use PAE.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What OSs can I run inside KVM VM? ===&lt;br /&gt;
Several.  See the [[Guest Support Status]] page for details. Note that several Linux flavors are known to hang on Intel processors during startup. Workaround is to disable splash screens in grub.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support a live migration feature to move virtual machines from one host to another without downtime? ===&lt;br /&gt;
Yes.  See the [[Migration]] page for details.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support live migration from an AMD host to an Intel host and back? ===&lt;br /&gt;
Yes.  There may be issues on 32-bit Intel hosts which don&#039;t support NX (or XD), but for 64-bit hosts back and forth migration should work well. Migration of 32-bit guests should work between 32-bit hosts and 64-bit hosts.&lt;br /&gt;
If one of your hosts does not support NX, you may consider disabling NX when starting the guest on a NX-capable system. You can do it by passing &amp;quot;-cpu qemu64,-nx&amp;quot; parameter to the guest.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can KVM run a 32-bit guest on a 64-bit host? What about PAE? ===&lt;br /&gt;
KVM supports 32-bit guests on 64-bit hosts, and any combination of PAE and non-PAE guests and hosts. The only unsupported combination is a 64-bit guest on a 32-bit host.&lt;br /&gt;
&lt;br /&gt;
If you are running a Windows Virtual Machine and have problems enabling PAE in your guest see the [[Windows PAE Workaround]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to use USB devices with a guest OS? ===&lt;br /&gt;
Yes, look up how to do it with QEMU, it&#039;s the same way.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can I have higher or widescreen resolutions (eg 1680 x 1050) in KVM? ===&lt;br /&gt;
Use the -vga std parameter while starting the VM to allow high resolution and widescreen displays.&lt;br /&gt;
&lt;br /&gt;
If the resolution you want to use is not available, you can patch the corresponding source files (see http://article.gmane.org/gmane.comp.emulators.kvm.devel/13557 as a reference), or send a mail to the KVM mailing list if you are not able to patch the source yourself.&lt;br /&gt;
&lt;br /&gt;
When using Windows as guest OS you might want to use the driver from the VBEMP x86 project (http://www.geocities.com/bearwindows/vbemp.htm).&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP hosts? ===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP guests? ===&lt;br /&gt;
Yes. Up to 16 CPUs can be specified using the -smp option.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is the name &#039;KVM&#039; trademarked? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Tuning_KVM&amp;diff=2588</id>
		<title>Tuning KVM</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Tuning_KVM&amp;diff=2588"/>
		<updated>2009-09-29T17:23:25Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: cpu, networking, storage tuning tips&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CPU Performance ==&lt;br /&gt;
&lt;br /&gt;
Modern processors come with a wide variety of performance enhancing features such as streaming instructions sets (sse) and other performance-enhancing instructions.  These features vary from processor to processor.&lt;br /&gt;
&lt;br /&gt;
QEMU and KVM default to a compatible subset of cpu features, so that if you change your host processor, or perform a live migration, the guest will see its cpu features unchanged.  This is great for compatibility but comes at a performance cost.&lt;br /&gt;
&lt;br /&gt;
To pass all available host processor features to the guest, use the command line switch&lt;br /&gt;
&lt;br /&gt;
  qemu &#039;&#039;&#039;-cpu host&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
if you wish to retain compatibility, you can expose selected features to your guest.  If all your hosts have these features, compatibility is retained:&lt;br /&gt;
&lt;br /&gt;
  qemu &#039;&#039;&#039;-cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Networking ==&lt;br /&gt;
&lt;br /&gt;
QEMU defaults to user-mode networking (slirp), which is available without prior setup and without administrative privileges on the host.  It is also unfortunately very slow.  To get high performance networking, switch to a bridged setup via the -net tap command line switches.&lt;br /&gt;
&lt;br /&gt;
  qemu -net nic,model=virtio,mac=... &#039;&#039;&#039;-net tap,ifname=...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
QEMU also defaults to the RTL8139 network interface card (NIC) model.  Again this card is compatible with most guests, but does not offer the best performance.  If your guest supports it, switch to the virtio model:&lt;br /&gt;
&lt;br /&gt;
  qemu -net nic,&#039;&#039;&#039;model=virtio&#039;&#039;&#039;,mac=... -net tap,ifname=...&lt;br /&gt;
&lt;br /&gt;
== Storage ==&lt;br /&gt;
&lt;br /&gt;
QEMU supports a wide variety for storage formats and back-ends.  Easiest to use are the raw and qcow2 formats, but for the best performance it is best to use a raw partition.  You can create either a logical volume or a partition and assign it to the guest:&lt;br /&gt;
&lt;br /&gt;
  qemu -drive &#039;&#039;&#039;file=/dev/mapper/ImagesVolumeGroup-Guest1&#039;&#039;&#039;,cache=none,if=virtio&lt;br /&gt;
&lt;br /&gt;
QEMU also supports a wide variety of caching modes.  Writeback is useful for testing but does not offer storage guarantees.  Writethrough (the default) is safer, and relies on the host cache.  If you&#039;re using raw volumes or partitions, it is best to avoid the cache completely, which reduces data copies and bus traffic:&lt;br /&gt;
&lt;br /&gt;
  qemu -drive file=/dev/mapper/ImagesVolumeGroup-Guest1,&#039;&#039;&#039;cache=none&#039;&#039;&#039;,if=virtio&lt;br /&gt;
&lt;br /&gt;
As with networking, QEMU supports several storage interfaces.  The default, IDE, is highly supported by guests but may be slow, especially with disk arrays.  If your guest supports it, use the virtio interface:&lt;br /&gt;
&lt;br /&gt;
  qemu -drive file=/dev/mapper/ImagesVolumeGroup-Guest1,cache=none,&#039;&#039;&#039;if=virtio&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=FAQ&amp;diff=2587</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=FAQ&amp;diff=2587"/>
		<updated>2009-09-29T17:01:24Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Added tuning link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FAQ=&lt;br /&gt;
&lt;br /&gt;
== Preparing to use KVM ==&lt;br /&gt;
=== What do I need to use KVM? ===&lt;br /&gt;
You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list] of compatible processors. For Intel processors, see also [http://ark.intel.com/VTList.aspx the Intel® Virtualization Technology List].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== Are 64bits processors supported under KVM? ===&lt;br /&gt;
Yes they are supported and will allow you to run 32bits and 64 bits guests.&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;Can KVM run a 32-bit guest on a 64-bit host? What about PAE?&#039;&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is Intel VT / AMD-V / hvm? ===&lt;br /&gt;
[http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm Intel VT] and [http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_14287,00.html AMD&#039;s AMD-V] are instruction set extensions that provide hardware assistance to virtual machine monitors. They enable running fully isolated virtual machines at native hardware speeds, for some workloads.&lt;br /&gt;
&lt;br /&gt;
HVM (for Hardware Virtual Machine) is a vendor-neutral term often used to designate the x86 instruction set extensions.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if I have Intel VT or AMD-V? ===&lt;br /&gt;
With a recent enough Linux kernel, run the command:&lt;br /&gt;
&lt;br /&gt;
 . egrep &#039;^flags.*(vmx|svm)&#039; /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
If something shows up, you have VT. You can also check the processor model name (in `/proc/cpuinfo`) in the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Some manufacturers disable VT in the machine&#039;s BIOS, in such a way that it cannot be re-enabled.&lt;br /&gt;
* `/proc/cpuinfo` only shows virtualization capabilities starting with Linux 2.6.15 (Intel) and Linux 2.6.16 (AMD). Use the `uname -r` command to query your kernel version.&lt;br /&gt;
In case of doubt, contact your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;KVM: disabled by BIOS&amp;quot; error ===&lt;br /&gt;
Check if there is an option to enable it in the BIOS. If not, look for a more recent BIOS on the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* On some hardware (e-g HP nx6320), you need to power-off/power-on the machine after enabling virtualization in the BIOS.&lt;br /&gt;
* Enabling some BIOS features may break VT support on some hardware (e-g Enabling Intel AMT on a Thinkpad T500 will prevent kvm-intel from loading with &amp;quot;disabled by bios&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I use AMD-V extension? ===&lt;br /&gt;
 modprobe kvm-amd&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What user space tools does KVM use? ===&lt;br /&gt;
KVM uses a slightly modified [http://www.nongnu.org/qemu QEMU] program to instantiate the virtual machine. Once running, a virtual machine is just a regular process. You can use `top(1), kill(1), taskset(1)` and similar tools to manage virtual machines.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What virtual disk formats can KVM use? ===&lt;br /&gt;
KVM inherits a wealth of disk formats support from QEMU; it supports raw images, the native QEMU format (qcow2), VMware format, and many more.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Are there management tools available to help me manage my virtual machines? ===&lt;br /&gt;
Yes.  Please see the [[Management Tools]] page for some links.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Using KVM ==&lt;br /&gt;
=== How can I use KVM with a non-privileged user? ===&lt;br /&gt;
The cleanest way is probably to create a group, say &#039;&#039;kvm&#039;&#039;, and add the user(s) to that group. Then you will need change /dev/kvm to owned by group &#039;&#039;kvm&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On a system that runs udev, you will probably need to add the following line somewhere in your udev configuration so it will automatically give the right group to the newly created device (i-e for ubuntu add a line to &#039;&#039;/etc/udev/rules.d/40-permissions.rules&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
 KERNEL==&amp;quot;kvm&amp;quot;, GROUP=&amp;quot;kvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I get the most performance out of KVM? ===&lt;br /&gt;
&lt;br /&gt;
See the [[Tuning KVM]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is KVM stable? ===&lt;br /&gt;
KVM is stable and used in production.  As with most open source projects, development snapshots are less stable than the stable release series.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== That&#039;s alright, but can I really use it for my daily use? ===&lt;br /&gt;
Sure. We continuously run the most often-used OSes and configurations and if anything breaks for the developers, it&#039;s fixed as soon as it was broken. See the [[Guest Support Status]] and [[Host Support Status]] pages to find out more. Please update them with success stories so that new users would benefit from the experience of the community.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How about production use? ===&lt;br /&gt;
For production use, it&#039;s recommended you use the KVM modules shipped by the distribution you&#039;re using to ensure stability. As mentioned above, it&#039;s tempting to use new features, but you never know of (unwanted) surprises hidden away. It&#039;ll be best if you can run the development snapshots with non-critical production load, so that the latest releases are stable for you when you decide to deploy them.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What happens if I kill -9 a VM process? ===&lt;br /&gt;
From the guest&#039;s perspective, it is as if you yanked the power cord out. From the host&#039;s perspective, the process is killed and all resources it uses are reclaimed.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I need help to setup the network for my guest ===&lt;br /&gt;
You can have a look to the [[Networking]] page of this wiki for informations on the most classical networking setup for the guests. You can also refer to the QEMU documentation.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where can I find more documention... ===&lt;br /&gt;
Most usability issues are covered in the QEMU [http://www.nongnu.org/qemu/user-doc.html documentation].  There is also an extensive [http://kidsquid.com/cgi-bin/moin.cgi/FrequentlyAskedQuestions FAQ].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== How can I check that I&#039;m not falling back to QEMU with no hardware acceleration? ===&lt;br /&gt;
&lt;br /&gt;
If you think that you might no be using the hardware acceleration provided by the KVM module, here are a few steps to help you check this.&lt;br /&gt;
&lt;br /&gt;
First of all, check that you don&#039;t have messages such as:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 qemu-system-x86_64 -hda myvm.qcow2&lt;br /&gt;
 open /dev/kvm: No such file or directory&lt;br /&gt;
 Could not initialize KVM, will disable KVM support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In that case, you can check that:&lt;br /&gt;
* the modules are correctly loaded &amp;lt;code&amp;gt;lsmod|grep kvm&lt;br /&gt;
* you don&#039;t have a &amp;quot;KVM: disabled by BIOS&amp;quot; line in the output of dmesg&lt;br /&gt;
* /dev/kvm exists and you have the correct rights to use it&lt;br /&gt;
&lt;br /&gt;
Other ways to do the diagnostic:&lt;br /&gt;
* if you have access to the QEMU monitor (Ctrl-Alt-2, use Ctrl-Alt-1 to get back to the VM display), enter the &amp;quot;info kvm&amp;quot; command and it should respond with &amp;quot;KVM support: enabled&amp;quot;&lt;br /&gt;
* the right-end columns of the output from &amp;lt;code&amp;gt;lsmod|grep kvm&amp;lt;/code&amp;gt; on the host system, once the VM is started should show only non zero values. The value on the line corresponding to the architecture specific module (e-g kvm_intel, kvm_amd) show the number of VM using the module. For instance, if I have 2 VM running using the KVM module on a machine with vt, it will report:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 lsmod|grep kvm&lt;br /&gt;
 kvm_intel              44896  2&lt;br /&gt;
 kvm                   159656  1 kvm_intel&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;rect too big&amp;quot; Message when using VNC Display ===&lt;br /&gt;
When connection to a VNC Terminal, a &amp;quot;rect too big&amp;quot; message appears, and the VNC Session disconnects.&lt;br /&gt;
&lt;br /&gt;
This might happen, when a VNC Client (for example RealVNC / xvnc4viewer) chooses ZRLE Encoding. Simple choose Hextile Encoding in the options of your VNC Client, and the Problem should be resolved.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&#039;&#039;&#039;How do I set up the network such that my guest is accessible from other machines?&#039;&#039;&#039; or&lt;br /&gt;
&lt;br /&gt;
=== My guest network is stuck what should I do? ===&lt;br /&gt;
KVM uses QEMU for its device emulation. Consult the [http://kidsquid.com/cgi-bin/moin.cgi/QemuNetwork QEMU network wiki page] for detailed network setup instructions.&lt;br /&gt;
&lt;br /&gt;
One would probably be interested in the Root Networking Mode page and the Network Bridge page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I get an &amp;quot;Exception 13&amp;quot; or &amp;quot;Exception 12&amp;quot; message while booting a guest OS on my Intel host ===&lt;br /&gt;
See the [[Intel Real Mode Emulation Problems]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== I get &amp;quot;rtc interrupts lost&amp;quot; messages, and the guest is very slow? ===&lt;br /&gt;
Try setting &amp;lt;code&amp;gt;CONFIG_HPET_EMULATE_RTC=y&amp;lt;/code&amp;gt; in your host &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I have VMware/Parallels/VirtualBox installed and when I modprobe KVM, my system deadlocks. ===&lt;br /&gt;
Neither Intel VT nor AMD-V provide a mechanism to determine whether software is currently using the hardware virtualization extensions.  This means that if you have two kernel modules loaded attempting to use hardware virtualization extensions, very bad things will happen.  If you are using another type of virtualization software and experience any sort of weirdness with KVM, make sure you can reproduce the problem without the kernel modules for that software loaded before you report a bug in KVM.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== There&#039;s nothing on QEMU/KVM screen, but it&#039;s not hanged! I&#039;m trying to install Kubuntu. ===&lt;br /&gt;
Try to run kvm with -std-vga option. It helps if guest operating system uses framebuffer mode like Kubuntu/Ubuntu.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== When I click the guest operating system window, mouse is grabbed. How can I get mouse to not to do that? OR Mouse doesn&#039;t show up / doesn&#039;t work in the guest. What do I do? ===&lt;br /&gt;
From #qemu wiki, try to run kvm/qemu with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -usb -usbdevice tablet&lt;br /&gt;
If that doesn&#039;t work, try this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ export SDL_VIDEO_X11_DGAMOUSE=0&lt;br /&gt;
(from http://wiki.clug.org.za/wiki/QEMU_mouse_not_working )&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== General KVM information ==&lt;br /&gt;
=== What is the difference between KVM and Xen? ===&lt;br /&gt;
Xen is an external hypervisor; it assumes control of the machine and divides resources among guests. On the other hand, KVM is part of Linux and uses the regular Linux scheduler and memory management. This means that KVM is much smaller and simpler to use; it is also more featureful; for example KVM can swap guests to disk in order to free RAM.&lt;br /&gt;
&lt;br /&gt;
KVM only run on processors that supports x86 hvm (vt/svm instructions set) whereas Xen also allows running modified operating systems on non-hvm x86 processors using a technique called paravirtualization. KVM does not support paravirtualization for CPU but may support paravirtualization for device drivers to improve I/O performance.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and VMware? ===&lt;br /&gt;
VMware is a proprietary product. KVM is Free Software released under the GPL.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and QEMU? ===&lt;br /&gt;
QEMU uses emulation; KVM uses processor extensions (HVM) for virtualization.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Do you have a port of KVM for Windows? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What kernel version does it work with? ===&lt;br /&gt;
It depends on what version of KVM you are using. The last release of KVM should work with any recent kernel (2.6.17 and above), older releases even older kernels.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How much RAM do I need? ===&lt;br /&gt;
You will need enough memory to let the guest run comfortably while keeping enough for the host. 1GB is probably a minimum configuration for the host OS.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is dynamic use of RAM for guest operating system supported? ===&lt;br /&gt;
Yes. If you set -m 6144, guest can get a maximum of 6GB of RAM, but doesn&#039;t necessarily uses all. Please note however that the usual platform limits will apply so you won&#039;t be able to see more than 4GB of RAM on a 32 bits guest unless you use PAE.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What OSs can I run inside KVM VM? ===&lt;br /&gt;
Several.  See the [[Guest Support Status]] page for details. Note that several Linux flavors are known to hang on Intel processors during startup. Workaround is to disable splash screens in grub.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support a live migration feature to move virtual machines from one host to another without downtime? ===&lt;br /&gt;
Yes.  See the [[Migration]] page for details.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support live migration from an AMD host to an Intel host and back? ===&lt;br /&gt;
Yes.  There may be issues on 32-bit Intel hosts which don&#039;t support NX (or XD), but for 64-bit hosts back and forth migration should work well. Migration of 32-bit guests should work between 32-bit hosts and 64-bit hosts.&lt;br /&gt;
If one of your hosts does not support NX, you may consider disabling NX when starting the guest on a NX-capable system. You can do it by passing &amp;quot;-cpu qemu64,-nx&amp;quot; parameter to the guest.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can KVM run a 32-bit guest on a 64-bit host? What about PAE? ===&lt;br /&gt;
KVM supports 32-bit guests on 64-bit hosts, and any combination of PAE and non-PAE guests and hosts. The only unsupported combination is a 64-bit guest on a 32-bit host.&lt;br /&gt;
&lt;br /&gt;
If you are running a Windows Virtual Machine and have problems enabling PAE in your guest see the [[Windows PAE Workaround]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to use USB devices with a guest OS? ===&lt;br /&gt;
Yes, look up how to do it with QEMU, it&#039;s the same way.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can I have higher or widescreen resolutions (eg 1680 x 1050) in KVM? ===&lt;br /&gt;
Use the -vga std parameter while starting the VM to allow high resolution and widescreen displays.&lt;br /&gt;
&lt;br /&gt;
If the resolution you want to use is not available, you can patch the corresponding source files (see http://article.gmane.org/gmane.comp.emulators.kvm.devel/13557 as a reference), or send a mail to the KVM mailing list if you are not able to patch the source yourself.&lt;br /&gt;
&lt;br /&gt;
When using Windows as guest OS you might want to use the driver from the VBEMP x86 project (http://www.geocities.com/bearwindows/vbemp.htm).&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP hosts? ===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP guests? ===&lt;br /&gt;
Yes. Up to 16 CPUs can be specified using the -smp option.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is the name &#039;KVM&#039; trademarked? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=FAQ&amp;diff=2551</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=FAQ&amp;diff=2551"/>
		<updated>2009-09-06T09:04:41Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: General update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=FAQ=&lt;br /&gt;
&lt;br /&gt;
== Preparing to use KVM ==&lt;br /&gt;
=== What do I need to use KVM? ===&lt;br /&gt;
You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list] of compatible processors. For Intel processors, see also [http://ark.intel.com/VTList.aspx the Intel® Virtualization Technology List].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== Are 64bits processors supported under KVM? ===&lt;br /&gt;
Yes they are supported and will allow you to run 32bits and 64 bits guests.&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;Can KVM run a 32-bit guest on a 64-bit host? What about PAE?&#039;&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is Intel VT / AMD-V / hvm? ===&lt;br /&gt;
[http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm Intel VT] and [http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_14287,00.html AMD&#039;s AMD-V] are instruction set extensions that provide hardware assistance to virtual machine monitors. They enable running fully isolated virtual machines at native hardware speeds, for some workloads.&lt;br /&gt;
&lt;br /&gt;
HVM (for Hardware Virtual Machine) is a vendor-neutral term often used to designate the x86 instruction set extensions.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if I have Intel VT or AMD-V? ===&lt;br /&gt;
With a recent enough Linux kernel, run the command:&lt;br /&gt;
&lt;br /&gt;
 . egrep &#039;^flags.*(vmx|svm)&#039; /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
If something shows up, you have VT. You can also check the processor model name (in `/proc/cpuinfo`) in the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Some manufacturers disable VT in the machine&#039;s BIOS, in such a way that it cannot be re-enabled.&lt;br /&gt;
* `/proc/cpuinfo` only shows virtualization capabilities starting with Linux 2.6.15 (Intel) and Linux 2.6.16 (AMD). Use the `uname -r` command to query your kernel version.&lt;br /&gt;
In case of doubt, contact your hardware vendor.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;KVM: disabled by BIOS&amp;quot; error ===&lt;br /&gt;
Check if there is an option to enable it in the BIOS. If not, look for a more recent BIOS on the vendor&#039;s web site.&lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* On some hardware (e-g HP nx6320), you need to power-off/power-on the machine after enabling virtualization in the BIOS.&lt;br /&gt;
* Enabling some BIOS features may break VT support on some hardware (e-g Enabling Intel AMT on a Thinkpad T500 will prevent kvm-intel from loading with &amp;quot;disabled by bios&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I use AMD-V extension? ===&lt;br /&gt;
 modprobe kvm-amd&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What user space tools does KVM use? ===&lt;br /&gt;
KVM uses a slightly modified [http://www.nongnu.org/qemu QEMU] program to instantiate the virtual machine. Once running, a virtual machine is just a regular process. You can use `top(1), kill(1), taskset(1)` and similar tools to manage virtual machines.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What virtual disk formats can KVM use? ===&lt;br /&gt;
KVM inherits a wealth of disk formats support from QEMU; it supports raw images, the native QEMU format (qcow2), VMware format, and many more.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Are there management tools available to help me manage my virtual machines? ===&lt;br /&gt;
Yes.  Please see the [[Management Tools]] page for some links.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Using KVM ==&lt;br /&gt;
=== How can I use KVM with a non-privileged user? ===&lt;br /&gt;
The cleanest way is probably to create a group, say &#039;&#039;kvm&#039;&#039;, and add the user(s) to that group. Then you will need change /dev/kvm to owned by group &#039;&#039;kvm&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
On a system that runs udev, you will probably need to add the following line somewhere in your udev configuration so it will automatically give the right group to the newly created device (i-e for ubuntu add a line to &#039;&#039;/etc/udev/rules.d/40-permissions.rules&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
 KERNEL==&amp;quot;kvm&amp;quot;, GROUP=&amp;quot;kvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is KVM stable? ===&lt;br /&gt;
KVM is stable and used in production.  As with most open source projects, development snapshots are less stable than the stable release series.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== That&#039;s alright, but can I really use it for my daily use? ===&lt;br /&gt;
Sure. We continuously run the most often-used OSes and configurations and if anything breaks for the developers, it&#039;s fixed as soon as it was broken. See the [[Guest Support Status]] and [[Host Support Status]] pages to find out more. Please update them with success stories so that new users would benefit from the experience of the community.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How about production use? ===&lt;br /&gt;
For production use, it&#039;s recommended you use the KVM modules shipped by the distribution you&#039;re using to ensure stability. As mentioned above, it&#039;s tempting to use new features, but you never know of (unwanted) surprises hidden away. It&#039;ll be best if you can run the development snapshots with non-critical production load, so that the latest releases are stable for you when you decide to deploy them.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What happens if I kill -9 a VM process? ===&lt;br /&gt;
From the guest&#039;s perspective, it is as if you yanked the power cord out. From the host&#039;s perspective, the process is killed and all resources it uses are reclaimed.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I need help to setup the network for my guest ===&lt;br /&gt;
You can have a look to the [[Networking]] page of this wiki for informations on the most classical networking setup for the guests. You can also refer to the QEMU documentation.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where can I find more documention... ===&lt;br /&gt;
Most usability issues are covered in the QEMU [http://www.nongnu.org/qemu/user-doc.html documentation].  There is also an extensive [http://kidsquid.com/cgi-bin/moin.cgi/FrequentlyAskedQuestions FAQ].&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== How can I check that I&#039;m not falling back to QEMU with no hardware acceleration? ===&lt;br /&gt;
&lt;br /&gt;
If you think that you might no be using the hardware acceleration provided by the KVM module, here are a few steps to help you check this.&lt;br /&gt;
&lt;br /&gt;
First of all, check that you don&#039;t have messages such as:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 qemu-system-x86_64 -hda myvm.qcow2&lt;br /&gt;
 open /dev/kvm: No such file or directory&lt;br /&gt;
 Could not initialize KVM, will disable KVM support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In that case, you can check that:&lt;br /&gt;
* the modules are correctly loaded &amp;lt;code&amp;gt;lsmod|grep kvm&lt;br /&gt;
* you don&#039;t have a &amp;quot;KVM: disabled by BIOS&amp;quot; line in the output of dmesg&lt;br /&gt;
* /dev/kvm exists and you have the correct rights to use it&lt;br /&gt;
&lt;br /&gt;
Other ways to do the diagnostic:&lt;br /&gt;
* if you have access to the QEMU monitor (Ctrl-Alt-2, use Ctrl-Alt-1 to get back to the VM display), enter the &amp;quot;info kvm&amp;quot; command and it should respond with &amp;quot;KVM support: enabled&amp;quot;&lt;br /&gt;
* the right-end columns of the output from &amp;lt;code&amp;gt;lsmod|grep kvm&amp;lt;/code&amp;gt; on the host system, once the VM is started should show only non zero values. The value on the line corresponding to the architecture specific module (e-g kvm_intel, kvm_amd) show the number of VM using the module. For instance, if I have 2 VM running using the KVM module on a machine with vt, it will report:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 lsmod|grep kvm&lt;br /&gt;
 kvm_intel              44896  2&lt;br /&gt;
 kvm                   159656  1 kvm_intel&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;rect too big&amp;quot; Message when using VNC Display ===&lt;br /&gt;
When connection to a VNC Terminal, a &amp;quot;rect too big&amp;quot; message appears, and the VNC Session disconnects.&lt;br /&gt;
&lt;br /&gt;
This might happen, when a VNC Client (for example RealVNC / xvnc4viewer) chooses ZRLE Encoding. Simple choose Hextile Encoding in the options of your VNC Client, and the Problem should be resolved.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&#039;&#039;&#039;How do I set up the network such that my guest is accessible from other machines?&#039;&#039;&#039; or&lt;br /&gt;
&lt;br /&gt;
=== My guest network is stuck what should I do? ===&lt;br /&gt;
KVM uses QEMU for its device emulation. Consult the [http://kidsquid.com/cgi-bin/moin.cgi/QemuNetwork QEMU network wiki page] for detailed network setup instructions.&lt;br /&gt;
&lt;br /&gt;
One would probably be interested in the Root Networking Mode page and the Network Bridge page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== I get an &amp;quot;Exception 13&amp;quot; or &amp;quot;Exception 12&amp;quot; message while booting a guest OS on my Intel host ===&lt;br /&gt;
See the [[Intel Real Mode Emulation Problems]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== I get &amp;quot;rtc interrupts lost&amp;quot; messages, and the guest is very slow? ===&lt;br /&gt;
Try setting &amp;lt;code&amp;gt;CONFIG_HPET_EMULATE_RTC=y&amp;lt;/code&amp;gt; in your host &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I have VMware/Parallels/VirtualBox installed and when I modprobe KVM, my system deadlocks. ===&lt;br /&gt;
Neither Intel VT nor AMD-V provide a mechanism to determine whether software is currently using the hardware virtualization extensions.  This means that if you have two kernel modules loaded attempting to use hardware virtualization extensions, very bad things will happen.  If you are using another type of virtualization software and experience any sort of weirdness with KVM, make sure you can reproduce the problem without the kernel modules for that software loaded before you report a bug in KVM.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== There&#039;s nothing on QEMU/KVM screen, but it&#039;s not hanged! I&#039;m trying to install Kubuntu. ===&lt;br /&gt;
Try to run kvm with -std-vga option. It helps if guest operating system uses framebuffer mode like Kubuntu/Ubuntu.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== When I click the guest operating system window, mouse is grabbed. How can I get mouse to not to do that? OR Mouse doesn&#039;t show up / doesn&#039;t work in the guest. What do I do? ===&lt;br /&gt;
From #qemu wiki, try to run kvm/qemu with&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -usb -usbdevice tablet&lt;br /&gt;
If that doesn&#039;t work, try this:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 $ export SDL_VIDEO_X11_DGAMOUSE=0&lt;br /&gt;
(from http://wiki.clug.org.za/wiki/QEMU_mouse_not_working )&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== General KVM information ==&lt;br /&gt;
=== What is the difference between KVM and Xen? ===&lt;br /&gt;
Xen is an external hypervisor; it assumes control of the machine and divides resources among guests. On the other hand, KVM is part of Linux and uses the regular Linux scheduler and memory management. This means that KVM is much smaller and simpler to use; it is also more featureful; for example KVM can swap guests to disk in order to free RAM.&lt;br /&gt;
&lt;br /&gt;
KVM only run on processors that supports x86 hvm (vt/svm instructions set) whereas Xen also allows running modified operating systems on non-hvm x86 processors using a technique called paravirtualization. KVM does not support paravirtualization for CPU but may support paravirtualization for device drivers to improve I/O performance.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and VMware? ===&lt;br /&gt;
VMware is a proprietary product. KVM is Free Software released under the GPL.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between KVM and QEMU? ===&lt;br /&gt;
QEMU uses emulation; KVM uses processor extensions (HVM) for virtualization.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Do you have a port of KVM for Windows? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What kernel version does it work with? ===&lt;br /&gt;
It depends on what version of KVM you are using. The last release of KVM should work with any recent kernel (2.6.17 and above), older releases even older kernels.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How much RAM do I need? ===&lt;br /&gt;
You will need enough memory to let the guest run comfortably while keeping enough for the host. 1GB is probably a minimum configuration for the host OS.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is dynamic use of RAM for guest operating system supported? ===&lt;br /&gt;
Yes. If you set -m 6144, guest can get a maximum of 6GB of RAM, but doesn&#039;t necessarily uses all. Please note however that the usual platform limits will apply so you won&#039;t be able to see more than 4GB of RAM on a 32 bits guest unless you use PAE.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What OSs can I run inside KVM VM? ===&lt;br /&gt;
Several.  See the [[Guest Support Status]] page for details. Note that several Linux flavors are known to hang on Intel processors during startup. Workaround is to disable splash screens in grub.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support a live migration feature to move virtual machines from one host to another without downtime? ===&lt;br /&gt;
Yes.  See the [[Migration]] page for details.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support live migration from an AMD host to an Intel host and back? ===&lt;br /&gt;
Yes.  There may be issues on 32-bit Intel hosts which don&#039;t support NX (or XD), but for 64-bit hosts back and forth migration should work well. Migration of 32-bit guests should work between 32-bit hosts and 64-bit hosts.&lt;br /&gt;
If one of your hosts does not support NX, you may consider disabling NX when starting the guest on a NX-capable system. You can do it by passing &amp;quot;-cpu qemu64,-nx&amp;quot; parameter to the guest.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can KVM run a 32-bit guest on a 64-bit host? What about PAE? ===&lt;br /&gt;
KVM supports 32-bit guests on 64-bit hosts, and any combination of PAE and non-PAE guests and hosts. The only unsupported combination is a 64-bit guest on a 32-bit host.&lt;br /&gt;
&lt;br /&gt;
If you are running a Windows Virtual Machine and have problems enabling PAE in your guest see the [[Windows PAE Workaround]] page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to use USB devices with a guest OS? ===&lt;br /&gt;
Yes, look up how to do it with QEMU, it&#039;s the same way.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can I have higher or widescreen resolutions (eg 1680 x 1050) in KVM? ===&lt;br /&gt;
Use the -vga std parameter while starting the VM to allow high resolution and widescreen displays.&lt;br /&gt;
&lt;br /&gt;
If the resolution you want to use is not available, you can patch the corresponding source files (see http://article.gmane.org/gmane.comp.emulators.kvm.devel/13557 as a reference), or send a mail to the KVM mailing list if you are not able to patch the source yourself.&lt;br /&gt;
&lt;br /&gt;
When using Windows as guest OS you might want to use the driver from the VBEMP x86 project (http://www.geocities.com/bearwindows/vbemp.htm).&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP hosts? ===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does KVM support SMP guests? ===&lt;br /&gt;
Yes. Up to 16 CPUs can be specified using the -smp option.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is the name &#039;KVM&#039; trademarked? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Code&amp;diff=2354</id>
		<title>Code</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Code&amp;diff=2354"/>
		<updated>2009-06-28T13:59:11Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Use new location for kvm.git&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code=&lt;br /&gt;
&lt;br /&gt;
[[Category:Architechture]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== kernel git tree ==&lt;br /&gt;
&lt;br /&gt;
The kvm kernel code is available through a git tree (like the kernel itself).  To create a repository using git, type&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/virt/kvm/kvm.git&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is also accessible through the kernel.org gitweb interface:               &lt;br /&gt;
[http://git.kernel.org/?p=virt/kvm/kvm.git;a=summary]&lt;br /&gt;
&lt;br /&gt;
For subsequent upgrades use the command&lt;br /&gt;
                                       &lt;br /&gt;
 git pull&lt;br /&gt;
&lt;br /&gt;
in the git working directory.&lt;br /&gt;
&lt;br /&gt;
== userspace git tree ==&lt;br /&gt;
&lt;br /&gt;
The kvm userspace code (libkvm and qemu) is available through a git tree. To create a repository using git, type&lt;br /&gt;
                                                                                      &lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is also accessible through the kernel.org gitweb interface:         &lt;br /&gt;
[http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=summary]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== building an external module with older kernels ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This only works for the x86 architecture.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. If you wish to use a distribution kernel (or just some random kernel you like) with kvm,&lt;br /&gt;
you can use the external module kit.  You will need the kvm-kmod repository:&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-kmod.git&lt;br /&gt;
 cd kvm-kmod&lt;br /&gt;
 git submodule update --init&lt;br /&gt;
 ./configure [--kerneldir=/path/to/kernel/dir]&lt;br /&gt;
 make sync&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
=== Tip about building against Red Hat Enterprise Linux kernels ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;kvm-userspace/kernel&amp;lt;/code&amp;gt; has some compat code to allow it to compile against older kernels, and also some code specific to features that are normally not present on older kernels but are present on RHEL kernels.&lt;br /&gt;
&lt;br /&gt;
So, when building against a RHEL kernel tree, check if the &amp;lt;code&amp;gt;RHEL_*&amp;lt;/code&amp;gt; macros at &amp;lt;code&amp;gt;${kerneldir}/include/linux/version.h&amp;lt;/code&amp;gt; are defined correctly, corresponding to the RHEL version where the kernel source comes from. If those macros aren&#039;t defined correctly, the compat code that allows compilation against RHEL kernels will break and you will get build errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== release tags ==&lt;br /&gt;
&lt;br /&gt;
kvm stable releases (based off of Qemu&#039;s stable branch) are tagged with &amp;lt;code&amp;gt;kvm-qemu-0.NN.N&amp;lt;/code&amp;gt; where &#039;&#039;N&#039;&#039; equates to the upstream Qemu branch versions. Note that kvm has them tagged not branched.&lt;br /&gt;
&lt;br /&gt;
kvm development releases are tagged with &amp;lt;code&amp;gt;kvm-nn&amp;lt;/code&amp;gt; where &#039;&#039;nn&#039;&#039; is the release number.&lt;br /&gt;
&lt;br /&gt;
== Binary Packages ==&lt;br /&gt;
&lt;br /&gt;
=== CentOS / RHEL ===&lt;br /&gt;
&lt;br /&gt;
Unofficial packages of latest releases can be found at:&lt;br /&gt;
&amp;lt;code&amp;gt;http://www.lfarkas.org/linux/packages/centos/5/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Debian Lenny ===&lt;br /&gt;
&lt;br /&gt;
There are some updated packages for debian lenny available at:&lt;br /&gt;
&amp;lt;code&amp;gt;http://www.corpit.ru/debian/tls/kvm/&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== nightly snapshots ==&lt;br /&gt;
&lt;br /&gt;
Nightly snapshots, for those who are uncomfortable with git, are [http://people.qumranet.com/avi/snapshots available].  When reporting a problem with a snapshot, please quote the snapshot name (which includes the date) and the contents of the SOURCES file in the snapshot tarball.&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Code&amp;diff=2312</id>
		<title>Code</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Code&amp;diff=2312"/>
		<updated>2009-05-20T09:26:04Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Update kvm-kmod instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code=&lt;br /&gt;
&lt;br /&gt;
[[Category:Architechture]]&lt;br /&gt;
== kernel git tree ==&lt;br /&gt;
The kvm kernel code is available through a git tree.  To create a repository using git, type&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is also accessible through the kernel.org gitweb interface:               &lt;br /&gt;
[http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git;a=summary]&lt;br /&gt;
&lt;br /&gt;
For subsequent upgrades use the command&lt;br /&gt;
                                       &lt;br /&gt;
 git-pull&lt;br /&gt;
in the git working dir.&lt;br /&gt;
&lt;br /&gt;
== userspace git tree ==&lt;br /&gt;
The kvm userspace code (libkvm and qemu) is available through a git tree. To create a repository using git, type&lt;br /&gt;
                                                                                      &lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is also accessible through the kernel.org gitweb interface:         &lt;br /&gt;
[http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=summary]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== building an external module with older kernels ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This only works for the x86 architecture.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. If you wish to use a distribution kernel (or just some random kernel you like) with kvm,&lt;br /&gt;
you can use the external module kit.  You will need the kvm-kmod repository:&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/virt/kvm/kvm-kmod.git&lt;br /&gt;
 cd kvm-kmod&lt;br /&gt;
 git submodule update --init&lt;br /&gt;
 ./configure [--kerneldir=/path/to/kernel/dir]&lt;br /&gt;
 make sync&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
=== Tip about building against Red Hat Enterprise Linux kernels ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;kvm-userspace/kernel&amp;lt;/code&amp;gt; has some compat code to allow it to compile against older kernels, and also some code specific to features that are normally not present on older kernels but are present on RHEL kernels.&lt;br /&gt;
&lt;br /&gt;
So, when building against a RHEL kernel tree, check if the &amp;lt;code&amp;gt;RHEL_*&amp;lt;/code&amp;gt; macros at &amp;lt;code&amp;gt;${kerneldir}/include/linux/version.h&amp;lt;/code&amp;gt; are defined correctly, corresponding to the RHEL version where the kernel source comes from. If those macros aren&#039;t defined correctly, the compat code that allows compilation against RHEL kernels will break and you will get build errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== release tags ==&lt;br /&gt;
&lt;br /&gt;
kvm releases are tagged with &amp;lt;code&amp;gt;kvm-nn&amp;lt;/code&amp;gt; where &#039;&#039;nn&#039;&#039; is the release number.&lt;br /&gt;
&lt;br /&gt;
== Binary Packages ==&lt;br /&gt;
=== CentOS / RHEL ===&lt;br /&gt;
&lt;br /&gt;
Unofficial packages of latest releases can be found at&lt;br /&gt;
http://www.lfarkas.org/linux/packages/centos/5/&lt;br /&gt;
&lt;br /&gt;
== nightly snapshots ==&lt;br /&gt;
&lt;br /&gt;
Nightly snapshots, for those who are uncomfortable with git, are [http://people.qumranet.com/avi/snapshots available].  When reporting a problem with a snapshot, please quote the snapshot name (which includes the date) and the contents of the SOURCES file in the snapshot tarball.&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Code&amp;diff=2311</id>
		<title>Code</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Code&amp;diff=2311"/>
		<updated>2009-05-20T09:19:59Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: Drop the Linux driver kit -- obsolete&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Code=&lt;br /&gt;
&lt;br /&gt;
[[Category:Architechture]]&lt;br /&gt;
== kernel git tree ==&lt;br /&gt;
The kvm kernel code is available through a git tree.  To create a repository using git, type&lt;br /&gt;
&lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is also accessible through the kernel.org gitweb interface:               &lt;br /&gt;
[http://git.kernel.org/?p=linux/kernel/git/avi/kvm.git;a=summary]&lt;br /&gt;
&lt;br /&gt;
For subsequent upgrades use the command&lt;br /&gt;
                                       &lt;br /&gt;
 git-pull&lt;br /&gt;
in the git working dir.&lt;br /&gt;
&lt;br /&gt;
== userspace git tree ==&lt;br /&gt;
The kvm userspace code (libkvm and qemu) is available through a git tree. To create a repository using git, type&lt;br /&gt;
                                                                                      &lt;br /&gt;
 git clone git://git.kernel.org/pub/scm/virt/kvm/qemu-kvm.git&lt;br /&gt;
&lt;br /&gt;
Alternatively, it is also accessible through the kernel.org gitweb interface:         &lt;br /&gt;
[http://git.kernel.org/?p=virt/kvm/qemu-kvm.git;a=summary]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== building an external module with older kernels ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;This only works for the x86 architecture.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
1. If you wish to use a distribution kernel (or just some random kernel you like) with kvm,&lt;br /&gt;
you can get both the userspace and kernel (via git).  In the userspace                  &lt;br /&gt;
toplevel directory, type:&lt;br /&gt;
                                                                                        &lt;br /&gt;
 ./configure [--kerneldir=/path/to/kernel/dir]&lt;br /&gt;
&lt;br /&gt;
2. If you are using a released kvm-XX.tar.gz, skip to step 3. If you got the source from git, you need to run the following commands:&lt;br /&gt;
&lt;br /&gt;
 cd kernel&lt;br /&gt;
 make sync LINUX=/path/to/kvm/git/tree&lt;br /&gt;
 cd ..&lt;br /&gt;
&lt;br /&gt;
3. Finally, build KVM and the KVM modules:&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are three important directories in this scenario:&lt;br /&gt;
{|border=1&lt;br /&gt;
! kvm-userspace&lt;br /&gt;
| Contains a &amp;lt;code&amp;gt;kernel&amp;lt;/code&amp;gt; subdirectory. If you got the source from git, it needs to be populated with files from the kvm.git repository (using &amp;lt;code&amp;gt;make sync&amp;lt;/code&amp;gt;).&lt;br /&gt;
|-&lt;br /&gt;
! host kernel tree&lt;br /&gt;
| Older kernel you want to use newer KVM modules with. Refer to it with &amp;lt;code&amp;gt;configure --kerneldir&amp;lt;/code&amp;gt;.&lt;br /&gt;
You need to point to a &#039;&#039;&#039;configured&#039;&#039;&#039; kernel source tree corresponding to the kernel you are building modules for. The default is to look for the sources of the running kernel at &amp;lt;code&amp;gt;/lib/modules/`uname -r`/build&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
! kvm kernel tree (from git)&lt;br /&gt;
| A clone of the kvm.git repository. Used as the source of the KVM modules. Refer to it with &amp;lt;code&amp;gt;LINUX=path&amp;lt;/code&amp;gt; in &amp;lt;code&amp;gt;make sync&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Tip about building against Red Hat Enterprise Linux kernels ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;kvm-userspace/kernel&amp;lt;/code&amp;gt; has some compat code to allow it to compile against older kernels, and also some code specific to features that are normally not present on older kernels but are present on RHEL kernels.&lt;br /&gt;
&lt;br /&gt;
So, when building against a RHEL kernel tree, check if the &amp;lt;code&amp;gt;RHEL_*&amp;lt;/code&amp;gt; macros at &amp;lt;code&amp;gt;${kerneldir}/include/linux/version.h&amp;lt;/code&amp;gt; are defined correctly, corresponding to the RHEL version where the kernel source comes from. If those macros aren&#039;t defined correctly, the compat code that allows compilation against RHEL kernels will break and you will get build errors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== release tags ==&lt;br /&gt;
&lt;br /&gt;
kvm releases are tagged with &amp;lt;code&amp;gt;kvm-nn&amp;lt;/code&amp;gt; where &#039;&#039;nn&#039;&#039; is the release number.&lt;br /&gt;
&lt;br /&gt;
== Binary Packages ==&lt;br /&gt;
=== CentOS / RHEL ===&lt;br /&gt;
&lt;br /&gt;
Unofficial packages of latest releases can be found at&lt;br /&gt;
http://www.lfarkas.org/linux/packages/centos/5/&lt;br /&gt;
&lt;br /&gt;
== nightly snapshots ==&lt;br /&gt;
&lt;br /&gt;
Nightly snapshots, for those who are uncomfortable with git, are [http://people.qumranet.com/avi/snapshots available].  When reporting a problem with a snapshot, please quote the snapshot name (which includes the date) and the contents of the SOURCES file in the snapshot tarball.&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=FAQ&amp;diff=1917</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=FAQ&amp;diff=1917"/>
		<updated>2009-02-05T12:27:24Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: update guest smp support&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
== Preparing to use kvm ==&lt;br /&gt;
=== What do I need to use kvm? ===&lt;br /&gt;
You will need an x86 machine running a recent Linux kernel on an Intel processor with VT (virtualization technology) extensions, or an AMD processor with SVM extensions (also called AMD-V). Xen has a [http://wiki.xensource.com/xenwiki/HVM_Compatible_Processors complete list] of compatible processors.              &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== Are 64bits processors supported under kvm? ===&lt;br /&gt;
Yes they are supported and will allow you to run 32bits and 64 bits clients.&lt;br /&gt;
&lt;br /&gt;
See also &#039;&#039;&#039;Can kvm run a 32-bit guest on a 64-bit host? What about PAE?&#039;&#039;&#039; below.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is Intel VT / AMD-V / hvm? ===&lt;br /&gt;
[http://www.intel.com/technology/itj/2006/v10i3/1-hardware/6-vt-x-vt-i-solutions.htm Intel VT] and [http://www.amd.com/us-en/Processors/ProductInformation/0,,30_118_8826_14287,00.html AMD&#039;s AMD-V] are instruction set extensions that provide hardware assistance to virtual machine monitors. They enable running fully isolated virtual machines at native hardware speeds, for some workloads.                                &lt;br /&gt;
&lt;br /&gt;
HVM (for Hardware Virtual Machine) is a vendor-neutral term often used to designate the x86 instruction set extensions.                                                                                           &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I tell if I have Intel VT or AMD-V? ===&lt;br /&gt;
With a recent enough Linux kernel, run the command:&lt;br /&gt;
&lt;br /&gt;
 . egrep &#039;^flags.*(vmx|svm)&#039; /proc/cpuinfo&lt;br /&gt;
&lt;br /&gt;
If something shows up, you have VT. You can also check the processor model name (in `/proc/cpuinfo`) in the vendor&#039;s web site.                                                                                    &lt;br /&gt;
&lt;br /&gt;
Note:&lt;br /&gt;
&lt;br /&gt;
* Some manufacturers disable VT in the machine&#039;s BIOS, in such a way that it cannot be re-enabled.&lt;br /&gt;
* `/proc/cpuinfo` only shows virtualization capabilities starting with Linux 2.6.15 (Intel) and Linux 2.6.16 (AMD). Use the `uname -r` command to query your kernel version.                                      &lt;br /&gt;
In case of doubt, contact your hardware vendor.                                                          &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;KVM: disabled by BIOS&amp;quot; error ===&lt;br /&gt;
Check if there is an option to enable it in the BIOS. If not, look for a more recent BIOS on the vendor&#039;s web site.                                                                                               &lt;br /&gt;
&lt;br /&gt;
Also, on some hardware (e-g HP nx6320), you need to power-off/power-on the machine after enabling virtualisation in the BIOS.                                                                                     &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How can I use AMD-V extension? ===&lt;br /&gt;
 modprobe kvm-amd                      &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What user space tools does kvm use? ===&lt;br /&gt;
kvm uses a slightly modified [http://www.qemu.com/ qemu] program to instantiate the virtual machine. Once running, a virtual machine is just a regular process. You can use `top(1), kill(1), taskset(1)` and similar tools to manage virtual machines.                                                                    &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What virtual disk formats can kvm use? ===&lt;br /&gt;
kvm inherits a wealth of disk formats support from qemu; it supports raw images, the native qemu format (qcow), VMware format, and many more.                                                                     &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Are there management tools available to help me manage my virtual machines? ===&lt;br /&gt;
Yes.  Please see the [[Management Tools]] page for some links.                     &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Using kvm ==&lt;br /&gt;
=== How can I use kvm with a non-privileged user? ===&lt;br /&gt;
The cleanest way is probably to create a group, say &#039;&#039;kvm&#039;&#039;, and add the user(s) to that group. Then you will need change /dev/kvm to owned by group &#039;&#039;kvm&#039;&#039;.                                                     &lt;br /&gt;
&lt;br /&gt;
On a system that runs udev, you will probably need to add the following line somewhere in your udev configuration so it will automatically give the right group to the newly created device (i-e for ubuntu add a line to &#039;&#039;/etc/udev/rules.d/40-permissions.rules&#039;&#039;).                                                     &lt;br /&gt;
&lt;br /&gt;
 KERNEL==&amp;quot;kvm&amp;quot;, GROUP=&amp;quot;kvm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is KVM stable? ===&lt;br /&gt;
The good news is that more and more developers and testers use KVM each passing day and for the most part, it works. KVM is a very young project and constantly evolving to add new features and more hardware support. Given the fervent pace of development, it&#039;s very likely that we&#039;re introducing new bugs at a fast pace as well, however small they might be. We would encourage our users to report any bug(s) they encounter so that we can continue making KVM better and stabler with each commit.                                &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== That&#039;s alright, but can I really use it for my daily use? ===&lt;br /&gt;
Sure. We continuously run the most often-used OSes and configurations and if anything breaks for the developers, it&#039;s fixed as soon as it was broken. See the [[Guest Support Status]] and [[Host Support Status]] pages to find out more. Please update them with success stories so that new users would benefit from the experience of the community.                                     &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How about production use? ===&lt;br /&gt;
For production use, it&#039;s recommended you use the kvm modules shipped by the distribution you&#039;re using to ensure stability. As mentioned above, it&#039;s tempting to use new features, but you never know of (unwanted) surprises hidden away. It&#039;ll be best if you can run the development snapshots with non-critical production load, so that the latest releases are stable for you when you decide to deploy them.                  &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What happens if I kill -9 a VM process? ===&lt;br /&gt;
From the guest&#039;s perspective, it is as if you yanked the power cord out. From the host&#039;s perspective, the process is killed and all resources it uses are reclaimed.                                              &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I need help to setup the network for my guest ===&lt;br /&gt;
You can have a look to the [[Networking]] page of this wiki for informations on the most classical networking setup for the guests. You can also refer to the Qemu documentation.                                 &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Where can I find more documention... ===&lt;br /&gt;
Most usability issues are covered in the QEMU [http://bellard.org/qemu/user-doc.html documentation].  There is also an extensive [http://kidsquid.com/cgi-bin/moin.cgi/FrequentlyAskedQuestions FAQ].             &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== How can I check that I&#039;m not falling back to qemu with no hardware acceleration? ===&lt;br /&gt;
&lt;br /&gt;
If you think that you might no be using the hardware acceleration provided by the kvm module, here are a few steps to help you check this.                                                                        &lt;br /&gt;
&lt;br /&gt;
First of all, check that you don&#039;t have messages such as:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 qemu-system-x86_64 -hda myvm.qcow2 &lt;br /&gt;
 open /dev/kvm: No such file or directory&lt;br /&gt;
 Could not initialize KVM, will disable KVM support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In that case, you can check that:&lt;br /&gt;
* the modules are correctly loaded &amp;lt;code&amp;gt;lsmod|grep kvm&lt;br /&gt;
* you don&#039;t have a &amp;quot;KVM: disabled by BIOS&amp;quot; line in the output of dmesg&lt;br /&gt;
* /dev/kvm exists and you have the correct rights to use it           &lt;br /&gt;
&lt;br /&gt;
Other ways to do the diagnostic:&lt;br /&gt;
* if you have access to the qemu monitor (Ctrl-Alt-2, use Ctrl-Alt-1 to get back to the VM display), enter the &amp;quot;info kvm&amp;quot; command and it should respond with &amp;quot;KVM support: enabled&amp;quot;                               &lt;br /&gt;
* the right-end columns of the output from &amp;lt;code&amp;gt;lsmod|grep kvm&amp;lt;/code&amp;gt; on the host system, once the VM is started should show only non zero values. The value on the line corresponding to the architecture specific module (e-g kvm_intel, kvm_amd) show the number of VM using the module. For instance, if I have 2 VM running using the kvm module on a machine with vt, it will report:                                        &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 lsmod|grep kvm&lt;br /&gt;
 kvm_intel              44896  2 &lt;br /&gt;
 kvm                   159656  1 kvm_intel&lt;br /&gt;
&lt;br /&gt;
=== &amp;quot;rect too big&amp;quot; Message when using VNC Display ===&lt;br /&gt;
When connection to a VNC Terminal, a &amp;quot;rect too big&amp;quot; message appears, and the VNC Session disconnects.&lt;br /&gt;
&lt;br /&gt;
This might happen, when a VNC Client (for example RealVNC / xvnc4viewer) chooses ZRLE Encoding. Simple choose Hextile Encoding in the options of your VNC Client, and the Problem should be resolved.             &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&#039;&#039;&#039;How do I set up the network such that my guest is accessible from other machines?&#039;&#039;&#039; or&lt;br /&gt;
&lt;br /&gt;
=== My guest network is stuck what should I do? ===                                          &lt;br /&gt;
kvm uses qemu for its device emulation. Consult the [http://kidsquid.com/cgi-bin/moin.cgi/QemuNetwork qemu network wiki page] for detailed network setup instructions.                                            &lt;br /&gt;
&lt;br /&gt;
One would probably be interested in the Root Networking Mode page and the Network Bridge page.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Windows boots and runs very slowly? ===&lt;br /&gt;
See the [[Windows ACPI Workaround]] page.  &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I get an &amp;quot;Exception 13&amp;quot; or &amp;quot;Exception 12&amp;quot; message while booting a guest OS on my Intel host ===&lt;br /&gt;
See the [[Intel Real Mode Emulation Problems]] page.                                               &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
=== I get &amp;quot;rtc interrupts lost&amp;quot; messages, and the guest is very slow? ===&lt;br /&gt;
Try setting &amp;lt;code&amp;gt;CONFIG_HPET_EMULATE_RTC=y&amp;lt;/code&amp;gt; in your host &amp;lt;code&amp;gt;.config&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== I have VMware/Parallels/VirtualBox installed and when I modprobe KVM, my system deadlocks. ===&lt;br /&gt;
Neither Intel VT nor AMD-V provide a mechanism to determine whether software is currently using the hardware virtualization extensions.  This means that if you have two kernel modules loaded attempting to use hardware virtualization extensions, very bad things will happen.  If you are using another type of virtualization software and experience any sort of weirdness with KVM, make sure you can reproduce the problem without the kernel modules for that software loaded before you report a bug in KVM.                       &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== There&#039;s nothing on QEMU/kvm screen, but it&#039;s not hanged! I&#039;m trying to install Kubuntu. ===&lt;br /&gt;
Try to run kvm with -std-vga option. It helps if guest operating system uses framebuffer mode like Kubuntu/Ubuntu.                                                                                                &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== When I click the guest operating system window, mouse is grabbed. How can I get mouse to not to do that? OR Mouse doesn&#039;t show up / doesn&#039;t work in the guest. What do I do? ===                              &lt;br /&gt;
From #qemu wiki, try to run kvm/qemu with                                                                &lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 -usb -usbdevice tablet&lt;br /&gt;
If that doesn&#039;t work, try this:&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
 $ export SDL_VIDEO_X11_DGAMOUSE=0&lt;br /&gt;
(from http://wiki.clug.org.za/wiki/QEMU_mouse_not_working )&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
== General kvm information ==&lt;br /&gt;
=== What is the difference between kvm and Xen? ===&lt;br /&gt;
Xen is an external hypervisor; it assumes control of the machine and divides resources among guests. On the other hand, kvm is part of Linux and uses the regular Linux scheduler and memory management. This means that kvm is much smaller and simpler to use.                                                           &lt;br /&gt;
&lt;br /&gt;
kvm only run on processors that supports x86 hvm (vt/svm instructions set) whereas Xen also allows running modified operating systems on non-hvm x86 processors using a technique called paravirtualisation. kvm does not support paravirtualization for cpu but may support paravirtualization for device drivers to improve I/O performances.                                                                                     &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between kvm and VMWare? ===&lt;br /&gt;
VMware is a proprietary product. kvm is Free Software released under the GPL.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is the difference between kvm and QEMU? ===&lt;br /&gt;
Qemu uses emulation; kvm uses processor extensions (HVM) for virtualization.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Do you have a port of kvm for Windows? ===&lt;br /&gt;
Not in this release.                          &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What kernel version does it work with? ===&lt;br /&gt;
It depends on what version of kvm you are using. The last release of kvm should work with any recent kernel (2.6.17 and above), older releases even older kernels.                                                &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== How much RAM do I need? ===&lt;br /&gt;
You will need enough memory to let the guest run comfortably while keeping enough for the host. 1GB is probably a minimum configuration for the host OS.                                                          &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is dynamic use of RAM for guest operating system supported? ===&lt;br /&gt;
Yes. If you set -m 6144, guest can get a maximum of 6GB of RAM, but doesn&#039;t necessarily uses all. PLease note however that the usual platform limits will apply so you won&#039;t be able to see more than 4GB of RAM on a 32 bits guest unless you use PAE.                                                                    &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What OSs can I run inside kvm VM? ===&lt;br /&gt;
Several.  See the [:Guest Support Status:Guest_Support_Status] page for details. Note that several Linux flavors are known to hang on Intel processors during startup. Workaround is to disable splashscreens in grub.                                                                                                     &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does kvm support a live migration feature to move virtual machines from one host to another without downtime? ===                                                                                             &lt;br /&gt;
Yes.  See the [[Migration]] page for details.                                                            &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does kvm support live migration from an AMD host to an Intel host and back? ===&lt;br /&gt;
Yes.  There may be issues on 32-bit Intel hosts which don&#039;t support NX (or XD), but for 64-bit hosts back and forth migration should work well.  Migration of 32-bit guests should work between 32-bit hosts and 64-bit hosts.                                                                                             &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can kvm run a 32-bit guest on a 64-bit host? What about PAE? ===&lt;br /&gt;
kvm supports 32-bit guests on 64-bit hosts, and any combination of PAE and non-PAE guests and hosts. The only unsupported combination is a 64-bit guest on a 32-bit host.                                         &lt;br /&gt;
&lt;br /&gt;
If you are running a Windows Virtual Machine and have problems enabling PAE in your guest see the [[Windows PAE Workaround]] page.                                                                                &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is it possible to use USB devices with a guest OS? ===&lt;br /&gt;
Yes, look up how to do it with qemu, it&#039;s the same way.   &lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Can I have higher or widescreen resolutions (eg 1680 x 1050) in kvm? ===&lt;br /&gt;
Support for higher resolutions was added in kvm-59, but some bugs were left until the release of kvm-62. Use the -std-vga parameter while starting the VM.                                                        &lt;br /&gt;
&lt;br /&gt;
If the resolution you want to use is not available, you can patch the corresponding source files (see http://article.gmane.org/gmane.comp.emulators.kvm.devel/13557 as a reference), or send a mail to the kvm mailing list if you are not able to patch the source yourself.                                              &lt;br /&gt;
&lt;br /&gt;
When using Windows as guest OS you might want to use the driver from the VBEMP x86 project (http://www.geocities.com/bearwindows/vbemp.htm).&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does kvm support SMP hosts? ===&lt;br /&gt;
Yes.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Does kvm support SMP guests? ===&lt;br /&gt;
Yes. Up to 16 CPUs can be specified using the -smp option.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== Is the name &#039;kvm&#039; trademarked? ===&lt;br /&gt;
No.&lt;br /&gt;
&lt;br /&gt;
----------&lt;br /&gt;
&lt;br /&gt;
=== What is Qumranet&#039;s product? ===&lt;br /&gt;
Qumranet is a startup company financed by [http://www.sequoiacap.com/ Sequoia Capital] and [http://www.nvp.com/ Norwest Venture Partners (NVP)].&lt;br /&gt;
&lt;br /&gt;
On the 24th of September 2007, Qumranet announced their first product, Solid ICE, a virtual Desktop Infrastructure solution based on KVM (http://web1.qumranet.com/art_images/files/10/Qumranet_Launch_Release.pdf)&lt;br /&gt;
&lt;br /&gt;
----------&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Ia64_list&amp;diff=1731</id>
		<title>Ia64 list</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Ia64_list&amp;diff=1731"/>
		<updated>2008-01-27T17:27:54Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The kvm ia64 port development list can be found in&lt;br /&gt;
&lt;br /&gt;
https://lists.sourceforge.net/lists/listinfo/kvm-ia64-devel/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category ia64]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Ia64_list&amp;diff=1371</id>
		<title>Ia64 list</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Ia64_list&amp;diff=1371"/>
		<updated>2008-01-27T17:27:54Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The kvm ia64 port development list can be found in&lt;br /&gt;
&lt;br /&gt;
https://lists.sourceforge.net/lists/listinfo/kvm-ia64-devel/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
[[Category ia64]]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1615</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1615"/>
		<updated>2008-01-24T14:26:16Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: mprotect() for read-only memory&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&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.&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.&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.&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.&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;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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 (in progress)&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&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;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1614</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1614"/>
		<updated>2008-01-24T14:23:28Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: mmio scaling&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&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.&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.&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.&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.&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;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&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;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=ChangeLog&amp;diff=1656</id>
		<title>ChangeLog</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=ChangeLog&amp;diff=1656"/>
		<updated>2008-01-23T14:19:13Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: 03 jan -&amp;gt; 3 jan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= kvm-60 [23 jan 2008] =&lt;br /&gt;
&lt;br /&gt;
* fix compilation with older kernels (Andi Kleen)&lt;br /&gt;
* virtio host support (Anthony Liguori, Dor Laor)&lt;br /&gt;
** includes block and network devices&lt;br /&gt;
* fix power management timer overflow handling&lt;br /&gt;
* fix qemu running with older kernels&lt;br /&gt;
* boot from scsi/virtio (Anthony Liguori)&lt;br /&gt;
* add 1280x800 resolution to -std-vga&lt;br /&gt;
* fix acpi sci interrupt generation&lt;br /&gt;
* compile fixes (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* update ide cdrom to match qemu (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* fix extboot on older gcc (Christian Ehrhardt)&lt;br /&gt;
* powerpc dcr tests (Christian Ehrhardt)&lt;br /&gt;
* rtl8139 is now the default nic type (Guido Guenther)&lt;br /&gt;
* acpi power button support (Guido Guenther)&lt;br /&gt;
* powerpc testsuite harness (Hollis Blanchard)&lt;br /&gt;
* powerpc libkvm support (Jerone Young)&lt;br /&gt;
* bump piix4 to rev 3 to avoid slowdown reading pm timer (Marcelo Tosatti)&lt;br /&gt;
* migration updates (Uri Lublin)&lt;br /&gt;
* ia64 smp support in qemu (Xiantao Zhang)&lt;br /&gt;
* fix acpi vapic page on save/restore&lt;br /&gt;
* move x86 fpu to x86 specific header (Christian Ehrhardt)&lt;br /&gt;
* minor shadow code simplification(Eddie Dong)&lt;br /&gt;
* optimize pae pte updates (Eddie Dong, Eric Liu)&lt;br /&gt;
* simplify shadow hash table indexing (Eddie Dong)&lt;br /&gt;
* kvm_para.h compile fix (Glauber de Oliveira Costa)&lt;br /&gt;
* dirty page tracking fix (Izik Eidus)&lt;br /&gt;
* fix svm lazy fpu switching (Joerg Roedel)&lt;br /&gt;
** fixes Vista x64 on AMD&lt;br /&gt;
* only allow vmcall/vmmcall on #UD traps (Sheng Yang)&lt;br /&gt;
&lt;br /&gt;
= kvm-59 [3 jan 2008] =&lt;br /&gt;
&lt;br /&gt;
* merge qemu-cvs&lt;br /&gt;
** -drive cache=[on|off] option&lt;br /&gt;
** adds scsi passthrough&lt;br /&gt;
* ide lba48 support for 120GB+ disk images&lt;br /&gt;
* widescreen resolutions for -std-vga&lt;br /&gt;
* libkvm compile fixes (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* mmu scaling (Marcelo Tosatti, Avi Kivity)&lt;br /&gt;
&lt;br /&gt;
= kvm-58 [27 dec 2007] =&lt;br /&gt;
&lt;br /&gt;
* add mmu statistics&lt;br /&gt;
* log data on write to unimplemented msr&lt;br /&gt;
* fix memory corruption (mapcount error) after host fork() (Izik Eidus)&lt;br /&gt;
* improve preempt notifier emulation on older kernels (Andrea Arcangeli)&lt;br /&gt;
* refactor IDE CHS guessing (Anthony Liguori)&lt;br /&gt;
* testsuite improvements&lt;br /&gt;
* apic tpr acceleration for Windows guests&lt;br /&gt;
** disabled on smp for now&lt;br /&gt;
* fix warnings due to qemu merge (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* improve support for older kernels (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* icache sync in qemu after dma for more archs (Christian Ehrhardt)&lt;br /&gt;
* simplify mmio callback (Christian Ehrhardt)&lt;br /&gt;
* align gdbstub with qemu-cvs (Jan Kiszka)&lt;br /&gt;
* fix compile if kernel/include/asm/ preexists (Sheng Yang)&lt;br /&gt;
* fix migration on i386 hosts (Uri Lublin)&lt;br /&gt;
* qemu ia64 adjustments (Zhang Xiantao)&lt;br /&gt;
&lt;br /&gt;
= kvm-57 [18 dec 2007] =&lt;br /&gt;
&lt;br /&gt;
* warn when emulating preempt notifiers&lt;br /&gt;
* add pio port 0x80 access test to testsuite&lt;br /&gt;
* merge qemu-cvs&lt;br /&gt;
* add rtc emulation for ia64 (Xiantao Zhang)&lt;br /&gt;
* fix qemu memory allocation off-by-one&lt;br /&gt;
* new kernel source layout (virt/kvm/, arch/x86/kvm/)&lt;br /&gt;
* coalesce remote tlb flushes when write-protecting guest pages (Eddie Dong)&lt;br /&gt;
* lapic debug compile fix (Joerg Roedel)&lt;br /&gt;
* fix smp mmu shadow instantiation race (Marcelo Tosatti)&lt;br /&gt;
* atomic cmpxchg8b on i386 (Marcelo Tosatti)&lt;br /&gt;
* throttle vmx_intr_assist() printk (Ryan Harper)&lt;br /&gt;
* portability (Xiantao Zhang)&lt;br /&gt;
&lt;br /&gt;
= kvm-56 [14 dec 2007] =&lt;br /&gt;
&lt;br /&gt;
* Generalize exception handling mechanism&lt;br /&gt;
* fix x86 emulator eflags handling&lt;br /&gt;
* avoid exit to userspace on cr8 write if using kernel lapic on Intel&lt;br /&gt;
* fix stack instructions emulation in 64-bit mode&lt;br /&gt;
** fixes Vista x86&lt;br /&gt;
*** except on Woodcrests&lt;br /&gt;
* trap cr8 access on amd&lt;br /&gt;
* mmu simplification&lt;br /&gt;
* fix setting nx bit on shadow pte&lt;br /&gt;
* fix inherited mmu permissions&lt;br /&gt;
* more portability work (Hollis Blanchard, Xiantao Zhang)&lt;br /&gt;
* add cr8 to &#039;mov cr&#039; instruction emulation (Joerg Roedel)&lt;br /&gt;
* exit to userspace on cr8 write if not kernel apic on amd (Joerg Roedel)&lt;br /&gt;
* atomically set accessed and dirty bit on guest ptes (Marcelo Tosatti)&lt;br /&gt;
* use -&amp;gt;fault() vma op instead of -&amp;gt;nopage()&lt;br /&gt;
* remove abi 10 libkvm compatibility&lt;br /&gt;
* add some x86 emulator tests&lt;br /&gt;
* add many mmu access tests&lt;br /&gt;
* fix rpm build on Fedora 8 (Dan Kenigsberg)&lt;br /&gt;
* fix &#039;make sync&#039; on debian and derivatives (Ryan Harper)&lt;br /&gt;
* fix live migration (Uri Lublin, Izik Eidus)&lt;br /&gt;
* initial ia64 userspace (Xiantao Zhang)&lt;br /&gt;
&lt;br /&gt;
= kvm-55 [4 dec 2007] =&lt;br /&gt;
&lt;br /&gt;
* remove old hypercall driver (Anthony Liguori)&lt;br /&gt;
* disable dirty page logging for main memory (Izik Eidus)&lt;br /&gt;
* fix incorrect page count calculation for dirty logging (Izik Eidus)&lt;br /&gt;
* improve testsuite &#039;make clean&#039; (Neo Jia)&lt;br /&gt;
* compile fix (Sheng Yang)&lt;br /&gt;
* reorganize x86 emulator main switch&lt;br /&gt;
* don&#039;t bypass mmu on pae cr3 reload if pdptrs changed&lt;br /&gt;
** fixes Solaris x86&lt;br /&gt;
* use common defines for EFER (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* portability (Xiantao Zhang)&lt;br /&gt;
* fix kvm_init() error path (Xiantao Zhang)&lt;br /&gt;
* ia64 iosapic support (Xiantao Zhang)&lt;br /&gt;
&lt;br /&gt;
= kvm-54 [27 nov 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix fpu leak on AMD (Amit Shah)&lt;br /&gt;
** (on kvm-53, lazy fpu was disabled, so this just improves performance)&lt;br /&gt;
* prefetch instruction bytes when emulating&lt;br /&gt;
* implement guest page fault bypass on nonpae&lt;br /&gt;
** should speed up some 32-bit guests&lt;br /&gt;
* add a bunch of statistics&lt;br /&gt;
* avoid unnecessary remote tlb flushes&lt;br /&gt;
** improves guest smp scaling&lt;br /&gt;
* avoid mmu reloads on guest tlb flushes&lt;br /&gt;
* mmu code simplification&lt;br /&gt;
* disallow using kvm after fork()&lt;br /&gt;
* fix failures while injecting external interrupts in real mode&lt;br /&gt;
** fixes Mandrake 9 regression&lt;br /&gt;
* fix multiple address- and operand- size override prefix emulation&lt;br /&gt;
* infrastructure for using host cpu features on guest (Dan Kenigsberg)&lt;br /&gt;
** not used yet by qemu&lt;br /&gt;
* cmps instruction emulation (Guillaume Thouvenin)&lt;br /&gt;
** allows OpenBSD to boot&lt;br /&gt;
* cleanups (Hollis Blanchard)&lt;br /&gt;
* fix potential memory leak in real-mode smp (Izik Eidus)&lt;br /&gt;
* reduce unnecessary dirtying of pages (Izik Eidus)&lt;br /&gt;
* mark guest pages as accessed with the Linux lru (Izik Eidus)&lt;br /&gt;
* more portability work (Jerone Young, Xiantao Zhang)&lt;br /&gt;
* allow new vmx features even if not using in-kernel apic (Sheng Yang)&lt;br /&gt;
* refactor shadow mmu size calculation (Xiantao Zhang)&lt;br /&gt;
* improve testsuite&lt;br /&gt;
* beginning of x86 emulator unit test&lt;br /&gt;
* fix compile warnings (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* log module version in dmesg on load&lt;br /&gt;
&lt;br /&gt;
= kvm-53 [20 nov 2007] =&lt;br /&gt;
&lt;br /&gt;
* testsuite: exit on end of test&lt;br /&gt;
* batch mode for kvm_stat script&lt;br /&gt;
* compile fixes (Carlo Marcelo Arenas Belon, Joe Perches)&lt;br /&gt;
* portability (Jerone Young, Zhang Xiantao)&lt;br /&gt;
* disable lazy fpu on AMD (Amit Shah)&lt;br /&gt;
** should fix instability on AMD&lt;br /&gt;
** will cause performance regression, fix in progress&lt;br /&gt;
* x86 emulator: fix &#039;push r/m&#039; emulation (Amit Shah)&lt;br /&gt;
* register use reduction in vmx guest entry&lt;br /&gt;
* infrastructure for per-vm stats&lt;br /&gt;
** extends existing per-vcpu stats&lt;br /&gt;
* add mmu, state switch, emulation statistics&lt;br /&gt;
* use copy_{to,from}_user to access guest memory (Izik Eidus)&lt;br /&gt;
* simplify access to guest page tables (Izik Eidus)&lt;br /&gt;
* fix entry to real mode with segment bases beyond 1MB (Jan Kiszka)&lt;br /&gt;
* finally kill last use of cr2 in emulator (Sheng Yang)&lt;br /&gt;
&lt;br /&gt;
= kvm-52 [12 nov 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix efer reload host crash on T2600 and similar processors&lt;br /&gt;
* revert sleepy interrupt injection&lt;br /&gt;
** fixes &amp;quot;Fault when IDT_Vectoring&amp;quot;&lt;br /&gt;
* atomically inject real-mode interrupts&lt;br /&gt;
* wbinvd exiting on newer Intel processors (Eddie Dong)&lt;br /&gt;
** fixes real-time issues&lt;br /&gt;
* fix call/jmp instruction emulation (Izik Eidus)&lt;br /&gt;
** fixes Vista x64 installation&lt;br /&gt;
* fix save/restore/migrate with multiple nics&lt;br /&gt;
* fix build on i386 uniprocessor w/ no ioapic hosts&lt;br /&gt;
* fix smp_call_function_single() emulation on older hosts&lt;br /&gt;
** fixes smp guests not booting on RHEL 5 hosts&lt;br /&gt;
* make qemu/kvm memory allocation match plain qemu more closely (Izik Eidus)&lt;br /&gt;
** fixes issues with large memory guests&lt;br /&gt;
* libkvm compile fixes (Carlo Marcelo Arenas Belon, Jerone Young)&lt;br /&gt;
&lt;br /&gt;
= kvm-51 [7 nov 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix some x86 emulator one-byte insns (fixes W2K3 installer again)&lt;br /&gt;
* fix host hangs with NMI watchdog on AMD&lt;br /&gt;
* fix guest SMP on AMD&lt;br /&gt;
* fix dirty page tracking when clearing a guest page (Dor Laor)&lt;br /&gt;
* more portability work (Hollis Blanchard, Jerone Young)&lt;br /&gt;
* fix [[FlexPriority]] with guest smp (Sheng Yang)&lt;br /&gt;
* improve rpm specfile (Akio Takebe, Avi Kivity)&lt;br /&gt;
* fix external module vs portability work (Andrea Arcangeli)&lt;br /&gt;
* remove elpin bios due to license violation&lt;br /&gt;
* testsuite shutdown pio port&lt;br /&gt;
* don&#039;t advertise svm on the guest&lt;br /&gt;
* fix reset with kernel apic (Markus Rechberger)&lt;br /&gt;
&lt;br /&gt;
= kvm-50 [2 nov 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix smp_call_function_mask() emulation on preemptible kernels&lt;br /&gt;
* move libkvm into own directory (Hollis Blanchard)&lt;br /&gt;
* fix save/restore/migrate for new memory slot management (Uri Lublin)&lt;br /&gt;
* compile fixes (Uri Lublin, Avi Kivity)&lt;br /&gt;
* fix recursive locking on mmap() (Anthony Liguori)&lt;br /&gt;
* remove some cr2 dependencies from x86 emulator&lt;br /&gt;
* further simplify x86 emulator&lt;br /&gt;
* more portability work (Carsten Otte, Hollis Blanchard)&lt;br /&gt;
* Intel [[FlexPriority]] support (Sheng Yang)&lt;br /&gt;
* fix dirty page tracking on aliased pages (Uri Lublin)&lt;br /&gt;
&lt;br /&gt;
= kvm-49 [29 oct 2007] =&lt;br /&gt;
&lt;br /&gt;
* Fix PIT time-drift-fix (only with -no-kvm-irqchip) (Dan Kenigsberg)&lt;br /&gt;
* Fix vnc auth error with clients &amp;lt;= 3.7 protocol (Dan Kenigsberg)&lt;br /&gt;
* Don&#039;t spin on hlt with interrupts disabled (Dor Laor)&lt;br /&gt;
* Fix pxe boot (Izik Eidus)&lt;br /&gt;
* Hide the Intel real-mode tss from userspace (Izik Eidus)&lt;br /&gt;
* Automatic memory slot management for libkvm (Izik Eidus)&lt;br /&gt;
* Fix problem with std-vga and 4GB guests (Izik Eidus)&lt;br /&gt;
* External module compat for smp_call_function_mask() (Laurent Vivier)&lt;br /&gt;
* More portability work (Jerone Young, Christian Borntraeger, Zhang Xiantao)&lt;br /&gt;
* Fix sleep-in-atomic-context during vcpu init&lt;br /&gt;
* Fix &#039;push imm8&#039; emulation (fixes W2K3 installer)&lt;br /&gt;
* Intercept invd and wbinvd on AMD&lt;br /&gt;
* Reduce emulator dependency on cr2 (mov abs insns)&lt;br /&gt;
* Move page fault processing to common code&lt;br /&gt;
* Fix rmap memory consumption oops due to increased rmap usage with swap&lt;br /&gt;
* Fix potential memory leak with kernel-allocated memslots (Izik Eidus)&lt;br /&gt;
* Export memory slot allocation mechanism (Izik Eidus)&lt;br /&gt;
* Add kernel-private memslots (Izik Eidus)&lt;br /&gt;
* Fix local apic divide-by-zero (Kevin Pedretti)&lt;br /&gt;
* Improve local apic timer wraparound handling (Kevin Pedretti)&lt;br /&gt;
* Use newly available smp_call_function_mask() (Laurent Vivier)&lt;br /&gt;
* Micro-optimize register usage on vmentry/vmexit (Laurent Vivier)&lt;br /&gt;
* Cleanups, compilation fixes (Akio Takebe, Anthony Liguori, Avi Kivity)&lt;br /&gt;
&lt;br /&gt;
= kvm-48 [18 oct 2007] =&lt;br /&gt;
&lt;br /&gt;
* use precise cpu accounting on ppc and s390 (Christian Borntraeger)&lt;br /&gt;
* make guest time accounting actually work (Laurent Vivier)&lt;br /&gt;
* fix host memory corruption when setting the guest dirty bit&lt;br /&gt;
* allow swapping with older userspace (Anthony Liguori)&lt;br /&gt;
* allow custom memory setup using libkvm (Gerd Hoffmann)&lt;br /&gt;
&lt;br /&gt;
= kvm-47 [18 oct 2007] =&lt;br /&gt;
&lt;br /&gt;
* Reset fixes (Eddie Dong, Avi Kivity)&lt;br /&gt;
* Portability work (Carsten Otte)&lt;br /&gt;
* Cleanups (Anthony Liguori, Laurent Vivier)&lt;br /&gt;
* Simplify guest pagetable dirty bit management&lt;br /&gt;
* Fix nx bit for huge pages&lt;br /&gt;
* Fix write access to clean large pages (fixes rmap leak)&lt;br /&gt;
* Support for Linux 2.6.16 guests (movnti instruction) (Sheng Yang)&lt;br /&gt;
* Simplify apic timer backlog processing&lt;br /&gt;
* Move interrupt injection out of critical section&lt;br /&gt;
* x86 emulator work (Nitin A Kamble)&lt;br /&gt;
* restore freebsd support on AMD (fix smsw and lmsw) (Aurelien Jarno)&lt;br /&gt;
* Simplify guest page table walker&lt;br /&gt;
* Partial guest swapping (Izik Eidus)&lt;br /&gt;
* kvmctl improvements (Anthony Liguori)&lt;br /&gt;
* libkvm, qemu compilation against older kernels&lt;br /&gt;
* guest time accounting (Laurent Vivier)&lt;br /&gt;
* configure improvements (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* fix 4GB+ configurations (Izik Eidus)&lt;br /&gt;
* cross compilation support (Jerone Young)&lt;br /&gt;
&lt;br /&gt;
= kvm-46 [10 oct 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix host oops on bad guest ioapic accesses&lt;br /&gt;
* handle NMIs before enabling host interrupts&lt;br /&gt;
* add general guest memory accessors (Izik Eidus)&lt;br /&gt;
* allow user control over shadow cache size (Izik Eidus)&lt;br /&gt;
* auto tune shadow cache size with guest memory (Izik Eidus)&lt;br /&gt;
* allocate guest memory in userspace instead of in kernel (Izik Eidus)&lt;br /&gt;
* code style fixes (Mike Day, Anthony Liguori)&lt;br /&gt;
* lapic cleanups (Rusty Russell)&lt;br /&gt;
* fix acpi interrupt reporting for FreeBSD&lt;br /&gt;
* fix color problems on certain displays&lt;br /&gt;
* Red Hat 7.1 support&lt;br /&gt;
* vmmouse support (Dan Kenigsberg)&lt;br /&gt;
* fix sdl window caption when keyboard is captured (Dan Kenigsberg)&lt;br /&gt;
* improve libkvm configure script (Jerone Young)&lt;br /&gt;
* improve bios compilation support on x86_64 hosts (Laurent Vivier)&lt;br /&gt;
* fix acpi processor reporting for Windows 2000 with the ACPI HAL (Sheng Yang)&lt;br /&gt;
&lt;br /&gt;
= kvm-45 [2 oct 2007] =&lt;br /&gt;
&lt;br /&gt;
* don&#039;t use page-&amp;gt;private for guest pages (Izik Eidus)&lt;br /&gt;
* x86 emulator cleanups, simplifications, and fixes (Laurent Vivier, Qing He)&lt;br /&gt;
* apic round robin delivery mode cleanup (Qing He)&lt;br /&gt;
* merge qemu-cvs&lt;br /&gt;
* fix compilation on older kernels (Rusty Russell, Avi Kivity)&lt;br /&gt;
* reduce tap networking latency&lt;br /&gt;
* fix FC6 x86_64 booting with -no-kvm&lt;br /&gt;
* fix code dump on exception&lt;br /&gt;
&lt;br /&gt;
= kvm-44 [23 sep 2007] =&lt;br /&gt;
* fix smp guest boot&lt;br /&gt;
* fix IDE emulation bug with newer guest kernels (S.Çağlar Onur)&lt;br /&gt;
* support VMware server as guest (Ryan Harper)&lt;br /&gt;
* fix smp race in shadow code (Izik Eidus)&lt;br /&gt;
* allow guest page faults to bypass kvm on Intel (performance boost)&lt;br /&gt;
&lt;br /&gt;
= kvm-43 [21 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix ioapic edge-triggered interrupt handling&lt;br /&gt;
&lt;br /&gt;
= kvm-42 [20 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* important host oops fix&lt;br /&gt;
* document -no-kvm-irqchip option in qemu help message (Carlo Marcelo Arenas Belon)&lt;br /&gt;
* acpi bios: export pci irqs as active high&lt;br /&gt;
* avoid redelivery of edge-triggered ioapic interrupts if already in service&lt;br /&gt;
* implement ioapic polarity&lt;br /&gt;
* fix x86 emulator merge problems (Nitin A Kamble, Laurent Vivier)&lt;br /&gt;
* fix x86 repne decoding (fixes OpenBSD boot regression) (Laurent Vivier)&lt;br /&gt;
* install kvm_para.h (Gerd Hoffman)&lt;br /&gt;
&lt;br /&gt;
= kvm-41 [19 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* refactor hypercall infrastructure for simplicity and better smp support (Anthony Liguori)&lt;br /&gt;
* fix ioapic level triggered interrupt redelivers (solves networking stalls)&lt;br /&gt;
* reduce efer reloads with 32-bit guests; minor performance improvement&lt;br /&gt;
* split x86 emulator decode and execute stages (Laurent Vivier)&lt;br /&gt;
* fix pic interrupt delivery (solves time going double speed on x86_64 Linux guests) (Qing He)&lt;br /&gt;
* adaptive live migration bandwidth limits (Uri Lublin)&lt;br /&gt;
&lt;br /&gt;
= kvm-40 [16 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix guest reboot (most scenarios)&lt;br /&gt;
* further x86 emulator work (Nitin A Kamble)&lt;br /&gt;
* compile fixes for older kernels&lt;br /&gt;
* make the external module work again&lt;br /&gt;
&lt;br /&gt;
= kvm-39 [12 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* provide div64_64() for older kernels&lt;br /&gt;
* improve emulation failure reporting&lt;br /&gt;
* more x86 emulator work (push imm8, pushf, call near) (Nitin A Kamble)&lt;br /&gt;
* don&#039;t use TPR shadow on i386 (Sheng Yang)&lt;br /&gt;
&lt;br /&gt;
= kvm-38 [12 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix fpu indication for Solaris (Amit Shah)&lt;br /&gt;
* Avoid GFP_NOWAIT allocation in mmu&lt;br /&gt;
* Fix runtime smp_processor_id() warning in lapic&lt;br /&gt;
* Move vcpu loop into subarch independent loop&lt;br /&gt;
* Rename kvm_arch_ops to kvm_x86_ops (Christian Ehrhardt)&lt;br /&gt;
* Fix missing &amp;quot;genapic&amp;quot; on i386 (Eddie Dong)&lt;br /&gt;
* Fix lapic hrtimer migration (Qing He)&lt;br /&gt;
* Fix lapic 64-bit division on i386 (Jindrich Makovicka)&lt;br /&gt;
* Simplify memory allocation ioctl (Laurent vivier)&lt;br /&gt;
* Keep control register shadows in sync (Rusty Russell)&lt;br /&gt;
* Retire invlpg (Rusty Russell)&lt;br /&gt;
* Expose get_cs_db_l_bits for kvm-lite (Rusty Russell)&lt;br /&gt;
* Fix network boot (Anthony Liguori)&lt;br /&gt;
* Round up memory in libkvm (Anthony Liguori)&lt;br /&gt;
* Fix option ROM loading (Anthony Liguori)&lt;br /&gt;
* Revert FACP ACPI change for Vista&lt;br /&gt;
* Fix segfault with -no-kvm&lt;br /&gt;
* lapic hrtimer external module compatibility (Qing He, Avi Kivity)&lt;br /&gt;
* improved (still imprefect) reboot&lt;br /&gt;
* better bios smp detection&lt;br /&gt;
&lt;br /&gt;
= kvm-37 [9 sep 2007] =&lt;br /&gt;
&lt;br /&gt;
* in-kernel lapic, ioapic, and pic (Eddie Dong, Qing He, Sheng Yang, Gregory Haskins, Dor Laor, Avi Kivity)&lt;br /&gt;
* split segment reload (vmx microoptimization) (Laurent Vivier)&lt;br /&gt;
* fix vga redraw regression (Izik Eidus)&lt;br /&gt;
* fix testsuite compilation with older assemblers (H. Peter Anvin)&lt;br /&gt;
&lt;br /&gt;
= kvm-36 [22 aug 2007] =&lt;br /&gt;
&lt;br /&gt;
* support guests with more than 2GB of RAM on 64-bit hosts (Izik Eidus)&lt;br /&gt;
* fix rare host oops on guest context switch&lt;br /&gt;
* avoid smp_call_function_single() warning on suspend/resume&lt;br /&gt;
* more real mode emulator work (Nitin A Kamble)&lt;br /&gt;
* Windows x64 support (Sheng Yang)&lt;br /&gt;
* close minor signal handling race&lt;br /&gt;
* carry bios in kvm source tree for easier maintenance&lt;br /&gt;
* fix -std-vga (Uri Lublin)&lt;br /&gt;
* advertise kvm in vnc window title (Matthew Kent)&lt;br /&gt;
* fix Windows SMP guests consuming cpu time when idle (Igor Lvovsky)&lt;br /&gt;
&lt;br /&gt;
= kvm-35 [15 aug 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix kvm refusing to load on Core processors (Glauber de Oliveira Costa)&lt;br /&gt;
* improve qemu monitor handling CR/LF sequences (Jim Paris)&lt;br /&gt;
* fix compile warning in qemu (Luca Tettamanti)&lt;br /&gt;
&lt;br /&gt;
= kvm-34 [13 aug 2007] =&lt;br /&gt;
&lt;br /&gt;
* make kvm preemptible&lt;br /&gt;
* allow calling sleeping functions in the kvm exit handlers (Shaohua Li)&lt;br /&gt;
* this is a first step in getting guest swapping&lt;br /&gt;
* fix running kvm on nx-incapable host kernel on nx-capable hardware&lt;br /&gt;
* fix more fallback from the x86 emulator writeback changes (Aurelien Jarno, Avi Kivity)&lt;br /&gt;
* remove vmx specific code from subarch independent code (Gregory Haskins)&lt;br /&gt;
* allocate vcpus as needed (Rusty Russell)&lt;br /&gt;
* consolidate x86 emulator guest read/write code (Laurent Vivier)&lt;br /&gt;
* cleanup string pio instruction emulation (Laurent Vivier)&lt;br /&gt;
* ensure all cpus have the same vmx features (Sheng Yang)&lt;br /&gt;
* version string for external module&lt;br /&gt;
* disable long mode capability bit on 32-bit kernels&lt;br /&gt;
* fix qemu -isapc (Uri Lublin)&lt;br /&gt;
* fixes for smp live migration&lt;br /&gt;
** this is still raw&lt;br /&gt;
* fix unhandled wrmsr MSR_CSTAR on i386 (Luca Tettamanti)&lt;br /&gt;
* some migration fixes (Jim Paris)&lt;br /&gt;
* the usual cleanups and minor fixes (various but mostly Rusty)&lt;br /&gt;
&lt;br /&gt;
= kvm-33 [23 jul 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix massive performance regression&lt;br /&gt;
&lt;br /&gt;
= kvm-32 [23 jul 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix oops with the slub allocator (CONFIG_SLUB)&lt;br /&gt;
* fix cmov instruction emulation, trashed by the mmio rmw fix&lt;br /&gt;
* fix rare, silent data corruption on writes that cross a page boundary and touch a page table (Aurelien Jarno, Avi Kivity)&lt;br /&gt;
* fix race between vm creation and vcpu hotunplug (Rusty Russell)&lt;br /&gt;
* fix guest turning on pae with invalid pdptres (Rusty Russell)&lt;br /&gt;
* adapt external module to changed kmem_cache_create() api&lt;br /&gt;
* allow external module on 2.6.22 i386 nonpae&lt;br /&gt;
* fix regression in network throughput caused by guest smp changes (Aurelien Jarno, Avi Kivity)&lt;br /&gt;
* live migration updates (Uri Lublin)&lt;br /&gt;
* minor cleanups (Nguyen Anh Quynh, Avi Kivity)&lt;br /&gt;
&lt;br /&gt;
= kvm-31 [19 jul 2007] =&lt;br /&gt;
&lt;br /&gt;
* a few cleanups that somehow evaded kvm-30 (Jeff Dike, Rusty Russell)&lt;br /&gt;
* allow the external module to compile on older kernels.&lt;br /&gt;
&lt;br /&gt;
= kvm-30 [19 jul 2007] =&lt;br /&gt;
&lt;br /&gt;
* minor fixes and cleanups  (Jeff Dike, Rusty Russell, Avi Kivity)&lt;br /&gt;
* kernel pio string write (Eddie Dong)&lt;br /&gt;
* guest smp kernel fixes&lt;br /&gt;
* rdmsr and wrmsr real mode emulation&lt;br /&gt;
* fix real mode shadow pages aliasing nx large page shadows&lt;br /&gt;
* enable guest smp in qemu&lt;br /&gt;
* fix external module installer&lt;br /&gt;
* revert ide enable changes that caused an I/O regression&lt;br /&gt;
&lt;br /&gt;
= kvm-29 [12 jul 2007] =&lt;br /&gt;
&lt;br /&gt;
* live migration from 32-bit hosts to 64-bit hosts (Uri Lublin)&lt;br /&gt;
* monotonic timestamp counter on Intel&lt;br /&gt;
* more real mode support (Nitin A Kamble)&lt;br /&gt;
* infrastructure for in-kernel PIC and APIC (Gregory Haskins, Eddie Dong)&lt;br /&gt;
* fix read-modify-write to mmio (fixes F7 installer) (Luca Tettamanti)&lt;br /&gt;
* fix rebooting a long-running guest&lt;br /&gt;
* reliably detect if svm was disabled by bios (Joerg Roedel)&lt;br /&gt;
* suspend/resumes fixes (will not work with older kernels)&lt;br /&gt;
* fix nx confusion with large pages and real mode&lt;br /&gt;
* remove dependency on libuuid&lt;br /&gt;
* fix registers access in monitor/gdbstub (Anthony Liguori)&lt;br /&gt;
* minor fixes and cleanups (various)&lt;br /&gt;
&lt;br /&gt;
= kvm-28 [10 jun 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix host oops on guest context switch&lt;br /&gt;
* many code cleanups (Nguyen Anh Quynh, others)&lt;br /&gt;
* prepare kernel for guest smp&lt;br /&gt;
* update libkvm for guest smp&lt;br /&gt;
* update testsuite for guest smp&lt;br /&gt;
* emulate hlt in real mode (avoids crash when booting from unformatted disk)&lt;br /&gt;
* initialize ata ports for Fedora 7 guests (Luca Tettamanti)&lt;br /&gt;
&lt;br /&gt;
= kvm-27 [3 jun 2007] =&lt;br /&gt;
&lt;br /&gt;
* use slab cache for mmu shadow pages&lt;br /&gt;
* make shadow pte updates atomic (for guest smp)&lt;br /&gt;
* general mmu cleanups&lt;br /&gt;
&lt;br /&gt;
= kvm-26 [27 may 2007] =&lt;br /&gt;
&lt;br /&gt;
* implement wbinvd emulation, triggered by Windows Vista&lt;br /&gt;
* compile fixes (Markus Rechberger, Avi Kivity)&lt;br /&gt;
&lt;br /&gt;
= kvm-25 [24 may 2007] =&lt;br /&gt;
&lt;br /&gt;
* massive performance increase (Eddie Dong)&lt;br /&gt;
* regenerate bios from latest bochs sources, hopefully fixing a regression with some guests&lt;br /&gt;
* some testsuite work (Anthony Lihuori, Eddie Dong, Avi Kivity)&lt;br /&gt;
* minor fixes (various)&lt;br /&gt;
&lt;br /&gt;
= kvm-24 [8 may 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix oops loading kvm-intel module on i386 with highmem&lt;br /&gt;
&lt;br /&gt;
= kvm-23 [7 may 2007] =&lt;br /&gt;
&lt;br /&gt;
* OpenBSD 4.1 i386 support (Matthew Gregan)&lt;br /&gt;
* Fix host and guest crashes on reboot&lt;br /&gt;
&lt;br /&gt;
= kvm-22 [6 may 2007] =&lt;br /&gt;
&lt;br /&gt;
* Significant performance improvements (Anthony Liguori, Eddie Dong, Qing He, Avi Kivity)&lt;br /&gt;
* Fix longstanding bug: time runs at double speed on x86_64 Linux (Qing He)&lt;br /&gt;
* Windows Vista 32-bit support (Qing He, Jun Nakajima)&lt;br /&gt;
* Support for kvm abi 10 modules&lt;br /&gt;
* Minor updates&lt;br /&gt;
&lt;br /&gt;
= kvm-21 [27 apr 2007] =&lt;br /&gt;
&lt;br /&gt;
* fix regression on Core (not Core 2) processors&lt;br /&gt;
* performance improvements (Eddie Dong, Anthony Liguori)&lt;br /&gt;
* minor fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-20 [24 apr 2007] =&lt;br /&gt;
&lt;br /&gt;
* Windows 2000 support&lt;br /&gt;
* performance enhancements&lt;br /&gt;
* patch against latest kernel tree included in tarball&lt;br /&gt;
* fix oops with 32-bit nonpae guests&lt;br /&gt;
&lt;br /&gt;
= kvm-19 [16 apr 2007] =&lt;br /&gt;
&lt;br /&gt;
* bug fixes&lt;br /&gt;
* memory aliasing api&lt;br /&gt;
&lt;br /&gt;
= kvm-18 [26 mar 2007] =&lt;br /&gt;
&lt;br /&gt;
* merged new userspace API&lt;br /&gt;
* revert the optimization which killed some 32-bit Linux guests&lt;br /&gt;
* reboot support on Intel hosts (AMD are already supported)&lt;br /&gt;
* better timekeeping under load (Uri Lublin)&lt;br /&gt;
* other minor fixes and cleanups&lt;br /&gt;
&lt;br /&gt;
= kvm-17 [25 mar 2007] =&lt;br /&gt;
&lt;br /&gt;
* live migration enhancements (Uri Lublin)&lt;br /&gt;
* better/working acpi support&lt;br /&gt;
* revert to unhacked qemu bios&lt;br /&gt;
* fix some 32-bit nonpae guests (*BSD)&lt;br /&gt;
* initial ballooning support&lt;br /&gt;
* random fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-16 [7 mar 2007] =&lt;br /&gt;
&lt;br /&gt;
* bug fixes (including a nasty one on module load)&lt;br /&gt;
* use lanana assigned minor device number for /dev/kvm&lt;br /&gt;
&lt;br /&gt;
= kvm-15 [26 feb 2007] =&lt;br /&gt;
&lt;br /&gt;
* live migration with kvm (Uri Lublin)&lt;br /&gt;
* based on Anthony Liguori&#039;s qemu patches&lt;br /&gt;
* new userspace interface (work in progress)&lt;br /&gt;
* the usual random fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-14 [19 feb 2007] =&lt;br /&gt;
&lt;br /&gt;
* qemu 0.9.0&lt;br /&gt;
* too many goodies to list&lt;br /&gt;
* kvm can no longer share qemu&#039;s bios on Intel hosts due to real mode trouble.  use the supplied bios.&lt;br /&gt;
* migration now based on Anthony Liguori&#039;s live migration patches (Uri Lublin)&lt;br /&gt;
** currently, only non-live migration is supported under kvm&lt;br /&gt;
* handle smi on host on AMD hosts (Joerg Roedel)&lt;br /&gt;
* random fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-13 [8 feb 2007] =&lt;br /&gt;
&lt;br /&gt;
* add dirty page tracking in some corner cases for live migration&lt;br /&gt;
* fix lockups on nx-challenged hosts&lt;br /&gt;
* host suspend/resume&lt;br /&gt;
** nobody&#039;s testing this, so it&#039;s probably broken&lt;br /&gt;
* host cpu hotplug support&lt;br /&gt;
* beginning of paravirt support (Ingo Molnar)&lt;br /&gt;
* guest reboot support (Markus Rechberger, Joerg Roedel)&lt;br /&gt;
* pio latency reduction (Anthony Liguori)&lt;br /&gt;
* stone age kernel compatibility (Markus Rechberger)&lt;br /&gt;
* the usual cleanups and stability fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-12 [23 jan 2007] =&lt;br /&gt;
&lt;br /&gt;
* More migration work (Uri Lublin)&lt;br /&gt;
* savevm/loadvm (and migration) work on AMD (Leonard Norrgard)&lt;br /&gt;
* More guest support&lt;br /&gt;
* mmu testsuite and fixes&lt;br /&gt;
* Windows ACPI install/run support (Dor Laor)&lt;br /&gt;
* Fix host reboot on guest reboot on AMD (Joerg Roedel)&lt;br /&gt;
&lt;br /&gt;
= kvm-11 [11 jan 2007] =&lt;br /&gt;
&lt;br /&gt;
* stabilization fixes&lt;br /&gt;
* vmexit profiling (Ingo Molnar; requires Linux 2.6.20+)&lt;br /&gt;
&lt;br /&gt;
= kvm-10 [7 jan 2007] =&lt;br /&gt;
&lt;br /&gt;
* more hypercall work&lt;br /&gt;
* cleanup irq handling&lt;br /&gt;
* shadow page table caching&lt;br /&gt;
* migration fixes&lt;br /&gt;
* stabilization fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-9 [31 dec 2006] =&lt;br /&gt;
&lt;br /&gt;
* API documentation (James Jacobsson)&lt;br /&gt;
* More stabilization fixes (Yoshimi Ichiyanagi, Ingo Molnar, Nguyen Anh Quynh)&lt;br /&gt;
* Interactivity improvements (Dor Laor)&lt;br /&gt;
&lt;br /&gt;
= kvm-8 [21 dec 2006] =&lt;br /&gt;
&lt;br /&gt;
* msr fixes (Michael Riepe)&lt;br /&gt;
* more guest support (Michael Riepe)&lt;br /&gt;
* random fixes&lt;br /&gt;
* fpu state corruption fix on AMD hosts&lt;br /&gt;
&lt;br /&gt;
= kvm-7 [12 dec 2006] =&lt;br /&gt;
&lt;br /&gt;
* prevent loading arch module on wrong hardware&lt;br /&gt;
* fix for macbooks&lt;br /&gt;
* other minor fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-6 [11 dec 2006] =&lt;br /&gt;
&lt;br /&gt;
* AMD 32-bit host support (Anthony Liguori)&lt;br /&gt;
* more migration work&lt;br /&gt;
* stabilization&lt;br /&gt;
* improved performance&lt;br /&gt;
* improved guest support on AMD&lt;br /&gt;
&lt;br /&gt;
= kvm-5 [28 nov 2006] =&lt;br /&gt;
&lt;br /&gt;
* AMD SVM support (x86-64 hosts only)&lt;br /&gt;
* Preliminary live migration support&lt;br /&gt;
* &#039;make install&#039; also installs kernel modules, if selected&lt;br /&gt;
* random fixes&lt;br /&gt;
&lt;br /&gt;
= kvm-4 [21 nov 2006] =&lt;br /&gt;
&lt;br /&gt;
* added the msr work&lt;br /&gt;
** suspend/resume should work now&lt;br /&gt;
* more vmdk compatibility work&lt;br /&gt;
* random build updates&lt;br /&gt;
&lt;br /&gt;
= kvm-3 [15 nov 2006] =&lt;br /&gt;
&lt;br /&gt;
[Avi Kivity retained the natural number versioning after he contemplated the&lt;br /&gt;
confusion that can arise from having releases 1, 2, and 0.3]&lt;br /&gt;
&lt;br /&gt;
Kernel module&lt;br /&gt;
* make exit reason numbers explicit&lt;br /&gt;
* sync kernel module with -mm tree&lt;br /&gt;
** asm constraint fixes&lt;br /&gt;
** userspace interface blurb&lt;br /&gt;
** segment restore across mode switch (fixes etherboot)&lt;br /&gt;
** segment asm constraint fix (Bernhard Rosenkraenzer)&lt;br /&gt;
** segment access cleanup&lt;br /&gt;
&lt;br /&gt;
libkvm:&lt;br /&gt;
* better error reporting (Simon Kagstrom)&lt;br /&gt;
* &#039;make clean&#039;&lt;br /&gt;
* attributions and license&lt;br /&gt;
&lt;br /&gt;
kvmctl:&lt;br /&gt;
* add option to launch guest in 32-bit mode&lt;br /&gt;
* add test programs&lt;br /&gt;
&lt;br /&gt;
qemu/kvm:&lt;br /&gt;
* autodetect kvm presence (Simon Kagstrom)&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
* fix host arch detection on debian&lt;br /&gt;
* fix ./configure on debian (Gildas)&lt;br /&gt;
* toplevel &#039;make clean&#039;&lt;br /&gt;
&lt;br /&gt;
= ?? [9 nov 2006] =&lt;br /&gt;
&lt;br /&gt;
* much easier to get running, see updated HOWTO&lt;br /&gt;
* now just one download, get yours while supplies last&lt;br /&gt;
* single qemu binary for kvm and non-kvm runs (Anthony Liguori)&lt;br /&gt;
* accompanying external kernel module package has all bugfixes folded in (plus a bit of cosmetics) &lt;br /&gt;
&lt;br /&gt;
= lkml submission v4 [5 nov 2006] =&lt;br /&gt;
* [http://lwn.net/Articles/207875/]&lt;br /&gt;
* detect msrs on host dynamically.  Avoids oopses on non-ia32e capable processors.&lt;br /&gt;
* web site: http://kvm.sourceforge.net&lt;br /&gt;
* slightly rediffed&lt;br /&gt;
&lt;br /&gt;
= lkml submission v3 [26 oct 2006] =&lt;br /&gt;
* [http://uwsg.indiana.edu/hypermail/linux/kernel/0610.3/0747.html]&lt;br /&gt;
* mailing list: kvm-devel@public.gmane.org (http://lists.sourceforge.net/lists/listinfo/kvm-devel)&lt;br /&gt;
* applied code review comments&lt;br /&gt;
* fixed set_sregs() ioctl corrupting guest state if cr0.pe changed (a polite way of saying that loading a saved vm was broken)&lt;br /&gt;
&lt;br /&gt;
= lkml submission v2 [23 oct 2006] =&lt;br /&gt;
* [http://lwn.net/Articles/205580/]&lt;br /&gt;
* fixed a lockup on i386 with host memory &amp;gt;= 4GB&lt;br /&gt;
* finer patch split to conform to vger limits&lt;br /&gt;
* minor fixes&lt;br /&gt;
* send through script to avoid mailer damage&lt;br /&gt;
&lt;br /&gt;
= lkml submission v1 [19 oct 2006] =&lt;br /&gt;
&lt;br /&gt;
* [http://lkml.org/lkml/2006/10/19/146]&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1613</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1613"/>
		<updated>2008-01-21T10:05:34Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: typo&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&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;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1612</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1612"/>
		<updated>2008-01-21T10:04:39Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: remove completed tasks&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1611</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1611"/>
		<updated>2007-12-26T14:12:47Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: HPET&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.  Maybe use mm-&amp;gt;mmap_sem.&lt;br /&gt;
* With the above, don&#039;t hold kvm-&amp;gt;lock during instruction emulation.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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;
* Add a String tag to the decoder tables, and use it to eliminate special rep_prefix processing&lt;br /&gt;
* Unify the various switch (b) into just two:  one for regular insns and one for two byte insns.&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1610</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1610"/>
		<updated>2007-11-25T09:57:32Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: qemu memory footprint&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.  Maybe use mm-&amp;gt;mmap_sem.&lt;br /&gt;
* With the above, don&#039;t hold kvm-&amp;gt;lock during instruction emulation.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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;
* Add a String tag to the decoder tables, and use it to eliminate special rep_prefix processing&lt;br /&gt;
* Unify the various switch (b) into just two:  one for regular insns and one for two byte insns.&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1609</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1609"/>
		<updated>2007-11-21T14:25:47Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: more x86 emulator todos&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.  Maybe use mm-&amp;gt;mmap_sem.&lt;br /&gt;
* With the above, don&#039;t hold kvm-&amp;gt;lock during instruction emulation.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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;
* Add a String tag to the decoder tables, and use it to eliminate special rep_prefix processing&lt;br /&gt;
* Unify the various switch (b) into just two:  one for regular insns and one for two byte insns.&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1608</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1608"/>
		<updated>2007-11-20T20:44:30Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: mmu locking&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.  Maybe use mm-&amp;gt;mmap_sem.&lt;br /&gt;
* With the above, don&#039;t hold kvm-&amp;gt;lock during instruction emulation.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1607</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1607"/>
		<updated>2007-11-20T20:42:57Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: fix large page support entry&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with npt/ept) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1606</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1606"/>
		<updated>2007-11-20T17:48:53Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: optimize segment access in emulator&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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 &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1605</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1605"/>
		<updated>2007-11-19T15:45:38Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: vmgl&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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;
&lt;br /&gt;
Interactivity improvements:&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1604</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1604"/>
		<updated>2007-11-18T10:51:33Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: adjust NonPT task&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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;
&lt;br /&gt;
Interactivity improvements:&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1603</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1603"/>
		<updated>2007-11-18T10:50:43Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: the long journey towards removing cr2 from the emulator has ended.&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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 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;
&lt;br /&gt;
Interactivity improvements:&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1602</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1602"/>
		<updated>2007-11-18T10:49:08Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: paging_tmpl.h cleanup&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&lt;br /&gt;
* Move set_pte_common(), set_pte(), set_pde(), and fetch() from paging_tmpl.h to mmu.c.  These functions depend very little on the current paging mode.&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;
* Remove the dependency on cr2 from the emulator (in progress)&lt;br /&gt;
* Add a NonPT flag 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;
&lt;br /&gt;
Interactivity improvements:&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1600</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1600"/>
		<updated>2007-11-15T14:34:25Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: kvm-&amp;gt;lock removal&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&lt;br /&gt;
* Change memory slot locking so that we can read and write guest memory without kvm-&amp;gt;lock.  RCU or a reader/writer lock may help.&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;
* Remove the dependency on cr2 from the emulator&lt;br /&gt;
* Add a NonPT flag 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;
&lt;br /&gt;
Interactivity improvements:&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
	<entry>
		<id>https://linux-kvm.org/index.php?title=TODO&amp;diff=1599</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=TODO&amp;diff=1599"/>
		<updated>2007-11-15T10:49:33Z</updated>

		<summary type="html">&lt;p&gt;AviKivity: NonPT&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;
* Emulate x86 hardware task switching&lt;br /&gt;
* Bring up Windows 95 and Windows 98 guests&lt;br /&gt;
* Support connecting the host&#039;s /dev/sg* to qemu&#039;s SCSI emulation.  This allows controlling tape drives and media changers from qemu. (in progress)&lt;br /&gt;
* Batch writes to 4-plane vga memory and other side-effect-free mmio to improve performance&lt;br /&gt;
* Implement MSR_EFER on i386, on processors which support it&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.&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.&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.&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.&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;
&lt;br /&gt;
MMU related:&lt;br /&gt;
* Support large pages (in conjunction with the item above) so that if the guest uses a large page mapping and the guest memory is backed by hugetlbfs, a large-page pte is created.&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;
* Implement AM20 for dos and the like.&lt;br /&gt;
* Implement direct page tables on paravirt_ops enabled Linux guests (in progress)&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;
* Remove the dependency on cr2 from the emulator&lt;br /&gt;
* Add a NonPT flag 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;
&lt;br /&gt;
Interactivity improvements:&lt;br /&gt;
* If for several frames in a row a large proportion of the framebuffer pages are &lt;br /&gt;
 changing, then for the next few frames don&#039;t bother to get the dirty page log&lt;br /&gt;
 from kvm, but instead assume that all pages are dirty.  This will reduce page&lt;br /&gt;
 fault overhead on highly interactive workloads.&lt;br /&gt;
* When detecting keyboard/video/mouse activity, scale up the frame rate; when&lt;br /&gt;
 activity dies down, scale it back down (applicable to qemu as well).&lt;br /&gt;
&lt;br /&gt;
Bug fixes:&lt;br /&gt;
* Less sexy bug ever important, fixing bugs is one of the most important contributions&lt;br /&gt;
&lt;br /&gt;
For the adventurous:&lt;br /&gt;
&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;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>AviKivity</name></author>
	</entry>
</feed>