Re: [PATCH] phys_efi_set_virtual_address_map needs va, no pa.

From: Robin Holt
Date: Wed Jun 20 2012 - 20:27:47 EST


On Wed, Jun 20, 2012 at 01:41:54PM -0700, H. Peter Anvin wrote:
> On 06/20/2012 05:07 AM, Matthew Garrett wrote:
> >
> > No, that's completely wrong. UEFI can't be called in virtual mode until
> > *after* SetVirtualAddressMap(). The UEFI spec indicates that all
> > physical memory must have an identity mapping at this stage (section
> > 2.3.4), so if we don't then that's a bug that needs to be fixed.
> >
>
> I think it is a bug, and with the trampoline work in 3.4 we should
> finally have a proper platform to fix it.
>
> In particular, we should keep a full 1:1 page map around, and it should
> be the one that is in the trampoline (real_mode_header->trampoline_pgd)
> as we need the page directory to be 32-bit addressable.
>
> The right thing to do is to sync the pgds in the 1:1 area, both for 64
> bit and for legacy 32 bit (PAE 32 bit don't need it, since all the
> kernel maps are shared.) This is currently done ad hoc (and
> differently!) on both 32 and 64 bits and that really should be fixed.

What do you need from me? If you want me to help with this, I have a
_WHOLE_ lot of learning to do. Can you give me any pointers?

We are trying to get this finally fixed. We have had work-around code
in SLES11 SP1, SLES11 SP2, and RHEL 6.x. I would love to get this fixed
for future distro snaps.

Thanks,
Robin
--
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/