Re: Bug#584846: Detects only 64MB and fails to boot on Intel Green City board if e820 hooked by GRUB2

H. Peter Anvin
2010-06-12T23:01:47Z

On 06/12/2010 03:26 PM, Josh Triplett wrote:
>
> Done. I've attached the output of meminfo with the e820 hook as
> meminfo-grub-hooked.jpg, and without the e820 hook as
> meminfo-unhooked.jpg.
>
> Everything looks identical except for the region GRUB hooked right below
> the first reserved region; the unhooked version has available memory
> from 0-0x9cbf0, and the hooked version has available memory from
> 0-0x9cba0, then reserved from 0x9cba0-0x9cbec, then 4 bytes of available
> memory, and then the same reserved region as before.
>

The new reserved area that Grub hooks is located inside a FBM ("DOS
RAM") reserved area, so Grub is somehow using memory that someone else
has already reserved! The normal thing is to reserve something in FBM
and not in INT 15h if it is to be reserved only until the protected-mode
operating system starts, but in this case Grub puts something in there
which is a real-mode hook. It *will* have overwritten something at this
point, the question is just what (and I have no idea how to find that out.)

Note that the unmodified entry conditions (unhooked) has FBM quite a bit
lower than the reserved area. Something else that really confuses me is
that although the memory map has changed, the INT 15h vector itself is
still the same, so I'm really confused about how the actual hooking
happens in the first place...

-hpa

--
H. Peter Anvin, Intel Open Source Technology Center
I work for Intel. I don't speak on their behalf.