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 */