Xen 
 
Home About Xen.org Xen Xen Summit Wiki Mailing List Bug Tracker Xen Downloads
 
   
 

xen-changelog

[Xen-changelog] [PATCH] vmx-gdbserver-paging.patch

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [PATCH] vmx-gdbserver-paging.patch
From: BitKeeper Bot <riel@xxxxxxxxxxx>
Date: Thu, 23 Jun 2005 10:05:06 +0000
Cc: james@xxxxxxxxxxxxx
Delivery-date: Thu, 23 Jun 2005 11:05:22 +0000
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: Xen Development List <xen-devel@xxxxxxxxxxxxxxxxxxx>
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
ChangeSet 1.1741, 2005/06/23 11:05:06+01:00, arun.sharma@xxxxxxxxx

        [PATCH] vmx-gdbserver-paging.patch
        
        gdbserver should not try to convert guest physical to machine physical 
if
        paging is not enabled.
        
        Signed-off-by: Arun Sharma <arun.sharma@xxxxxxxxx>



 tools/libxc/xc_ptrace.c          |   11 ++++++++++-
 xen/arch/x86/dom0_ops.c          |    5 ++++-
 xen/include/public/arch-x86_32.h |    2 ++
 3 files changed, 16 insertions(+), 2 deletions(-)


diff -Nru a/tools/libxc/xc_ptrace.c b/tools/libxc/xc_ptrace.c
--- a/tools/libxc/xc_ptrace.c   2005-06-23 07:06:32 -04:00
+++ b/tools/libxc/xc_ptrace.c   2005-06-23 07:06:32 -04:00
@@ -3,6 +3,8 @@
 #include "xc_private.h"
 #include <time.h>
 
+#define X86_CR0_PE              0x00000001 /* Enable Protected Mode    (RW) */
+#define X86_CR0_PG              0x80000000 /* Paging                   (RW) */
 
 #define BSD_PAGE_MASK  (PAGE_SIZE-1)
 #define        PG_FRAME        (~((unsigned long)BSD_PAGE_MASK)
@@ -132,6 +134,13 @@
 static unsigned long            cr3[MAX_VIRT_CPUS];
 static vcpu_guest_context_t ctxt[MAX_VIRT_CPUS];
 
+static inline int paging_enabled(vcpu_guest_context_t *v)
+{
+    unsigned long cr0 = v->cr0;
+
+    return (cr0 & X86_CR0_PE) && (cr0 & X86_CR0_PG);
+}
+
 /* --------------------- */
 
 static void *
@@ -179,7 +188,7 @@
     } 
     if ((pde = cr3_virt[cpu][vtopdi(va)]) == 0) /* logical address */
        goto error_out;
-    if (ctxt[cpu].flags & VGCF_VMX_GUEST)
+    if ((ctxt[cpu].flags & VGCF_VMX_GUEST) && paging_enabled(&ctxt[cpu]))
         pde = page_array[pde >> PAGE_SHIFT] << PAGE_SHIFT;
     if (pde != pde_phys[cpu]) 
     {
diff -Nru a/xen/arch/x86/dom0_ops.c b/xen/arch/x86/dom0_ops.c
--- a/xen/arch/x86/dom0_ops.c   2005-06-23 07:06:32 -04:00
+++ b/xen/arch/x86/dom0_ops.c   2005-06-23 07:06:32 -04:00
@@ -393,8 +393,11 @@
 
 #ifdef __i386__
 #ifdef CONFIG_VMX
-    if ( VMX_DOMAIN(v) )
+    if ( VMX_DOMAIN(v) ) {
         save_vmx_cpu_user_regs(&c->user_regs);
+        __vmread(CR0_READ_SHADOW, &c->cr0);
+        __vmread(CR4_READ_SHADOW, &c->cr4);
+    }
 #endif
 #endif
 
diff -Nru a/xen/include/public/arch-x86_32.h b/xen/include/public/arch-x86_32.h
--- a/xen/include/public/arch-x86_32.h  2005-06-23 07:06:32 -04:00
+++ b/xen/include/public/arch-x86_32.h  2005-06-23 07:06:32 -04:00
@@ -137,6 +137,8 @@
     unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
     unsigned long kernel_ss, kernel_sp;     /* Virtual TSS (only SS1/SP1)   */
     unsigned long pt_base;                  /* CR3 (pagetable base)         */
+    unsigned long cr0;                      /* CR0                          */
+    unsigned long cr4;                      /* CR4                          */
     unsigned long debugreg[8];              /* DB0-DB7 (debug registers)    */
     unsigned long event_callback_cs;        /* CS:EIP of event callback     */
     unsigned long event_callback_eip;

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [PATCH] vmx-gdbserver-paging.patch, BitKeeper Bot <=