grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Fix eisa_mmap evaluation, add memory existence check


From: Robert Millan
Subject: Re: [PATCH] Fix eisa_mmap evaluation, add memory existence check
Date: Tue, 1 Jan 2008 18:44:34 +0100
User-agent: Mutt/1.5.13 (2006-08-11)

On Tue, Jan 01, 2008 at 06:26:49PM +0100, Christian Franke wrote:
> >>--- grub2.orig/kern/i386/pc/init.c  2007-10-22 22:22:51.359375000 +0200
> >>+++ grub2/kern/i386/pc/init.c       2007-12-31 16:05:59.953125000 +0100
> >>@@ -199,13 +199,8 @@ grub_machine_init (void)
> >> 
> >>       if (eisa_mmap)
> >>    {
> >>-     if ((eisa_mmap & 0xFFFF) == 0x3C00)
> >>-       add_mem_region (0x100000, (eisa_mmap << 16) + 0x100000 * 15);
> >>-     else
> >>-       {
> >>-         add_mem_region (0x100000, (eisa_mmap & 0xFFFF) << 10);
> >>-         add_mem_region (0x1000000, eisa_mmap << 16);
> >>-       }
> >>+     add_mem_region (0x100000, (eisa_mmap & 0xFFFF) << 10);
> >>+     add_mem_region (0x1000000, eisa_mmap & ~0xFFFF);
> >>    }
> >>       else
> >>    add_mem_region (0x100000, grub_get_memsize (1) << 10);
> >>    
> >
> >Ok, as it seems, this comes from:
> >
> > * grub_get_eisa_mmap() :  return packed EISA memory map, lower 16 bits is
> > *              memory between 1M and 16M in 1K parts, upper 16 bits is
> > *              memory above 16M in 64K parts.  If error, return zero.
> >
> >So the replacement of "eisa_mmap << 16" seems obviously correct, but the
> >"0x3C00" part you removed is completely misterious to me.  Can you explain
> >what was it supposed to be doing or why you removed it?
> >
> >  
> 
> This part is intended to handle the (normal) case of one continuous 
> region with not gap between 1M and 16M:
> (0x3C00 << 10) = 0x100000 * 15 = 15M
> But this part does not work due to the same bug.
> 
> It is IMO not necessary to make this distinction. The function 
> compact_mem_regions() called a few lines later joins the two regions anyway.

Ah, ok.  Have you verified that this is so?  (setting debug=mem variable
during init might help on that).

Sorry for being so inquisitive, but I need to understand things well before
touching this part of GRUB, which as I said I'm not very familiar with.

-- 
Robert Millan

<GPLv2> I know my rights; I want my phone call!
<DRM> What use is a phone call, if you are unable to speak?
(as seen on /.)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]