1 /* 2 * APIC driver for the IBM "Summit" chipset. 3 */ 4 #define APIC_DEFINITION 1 5 #include <linux/threads.h> 6 #include <linux/cpumask.h> 7 #include <asm/mpspec.h> 8 #include <asm/genapic.h> 9 #include <asm/fixmap.h> 10 #include <asm/apicdef.h> 11 #include <linux/kernel.h> 12 #include <linux/string.h> 13 #include <linux/init.h> 14 #include <asm/summit/apicdef.h> 15 #include <linux/smp.h> 16 #include <asm/summit/apic.h> 17 #include <asm/summit/ipi.h> 18 #include <asm/summit/mpparse.h> 19 #include <asm/mach-default/mach_wakecpu.h> 20 probe_summit(void)21static int probe_summit(void) 22 { 23 /* probed later in mptable/ACPI hooks */ 24 return 0; 25 } 26 vector_allocation_domain(int cpu,cpumask_t * retmask)27static void vector_allocation_domain(int cpu, cpumask_t *retmask) 28 { 29 /* Careful. Some cpus do not strictly honor the set of cpus 30 * specified in the interrupt destination when using lowest 31 * priority interrupt delivery mode. 32 * 33 * In particular there was a hyperthreading cpu observed to 34 * deliver interrupts to the wrong hyperthread when only one 35 * hyperthread was specified in the interrupt desitination. 36 */ 37 *retmask = (cpumask_t){ { [0] = APIC_ALL_CPUS, } }; 38 } 39 40 struct genapic apic_summit = APIC_INIT("summit", probe_summit); 41