From: BitKeeper B. <ri...@su...> - 2005-02-20 10:19:28
|
ChangeSet 1.1227, 2005/02/19 20:01:12+00:00, ma...@bu... Merge burn.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk into burn.cl.cam.ac.uk:/local/scratch-1/maf46/xen-unstable.bk arch/x86/vmx.c | 21 ++++++++++----------- drivers/char/console.c | 1 + include/xen/lib.h | 2 ++ 3 files changed, 13 insertions(+), 11 deletions(-) diff -Nru a/xen/arch/x86/vmx.c b/xen/arch/x86/vmx.c --- a/xen/arch/x86/vmx.c 2005-02-19 23:04:18 -05:00 +++ b/xen/arch/x86/vmx.c 2005-02-19 23:04:18 -05:00 @@ -46,11 +46,7 @@ extern long evtchn_send(int lport); extern long do_block(void); - -#define VECTOR_DB 1 -#define VECTOR_BP 3 -#define VECTOR_GP 13 -#define VECTOR_PG 14 +void do_nmi(struct xen_regs *, unsigned long); int start_vmx() { @@ -167,7 +163,7 @@ intr_fields = (INTR_INFO_VALID_MASK | INTR_TYPE_EXCEPTION | INTR_INFO_DELIEVER_CODE_MASK | - VECTOR_GP); + TRAP_gp_fault); __vmwrite(VM_ENTRY_INTR_INFO_FIELD, intr_fields); __vmwrite(VM_ENTRY_EXCEPTION_ERROR_CODE, error_code); } @@ -773,14 +769,14 @@ TRACE_3D(TRC_VMX_VECTOR, ed->domain->id, eip, vector); switch (vector) { #ifdef XEN_DEBUGGER - case VECTOR_DB: + case TRAP_debug: { save_xen_regs(®s); pdb_handle_exception(1, ®s, 1); restore_xen_regs(®s); break; } - case VECTOR_BP: + case TRAP_int3: { save_xen_regs(®s); pdb_handle_exception(3, ®s, 1); @@ -788,12 +784,12 @@ break; } #endif - case VECTOR_GP: + case TRAP_gp_fault: { vmx_do_general_protection_fault(®s); break; } - case VECTOR_PG: + case TRAP_page_fault: { __vmread(EXIT_QUALIFICATION, &va); __vmread(VM_EXIT_INTR_ERROR_CODE, &error_code); @@ -812,13 +808,16 @@ intr_fields = (INTR_INFO_VALID_MASK | INTR_TYPE_EXCEPTION | INTR_INFO_DELIEVER_CODE_MASK | - VECTOR_PG); + TRAP_page_fault); __vmwrite(VM_ENTRY_INTR_INFO_FIELD, intr_fields); __vmwrite(VM_ENTRY_EXCEPTION_ERROR_CODE, error_code); ed->arch.arch_vmx.cpu_cr2 = va; } break; } + case TRAP_nmi: + do_nmi(®s, 0); + break; default: printk("unexpected VMexit for exception vector 0x%x\n", vector); //__vmx_bug(®s); diff -Nru a/xen/drivers/char/console.c b/xen/drivers/char/console.c --- a/xen/drivers/char/console.c 2005-02-19 23:04:18 -05:00 +++ b/xen/drivers/char/console.c 2005-02-19 23:04:18 -05:00 @@ -631,6 +631,7 @@ __putstr("Reboot in five seconds...\n"); spin_unlock_irqrestore(&console_lock, flags); + watchdog_on = 0; mdelay(5000); machine_restart(0); } diff -Nru a/xen/include/xen/lib.h b/xen/include/xen/lib.h --- a/xen/include/xen/lib.h 2005-02-19 23:04:18 -05:00 +++ b/xen/include/xen/lib.h 2005-02-19 23:04:18 -05:00 @@ -12,6 +12,8 @@ FORCE_CRASH(); \ } while ( 0 ) +#define BUG_ON(_p) do { if (_p) BUG(); } while ( 0 ) + #ifndef NDEBUG #define ASSERT(_p) if ( !(_p) ) { printk("Assertion '%s' failed, line %d, file %s\n", #_p , __LINE__, __FILE__); BUG(); } #else |
From: BitKeeper B. <ri...@su...> - 2005-02-22 15:03:34
|
ChangeSet 1.1235, 2005/02/22 14:28:58+00:00, ma...@bu... Merge burn.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk into burn.cl.cam.ac.uk:/local/scratch-1/maf46/xen-unstable.bk Signed-off-by: mic...@cl... 0 files changed |
From: BitKeeper B. <ri...@su...> - 2005-02-25 19:04:15
|
ChangeSet 1.1259, 2005/02/25 14:49:40+00:00, ma...@bu... Merge burn.cl.cam.ac.uk:/auto/groups/xeno-xenod/BK/xen-unstable.bk into burn.cl.cam.ac.uk:/local/scratch-1/maf46/xen-unstable.bk Signed-off-by: mic...@cl... arch/x86/domain.c | 10 +++++++++- arch/x86/mm.c | 10 +++++++++- arch/x86/shadow.c | 10 +++++++++- arch/x86/vmx.c | 24 ++++++++++++++++-------- arch/x86/x86_32/traps.c | 10 +++++++++- include/asm-x86/shadow.h | 13 +++++++++++-- 6 files changed, 63 insertions(+), 14 deletions(-) diff -Nru a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c --- a/xen/arch/x86/domain.c 2005-02-25 14:04:11 -05:00 +++ b/xen/arch/x86/domain.c 2005-02-25 14:04:11 -05:00 @@ -1,4 +1,3 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */ /****************************************************************************** * arch/x86/domain.c * @@ -1005,3 +1004,12 @@ relinquish_list(d, &d->page_list); } + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + */ diff -Nru a/xen/arch/x86/mm.c b/xen/arch/x86/mm.c --- a/xen/arch/x86/mm.c 2005-02-25 14:04:11 -05:00 +++ b/xen/arch/x86/mm.c 2005-02-25 14:04:11 -05:00 @@ -1,4 +1,3 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */ /****************************************************************************** * arch/x86/mm.c * @@ -2984,3 +2983,12 @@ } #endif /* NDEBUG */ + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + */ diff -Nru a/xen/arch/x86/shadow.c b/xen/arch/x86/shadow.c --- a/xen/arch/x86/shadow.c 2005-02-25 14:04:11 -05:00 +++ b/xen/arch/x86/shadow.c 2005-02-25 14:04:11 -05:00 @@ -1,4 +1,3 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */ #include <xen/config.h> #include <xen/types.h> @@ -1168,3 +1167,12 @@ } #endif // SHADOW_DEBUG + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + */ diff -Nru a/xen/arch/x86/vmx.c b/xen/arch/x86/vmx.c --- a/xen/arch/x86/vmx.c 2005-02-25 14:04:11 -05:00 +++ b/xen/arch/x86/vmx.c 2005-02-25 14:04:11 -05:00 @@ -1,4 +1,3 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */ /* * vmx.c: handling VMX architecture-related VM exits * Copyright (c) 2004, Intel Corporation. @@ -108,7 +107,7 @@ static int vmx_do_page_fault(unsigned long va, struct xen_regs *regs) { unsigned long eip; - unsigned long gpa; + unsigned long gpte, gpa; int result; #if VMX_DEBUG @@ -130,10 +129,12 @@ return 0; } - gpa = gva_to_gpa(va); - if (!gpa) - return 0; + gpte = gva_to_gpte(va); + if (!(gpte & _PAGE_PRESENT) ) + return 0; + gpa = (gpte & PAGE_MASK) + (va & ~PAGE_MASK); + /* Use 1:1 page table to identify MMIO address space */ if (mmio_space(gpa)) handle_mmio(va, gpa); @@ -703,9 +704,6 @@ } #endif -#define TRC_VMX_VMEXIT 0x00040001 -#define TRC_VMX_VECTOR 0x00040002 - asmlinkage void vmx_vmexit_handler(struct xen_regs regs) { unsigned int exit_reason, idtv_info_field; @@ -810,6 +808,7 @@ __vmwrite(VM_ENTRY_INTR_INFO_FIELD, intr_fields); __vmwrite(VM_ENTRY_EXCEPTION_ERROR_CODE, regs.error_code); ed->arch.arch_vmx.cpu_cr2 = va; + TRACE_3D(TRC_VMX_INT, ed->domain->id, TRAP_page_fault, va); } break; } @@ -941,3 +940,12 @@ } #endif /* CONFIG_VMX */ + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + */ diff -Nru a/xen/arch/x86/x86_32/traps.c b/xen/arch/x86/x86_32/traps.c --- a/xen/arch/x86/x86_32/traps.c 2005-02-25 14:04:11 -05:00 +++ b/xen/arch/x86/x86_32/traps.c 2005-02-25 14:04:11 -05:00 @@ -1,4 +1,3 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */ #include <xen/config.h> #include <xen/init.h> @@ -322,3 +321,12 @@ return 0; } + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + */ diff -Nru a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h --- a/xen/include/asm-x86/shadow.h 2005-02-25 14:04:11 -05:00 +++ b/xen/include/asm-x86/shadow.h 2005-02-25 14:04:11 -05:00 @@ -1,4 +1,3 @@ -/* -*- Mode:C; c-basic-offset:4; tab-width:4; indent-tabs-mode:nil -*- */ #ifndef _XEN_SHADOW_H #define _XEN_SHADOW_H @@ -279,7 +278,8 @@ unsigned long old_spte = spte; #endif - if ( shadow_mode_external(d) && mmio_space(gpte & 0xFFFFF000) ) { + /* Use 1:1 page table to identify MMIO address space */ + if ( shadow_mode_external(d) && mmio_space(gpte) ) { *spte_p = 0; return; } @@ -812,3 +812,12 @@ #endif #endif /* XEN_SHADOW_H */ + +/* + * Local variables: + * mode: C + * c-set-style: "BSD" + * c-basic-offset: 4 + * tab-width: 4 + * indent-tabs-mode: nil + */ |