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

From: Matt Fleming
Date: Mon May 09 2016 - 17:55:31 EST


On Mon, 02 May, at 04:39:31PM, Alex Thorlton wrote:
>
> If you think we're violating EFI rules by accessing these registers from
> both sides of the fence, please let me know. I'd like to make sure that
> we get everything behaving the way it should be!

Oh no, I don't think this is violating the UEFI spec at all, but I do
think it goes against the spirit of the way other implementations are
designed; with maximum separation between firmware and kernel.

In a perfect world, I'd suggest mapping the MMR range in both the
kernel and firmware, at different virtual address ranges, but have
the firmware's version opaque to the kernel and only described by an
EfiMemoryMappedIO region, or something. That is ignoring any region
type conflicts that may arise.

Of course, we don't operate in a perfect world, so a good solution may
be to just insert the kernels' mapping into the EFI page tables.