1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 3 * Copyright 2004 James Cleverdon, IBM. 4 * 5 * Generic APIC sub-arch probe layer. 6 * 7 * Hacked for x86-64 by James Cleverdon from i386 architecture code by 8 * Martin Bligh, Andi Kleen, James Bottomley, John Stultz, and 9 * James Cleverdon. 10 */ 11 #include <asm/apic.h> 12 13 #include "local.h" 14 15 /* 16 * Check the APIC IDs in bios_cpu_apicid and choose the APIC mode. 17 */ 18 void __init default_setup_apic_routing(void) 19 { 20 struct apic **drv; 21 22 enable_IR_x2apic(); 23 24 for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) { 25 if ((*drv)->probe && (*drv)->probe()) { 26 if (apic != *drv) { 27 apic = *drv; 28 pr_info("Switched APIC routing to %s.\n", 29 apic->name); 30 } 31 break; 32 } 33 } 34 35 if (x86_platform.apic_post_init) 36 x86_platform.apic_post_init(); 37 } 38 39 int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id) 40 { 41 struct apic **drv; 42 43 for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) { 44 if ((*drv)->acpi_madt_oem_check(oem_id, oem_table_id)) { 45 if (apic != *drv) { 46 apic = *drv; 47 pr_info("Setting APIC routing to %s.\n", 48 apic->name); 49 } 50 return 1; 51 } 52 } 53 return 0; 54 } 55