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 <jgr...@suse.com> --- V2: add oring 0x8000 to version field V3: move including machine/kernel.h to patch 8 (Daniel Kiper) V5: move acpi_rsdp_addr to struct linux_kernel_params (Peter Anvin) --- 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 c408b10d8..375ee80dc 100644 --- a/grub-core/loader/i386/linux.c +++ b/grub-core/loader/i386/linux.c @@ -508,6 +508,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 60c7c3b5e..a96059311 100644 --- a/include/grub/i386/linux.h +++ b/include/grub/i386/linux.h @@ -210,8 +210,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.16.4 _______________________________________________ Xen-devel mailing list Xen-devel@lists.xenproject.org https://lists.xenproject.org/mailman/listinfo/xen-devel