rpms/grub/devel grub-low-memory.patch,NONE,1.1 grub.spec,1.94,1.95

Peter Jones pjones at fedoraproject.org
Thu Apr 16 20:38:42 UTC 2009


Author: pjones

Update of /cvs/extras/rpms/grub/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv29106

Modified Files:
	grub.spec 
Added Files:
	grub-low-memory.patch 
Log Message:
* Thu Apr 16 2009 Peter Jones <pjones at redhat.com> - 0.97-49
- Fix efi booting on machines with continguous memory regions across
  the 1G boundary.


grub-low-memory.patch:

--- NEW FILE grub-low-memory.patch ---
From: Peter Jones
Date: Thu, Apr 16 2009 16:16:00 -0500
Subject: [PATCH] allocate low memory at bottom of memory instead of top.

Don't allocate the low memory area above 1GB, as the kernel doesn't map that
during early boot.

diff -urpN grub-0.97/efi/x86_64/loader/linux.c.lowmem grub-0.97/efi/x86_64/loader/linux.c
--- grub-0.97/efi/x86_64/loader/linux.c.lowmem	2009-04-16 15:31:45.000000000 -0400
+++ grub-0.97/efi/x86_64/loader/linux.c	2009-04-16 16:14:25.000000000 -0400
@@ -169,6 +169,7 @@ allocate_pages (grub_size_t real_size, g
 	  && desc->num_pages >= real_mode_pages)
 	{
 	  grub_efi_physical_address_t physical_end;
+          int allocsize = real_size + mmap_size;
 
           physical_end = desc->physical_start + (desc->num_pages << 12);
 
@@ -176,10 +177,17 @@ allocate_pages (grub_size_t real_size, g
                         (unsigned) desc->physical_start,
                         (unsigned) physical_end);
 
-          addr = physical_end - real_size - mmap_size;
+          addr = physical_end - allocsize;
           if (addr < 0x10000)
             continue;
 
+          /* the kernel wants this address to be under 1 gig.*/
+          if (desc->physical_start > 0x40000000 - allocsize)
+            continue;
+
+          if (addr > 0x40000000 - allocsize)
+            addr = 0x40000000 - allocsize;
+
           grub_printf ("trying to allocate %u pages at %x\n",
                         (unsigned) real_mode_pages, (unsigned) addr);
           real_mode_mem = grub_efi_allocate_pages (addr, real_mode_pages);


Index: grub.spec
===================================================================
RCS file: /cvs/extras/rpms/grub/devel/grub.spec,v
retrieving revision 1.94
retrieving revision 1.95
diff -u -r1.94 -r1.95
--- grub.spec	9 Apr 2009 21:23:16 -0000	1.94
+++ grub.spec	16 Apr 2009 20:38:11 -0000	1.95
@@ -1,6 +1,6 @@
 Name: grub
 Version: 0.97
-Release: 48%{?dist}
+Release: 49%{?dist}
 Summary: Grand Unified Boot Loader.
 Group: System Environment/Base
 License: GPLv2+
@@ -40,6 +40,7 @@
 Patch12: grub-0.97-fat-lowercase.patch
 Patch13: grub-0.97-efipxe.patch
 Patch14: grub-0.97-tolower.patch
+Patch15: grub-low-memory.patch
 
 %description
 GRUB (Grand Unified Boot Loader) is an experimental boot loader
@@ -64,6 +65,7 @@
 %patch12 -p1
 %patch13 -p1
 %patch14 -p1
+%patch15 -p1
 
 %build
 autoreconf
@@ -126,6 +128,10 @@
 %{_datadir}/grub
 
 %changelog
+* Thu Apr 16 2009 Peter Jones <pjones at redhat.com> - 0.97-49
+- Fix efi booting on machines with continguous memory regions across
+  the 1G boundary.
+
 * Thu Apr 09 2009 Peter Jones <pjones at redhat.com> - 0.97-48
 - remove test message Re: using network drive or not.
 




More information about the fedora-extras-commits mailing list