From b800b2b23ac56a5d0fb39b1acfcd9e3d4e0a93c0 Mon Sep 17 00:00:00 2001 From: Juergen Gross Date: Fri, 7 Dec 2018 13:11:30 +0100 Subject: [PATCH 02/20] loader/linux: Support passing RSDP address via boot params Xen PVH guests will have the RSDP at an arbitrary address. Support that by passing the RSDP address via the boot parameters to Linux. Signed-off-by: Juergen Gross Reviewed-by: Daniel Kiper Tested-by: Hans van Kranenburg (cherry picked from commit d170be42f12b0b2ab91d8d943d7b0bf563c906dd) --- grub-core/loader/i386/linux.c | 4 ++++ include/grub/i386/linux.h | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/grub-core/loader/i386/linux.c b/grub-core/loader/i386/linux.c index 083f9417c..7d6d5d499 100644 --- a/grub-core/loader/i386/linux.c +++ b/grub-core/loader/i386/linux.c @@ -551,6 +551,10 @@ grub_linux_boot (void) } } +#ifdef GRUB_KERNEL_USE_RSDP_ADDR + linux_params.acpi_rsdp_addr = grub_le_to_cpu64 (grub_rsdp_addr); +#endif + mmap_size = find_mmap_size (); /* Make sure that each size is aligned to a page boundary. */ cl_offset = ALIGN_UP (mmap_size + sizeof (linux_params), 4096); diff --git a/include/grub/i386/linux.h b/include/grub/i386/linux.h index da0ca3b83..ada068fa5 100644 --- a/include/grub/i386/linux.h +++ b/include/grub/i386/linux.h @@ -206,8 +206,9 @@ struct linux_kernel_params grub_uint32_t ist_command; /* 64 */ grub_uint32_t ist_event; /* 68 */ grub_uint32_t ist_perf_level; /* 6c */ + grub_uint64_t acpi_rsdp_addr; /* 70 */ - grub_uint8_t padding5[0x80 - 0x70]; + grub_uint8_t padding5[0x80 - 0x78]; grub_uint8_t hd0_drive_info[0x10]; /* 80 */ grub_uint8_t hd1_drive_info[0x10]; /* 90 */ -- 2.21.0