root/arch/s390/include/asm/smp.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. smp_stop_cpu
  2. smp_get_base_cpu

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /*
   3  *    Copyright IBM Corp. 1999, 2012
   4  *    Author(s): Denis Joseph Barrow,
   5  *               Martin Schwidefsky <schwidefsky@de.ibm.com>,
   6  *               Heiko Carstens <heiko.carstens@de.ibm.com>,
   7  */
   8 #ifndef __ASM_SMP_H
   9 #define __ASM_SMP_H
  10 
  11 #include <asm/sigp.h>
  12 #include <asm/lowcore.h>
  13 
  14 #define raw_smp_processor_id()  (S390_lowcore.cpu_nr)
  15 
  16 extern struct mutex smp_cpu_state_mutex;
  17 extern unsigned int smp_cpu_mt_shift;
  18 extern unsigned int smp_cpu_mtid;
  19 extern __vector128 __initdata boot_cpu_vector_save_area[__NUM_VXRS];
  20 
  21 extern int __cpu_up(unsigned int cpu, struct task_struct *tidle);
  22 
  23 extern void arch_send_call_function_single_ipi(int cpu);
  24 extern void arch_send_call_function_ipi_mask(const struct cpumask *mask);
  25 
  26 extern void smp_call_online_cpu(void (*func)(void *), void *);
  27 extern void smp_call_ipl_cpu(void (*func)(void *), void *);
  28 extern void smp_emergency_stop(void);
  29 
  30 extern int smp_find_processor_id(u16 address);
  31 extern int smp_store_status(int cpu);
  32 extern void smp_save_dump_cpus(void);
  33 extern int smp_vcpu_scheduled(int cpu);
  34 extern void smp_yield_cpu(int cpu);
  35 extern void smp_cpu_set_polarization(int cpu, int val);
  36 extern int smp_cpu_get_polarization(int cpu);
  37 extern void smp_fill_possible_mask(void);
  38 extern void smp_detect_cpus(void);
  39 
  40 static inline void smp_stop_cpu(void)
  41 {
  42         u16 pcpu = stap();
  43 
  44         for (;;) {
  45                 __pcpu_sigp(pcpu, SIGP_STOP, 0, NULL);
  46                 cpu_relax();
  47         }
  48 }
  49 
  50 /* Return thread 0 CPU number as base CPU */
  51 static inline int smp_get_base_cpu(int cpu)
  52 {
  53         return cpu - (cpu % (smp_cpu_mtid + 1));
  54 }
  55 
  56 extern int smp_rescan_cpus(void);
  57 extern void __noreturn cpu_die(void);
  58 extern void __cpu_die(unsigned int cpu);
  59 extern int __cpu_disable(void);
  60 
  61 #endif /* __ASM_SMP_H */

/* [<][>][^][v][top][bottom][index][help] */