Keir Fraser wrote:
> On 27 Mar 2006, at 22:57, Jan Beulich wrote:
>
>> We're, while porting the kernel code back to SLES9, running into a
>> case where the failsafe callback gets entered. Looking at that code
>> we don't seem to be able to understand how it is actually expected
>> to work. That code, out of load_segments, stores the selectors
>> (including one or more that failed) into the (extended) frame for
>> the kernel to pick them up. The kernel code, however, simply re-does
>> the load of these selectors - how can that be expected to work any
>> better than in the hypervisor? Further, the kernel blindly loads fs
>> and gs, without caring to destroy their base addresses and, even
>> more importantly, its own ability to access the PDA.
>
> Xen allows the kernel to do something smarter if it wants, but the
> correct thing in Linux is to simply zero invalid selectors, so that's
> what the failsafe callback handler does. The reload into %gs is indeed
> bogus -- it should instead
> HYPERVISOR_set_segment_base(SEGBASE_GS_USER_SEL, gs).
>
> -- Keir
>
>
Frankly I don't think the failsafe callback code is expected to work. I
did not see failsafe callback triggered in normal cases or did not have
test cases for that at the initial port. When I actually saw it, it was
caused by a porting bug in x86-64 XenLinux. If you have a valid case
where the failsafe callback should handle, we should fix it.
Jun
---
Intel Open Source Technology Center
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|