KVM-13 and 2.6.20 kvm and kvm-intel
Subsystems (2)
What has made the KVM-13 stop working with Linux 2.6.20 kvm and kvm-intel?
iain
____________________________________________________________________________________
Cheap talk?
Check out Yahoo! Messenger's low PC-to-Phone call rates.
http://voice.yahoo.com
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
A message that is not in the archive (sent off-list or not yet received): 344847.94266.qm-by7sfUAcWISA/[email protected]
Hi,
Quoted 2 lines · Iain Kyte
What has made the KVM-13 stop working with Linux 2.6.20 kvm and kvm-intel?
API has been modified.
As said Avi in kvm-13 release note : "if you use the modules from Linux 2.6.20, you need to use kvm-12".
You can also apply attached patch on linux-2.6.20 source tree (it's just a copy of kvm-13 in linux-2.6.20/drivers/kernel)
Regards,
Laurent
Signature · 3 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected] -------------- "Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke
drivers/kvm/kvm.h +12 -2
@@ -14,6 +14,7 @@#include "vmx.h" #include <linux/kvm.h> +#include <linux/kvm_para.h> #define CR0_PE_MASK (1ULL << 0)#define CR0_TS_MASK (1ULL << 3)
@@ -237,6 +238,9 @@unsigned long cr0;unsigned long cr2;unsigned long cr3; +gpa_t para_state_gpa; +struct page *para_state_page; +gpa_t hypercall_gpa;unsigned long cr4;unsigned long cr8;u64 pdptrs[4 ];/* pae */
@@ -304,6 +308,7 @@int memory_config_version;int busy;unsigned long rmap_overflow; +struct list_head vm_list; };struct kvm_stat {
@@ -340,6 +345,7 @@struct kvm_vcpu *(*vcpu_load)(struct kvm_vcpu *vcpu);void (*vcpu_put)(struct kvm_vcpu *vcpu); +void (*vcpu_decache)(struct kvm_vcpu *vcpu);int (*set_guest_debug)(struct kvm_vcpu *vcpu,struct kvm_debug_guest *dbg);
@@ -380,6 +386,8 @@int (*run)(struct kvm_vcpu *vcpu,struct kvm_run *run);int (*vcpu_setup)(struct kvm_vcpu *vcpu);void (*skip_emulated_instruction)(struct kvm_vcpu *vcpu); +void (*patch_hypercall)(struct kvm_vcpu *vcpu, +unsigned char *hypercall_addr); };extern struct kvm_stat kvm_stat;
@@ -474,6 +482,8 @@int kvm_mmu_unprotect_page_virt (struct kvm_vcpu *vcpu,gva_t gva);void kvm_mmu_free_some_pages (struct kvm_vcpu *vcpu); +int kvm_hypercall (struct kvm_vcpu *vcpu,struct kvm_run *run); +static inline int kvm_mmu_page_fault (struct kvm_vcpu *vcpu,gva_t gva,u32 error_code) {
@@ -521,7 +531,7 @@ {struct page *page =pfn_to_page (shadow_page >>PAGE_SHIFT ); -return (struct kvm_mmu_page *)page->private; +return (struct kvm_mmu_page *)page_private (page); }static inline u16 read_fs (void )
@@ -558,7 +568,7 @@#ifndef load_ldtstatic inline void load_ldt (u16 sel) { - asm ("lldt %0" : :"g" (sel)); + asm ("lldt %0" : :"rm" (sel)); }#endif
drivers/kvm/kvm_main.c +242 -17
403 lines not on this page · raw message
drivers/kvm/kvm_svm.h +2 -1
@@ -1,6 +1,7 @@#ifndef __KVM_SVM_H#define __KVM_SVM_H +#include <linux/kernel.h> #include <linux/types.h> #include <linux/list.h> #include <asm/msr.h>
@@ -18,7 +19,7 @@MSR_IA32_LASTBRANCHTOIP, MSR_IA32_LASTINTFROMIP,MSR_IA32_LASTINTTOIP,*/ }; -#define NR_HOST_SAVE_MSRS (sizeof(host_save_msrs) / sizeof(*host_save_msrs)) +#define NR_HOST_SAVE_MSRS ARRAY_SIZE(host_save_msrs)#define NUM_DB_REGS 4struct vcpu_svm {
drivers/kvm/mmu.c +18 -18
@@ -298,18 +298,18 @@if (!is_rmap_pte (*spte))return ; page =pfn_to_page ((*spte &PT64_BASE_ADDR_MASK ) >>PAGE_SHIFT ); -if (!page->private) { +if (!page_private (page)) {rmap_printk ("rmap_add: %p %llx 0->1\n" , spte, *spte); - page->private = (unsigned long )spte; - }else if (!(page->private &1 )) { +set_page_private (page,(unsigned long )spte); + }else if (!(page_private (page) &1 )) {rmap_printk ("rmap_add: %p %llx 1->many\n" , spte, *spte); desc =mmu_alloc_rmap_desc (vcpu); - desc->shadow_ptes[0 ] = (u64 *)page->private; + desc->shadow_ptes[0 ] = (u64 *)page_private (page); desc->shadow_ptes[1 ] = spte; - page->private = (unsigned long )desc |1 ; +set_page_private (page,(unsigned long )desc |1 ); }else {rmap_printk ("rmap_add: %p %llx many->many\n" , spte, *spte); - desc = (struct kvm_rmap_desc *)(page->private & ~1ul ); + desc = (struct kvm_rmap_desc *)(page_private (page) & ~1ul );while (desc->shadow_ptes[RMAP_EXT -1 ] && desc->more) desc = desc->more;if (desc->shadow_ptes[RMAP_EXT -1 ]) {
@@ -337,12 +337,12 @@if (j !=0 )return ;if (!prev_desc && !desc->more) - page->private = (unsigned long )desc->shadow_ptes[0 ]; +set_page_private (page,(unsigned long )desc->shadow_ptes[0 ]);else if (prev_desc) prev_desc->more = desc->more;else - page->private = (unsigned long )desc->more |1 ; +set_page_private (page,(unsigned long )desc->more |1 );mmu_free_rmap_desc (vcpu, desc); }
@@ -356,20 +356,20 @@if (!is_rmap_pte (*spte))return ; page =pfn_to_page ((*spte &PT64_BASE_ADDR_MASK ) >>PAGE_SHIFT ); -if (!page->private) { +if (!page_private (page)) {printk (KERN_ERR "rmap_remove: %p %llx 0->BUG\n" , spte, *spte);BUG (); - }else if (!(page->private &1 )) { + }else if (!(page_private (page) &1 )) {rmap_printk ("rmap_remove: %p %llx 1->0\n" , spte, *spte); -if ((u64 *)page->private != spte) { +if ((u64 *)page_private (page) != spte) {printk (KERN_ERR "rmap_remove: %p %llx 1->BUG\n" , spte, *spte);BUG (); } - page->private =0 ; +set_page_private (page,0 ); }else {rmap_printk ("rmap_remove: %p %llx many->many\n" , spte, *spte); - desc = (struct kvm_rmap_desc *)(page->private & ~1ul ); + desc = (struct kvm_rmap_desc *)(page_private (page) & ~1ul ); prev_desc =NULL ;while (desc) {for (i =0 ; i <RMAP_EXT && desc->shadow_ptes[i]; ++i)
@@ -398,11 +398,11 @@BUG_ON (!slot); page =gfn_to_page (slot, gfn); -while (page->private) { -if (!(page->private &1 )) - spte = (u64 *)page->private; +while (page_private (page)) { +if (!(page_private (page) &1 )) + spte = (u64 *)page_private (page);else { - desc = (struct kvm_rmap_desc *)(page->private & ~1ul ); + desc = (struct kvm_rmap_desc *)(page_private (page) & ~1ul ); spte = desc->shadow_ptes[0 ]; }BUG_ON (!spte);
@@ -1218,7 +1218,7 @@INIT_LIST_HEAD (&page_header->link);if ((page =alloc_page (GFP_KERNEL )) ==NULL ) goto error_1; - page->private = (unsigned long )page_header; +set_page_private (page, (unsigned long )page_header); page_header->page_hpa = (hpa_t )page_to_pfn (page) <<PAGE_SHIFT ;memset (__va (page_header->page_hpa),0 ,PAGE_SIZE );list_add (&page_header->link, &vcpu->free_pages);
drivers/kvm/paging_tmpl.h +21 -25
87 lines not on this page · raw message
drivers/kvm/svm.c +41 -10
134 lines not on this page · raw message
drivers/kvm/vmx.c +56 -17
206 lines not on this page · raw message
drivers/kvm/vmx.h +1 -0
@@ -180,6 +180,7 @@#define EXIT_REASON_EXCEPTION_NMI 0#define EXIT_REASON_EXTERNAL_INTERRUPT 1 +#define EXIT_REASON_TRIPLE_FAULT 2#define EXIT_REASON_PENDING_INTERRUPT 7
include/linux/kvm.h +4 -1
@@ -11,7 +11,7 @@#include <asm/types.h> #include <linux/ioctl.h> -#define KVM_API_VERSION 2 +#define KVM_API_VERSION 3/* * Architectural interrupt line count, and the size of the bitmap needed
@@ -65,6 +65,8 @@__u8 ready_for_interrupt_injection;__u8 if_flag;__u16 padding2; + +/* in (pre_kvm_run), out (post_kvm_run) */ __u64 cr8;__u64 apic_base;
@@ -185,6 +187,7 @@__u8 valid;__u8 writeable;__u8 usermode; +__u8 pad[5 ]; };/* for KVM_INTERRUPT */
include/linux/kvm_para.h new file +73 -0
73 lines not on this page · raw message
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel
A message that is not in the archive (sent off-list or not yet received): 45CC44ED.9080007-6ktuUTfB/[email protected]
Quoted 11 lines · On Fri, 09 Feb 2007 10:54:53 +0100 Laurent Vivier…
Quoted 2 lines · Iain Kyte
What has made the KVM-13 stop working with Linux 2.6.20 kvm and kvm-intel?
API has been modified.
As said Avi in kvm-13 release note : "if you use the modules from Linux 2.6.20, you need to use kvm-12".
You can also apply attached patch on linux-2.6.20 source tree (it's just a copy of kvm-13 in linux-2.6.20/drivers/kernel)
FYI:
make[1]: Entering directory `/usr/src/linux-2.6.20'
CHK include/linux/version.h
CHK include/linux/utsrelease.h
Building modules, stage 2.
MODPOST 423 modules
WARNING: "register_cpu_notifier" [drivers/kvm/kvm.ko] undefined! make[2]: *** [__modpost] Error 1
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.20'
make: *** [debian/stamp-build-kernel] Error 2
Signature · 15 lines
___________________________________________________________________ It is better to remain silent and be thought a fool, than to speak aloud and remove all doubt. +------------------------------------------------------------------+ | Richard Lucassen, Utrecht | | Public key and email address: | | http://www.lucassen.org/mail-pubkey.html | +------------------------------------------------------------------+ ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
A message that is not in the archive (sent off-list or not yet received): 20070209233826.1f7597db.mailinglists-+AO6ZX++/[email protected]
Quoted 20 lines · richard lucassen
Quoted 5 lines · On Fri, 09 Feb 2007 10:54:53 +0100 Laurent Vivier…
Quoted 3 lines · Iain Kyte
What has made the KVM-13 stop working with Linux 2.6.20 kvm and kvm-intel?
Quoted 8 lines
API has been modified.
As said Avi in kvm-13 release note : "if you use the modules from Linux 2.6.20, you need to use kvm-12".
You can also apply attached patch on linux-2.6.20 source tree (it's just a copy of kvm-13 in linux-2.6.20/drivers/kernel)
FYI:
Quoted 13 lines
make[1]: Entering directory `/usr/src/linux-2.6.20'
CHKinclude/linux/version.h
CHKinclude/linux/utsrelease.h
Building modules, stage 2.
MODPOST 423 modules
WARNING: "register_cpu_notifier" [drivers/kvm/kvm.ko] undefined! make[2]: *** [__modpost] Error 1
make[1]: *** [modules] Error 2
make[1]: Leaving directory `/usr/src/linux-2.6.20'
make: *** [debian/stamp-build-kernel] Error 2
kvm-13 in the kernel tree needs an additional patch (which akpm has queued). The external module has the equivalent in external-module-compat.h.
Signature · 8 lines
error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642