From: Avi Kivity Date: Sat, 6 Jan 2007 00:36:56 +0000 (-0800) Subject: [PATCH] KVM: Improve reporting of vmwrite errors X-Git-Tag: v2.6.20-rc4~23 X-Git-Url: http://pilppa.com/gitweb/?a=commitdiff_plain;h=e52de1b8cf85aa2ccaaa253b4397c6d6cc0d4897;p=linux-2.6-omap-h63xx.git [PATCH] KVM: Improve reporting of vmwrite errors This will allow us to see the root cause when a vmwrite error happens. Signed-off-by: Avi Kivity Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c index ed395673977..779d8fc07d3 100644 --- a/drivers/kvm/vmx.c +++ b/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)