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

Re: [Xen-devel] portability issues


  • To: Jan Beulich <jbeulich@xxxxxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxx>
  • From: Keir Fraser <keir@xxxxxxxxxxxxx>
  • Date: Thu, 21 Jun 2007 09:37:13 +0100
  • Delivery-date: Thu, 21 Jun 2007 01:35:17 -0700
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>
  • Thread-index: Acez311vnChmUh/SEdyKOQAX8io7RQ==
  • Thread-topic: [Xen-devel] portability issues

(1) and (2): I want to kill off use of vcpu_guest_context in dom0 tools,
make hvm save/restore a generic state load/save interface, and define
extensible structures at that interface (pass a stream of state chunks back
and forth at the interface, each chunk having a size in its header, and so
increasing the size of a chunk allows it to be naturally appended to and
hence extended).

(3) Bump the XEN_INTERFACE_VERSION, rename current CALLBACKTYPE_sysenter to
a compat name, and introduce new define for CALLBACKTYPE_sysenter with
proper native semantics.

 -- Keir

On 21/6/07 09:10, "Jan Beulich" <jbeulich@xxxxxxxxxx> wrote:

> Being in the process of trying to enable sysenter/syscall use from compat mode
> guests and compat mode apps in native guests (for performance to a certain
> degree, but more importantly - at least for the compat mode app case - to get
> closer to native behavior, i.e. mid/long term requiring less kernel
> modifications)
> I'm facing a few backwards compatibility issues that I'm not really sure how
> to
> deal with:
> 
> 1) Obviously I need to extend the guest_context structure (to store the
> additional callback addresses), but there do not seem to be provisions to do
> so without breaking the dom0 interface. I'm currently considering adding a
> flag indicating use of the larger structure, but this certainly doesn't scale
> well
> considering future additions. An alternative might be to add a single flag
> covering all future additions, and using the first field past the current size
> to
> store the overall or add-on size, so that the hypervisor has a way to know
> how much of the structure to copy.
> 
> 2) While the x86-32 hv can't support syscall and is unlikely to support
> sysenter,
> save/restore/migration (which hopefully will work at least from 32-bit hv to
> 64-bit hv in the future) imposes an issue here in that native wouldn't need
> these extra fields, but a compat mode guest would have to have a way to
> store them (in compat mode format), implying that guest_context would also
> need to be extended for 32-bits.
> 
> 3) Currently, the 32-bit kernel check X86_FEATURE_SEP and the return
> status of setting the sysenter hypercall, to detect its availability when run
> in supervisor mode. This, however, is being done only on the boot CPU,
> which works thanks to a quirk in how Xen handles the hypercall - MSRs for
> all CPUs get set by this single call, which clearly doesn't match native
> behavior (where in theory all CPUs could have distinct settings and have
> to establish them as they come up). The problem with this is that if things
> turn out to work as intended, X86_FEATURE_SEP will be seen enabled by
> the guest when run on a 64-bit hv, and setting the sysenter callback will
> also succeed, but existing guests will fail to set the callback on all CPUs.
> I have to admit that I'm rather reluctant to add the same kind of quirk for
> !supervisor_mode_kernel in the hypervisor's handling of CALLBACK_sysenter.
> 
> Thanks for suggestions/opinions,
> Jan
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel


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


 


Rackspace

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