Re: [PATCH 0/4] EFI 1:1 mapping

Matthew Garrett
2013-06-03T16:42:37Z

On Mon, Jun 03, 2013 at 09:35:07AM -0700, James Bottomley wrote:
> On Mon, 2013-06-03 at 17:24 +0100, Matthew Garrett wrote:
> > That seems optimistic. Windows never calls QueryVariableInfo() during
> > boot services, so what makes you think doing so has ever been tested?
>
> It's used by the UEFI shell package ... every system which boots to the
> shell automatically tests this. I know no locked down UEFI system ships
> with a shell but almost every system in test has a Shell in some form,
> so I think its fairly safe to call it from boot services.

Why do you persist in this belief that all system vendors are going to
have run a shell, let alone any kind of test suite? That runs counter to
everything we've learned about x86 firmware. People verify that it runs
Windows and then ship it.

> However, what about a compromise: why don't we implement 1:1 mapping and
> then call SetVirtualAddressMap with the 1:1 map ... in theory the
> pointer chases should then be nops (it will be replacing the physical
> address with the same virtual address), so everything should just work
> and anything the UEFI vendor missed will still work because the physical
> address will work also in this scenario.

The problem there is that you're saying "In theory". We know that
Windows doesn't behave this way, so we have no legitimate expectation
that it'll work. We know that it doesn't on some Apple hardware.

--
Matthew Garrett | mjg59-1xO5oi07KQx4cg9Nei1l7Q@public.gmane.org