x86: acpi: Use an API to get the ACPI RSDP table address
Subsystems (2)
PATCH 1/2 x86: acpi: Use an API to get the ACPI RSDP table address
At present the acpi_rsdp_addr variable is directly referenced in setup_zimage(). This changes to use an API for better encapsulation and extension.
---
arch/x86/include/asm/acpi_table.h | 9 +++++++++ arch/x86/lib/acpi_table.c | 7 ++++++- arch/x86/lib/acpi_table.h | 10 ---------- arch/x86/lib/zimage.c | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) delete mode 100644 arch/x86/lib/acpi_table.h
arch/x86/include/asm/acpi_table.h +9 -0
@@ -330,6 +330,15 @@ void enter_acpi_mode(int pm1_cnt);ulong write_acpi_tables (ulong start);/** +* acpi_get_rsdp_addr() - get ACPI RSDP table address +* +* This routine returns the ACPI RSDP table address in the system memory. +* +* @return: ACPI RSDP table address +*/ +ulong acpi_get_rsdp_addr (void ); + +/** * acpi_find_fadt() - find ACPI FADT table in the sytem memory * * This routine parses the ACPI table to locate the ACPI FADT table.
arch/x86/lib/acpi_table.c +6 -1
@@ -29,7 +29,7 @@extern const unsigned char AmlCode[];/* ACPI RSDP address to be used in boot parameters */ -unsigned long acpi_rsdp_addr; +static ulong acpi_rsdp_addr;static void acpi_write_rsdp (struct acpi_rsdp *rsdp,struct acpi_rsdt *rsdt,struct acpi_xsdt *xsdt)
@@ -480,6 +480,11 @@ ulong write_acpi_tables(ulong start)return current; } +ulong acpi_get_rsdp_addr (void ) +{ +return acpi_rsdp_addr; +} +static struct acpi_rsdp *acpi_valid_rsdp (struct acpi_rsdp *rsdp) {if (strncmp ((char *)rsdp,RSDP_SIG ,sizeof (RSDP_SIG ) -1 ) !=0 )
arch/x86/lib/acpi_table.h deleted +0 -10
@@ -1,10 +0,0 @@ -/* -* SPDX-License-Identifier: GPL-2.0 -*/ - -#ifndef _X86_LIB_ACPI_TABLES_H -#define _X86_LIB_ACPI_TABLES_H - -extern unsigned long acpi_rsdp_addr; - -#endif
arch/x86/lib/zimage.c +2 -2
@@ -14,6 +14,7 @@*/ #include <common.h> +#include <asm/acpi_table.h> #include <asm/io.h> #include <asm/ptrace.h> #include <asm/zimage.h>
@@ -24,7 +25,6 @@#include <asm/arch/timestamp.h> #endif #include <linux/compiler.h> -#include "acpi_table.h" DECLARE_GLOBAL_DATA_PTR ;
@@ -258,7 +258,7 @@ int setup_zimage(struct boot_params *setup_base, char *cmd_line, int auto_boot,#ifdef CONFIG_GENERATE_ACPI_TABLE if (bootproto >=0x020e ) - hdr->acpi_rsdp_addr = acpi_rsdp_addr; + hdr->acpi_rsdp_addr =acpi_get_rsdp_addr ();#endif setup_video (&setup_base->screen_info);
Signature · 1 line
2.7.4
PATCH 1/2 x86: acpi: Use an API to get the ACPI RSDP table address
Quoted 5 lines · Bin Meng
At present the
acpi_rsdp_addrvariable is directly referenced insetup_zimage(). This changes to use an API for better encapsulation and extension.Signed-off-by Bin Meng <[email protected]>
Quoted 9 lines
---
arch/x86/include/asm/acpi_table.h | 9 +++++++++ arch/x86/lib/acpi_table.c | 7 ++++++- arch/x86/lib/acpi_table.h | 10 ---------- arch/x86/lib/zimage.c | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) delete mode 100644 arch/x86/lib/acpi_table.h
applied to u-boot-x86, thanks!
PATCH 2/2 x86: qemu: qfw: Implement acpi_get_rsdp_addr()
In reply to Bin MengU-Boot on QEMU does not build ACPI table by ourself, instead it uses the prebuilt ACPI table via the qfw interface. This implements the qfw version of acpi_get_rsdp_addr() for setup_zimage().
---
drivers/misc/qfw.c | 8 ++++++++ 1 file changed, 8 insertions(+)
drivers/misc/qfw.c +8 -0
@@ -222,6 +222,14 @@ out:free (table_loader); return addr; } + +ulong acpi_get_rsdp_addr (void ) +{ +struct fw_file *file; + + file =qemu_fwcfg_find_file ("etc/acpi/rsdp" ); +return file->addr; +}#endif /* Read configuration item using fw_cfg PIO interface */
Signature · 1 line
2.7.4
PATCH 2/2 x86: qemu: qfw: Implement acpi_get_rsdp_addr()
Quoted 19 lines · Bin Meng
U-Boot on QEMU does not build ACPI table by ourself, instead it uses the prebuilt ACPI table via the qfw interface. This implements the qfw version of
acpi_get_rsdp_addr()forsetup_zimage().Signed-off-by Bin Meng <[email protected]>---
drivers/misc/qfw.c | 8 ++++++++ 1 file changed, 8 insertions(+)drivers/misc/qfw.c +1
-0@@ -222,6 +222,14 @@ out:free (table_loader);return addr; } +
drivers/misc/qfw.c out: · line 235
Quoted 10 lines
drivers/misc/qfw.c +7
-0+ulong acpi_get_rsdp_addr (void ) +{ +struct fw_file *file; + + file =qemu_fwcfg_find_file ("etc/acpi/rsdp" ); +return file->addr; +}#endif /* Read configuration item using fw_cfg PIO interface */
For both, FWIW:
Thanks for taking care!
Signature · 2 lines
Andy Shevchenko <[email protected]> Intel Finland Oy
PATCH 2/2 x86: qemu: qfw: Implement acpi_get_rsdp_addr()
Quoted 29 lines · Andy Shevchenko
Quoted 28 lines · Bin Meng
U-Boot on QEMU does not build ACPI table by ourself, instead it uses the prebuilt ACPI table via the qfw interface. This implements the qfw version of
acpi_get_rsdp_addr()forsetup_zimage().Signed-off-by Bin Meng <[email protected]>---
drivers/misc/qfw.c | 8 ++++++++ 1 file changed, 8 insertions(+)drivers/misc/qfw.c +8
-0@@ -222,6 +222,14 @@ out:free (table_loader); return addr; } + +ulong acpi_get_rsdp_addr (void ) +{ +struct fw_file *file; + + file =qemu_fwcfg_find_file ("etc/acpi/rsdp" ); +return file->addr; +}#endif
Quoted 9 lines
drivers/misc/qfw.c out: · line 235
Quoted 1 line
drivers/misc/qfw.c +0
-0/* Read configuration item using fw_cfg PIO interface */ For both, FWIW:
Reviewed-by Andy Shevchenko <[email protected]>Thanks for taking care!
applied to u-boot-x86, thanks!
PATCH 2/2 x86: qemu: qfw: Implement acpi_get_rsdp_addr()
In reply to Bin MengQuoted 15 lines · Bin Meng
U-Boot on QEMU does not build ACPI table by ourself, instead it uses the prebuilt ACPI table via the qfw interface. This implements the qfw version of
acpi_get_rsdp_addr()forsetup_zimage().Signed-off-by Bin Meng <[email protected]>---
drivers/misc/qfw.c | 8 ++++++++ 1 file changed, 8 insertions(+)drivers/misc/qfw.c +0
-0
drivers/misc/qfw.c out: · line 231
Quoted 10 lines
drivers/misc/qfw.c +7
-0@@ -222,6 +222,14 @@ out:free (table_loader);return addr; } + +ulong acpi_get_rsdp_addr (void ) +{ +struct fw_file *file; + + file =qemu_fwcfg_find_file ("etc/acpi/rsdp" ); +return file->addr;
qemu_fwcfg_find_file() can return NULL. Don't we need to check that ? Or can we assume etc/acpi/rsdp is always present ?
Sorry for the late response.
Miao
Quoted 7 lines
drivers/misc/qfw.c +1
-1+}#endif /* Read configuration item using fw_cfg PIO interface */ --2.7.4
PATCH 2/2 x86: qemu: qfw: Implement acpi_get_rsdp_addr()
Hi Miao,
Quoted 30 lines · Miao Yan
Quoted 15 lines · Bin Meng
U-Boot on QEMU does not build ACPI table by ourself, instead it uses the prebuilt ACPI table via the qfw interface. This implements the qfw version of
acpi_get_rsdp_addr()forsetup_zimage().Signed-off-by Bin Meng <[email protected]>---
drivers/misc/qfw.c | 8 ++++++++ 1 file changed, 8 insertions(+)drivers/misc/qfw.c +0
-0drivers/misc/qfw.c out: · line 231
Quoted 10 lines
drivers/misc/qfw.c +7
-0@@ -222,6 +222,14 @@ out:free (table_loader);return addr; } + +ulong acpi_get_rsdp_addr (void ) +{ +struct fw_file *file; + + file =qemu_fwcfg_find_file ("etc/acpi/rsdp" ); +return file->addr;
qemu_fwcfg_find_file()can return NULL. Don't we need to check that ? Or can we assume etc/acpi/rsdp is always present ?
Quoted 2 lines
Sorry for the late response.
I think you are correct. If file is NULL, we should return 0.
Regards,
Bin