grub-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] zero-fill entry before asking BIOS for memory map


From: Pavel Roskin
Subject: Re: [PATCH] zero-fill entry before asking BIOS for memory map
Date: Thu, 23 Jul 2009 17:31:57 -0400

On Thu, 2009-07-23 at 11:38 +0200, Vladimir 'phcoder' Serbinenko wrote:
> Hello. According to xen some BIOSes update only lower 32-bit in mmap
> entries. To workaround this and not get high values in memory map
> zero-fill before calling BIOS

I think the fix belongs to grub_get_mmap_entry(), not to all of its
callers.  Something like this:

diff --git a/kern/i386/pc/startup.S b/kern/i386/pc/startup.S
index be258fb..5468ba8 100644
--- a/kern/i386/pc/startup.S
+++ b/kern/i386/pc/startup.S
@@ -997,6 +997,14 @@ FUNCTION(grub_get_mmap_entry)
        /* push ADDR */
        pushl   %eax
 
+       /* clear the request area, buggy BIOSes may not clear it */
+       xor     %edi, %edi
+       movl    %edi, 4(%eax)
+       movl    %edi, 8(%eax)
+       movl    %edi, 12(%eax)
+       movl    %edi, 16(%eax)
+       movl    %edi, 20(%eax)
+
        /* place address (+4) in ES:DI */
        addl    $4, %eax
        movl    %eax, %edi

I don't know whether it would interfere with the Apple CC workaround.
It would be great if we get rid of it, perhaps by using labels starting
with "L_".

-- 
Regards,
Pavel Roskin




reply via email to

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