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

Re: [Xen-devel] do_set_gdt

> Given that you that the first 256 GDT entries aren't reserved and you
> explicitly state why, shouldn't the following check:
>
>     if ( (entries <= LAST_RESERVED_GDT_ENTRY) || (entries > 8192) )
>         return -EINVAL;

I think this is so that Xen can copy its GDT entries into the table which
you pass to it.  If you look in set_gdt() you'll see that Xen copies its
entries into the new GDT table.  This implies that all entries upto
FIRST_RESERVED_GDT_ENTRY have to be valid since at least
LAST_RESERVED_GDT_ENTRY many entries will have to be activated.  If you
wanted to allow a guest to request less than LAST_RESERVED_GDT_ENTRY
entries, Xen would have to (at least) copy the entries to a private GDT
table and use that.  This would still use at least 1 page so it's preferable
to just make the guest provide enough space to fit LAST_RESERVED_GDT_ENTRY
many entries and avoid a special case.

You'll also want to make sure that you don't put other stuff in the last
page which hold the GDT table and align the GDT table to a page boundary:
lgdt allows the gdt to be anywhere while for Xen you have to put it at the
beginning of a page, can't really use the rest of the last page for much
else and have to keep the pages around.

    christian



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/xen-devel

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