Allow loading old kernels by placing GDT in conventional memory.

This commit is contained in:
Piotr Krysiuk 2014-04-20 15:58:45 +02:00 committed by Vladimir Serbinenko
parent 3a310e842f
commit 5a6db38d62
2 changed files with 12 additions and 4 deletions

View file

@ -1,3 +1,8 @@
2014-04-20 Piotr Krysiuk <piotras@gmail.com>
* grub-core/lib/i386/relocator.c: Allow loading old kernels by placing
GDT in conventional memory.
2014-04-10 Colin Watson <cjwatson@ubuntu.com> 2014-04-10 Colin Watson <cjwatson@ubuntu.com>
* util/grub.d/30_os-prober.in: Tolerate devices with no filesystem * util/grub.d/30_os-prober.in: Tolerate devices with no filesystem

View file

@ -81,10 +81,13 @@ grub_relocator32_boot (struct grub_relocator *rel,
void *relst; void *relst;
grub_relocator_chunk_t ch; grub_relocator_chunk_t ch;
err = grub_relocator_alloc_chunk_align (rel, &ch, 0, /* Specific memory range due to Global Descriptor Table for use by payload
(0xffffffff - RELOCATOR_SIZEOF (32)) that we will store in returned chunk. The address range and preference
+ 1, RELOCATOR_SIZEOF (32), 16, are based on "THE LINUX/x86 BOOT PROTOCOL" specification. */
GRUB_RELOCATOR_PREFERENCE_NONE, err = grub_relocator_alloc_chunk_align (rel, &ch, 0x1000,
0x9a000 - RELOCATOR_SIZEOF (32),
RELOCATOR_SIZEOF (32), 16,
GRUB_RELOCATOR_PREFERENCE_LOW,
avoid_efi_bootservices); avoid_efi_bootservices);
if (err) if (err)
return err; return err;