[Top][All Lists]
[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