Messages in this thread Patch in this message | | | From | Cao jin <> | Subject | [RFC PATCH 1/2] x86/acpi: Improve code readablity of early madt processing | Date | Thu, 23 Jan 2020 09:32:37 +0800 |
| |
Current processing logic is confusing.
Return value of early_acpi_parse_madt_lapic_addr_ovr() indicates error(< 0), parsed entry number(>= 0). So, it makes no sense to initialize acpi_lapic & smp_found_config seeing no override entry, instead, initialize them seeing MADT.
Put register_lapic_address() into override entry processing doesn't make sense either.
Improved all the related comments too.
Signed-off-by: Cao jin <caoj.fnst@cn.fujitsu.com> --- arch/x86/kernel/acpi/boot.c | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 04205ce127a1..2131035bba98 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -1003,11 +1003,7 @@ static int __init acpi_parse_fadt(struct acpi_table_header *table) } #ifdef CONFIG_X86_LOCAL_APIC -/* - * Parse LAPIC entries in MADT - * returns 0 on success, < 0 on error - */ - +/* Returns >= 0 on success, indicates parsed entry number; < 0 on error. */ static int __init early_acpi_parse_madt_lapic_addr_ovr(void) { int count; @@ -1025,11 +1021,8 @@ static int __init early_acpi_parse_madt_lapic_addr_ovr(void) if (count < 0) { printk(KERN_ERR PREFIX "Error parsing LAPIC address override entry\n"); - return count; } - register_lapic_address(acpi_lapic_addr); - return count; } @@ -1234,19 +1227,16 @@ static inline int acpi_parse_madt_ioapic_entries(void) static void __init early_acpi_process_madt(void) { #ifdef CONFIG_X86_LOCAL_APIC - int error; + int ret; if (!acpi_table_parse(ACPI_SIG_MADT, acpi_parse_madt)) { + /* Found MADT */ + acpi_lapic = 1; + smp_found_config = 1; - /* - * Parse MADT LAPIC entries - */ - error = early_acpi_parse_madt_lapic_addr_ovr(); - if (!error) { - acpi_lapic = 1; - smp_found_config = 1; - } - if (error == -EINVAL) { + /* See if override entry exists. */ + ret = early_acpi_parse_madt_lapic_addr_ovr(); + if (ret == -EINVAL) { /* * Dell Precision Workstation 410, 610 come here. */ @@ -1254,6 +1244,8 @@ static void __init early_acpi_process_madt(void) "Invalid BIOS MADT, disabling ACPI\n"); disable_acpi(); } + + register_lapic_address(acpi_lapic_addr); } #endif } -- 2.21.0
| |