Re: [BUG] x86/efi: MMRs no longer properly mapped after switch to isolated page table
From: Alex Thorlton
Date: Tue May 10 2016 - 13:35:22 EST
On Mon, May 09, 2016 at 10:55:24PM +0100, Matt Fleming wrote:
> 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.
Understood. Thanks!
> 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.
The code I'm working on right now will do exactly this, so I think we're
on the right track there. My solution is still a bit hacky, and we're
still working out some kinks with runtime EFI calls, but we're getting
closer.
I will send up an RFC patch with my findings as soon as we've worked out
our callback issues. I'm working with our BIOS guys on this as we
speak.
Thanks again for the help, Matt!
- Alex