[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] do_set_gdt



Please keep in mind that I didn't design this interface and can only guess
what the design decisions were.  I've tried to explain to you how to use it
and why changing it the way you suggest is impractical or doesn't work...

> As far as I can tell you're doing this anyway. You're not even passing
> an address, you're passing an array page frames. So how is it that we
> don't know what is being used? And you, in your code, are passing
> LAST_RESERVED_ENTRY + 1 - but you are in fact using far fewer entries
> than that. You're supposedly communicating to the hypervisor that that
> is how much space it can use, but if you're passing it a page frame and
> the GDT has to be page-aligned what else would you be doing?

I think you look at this backwards:  if Xen makes the guest pass in a table
which has at least LAST_RESERVED_ENTRY then Xen can be sure that the guest
knows that the memory where the reserved entries are located is part of the
GDT table.  If Xen accepts tables which have less than LAST_RESERVED_ENTRY
entries, then Xen has to:
- modify entries outside the table[*] passed in by the guest
or:
- copy the valid entries to a Xen private table

Both seem undesirable for different reasons...  Well, the 2nd would maybe
cleanup the interface but require special handling in set_gdt and
update_descriptor.  The 1st would IMHO make the interface unpredictable,
please try to "document" it and see for yourself ;-)

[*] entries with an entry number higher than the entries parameter passed to
set_gdt

> Good point. However, let me write a short piece of "documentation" on
> set_gdt, to give you an idea of how crufty I think it is as an
> interface.

You realize that in your description of the entries parameter you repeat two
things twice and that that will make the interface look crufty because the
"documentation" is ;-)  See below for a much shorter description of the
restrictions imposed on the entries parameter.

> I think segments are intrinsically crufty, so a crufty interface is
> unavoidable. I'm merely pointing out that this particular interface
> requires the guest to know more about the internals of Xen than
> standard system/hyper call. To claim otherwise would be misleading.

The guest only needs to know that "a gdt table must have at least
LAST_RESERVED_ENTRY+1 many entries and [that] entries FIRST_RESERVED_ENTRY -
LAST_RESERVED_ENTRY are reserved".  I don't think that's crufty once you
accept that the guest has to provide a table large enough to also hold the
Xen reserved entries.

It is my understanding that imposing some restrictions on the guest to
simplify the Xen implementation or get performance advantages was/is one of
the basic Xen design decisions!?

   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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.