Re: [x86, vdso] BUG: unable to handle kernel paging request at d34bd000

From: stefani
Date: Mon Mar 10 2014 - 17:25:44 EST



Zitat von Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx>:

On Mon, Mar 10, 2014 at 1:06 PM, H. Peter Anvin <hpa@xxxxxxxxxxxxxxx> wrote:

The quick way to get something working is simply to reserve more than
one page (two should presumably be enough) in the fixmap and adjust the
link address of the VDSO accordingly. This is not where we want to go
in the long term, but it doesn't seem to make sense to try to do
everything all at once -- we are already starting to push way too close
to the 3.15 merge window.

If the only immediate problem is the code generation size, then Andy
already had a (simpler) hack-around:

#undef CONFIG_OPTIMIZE_INLINING
#undef CONFIG_X86_PPRO_FENCE

in vclock_gettime.c.


This was discovered by me.

I think we could make it a bit less hacky by just restricting the
inlining of the paravirt case, since that's presumably the crap code
that causes things to grow too large. Or find out what in there it is
that explodes in size, and just try to de-crapify the code enough that
it no longer does that.


The two options above makes the code grow. The x86 pro fence make add
alternatives which increase the code by 600 bytes and the optimize
inlining will add another 500 bytes.

But this is not a real solution, at least when vcpu function support
will be added, then the code size will exceed the page size. Reserving
two pages for the VDSO is a good option.

- Stefani



--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/