blob: cfec3494a967f8368e368ae63a4b715c4ac8d700 [file] [log] [blame]
Paolo Ciarrocchi651bbe12008-02-20 00:02:58 +01001/*
Simon Arlott27b46d72007-10-20 01:13:56 +02002 * Default generic APIC driver. This handles up to 8 CPUs.
Linus Torvalds1da177e2005-04-16 15:20:36 -07003 */
4#define APIC_DEFINITION 1
Linus Torvalds1da177e2005-04-16 15:20:36 -07005#include <linux/threads.h>
6#include <linux/cpumask.h>
7#include <asm/mpspec.h>
8#include <asm/mach-default/mach_apicdef.h>
9#include <asm/genapic.h>
10#include <asm/fixmap.h>
11#include <asm/apicdef.h>
12#include <linux/kernel.h>
13#include <linux/string.h>
14#include <linux/smp.h>
15#include <linux/init.h>
16#include <asm/mach-default/mach_apic.h>
17#include <asm/mach-default/mach_ipi.h>
18#include <asm/mach-default/mach_mpparse.h>
Yinghai Lu569712b2008-11-16 03:12:49 -080019#include <asm/mach-default/mach_wakecpu.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070020
21/* should be called last. */
Vivek Goyale96763d2007-01-11 01:52:44 +010022static int probe_default(void)
Paolo Ciarrocchi651bbe12008-02-20 00:02:58 +010023{
Linus Torvalds1da177e2005-04-16 15:20:36 -070024 return 1;
Paolo Ciarrocchi651bbe12008-02-20 00:02:58 +010025}
Linus Torvalds1da177e2005-04-16 15:20:36 -070026
Ingo Molnar0a7e8c62009-01-28 03:32:03 +010027struct genapic apic_default = {
28
29 .name = "default",
30 .probe = probe_default,
Ingo Molnar306db032009-01-28 03:43:47 +010031 .acpi_madt_oem_check = NULL,
Ingo Molnar0a7e8c62009-01-28 03:32:03 +010032 .apic_id_registered = apic_id_registered,
33
34 .int_delivery_mode = INT_DELIVERY_MODE,
35 .int_dest_mode = INT_DEST_MODE,
36
37 .target_cpus = target_cpus,
38 .ESR_DISABLE = esr_disable,
39 .apic_destination_logical = APIC_DEST_LOGICAL,
40 .check_apicid_used = check_apicid_used,
41 .check_apicid_present = check_apicid_present,
42
43 .no_balance_irq = NO_BALANCE_IRQ,
44 .no_ioapic_check = 0,
45
46 .vector_allocation_domain = vector_allocation_domain,
47 .init_apic_ldr = init_apic_ldr,
48
49 .ioapic_phys_id_map = ioapic_phys_id_map,
50 .setup_apic_routing = setup_apic_routing,
51 .multi_timer_check = multi_timer_check,
52 .apicid_to_node = apicid_to_node,
53 .cpu_to_logical_apicid = cpu_to_logical_apicid,
54 .cpu_present_to_apicid = cpu_present_to_apicid,
55 .apicid_to_cpu_present = apicid_to_cpu_present,
56 .setup_portio_remap = setup_portio_remap,
57 .check_phys_apicid_present = check_phys_apicid_present,
58 .enable_apic_mode = enable_apic_mode,
59 .phys_pkg_id = phys_pkg_id,
60 .mps_oem_check = mps_oem_check,
61
62 .get_apic_id = get_apic_id,
63 .set_apic_id = NULL,
64 .apic_id_mask = APIC_ID_MASK,
65
66 .cpu_mask_to_apicid = cpu_mask_to_apicid,
67 .cpu_mask_to_apicid_and = cpu_mask_to_apicid_and,
68
69 .send_IPI_mask = send_IPI_mask,
70 .send_IPI_mask_allbutself = NULL,
71 .send_IPI_allbutself = send_IPI_allbutself,
72 .send_IPI_all = send_IPI_all,
73 .send_IPI_self = NULL,
74
75 .wakeup_cpu = NULL,
76 .trampoline_phys_low = TRAMPOLINE_PHYS_LOW,
77 .trampoline_phys_high = TRAMPOLINE_PHYS_HIGH,
78 .wait_for_init_deassert = wait_for_init_deassert,
79 .smp_callin_clear_local_apic = smp_callin_clear_local_apic,
80 .store_NMI_vector = store_NMI_vector,
81 .restore_NMI_vector = restore_NMI_vector,
82 .inquire_remote_apic = inquire_remote_apic,
83};