x86: zImage: Propagate acpi_rsdp_addr to kernel via boot parameters
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Fri, 13 Sep 2019 15:42:00 +0000 (18:42 +0300)
committerBin Meng <bmeng.cn@gmail.com>
Tue, 1 Oct 2019 10:20:47 +0000 (18:20 +0800)
This is reincarnation of the U-Boot

commit 3469bf4274540d1491d58e878a9edc0bdcba17ac
Author: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Date:   Wed Jan 10 19:40:15 2018 +0200

    x86: zImage: Propagate acpi_rsdp_addr to kernel via boot parameters

after upstream got eventually the Linux kernel

commit e6e094e053af75cbc164e950814d3d084fb1e698
Author: Juergen Gross <jgross@suse.com>
Date:   Tue Nov 20 08:25:29 2018 +0100

    x86/acpi, x86/boot: Take RSDP address from boot params if available

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
arch/x86/include/asm/bootparam.h
arch/x86/lib/zimage.c

index dfbd4b4bbac2834d9fb48a209dc0a99da116b240..d961dddc9e17ef67b947496c776afc066f52cd44 100644 (file)
@@ -94,7 +94,8 @@ struct boot_params {
        __u8  _pad2[4];                                 /* 0x054 */
        __u64  tboot_addr;                              /* 0x058 */
        struct ist_info ist_info;                       /* 0x060 */
-       __u8  _pad3[16];                                /* 0x070 */
+       __u64 acpi_rsdp_addr;                           /* 0x070 */
+       __u8  _pad3[8];                                 /* 0x078 */
        __u8  hd0_info[16];     /* obsolete! */         /* 0x080 */
        __u8  hd1_info[16];     /* obsolete! */         /* 0x090 */
        struct sys_desc_table sys_desc_table;           /* 0x0a0 */
index 6a6258a5057a3b16700aac4a3c93c25e720fd715..d07041fd4ceb4dfd2a5a6cae47675e63b6fa0758 100644 (file)
@@ -288,6 +288,10 @@ int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,
                hdr->hardware_subarch = X86_SUBARCH_INTEL_MID;
 #endif
 
+#ifdef CONFIG_GENERATE_ACPI_TABLE
+       setup_base->acpi_rsdp_addr = acpi_get_rsdp_addr();
+#endif
+
        setup_device_tree(hdr, (const void *)env_get_hex("fdtaddr", 0));
        setup_video(&setup_base->screen_info);