Hi Everyone, I am trying to use the MSR load and store areas in vmx. I did following: 1. Setting vm_entry_msr_load_count: vmcs_write32(VM_ENTRY_MSR_LOAD_COUNT, 1); 2. Setting up vm_entry_msr_load_addr : static struct page *vmx_msr_load; Then in vmx_init() : vmx_msr_load = alloc_page(GFP_KERNEL | __GFP_HIGHMEM); va=kmap(vmx_msr_load); memset(va, MSR_P6_PERFCTR0, 32); /*Bits 31:0 contain msr's address*/ memset(va+32, 0x0, 32); /*Bits 63:32 are reserved and shall be all Zeros*/ memset(va+64, 0x0, 64); /*The data to be loaded on VM-Entry*/ And then: vmcs_write64(VM_ENTRY_MSR_LOAD_ADDR, page_to_phys(vms_msr_load)); ------- Now, this results in VM-exit with following on terminal : unhandled vm exit: 0x80000022 vcpu_id 0 rax 0000000000000000 rbx 0000000000000000 rcx 0000000000000000 rdx 0000000000000623 rsi 0000000000000000 rdi 0000000000000000 rsp 0000000000000000 rbp 0000000000000000 r8 0000000000000000 r9 0000000000000000 r10 0000000000000000 r11 0000000000000000 r12 0000000000000000 r13 0000000000000000 r14 0000000000000000 r15 0000000000000000 rip 000000000000fff0 rflags 00023002 cs f000 (000f0000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0) ds 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0) es 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0) ss 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0) fs 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0) gs 0000 (00000000/0000ffff p 1 dpl 3 db 0 s 1 type 3 l 0 g 0 avl 0) tr 0000 (fffbd000/00002088 p 1 dpl 0 db 0 s 0 type b l 0 g 0 avl 0) ldt 0000 (00000000/0000ffff p 1 dpl 0 db 0 s 0 type 2 l 0 g 0 avl 0) gdt 0/ffff idt 0/ffff cr0 60000010 cr2 0 cr3 0 cr4 0 cr8 0 efer 0 Aborted ------- Does anyone has any idea of whats wrong in what I am doing? Cheers, Nipun-- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html