Re: [BUG] x86/efi: MMRs no longer properly mapped after switch to isolated page table

From: Borislav Petkov
Date: Wed May 04 2016 - 06:36:44 EST

On Tue, May 03, 2016 at 01:47:51PM -0500, Alex Thorlton wrote:
> I think this will work for us, for the most part. Only issue is that
> the efi_call_virt macro is only accessible from inside
> runtime-wrappers.c. If we could pull that macro (and whatever else it
> needs) up to the header file, I think that might work for us. Not sure
> if that's the appropriate solution, but it's a start.

Should be doable. You could give it a try and see how ugly it can get.

> Yes, I do have CONFIG_EFI_PGT_DUMP=y. I don't *think* I see anything
> strange in there, but I could be missing something. I will send you a
> full dump of my log buffer wit MLs et. al. off of Cc.


> Take note that the Oops bits here indicate that it was a *write* from
> kernel space that triggered this most recent Oops, whereas the ones we
> were hitting before were all just missing pages in the mappings.
> This means my suggestiong about the "if(efi_scratch..." bit was wrong.
> This issue is still rolling around in my head. I'll address it below.

One thing I don't see in your uv_call_virt() is you're not grabbing
efi_runtime_lock like the rest of the EFI callers do. And there's
__wake_up_common() somewhere there in the callstack, not on the current
frame but there's also another uv_bios_call() in there and this all
looks like some locking issue...

So please convert it to the generic one first, do the calls as runtime
services in drivers/firmware/efi/runtime-wrappers.c do and we can
continue debugging.

> This is probably the answer for the future, when we can expect the
> changes to these macros be merged with the mainline kernel, but I don't
> know exactly how long it will be before that happens.

What's the hurry exactly here? You want stuff fixed in 4.6 when it
releases in less than two weeks?

Lemme try to understand the fallout range: that's only UV1 or UV3 too?
Because the latest oops comes from UV3...

If it is UV1 only, I'd say we don't care since you guys wanted to even
kill that support :-)

Btw, does "efi=old_memmap" fix things and could it be used as an interim
workaround until we've fixed everything properly and stuff has trickled
into -stable.?



SUSE Linux GmbH, GF: Felix ImendÃrffer, Jane Smithard, Graham Norton, HRB 21284 (AG NÃrnberg)