[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |