arch/x86/include/asm/mach-default/mach_ipi.h
changeset 2 d1f6d8b6f81c
parent 0 aa628870c1d3
equal deleted inserted replaced
1:0056487c491e 2:d1f6d8b6f81c
     2 #define _ASM_X86_MACH_DEFAULT_MACH_IPI_H
     2 #define _ASM_X86_MACH_DEFAULT_MACH_IPI_H
     3 
     3 
     4 /* Avoid include hell */
     4 /* Avoid include hell */
     5 #define NMI_VECTOR 0x02
     5 #define NMI_VECTOR 0x02
     6 
     6 
     7 void send_IPI_mask_bitmask(cpumask_t mask, int vector);
     7 void send_IPI_mask_bitmask(const struct cpumask *mask, int vector);
       
     8 void send_IPI_mask_allbutself(const struct cpumask *mask, int vector);
     8 void __send_IPI_shortcut(unsigned int shortcut, int vector);
     9 void __send_IPI_shortcut(unsigned int shortcut, int vector);
     9 
    10 
    10 extern int no_broadcast;
    11 extern int no_broadcast;
    11 
    12 
    12 #ifdef CONFIG_X86_64
    13 #ifdef CONFIG_X86_64
    13 #include <asm/genapic.h>
    14 #include <asm/genapic.h>
    14 #define send_IPI_mask (genapic->send_IPI_mask)
    15 #define send_IPI_mask (genapic->send_IPI_mask)
       
    16 #define send_IPI_mask_allbutself (genapic->send_IPI_mask_allbutself)
    15 #else
    17 #else
    16 static inline void send_IPI_mask(cpumask_t mask, int vector)
    18 static inline void send_IPI_mask(const struct cpumask *mask, int vector)
    17 {
    19 {
    18 	send_IPI_mask_bitmask(mask, vector);
    20 	send_IPI_mask_bitmask(mask, vector);
    19 }
    21 }
       
    22 void send_IPI_mask_allbutself(const struct cpumask *mask, int vector);
    20 #endif
    23 #endif
    21 
    24 
    22 static inline void __local_send_IPI_allbutself(int vector)
    25 static inline void __local_send_IPI_allbutself(int vector)
    23 {
    26 {
    24 	if (no_broadcast || vector == NMI_VECTOR) {
    27 	if (no_broadcast || vector == NMI_VECTOR)
    25 		cpumask_t mask = cpu_online_map;
    28 		send_IPI_mask_allbutself(cpu_online_mask, vector);
    26 
    29 	else
    27 		cpu_clear(smp_processor_id(), mask);
       
    28 		send_IPI_mask(mask, vector);
       
    29 	} else
       
    30 		__send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
    30 		__send_IPI_shortcut(APIC_DEST_ALLBUT, vector);
    31 }
    31 }
    32 
    32 
    33 static inline void __local_send_IPI_all(int vector)
    33 static inline void __local_send_IPI_all(int vector)
    34 {
    34 {
    35 	if (no_broadcast || vector == NMI_VECTOR)
    35 	if (no_broadcast || vector == NMI_VECTOR)
    36 		send_IPI_mask(cpu_online_map, vector);
    36 		send_IPI_mask(cpu_online_mask, vector);
    37 	else
    37 	else
    38 		__send_IPI_shortcut(APIC_DEST_ALLINC, vector);
    38 		__send_IPI_shortcut(APIC_DEST_ALLINC, vector);
    39 }
    39 }
    40 
    40 
    41 #ifdef CONFIG_X86_64
    41 #ifdef CONFIG_X86_64