Commit 7e85e8a3 authored by Charles Jacobsen's avatar Charles Jacobsen Committed by Vikram Narayanan

Host handles all exceptions/faults except page faults.

parent 02f52190
...@@ -2612,7 +2612,8 @@ static int vmx_handle_external_intr(struct lcd_arch *vcpu) ...@@ -2612,7 +2612,8 @@ static int vmx_handle_external_intr(struct lcd_arch *vcpu)
/** /**
* Processes hardware exceptions -- page faults, general protection * Processes hardware exceptions -- page faults, general protection
* exceptions, etc. * exceptions, etc. For now, we have the host handle all except page
* faults.
*/ */
static int vmx_handle_hard_exception(struct lcd_arch *vcpu) static int vmx_handle_hard_exception(struct lcd_arch *vcpu)
{ {
...@@ -2631,16 +2632,18 @@ static int vmx_handle_hard_exception(struct lcd_arch *vcpu) ...@@ -2631,16 +2632,18 @@ static int vmx_handle_hard_exception(struct lcd_arch *vcpu)
vcpu->run_info.gv_fault_addr = __gva(vcpu->exit_qualification); vcpu->run_info.gv_fault_addr = __gva(vcpu->exit_qualification);
return LCD_ARCH_STATUS_PAGE_FAULT; return LCD_ARCH_STATUS_PAGE_FAULT;
default: default:
printk(KERN_ERR "lcd vmx: unhandled hw exception:\n"); printk(KERN_ERR "lcd vmx: hw exception:\n");
printk(KERN_ERR " vector: %x, info: %x\n", printk(KERN_ERR " vector: %x, info: %x\n",
vector, vcpu->exit_intr_info); vector, vcpu->exit_intr_info);
printk(KERN_ERR " letting host handle it\n");
vmx_handle_external_intr(vcpu);
return -EIO; return -EIO;
} }
} }
/** /**
* Processes software / hardware exceptions and nmi's generated * Processes software / hardware exceptions and nmi's generated
* while lcd was running. * while lcd was running. For now, the host handles all exceptions/nmi's.
*/ */
static int vmx_handle_exception_nmi(struct lcd_arch *vcpu) static int vmx_handle_exception_nmi(struct lcd_arch *vcpu)
{ {
...@@ -2656,10 +2659,12 @@ static int vmx_handle_exception_nmi(struct lcd_arch *vcpu) ...@@ -2656,10 +2659,12 @@ static int vmx_handle_exception_nmi(struct lcd_arch *vcpu)
/* /*
* NMI, div by zero, overflow, ... * NMI, div by zero, overflow, ...
*/ */
printk(KERN_ERR "lcd vmx: unhandled exception or nmi:\n"); printk(KERN_ERR "lcd vmx: exception or nmi:\n");
printk(KERN_ERR " interrupt info: %x\n", printk(KERN_ERR " interrupt info: %x\n",
vcpu->exit_intr_info); vcpu->exit_intr_info);
return -EIO; printk(KERN_ERR " letting host handle it\n");
return vmx_handle_external_intr(vcpu);
//return -EIO;
} }
} }
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
* ran last in lcd_init. * ran last in lcd_init.
*/ */
#include <linux/delay.h>
static int test01(void) static int test01(void)
{ {
struct lcd *lcd; struct lcd *lcd;
...@@ -592,6 +594,9 @@ static int test10(void) ...@@ -592,6 +594,9 @@ static int test10(void)
goto fail2; goto fail2;
} }
LCD_MSG("test module sleeping for 100 ms.");
msleep(100);
/* /*
* Tear it down * Tear it down
*/ */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment