From 53183e0440fd10fb3c383515da7943cf805acd73 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Fri, 5 Jan 2007 16:36:56 -0800 Subject: [PATCH] --- yaml --- r: 45287 b: refs/heads/master c: e52de1b8cf85aa2ccaaa253b4397c6d6cc0d4897 h: refs/heads/master i: 45285: cbf5f26faf41fb5cadf04980e879aa4aabd5e329 45283: eb7bc4ad7a0516538295c7f94aa81bb697ed25e8 45279: 9fd85dd9972d71f89447094fd9618b848a918c21 v: v3 --- [refs] | 2 +- trunk/drivers/kvm/vmx.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 7ad5af54180e..d6e87fe463e9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 37a7d8b046da6254718be1409140cd7bf3126f8f +refs/heads/master: e52de1b8cf85aa2ccaaa253b4397c6d6cc0d4897 diff --git a/trunk/drivers/kvm/vmx.c b/trunk/drivers/kvm/vmx.c index ed3956739771..779d8fc07d31 100644 --- a/trunk/drivers/kvm/vmx.c +++ b/trunk/drivers/kvm/vmx.c @@ -152,15 +152,21 @@ static u64 vmcs_read64(unsigned long field) #endif } +static noinline void vmwrite_error(unsigned long field, unsigned long value) +{ + printk(KERN_ERR "vmwrite error: reg %lx value %lx (err %d)\n", + field, value, vmcs_read32(VM_INSTRUCTION_ERROR)); + dump_stack(); +} + static void vmcs_writel(unsigned long field, unsigned long value) { u8 error; asm volatile (ASM_VMX_VMWRITE_RAX_RDX "; setna %0" : "=q"(error) : "a"(value), "d"(field) : "cc" ); - if (error) - printk(KERN_ERR "vmwrite error: reg %lx value %lx (err %d)\n", - field, value, vmcs_read32(VM_INSTRUCTION_ERROR)); + if (unlikely(error)) + vmwrite_error(field, value); } static void vmcs_write16(unsigned long field, u16 value)