x86/apic/64: Uncopypaste probing
authorThomas Gleixner <tglx@linutronix.de>
Tue, 8 Aug 2023 22:04:08 +0000 (15:04 -0700)
committerDave Hansen <dave.hansen@linux.intel.com>
Wed, 9 Aug 2023 18:58:30 +0000 (11:58 -0700)
No need for the same thing twice. Also prepares for simplifying the APIC ID
validation checks.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Michael Kelley <mikelley@microsoft.com>
Tested-by: Sohil Mehta <sohil.mehta@intel.com>
Tested-by: Juergen Gross <jgross@suse.com> # Xen PV (dom0 and unpriv. guest)
arch/x86/kernel/apic/probe_64.c

index 7c9f1a8a83c87b93bb25a6a89a57c5582ae8668a..a82bb52d5c698dab3e4f57960c0f8e4cb6f201f6 100644 (file)
 
 #include "local.h"
 
+static __init void apic_install_driver(struct apic *driver)
+{
+       if (apic == driver)
+               return;
+
+       apic = driver;
+       pr_info("Switched APIC routing to %s:\n", apic->name);
+}
+
 /* Select the appropriate APIC driver */
 void __init x86_64_probe_apic(void)
 {
@@ -22,11 +31,7 @@ void __init x86_64_probe_apic(void)
 
        for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
                if ((*drv)->probe && (*drv)->probe()) {
-                       if (apic != *drv) {
-                               apic = *drv;
-                               pr_info("Switched APIC routing to %s.\n",
-                                       apic->name);
-                       }
+                       apic_install_driver(*drv);
                        break;
                }
        }
@@ -38,11 +43,7 @@ int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
 
        for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) {
                if ((*drv)->acpi_madt_oem_check(oem_id, oem_table_id)) {
-                       if (apic != *drv) {
-                               apic = *drv;
-                               pr_info("Setting APIC routing to %s.\n",
-                                       apic->name);
-                       }
+                       apic_install_driver(*drv);
                        return 1;
                }
        }