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

Re: [Xen-devel] [Lguest] lguest: unhandled trap 13 and CONFIG_MICROCODE_INTEL_EARLY

Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> writes:
> On Tue, May 07, 2013 at 02:48:15PM +0930, Rusty Russell wrote:
>> "H. Peter Anvin" <hpa@xxxxxxxxx> writes:
>> > On 05/05/2013 09:22 PM, Rusty Russell wrote:
>> >> 
>> >> HPA, how about we extend the KEEP_SEGMENTS flag to mean "don't touch
>> >> privileged registers" in general?  That's what it used to do when it
>> >> was introduced, and AFAIK only lguest uses it.  Xen folk CC'd.
>> >> 
>> >
>> > KEEP_SEGMENTS was introduced at the request of Xen, not lguest.  I'm a
>> > bit concerned about extending it as I don't know what else might end up
>> > being affected.
>> Not sure if they ever used it, or if they still have their own entry
>> point.
> I don't ever recall it being used. But git commit 
> bd53147db8bdf5dd49025c198ff18ac23f560e0e
> says
>     Both x86 and x86_64 support the same boot protocol so we need
>     to implement the KEEP_SEGMENTS on x86_64 as well.  It isn't
>     just paravirt bootloaders that could use this functionality.
> And a quick Google search tells me:
> http://lkml.indiana.edu/hypermail/linux/kernel/1102.0/01422.html
> I think the only potential user is whatever Eric Biederman thought off?

OK, that confirms my understanding it's lguest-only.

To return to the immediate proposal: I'd like to expand it KEEP_SEGMENTS
to say "don't do any privileged ops before the platform entry point"
which is what it used to do (before we added those config options), and
still does (if they're disabled).

This fixes lguest for those configs, and if there *are* any other users,
this just means they don't support OLPC machines (since 2.6.37) or early
microcode (3.9).  OLPC + KEEP_SEGMENTS is vanishingly unlikely (the OLPC
bootloader doesn't use it), and early microcode never worked with
paravirt anyway (those native_cpuid() calls).

Failing that, second best to remove KEEP_SEGMENTS, and have lguest
'emulate' (ie. skip!) those instructions.  We already do this for in/out
instructions, see drivers/lguest/x86/core.c emulate_insn().  More code,
but it's lguest code.


Xen-devel mailing list



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