Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at 33bc227e4e48ddadcf2eacb381c19df338f0a6c8 114 lines 3.4 kB view raw
1#ifndef _ASM_GENAPIC_H 2#define _ASM_GENAPIC_H 1 3 4/* 5 * Generic APIC driver interface. 6 * 7 * An straight forward mapping of the APIC related parts of the 8 * x86 subarchitecture interface to a dynamic object. 9 * 10 * This is used by the "generic" x86 subarchitecture. 11 * 12 * Copyright 2003 Andi Kleen, SuSE Labs. 13 */ 14 15struct mpc_config_translation; 16struct mpc_config_bus; 17struct mp_config_table; 18struct mpc_config_processor; 19 20struct genapic { 21 char *name; 22 int (*probe)(void); 23 24 int (*apic_id_registered)(void); 25 cpumask_t (*target_cpus)(void); 26 int int_delivery_mode; 27 int int_dest_mode; 28 int ESR_DISABLE; 29 int apic_destination_logical; 30 unsigned long (*check_apicid_used)(physid_mask_t bitmap, int apicid); 31 unsigned long (*check_apicid_present)(int apicid); 32 int no_balance_irq; 33 int no_ioapic_check; 34 void (*init_apic_ldr)(void); 35 physid_mask_t (*ioapic_phys_id_map)(physid_mask_t map); 36 37 void (*clustered_apic_check)(void); 38 int (*multi_timer_check)(int apic, int irq); 39 int (*apicid_to_node)(int logical_apicid); 40 int (*cpu_to_logical_apicid)(int cpu); 41 int (*cpu_present_to_apicid)(int mps_cpu); 42 physid_mask_t (*apicid_to_cpu_present)(int phys_apicid); 43 int (*mpc_apic_id)(struct mpc_config_processor *m, 44 struct mpc_config_translation *t); 45 void (*setup_portio_remap)(void); 46 int (*check_phys_apicid_present)(int boot_cpu_physical_apicid); 47 void (*enable_apic_mode)(void); 48 u32 (*phys_pkg_id)(u32 cpuid_apic, int index_msb); 49 50 /* mpparse */ 51 void (*mpc_oem_bus_info)(struct mpc_config_bus *, char *, 52 struct mpc_config_translation *); 53 void (*mpc_oem_pci_bus)(struct mpc_config_bus *, 54 struct mpc_config_translation *); 55 56 /* When one of the next two hooks returns 1 the genapic 57 is switched to this. Essentially they are additional probe 58 functions. */ 59 int (*mps_oem_check)(struct mp_config_table *mpc, char *oem, 60 char *productid); 61 int (*acpi_madt_oem_check)(char *oem_id, char *oem_table_id); 62 63 unsigned (*get_apic_id)(unsigned long x); 64 unsigned long apic_id_mask; 65 unsigned int (*cpu_mask_to_apicid)(cpumask_t cpumask); 66 67 /* ipi */ 68 void (*send_IPI_mask)(cpumask_t mask, int vector); 69 void (*send_IPI_allbutself)(int vector); 70 void (*send_IPI_all)(int vector); 71}; 72 73#define APICFUNC(x) .x = x 74 75#define APIC_INIT(aname, aprobe) { \ 76 .name = aname, \ 77 .probe = aprobe, \ 78 .int_delivery_mode = INT_DELIVERY_MODE, \ 79 .int_dest_mode = INT_DEST_MODE, \ 80 .no_balance_irq = NO_BALANCE_IRQ, \ 81 .ESR_DISABLE = esr_disable, \ 82 .apic_destination_logical = APIC_DEST_LOGICAL, \ 83 APICFUNC(apic_id_registered), \ 84 APICFUNC(target_cpus), \ 85 APICFUNC(check_apicid_used), \ 86 APICFUNC(check_apicid_present), \ 87 APICFUNC(init_apic_ldr), \ 88 APICFUNC(ioapic_phys_id_map), \ 89 APICFUNC(clustered_apic_check), \ 90 APICFUNC(multi_timer_check), \ 91 APICFUNC(apicid_to_node), \ 92 APICFUNC(cpu_to_logical_apicid), \ 93 APICFUNC(cpu_present_to_apicid), \ 94 APICFUNC(apicid_to_cpu_present), \ 95 APICFUNC(mpc_apic_id), \ 96 APICFUNC(setup_portio_remap), \ 97 APICFUNC(check_phys_apicid_present), \ 98 APICFUNC(mpc_oem_bus_info), \ 99 APICFUNC(mpc_oem_pci_bus), \ 100 APICFUNC(mps_oem_check), \ 101 APICFUNC(get_apic_id), \ 102 .apic_id_mask = APIC_ID_MASK, \ 103 APICFUNC(cpu_mask_to_apicid), \ 104 APICFUNC(acpi_madt_oem_check), \ 105 APICFUNC(send_IPI_mask), \ 106 APICFUNC(send_IPI_allbutself), \ 107 APICFUNC(send_IPI_all), \ 108 APICFUNC(enable_apic_mode), \ 109 APICFUNC(phys_pkg_id), \ 110 } 111 112extern struct genapic *genapic; 113 114#endif