Lines Matching refs:pcpu

78 DEFINE_PER_CPU(struct pcpu, pcpu_devices);
85 static struct pcpu *ipl_pcpu;
135 static int pcpu_sigp_retry(struct pcpu *pcpu, u8 order, u32 parm) in pcpu_sigp_retry() argument
140 cc = __pcpu_sigp(pcpu->address, order, parm, NULL); in pcpu_sigp_retry()
149 static inline int pcpu_stopped(struct pcpu *pcpu) in pcpu_stopped() argument
153 if (__pcpu_sigp(pcpu->address, SIGP_SENSE, in pcpu_stopped()
159 static inline int pcpu_running(struct pcpu *pcpu) in pcpu_running() argument
161 if (__pcpu_sigp(pcpu->address, SIGP_SENSE_RUNNING, in pcpu_running()
171 static struct pcpu *pcpu_find_address(const struct cpumask *mask, u16 address) in pcpu_find_address()
181 static void pcpu_ec_call(struct pcpu *pcpu, int ec_bit) in pcpu_ec_call() argument
185 if (test_and_set_bit(ec_bit, &pcpu->ec_mask)) in pcpu_ec_call()
187 order = pcpu_running(pcpu) ? SIGP_EXTERNAL_CALL : SIGP_EMERGENCY_SIGNAL; in pcpu_ec_call()
188 pcpu->ec_clk = get_tod_clock_fast(); in pcpu_ec_call()
189 pcpu_sigp_retry(pcpu, order, 0); in pcpu_ec_call()
192 static int pcpu_alloc_lowcore(struct pcpu *pcpu, int cpu) in pcpu_alloc_lowcore() argument
219 pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, __pa(lc)); in pcpu_alloc_lowcore()
232 static void pcpu_free_lowcore(struct pcpu *pcpu, int cpu) in pcpu_free_lowcore() argument
241 pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, 0); in pcpu_free_lowcore()
251 static void pcpu_prepare_secondary(struct pcpu *pcpu, int cpu) in pcpu_prepare_secondary() argument
259 lc->pcpu = (unsigned long)pcpu; in pcpu_prepare_secondary()
317 static void pcpu_delegate(struct pcpu *pcpu, int cpu, in pcpu_delegate() argument
327 if (pcpu->address == source_cpu) { in pcpu_delegate()
332 pcpu_sigp_retry(pcpu, SIGP_STOP, 0); in pcpu_delegate()
333 pcpu_sigp_retry(pcpu, SIGP_CPU_RESET, 0); in pcpu_delegate()
353 : : "d" (pcpu->address), "d" (source_cpu), in pcpu_delegate()
444 struct pcpu *pcpu = per_cpu_ptr(&pcpu_devices, cpu); in smp_emergency_stop() local
445 set_bit(ec_stop_cpu, &pcpu->ec_mask); in smp_emergency_stop()
446 while (__pcpu_sigp(pcpu->address, SIGP_EMERGENCY_SIGNAL, in smp_emergency_stop()
468 struct pcpu *pcpu; in smp_send_stop() local
484 pcpu = per_cpu_ptr(&pcpu_devices, cpu); in smp_send_stop()
485 pcpu_sigp_retry(pcpu, SIGP_STOP, 0); in smp_send_stop()
486 while (!pcpu_stopped(pcpu)) in smp_send_stop()
555 struct pcpu *pcpu; in smp_store_status() local
558 pcpu = per_cpu_ptr(&pcpu_devices, cpu); in smp_store_status()
561 if (__pcpu_sigp_relax(pcpu->address, SIGP_STORE_STATUS_AT_ADDRESS, in smp_store_status()
569 if (__pcpu_sigp_relax(pcpu->address, SIGP_STORE_ADDITIONAL_STATUS, in smp_store_status()
722 struct pcpu *pcpu; in smp_add_core() local
734 pcpu = per_cpu_ptr(&pcpu_devices, cpu); in smp_add_core()
735 pcpu->address = address + i; in smp_add_core()
737 pcpu->state = CPU_STATE_CONFIGURED; in smp_add_core()
739 pcpu->state = CPU_STATE_STANDBY; in smp_add_core()
870 struct pcpu *pcpu = per_cpu_ptr(&pcpu_devices, cpu); in __cpu_up() local
873 if (pcpu->state != CPU_STATE_CONFIGURED) in __cpu_up()
875 if (pcpu_sigp_retry(pcpu, SIGP_INITIAL_CPU_RESET, 0) != in __cpu_up()
879 rc = pcpu_alloc_lowcore(pcpu, cpu); in __cpu_up()
887 pcpu_prepare_secondary(pcpu, cpu); in __cpu_up()
931 struct pcpu *pcpu; in __cpu_die() local
934 pcpu = per_cpu_ptr(&pcpu_devices, cpu); in __cpu_die()
935 while (!pcpu_stopped(pcpu)) in __cpu_die()
937 pcpu_free_lowcore(pcpu, cpu); in __cpu_die()
940 pcpu->flags = 0; in __cpu_die()
982 lc->pcpu = (unsigned long)ipl_pcpu; in smp_prepare_boot_cpu()
1023 struct pcpu *pcpu; in cpu_configure_store() local
1040 pcpu = per_cpu_ptr(&pcpu_devices, cpu); in cpu_configure_store()
1044 if (pcpu->state != CPU_STATE_CONFIGURED) in cpu_configure_store()
1046 rc = sclp_core_deconfigure(pcpu->address >> smp_cpu_mt_shift); in cpu_configure_store()
1059 if (pcpu->state != CPU_STATE_STANDBY) in cpu_configure_store()
1061 rc = sclp_core_configure(pcpu->address >> smp_cpu_mt_shift); in cpu_configure_store()