Lines Matching full:lc

187 	struct lowcore *lc;  in pcpu_alloc_lowcore()  local
189 lc = (struct lowcore *) __get_free_pages(GFP_KERNEL | GFP_DMA, LC_ORDER); in pcpu_alloc_lowcore()
193 if (!lc || !nodat_stack || !async_stack || !mcck_stack) in pcpu_alloc_lowcore()
195 memcpy(lc, get_lowcore(), 512); in pcpu_alloc_lowcore()
196 memset((char *) lc + 512, 0, sizeof(*lc) - 512); in pcpu_alloc_lowcore()
197 lc->async_stack = async_stack + STACK_INIT_OFFSET; in pcpu_alloc_lowcore()
198 lc->nodat_stack = nodat_stack + STACK_INIT_OFFSET; in pcpu_alloc_lowcore()
199 lc->mcck_stack = mcck_stack + STACK_INIT_OFFSET; in pcpu_alloc_lowcore()
200 lc->cpu_nr = cpu; in pcpu_alloc_lowcore()
201 lc->spinlock_lockval = arch_spin_lockval(cpu); in pcpu_alloc_lowcore()
202 lc->spinlock_index = 0; in pcpu_alloc_lowcore()
203 lc->return_lpswe = gen_lpswe(__LC_RETURN_PSW); in pcpu_alloc_lowcore()
204 lc->return_mcck_lpswe = gen_lpswe(__LC_RETURN_MCCK_PSW); in pcpu_alloc_lowcore()
205 lc->preempt_count = PREEMPT_DISABLED; in pcpu_alloc_lowcore()
206 if (nmi_alloc_mcesa(&lc->mcesad)) in pcpu_alloc_lowcore()
208 if (abs_lowcore_map(cpu, lc, true)) in pcpu_alloc_lowcore()
210 lowcore_ptr[cpu] = lc; in pcpu_alloc_lowcore()
211 pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, __pa(lc)); in pcpu_alloc_lowcore()
215 nmi_free_mcesa(&lc->mcesad); in pcpu_alloc_lowcore()
220 free_pages((unsigned long) lc, LC_ORDER); in pcpu_alloc_lowcore()
227 struct lowcore *lc; in pcpu_free_lowcore() local
229 lc = lowcore_ptr[cpu]; in pcpu_free_lowcore()
230 nodat_stack = lc->nodat_stack - STACK_INIT_OFFSET; in pcpu_free_lowcore()
231 async_stack = lc->async_stack - STACK_INIT_OFFSET; in pcpu_free_lowcore()
232 mcck_stack = lc->mcck_stack - STACK_INIT_OFFSET; in pcpu_free_lowcore()
236 nmi_free_mcesa(&lc->mcesad); in pcpu_free_lowcore()
240 free_pages((unsigned long) lc, LC_ORDER); in pcpu_free_lowcore()
245 struct lowcore *lc, *abs_lc; in pcpu_prepare_secondary() local
247 lc = lowcore_ptr[cpu]; in pcpu_prepare_secondary()
250 lc->cpu_nr = cpu; in pcpu_prepare_secondary()
251 lc->pcpu = (unsigned long)pcpu; in pcpu_prepare_secondary()
252 lc->restart_flags = RESTART_FLAG_CTLREGS; in pcpu_prepare_secondary()
253 lc->spinlock_lockval = arch_spin_lockval(cpu); in pcpu_prepare_secondary()
254 lc->spinlock_index = 0; in pcpu_prepare_secondary()
255 lc->percpu_offset = __per_cpu_offset[cpu]; in pcpu_prepare_secondary()
256 lc->kernel_asce = get_lowcore()->kernel_asce; in pcpu_prepare_secondary()
257 lc->user_asce = s390_invalid_asce; in pcpu_prepare_secondary()
258 lc->user_timer = lc->system_timer = in pcpu_prepare_secondary()
259 lc->steal_timer = lc->avg_steal_timer = 0; in pcpu_prepare_secondary()
261 memcpy(lc->cregs_save_area, abs_lc->cregs_save_area, sizeof(lc->cregs_save_area)); in pcpu_prepare_secondary()
263 lc->cregs_save_area[1] = lc->user_asce; in pcpu_prepare_secondary()
264 lc->cregs_save_area[7] = lc->user_asce; in pcpu_prepare_secondary()
265 save_access_regs((unsigned int *) lc->access_regs_save_area); in pcpu_prepare_secondary()
271 struct lowcore *lc; in pcpu_attach_task() local
273 lc = lowcore_ptr[cpu]; in pcpu_attach_task()
274 lc->kernel_stack = (unsigned long)task_stack_page(tsk) + STACK_INIT_OFFSET; in pcpu_attach_task()
275 lc->current_task = (unsigned long)tsk; in pcpu_attach_task()
276 lc->lpp = LPP_MAGIC; in pcpu_attach_task()
277 lc->current_pid = tsk->pid; in pcpu_attach_task()
278 lc->user_timer = tsk->thread.user_timer; in pcpu_attach_task()
279 lc->guest_timer = tsk->thread.guest_timer; in pcpu_attach_task()
280 lc->system_timer = tsk->thread.system_timer; in pcpu_attach_task()
281 lc->hardirq_timer = tsk->thread.hardirq_timer; in pcpu_attach_task()
282 lc->softirq_timer = tsk->thread.softirq_timer; in pcpu_attach_task()
283 lc->steal_timer = 0; in pcpu_attach_task()
288 struct lowcore *lc; in pcpu_start_fn() local
290 lc = lowcore_ptr[cpu]; in pcpu_start_fn()
291 lc->restart_stack = lc->kernel_stack; in pcpu_start_fn()
292 lc->restart_fn = (unsigned long) func; in pcpu_start_fn()
293 lc->restart_data = (unsigned long) data; in pcpu_start_fn()
294 lc->restart_source = -1U; in pcpu_start_fn()
312 struct lowcore *lc, *abs_lc; in pcpu_delegate() local
315 lc = lowcore_ptr[cpu]; in pcpu_delegate()
326 if (lc) { in pcpu_delegate()
327 lc->restart_stack = stack; in pcpu_delegate()
328 lc->restart_fn = (unsigned long)func; in pcpu_delegate()
329 lc->restart_data = (unsigned long)data; in pcpu_delegate()
330 lc->restart_source = source_cpu; in pcpu_delegate()
375 struct lowcore *lc = lowcore_ptr[0]; in smp_call_ipl_cpu() local
378 lc = get_lowcore(); in smp_call_ipl_cpu()
380 pcpu_delegate(ipl_pcpu, 0, func, data, lc->nodat_stack); in smp_call_ipl_cpu()
545 struct lowcore *lc; in smp_store_status() local
550 lc = lowcore_ptr[cpu]; in smp_store_status()
551 pa = __pa(&lc->floating_pt_save_area); in smp_store_status()
557 pa = lc->mcesad & MCESA_ORIGIN_MASK; in smp_store_status()
559 pa |= lc->mcesad & MCESA_LC_MASK; in smp_store_status()
823 struct lowcore *lc = get_lowcore(); in smp_start_secondary() local
826 lc->last_update_clock = get_tod_clock(); in smp_start_secondary()
827 lc->restart_stack = (unsigned long)restart_stack; in smp_start_secondary()
828 lc->restart_fn = (unsigned long)do_restart; in smp_start_secondary()
829 lc->restart_data = 0; in smp_start_secondary()
830 lc->restart_source = -1U; in smp_start_secondary()
831 lc->restart_flags = 0; in smp_start_secondary()
832 restore_access_regs(lc->access_regs_save_area); in smp_start_secondary()
961 struct lowcore *lc = get_lowcore(); in smp_prepare_boot_cpu() local
964 lc->percpu_offset = __per_cpu_offset[0]; in smp_prepare_boot_cpu()
967 lc->pcpu = (unsigned long)ipl_pcpu; in smp_prepare_boot_cpu()
974 struct lowcore *lc = get_lowcore(); in smp_setup_processor_id() local
976 lc->cpu_nr = 0; in smp_setup_processor_id()
978 lc->spinlock_lockval = arch_spin_lockval(0); in smp_setup_processor_id()
979 lc->spinlock_index = 0; in smp_setup_processor_id()