From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752116AbcF0XmF (ORCPT ); Mon, 27 Jun 2016 19:42:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:38862 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751940AbcF0XmC (ORCPT ); Mon, 27 Jun 2016 19:42:02 -0400 From: Baoquan He To: linux-kernel@vger.kernel.org, x86@kernel.org Cc: Baoquan He , "Rafael J. Wysocki" , Len Brown , Pavel Machek , Thomas Gleixner , Ingo Molnar , "H. Peter Anvin" , Borislav Petkov , Andy Lutomirski , Shaohua Li , Viresh Kumar , Hidehiro Kawai , Juergen Gross , Joerg Roedel , Dave Young , Lv Zheng , Toshi Kani , Mark Salter , Dave Hansen Subject: [PATCH 2/2] x86/acpi: Remove the repeated lapic address override entry parsing Date: Tue, 28 Jun 2016 07:41:36 +0800 Message-Id: <1467070896-4186-2-git-send-email-bhe@redhat.com> In-Reply-To: <1467070896-4186-1-git-send-email-bhe@redhat.com> References: <1467070896-4186-1-git-send-email-bhe@redhat.com> X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.25]); Mon, 27 Jun 2016 23:41:57 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ACPI MADT has a 32-bit field providing lapic address at which each processor can access its lapic information. MADT also contains an optional entry to provide a 64-bit address to override the 32-bit one. However the current code does the lapic address override entry parsing twice. One is in early_acpi_boot_init() because AMD NUMA need get boot_cpu_id earlier. The other is in acpi_boot_init() which parses all MADT entries. The relevant log will be printed out twice too and this may confuse people. So in this patch remove the repeated code in the 2nd part. Meanwhile add code comment above early_acpi_boot_init() to explain why its calling need be earlier, and print lapic override inforamtion like other MADT entry. Signed-off-by: Baoquan He Cc: "Rafael J. Wysocki" Cc: Len Brown Cc: Pavel Machek Cc: Thomas Gleixner Cc: Ingo Molnar Cc: "H. Peter Anvin" Cc: Borislav Petkov Cc: Andy Lutomirski Cc: Shaohua Li Cc: Viresh Kumar Cc: Hidehiro Kawai Cc: Juergen Gross Cc: Joerg Roedel Cc: Dave Young Cc: Lv Zheng Cc: Toshi Kani Cc: Mark Salter Cc: Dave Hansen --- arch/x86/kernel/acpi/boot.c | 17 ++--------------- arch/x86/kernel/apic/apic.c | 2 +- arch/x86/kernel/setup.c | 3 +++ 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 9414f84..6ef3694 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -274,6 +274,8 @@ acpi_parse_lapic_addr_ovr(struct acpi_subtable_header * header, if (BAD_MADT_ENTRY(lapic_addr_ovr, end)) return -EINVAL; + acpi_table_print_madt_entry(header); + acpi_lapic_addr = lapic_addr_ovr->address; return 0; @@ -990,21 +992,6 @@ static int __init acpi_parse_madt_lapic_entries(void) if (!boot_cpu_has(X86_FEATURE_APIC)) return -ENODEV; - /* - * Note that the LAPIC address is obtained from the MADT (32-bit value) - * and (optionally) overridden by a LAPIC_ADDR_OVR entry (64-bit value). - */ - - count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE, - acpi_parse_lapic_addr_ovr, 0); - if (count < 0) { - printk(KERN_ERR PREFIX - "Error parsing LAPIC address override entry\n"); - return count; - } - - register_lapic_address(acpi_lapic_addr); - count = acpi_table_parse_madt(ACPI_MADT_TYPE_LOCAL_SAPIC, acpi_parse_sapic, MAX_LOCAL_APIC); diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index 60078a6..504311c 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -1799,7 +1799,7 @@ void __init register_lapic_address(unsigned long address) if (!x2apic_mode) { set_fixmap_nocache(FIX_APIC_BASE, address); apic_printk(APIC_VERBOSE, "mapped APIC to %16lx (%16lx)\n", - APIC_BASE, mp_lapic_addr); + APIC_BASE, address); } if (boot_cpu_physical_apicid == -1U) { boot_cpu_physical_apicid = read_apic_id(); diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index c4e7b39..059680d 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c @@ -1157,6 +1157,9 @@ void __init setup_arch(char **cmdline_p) */ acpi_boot_table_init(); + /* + * AMD NUMA support need get boot_cpu_id earlier. + */ early_acpi_boot_init(); initmem_init(); -- 2.5.5