Re: BUG: unable to handle kernel paging request at 000000effd870020

From: Nathan Zimmer
Date: Thu Jan 03 2013 - 17:07:08 EST


On Thu, Jan 03, 2013 at 03:50:55PM +0000, Matt Fleming wrote:
> On Wed, 2013-01-02 at 15:09 -0600, Robin Holt wrote:
> > On Wed, Jan 02, 2013 at 01:13:43PM -0600, Nathan Zimmer wrote:
> > > On 01/02/2013 12:04 PM, H. Peter Anvin wrote:
> > > >On 01/02/2013 09:21 AM, Nathan Zimmer wrote:
> > > >>I am getting an early boot problem. It only happens on the larger of the
> > > >>machines I haven't seen it crop up on machines with more then 512 GB of ram.
> > > >>It shows in the latest linus kernel too.
> > > >>
> > > >>I am (wildly) guessing that what is happening is that the new_memmap that is
> > > >>being passed to bios is somehow placed incorrectly.
> > > >>I have come up with a workaround. By placing it the DMA area the issue goes
> > > >>away but that doesn't seem like a real fix.
> > > >>
> > > >What does your memory map look like?
> >
> > We reported this a few times (Russ Anderson and I both). The problem is
> > at the point in boot where the efi_enter_virtual_mode callback is, there
> > is no identity mapping for most of memory. If the allocation happens
> > to be above the 512GB (or maybe something lower than that) point, the
> > BIOS is not able to address this via the physical address passed to it.
>
> Right, looks like efi_call_phys_prelog() needs rewriting to install a
> proper identity mapping that actually addresses *all* of available
> memory, instead of just the first PGDIR_SIZE bytes.
>
>

Ok here is what Robin and I came up with