vmx:update DR6 on TRAP_debug VM exits.
authorKeir Fraser <keir.fraser@citrix.com>
Fri, 10 Oct 2008 09:06:49 +0000 (10:06 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Fri, 10 Oct 2008 09:06:49 +0000 (10:06 +0100)
Signed-off-by: Kouya Shimura <kouya@jp.fujitsu.com>
xen/arch/x86/hvm/vmx/vmx.c

index ce320dbc548d02f29c5ad994071b01568e66c438..6059af04b40db71075c1a6ffb1f5712152b9127f 100644 (file)
@@ -2109,6 +2109,13 @@ asmlinkage void vmx_vmexit_handler(struct cpu_user_regs *regs)
         switch ( vector )
         {
         case TRAP_debug:
+            /*
+             * Updates DR6 where debugger can peek (See 3B 23.2.1,
+             * Table 23-1, "Exit Qualification for Debug Exceptions").
+             */
+            exit_qualification = __vmread(EXIT_QUALIFICATION);
+            write_debugreg(6, exit_qualification | 0xffff0ff0);
+            /* fall through */
         case TRAP_int3:
             if ( !v->domain->debugger_attached )
                 goto exit_and_crash;