File grub-0.97-bz825054-Pass-high-order-address-bits-to-EFI-maps.patch of Package grub
From 79ecfffd3bf5254c6cc5d8856004c5c0b87dcf1e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= <vpavlin@redhat.com>
Date: Tue, 9 Oct 2012 10:31:29 +0200
Subject: [PATCH 3/3] bz#825054 Pass high order address bits to EFI maps
Pass hig order bits to EFI system map and memory map.
---
efi/grub/x86_64/linux.h | 3 ++-
efi/x86_64/loader/linux.c | 2 ++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/efi/grub/x86_64/linux.h b/efi/grub/x86_64/linux.h
index 65af9ee..282cd66 100644
--- a/efi/grub/x86_64/linux.h
+++ b/efi/grub/x86_64/linux.h
@@ -201,7 +201,8 @@ struct linux_kernel_params
grub_uint32_t efi_mem_desc_version; /* 0x1cc */
grub_uint32_t efi_mmap; /* 0x1d0 */
grub_uint32_t efi_mmap_size; /* 0x1d4 */
- grub_uint8_t padding7_4[0x1e0 - 0x1d8]; /* 0x1d8 */
+ grub_uint32_t efi_system_table_hi; /* 1d8 */
+ grub_uint32_t efi_mmap_hi; /* 1dc */
} version_0206;
};
diff --git a/efi/x86_64/loader/linux.c b/efi/x86_64/loader/linux.c
index 7e57a5c..ceebf5b 100644
--- a/efi/x86_64/loader/linux.c
+++ b/efi/x86_64/loader/linux.c
@@ -222,6 +222,7 @@ big_linux_boot (void)
params->version_0206.efi_mem_desc_version = desc_version;
params->version_0206.efi_mmap = (grub_uint32_t) (unsigned long) mmap_buf;
params->version_0206.efi_mmap_size = mmap_size;
+ params->version_0206.efi_mmap_hi = PTR_HI(mmap_buf);
} else if (grub_le_to_cpu16 (lh->version) >= 0x0204) {
params->version_0204.efi_mem_desc_size = desc_size;
params->version_0204.efi_mem_desc_version = desc_version;
@@ -378,6 +379,7 @@ grub_load_linux (char *kernel, char *arg)
grub_memcpy(¶ms->version_0204.efi_signature, "EL64", 4);
params->version_0206.efi_system_table = \
(grub_uint32_t) (unsigned long) grub_efi_system_table;
+ params->version_0206.efi_system_table_hi = PTR_HI(grub_efi_system_table);
} else if (grub_le_to_cpu16 (lh->version) >= 0x0204) {
grub_memcpy(¶ms->version_0204.efi_signature, "EFIL", 4);
params->version_0204.efi_system_table = \
--
1.7.11.4