WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

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 <=