/* * APIC driver for the IBM NUMAQ chipset. */ #define APIC_DEFINITION 1 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include static int mps_oem_check(struct mp_config_table *mpc, char *oem, char *productid) { numaq_mps_oem_check(mpc, oem, productid); return found_numaq; } static int probe_numaq(void) { /* already know from get_memcfg_numaq() */ return found_numaq; } /* Hook from generic ACPI tables.c */ static int acpi_madt_oem_check(char *oem_id, char *oem_table_id) { return 0; } static cpumask_t vector_allocation_domain(int cpu) { /* Careful. Some cpus do not strictly honor the set of cpus * specified in the interrupt destination when using lowest * priority interrupt delivery mode. * * In particular there was a hyperthreading cpu observed to * deliver interrupts to the wrong hyperthread when only one * hyperthread was specified in the interrupt desitination. */ cpumask_t domain = { { [0] = APIC_ALL_CPUS, } }; return domain; } struct genapic apic_numaq = APIC_INIT("NUMAQ", probe_numaq);