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

[Xen-devel] Problem setting up a custom GDT

To: xen-devel list <xen-devel@xxxxxxxxxxxxxxxxxxx>
Subject: [Xen-devel] Problem setting up a custom GDT
From: Simon Kagstrom <simon.kagstrom@xxxxxx>
Date: Fri, 09 Jun 2006 13:03:00 +0200
Delivery-date: Fri, 09 Jun 2006 04:02:33 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Wanderlust/2.15.2 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shijō) APEL/10.6 Emacs/21.4 (i486-pc-linux-gnu) MULE/5.0 (SAKAKI)
Hello!

I have some problems setting up a custom GDT (I need one where the
code is readable). Anyway, I try to switch to my own GDT as follows:

   unsigned long frames[16];

   volatile unsigned long va = (unsigned long)GDT;
   volatile unsigned long pa = to_phys(va);
   volatile unsigned long ma = phys_to_machine(pa) & ~_PAGE_RW  | _PAGE_PRESENT 
| _PAGE_ACCESSED | _PAGE_DIRTY;

   /* Make it read-only */
   HYPERVISOR_update_va_mapping(va, (pte_t){ ma }, 0);
   frames[0] = ma;

   int ret = HYPERVISOR_set_gdt(frames, 16);


(The GDT Is just copied from Linux' right now). When doing this, I
always get -EINVAL from set_gdt, which I suspect is because
HYPERVISOR_update_va_mapping for some reason does not succeed in
setting the page read-only.

I've checked the Linux implementation, and it does basically the same
thing (pte_wrprotect() on the machine-address before calling
update_va_mapping). Does anyone see what is wrong here?

// Simon

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

<Prev in Thread] Current Thread [Next in Thread>