If "acpi=off" specified in cmdline, the whole functions of acpi.c should not work, there is no need to ealy parse RSDP, so detect "acpi=off" in the very first place.
Also replace magic number with macro. Signed-off-by: Chao Fan <fanc.f...@cn.fujitsu.com> --- arch/x86/boot/compressed/acpi.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/arch/x86/boot/compressed/acpi.c b/arch/x86/boot/compressed/acpi.c index 0ef4ad55b29b..5510a2105b7b 100644 --- a/arch/x86/boot/compressed/acpi.c +++ b/arch/x86/boot/compressed/acpi.c @@ -213,8 +213,13 @@ static acpi_physical_address bios_get_rsdp_addr(void) /* Return RSDP address on success, otherwise 0. */ acpi_physical_address get_rsdp_addr(void) { + char arg[MAX_ACPI_ARG_LENGTH]; acpi_physical_address pa; + if (cmdline_find_option("acpi", arg, sizeof(arg)) == 3 && + !strncmp(arg, "off", 3)) + return 0; + pa = get_acpi_rsdp(); if (!pa) @@ -235,9 +240,9 @@ static unsigned long get_acpi_srat_table(void) { unsigned long root_table, acpi_table; struct acpi_table_header *header; + char arg[MAX_ACPI_ARG_LENGTH]; struct acpi_table_rsdp *rsdp; u32 num_entries, size, len; - char arg[10]; u8 *entry; rsdp = (struct acpi_table_rsdp *)(long)boot_params->acpi_rsdp_addr; @@ -299,13 +304,8 @@ int count_immovable_mem_regions(void) unsigned long table_addr, table_end, table; struct acpi_subtable_header *sub_table; struct acpi_table_header *table_header; - char arg[MAX_ACPI_ARG_LENGTH]; int num = 0; - if (cmdline_find_option("acpi", arg, sizeof(arg)) == 3 && - !strncmp(arg, "off", 3)) - return 0; - table_addr = get_acpi_srat_table(); if (!table_addr) return 0; -- 2.20.1