]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
loader/linux: Support passing RSDP address via boot params
authorJuergen Gross <jgross@suse.com>
Fri, 7 Dec 2018 12:11:30 +0000 (13:11 +0100)
committerDaniel Kiper <daniel.kiper@oracle.com>
Wed, 12 Dec 2018 11:03:27 +0000 (12:03 +0100)
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 <jgross@suse.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
Tested-by: Hans van Kranenburg <hans@knorrie.org>
grub-core/loader/i386/linux.c
include/grub/i386/linux.h

index c408b10d8fba6793fb85ecb81d9e5b03a4b309f0..375ee80dc6b99336b407a50d7d2d6d597dbe9360 100644 (file)
@@ -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);
index 60c7c3b5e660276dc11d23f4a53ccc2f1e5536a5..a960593119e5bcd20dd419f977c45be1919f8cc1 100644 (file)
@@ -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 */