| 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 <linux/thread_info.h> | 
| 12 | #include <asm/apic.h> | 
| 13 | |
| 14 | #include "local.h" | 
| 15 | |
| 16 | /* Select the appropriate APIC driver */ | 
| 17 | void __init x86_64_probe_apic(void) | 
| 18 | { | 
| 19 | struct apic **drv; | 
| 20 | |
| 21 | enable_IR_x2apic(); | 
| 22 | |
| 23 | for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) { | 
| 24 | if ((*drv)->probe && (*drv)->probe()) { | 
| 25 | apic_install_driver(driver: *drv); | 
| 26 | break; | 
| 27 | } | 
| 28 | } | 
| 29 | } | 
| 30 | |
| 31 | int __init default_acpi_madt_oem_check(char *oem_id, char *oem_table_id) | 
| 32 | { | 
| 33 | struct apic **drv; | 
| 34 | |
| 35 | for (drv = __apicdrivers; drv < __apicdrivers_end; drv++) { | 
| 36 | if ((*drv)->acpi_madt_oem_check(oem_id, oem_table_id)) { | 
| 37 | apic_install_driver(driver: *drv); | 
| 38 | return 1; | 
| 39 | } | 
| 40 | } | 
| 41 | return 0; | 
| 42 | } | 
| 43 | 
