Lines Matching refs:lc
195 struct lowcore *lc; in pcpu_alloc_lowcore() local
197 lc = (struct lowcore *) __get_free_pages(GFP_KERNEL | GFP_DMA, LC_ORDER); in pcpu_alloc_lowcore()
201 if (!lc || !nodat_stack || !async_stack || !mcck_stack) in pcpu_alloc_lowcore()
203 memcpy(lc, &S390_lowcore, 512); in pcpu_alloc_lowcore()
204 memset((char *) lc + 512, 0, sizeof(*lc) - 512); in pcpu_alloc_lowcore()
205 lc->async_stack = async_stack + STACK_INIT_OFFSET; in pcpu_alloc_lowcore()
206 lc->nodat_stack = nodat_stack + STACK_INIT_OFFSET; in pcpu_alloc_lowcore()
207 lc->mcck_stack = mcck_stack + STACK_INIT_OFFSET; in pcpu_alloc_lowcore()
208 lc->cpu_nr = cpu; in pcpu_alloc_lowcore()
209 lc->spinlock_lockval = arch_spin_lockval(cpu); in pcpu_alloc_lowcore()
210 lc->spinlock_index = 0; in pcpu_alloc_lowcore()
211 lc->br_r1_trampoline = 0x07f1; /* br %r1 */ in pcpu_alloc_lowcore()
212 lc->return_lpswe = gen_lpswe(__LC_RETURN_PSW); in pcpu_alloc_lowcore()
213 lc->return_mcck_lpswe = gen_lpswe(__LC_RETURN_MCCK_PSW); in pcpu_alloc_lowcore()
214 lc->preempt_count = PREEMPT_DISABLED; in pcpu_alloc_lowcore()
215 if (nmi_alloc_per_cpu(lc)) in pcpu_alloc_lowcore()
217 lowcore_ptr[cpu] = lc; in pcpu_alloc_lowcore()
218 pcpu_sigp_retry(pcpu, SIGP_SET_PREFIX, (u32)(unsigned long) lc); in pcpu_alloc_lowcore()
225 free_pages((unsigned long) lc, LC_ORDER); in pcpu_alloc_lowcore()
232 struct lowcore *lc; in pcpu_free_lowcore() local
236 lc = lowcore_ptr[cpu]; in pcpu_free_lowcore()
237 nodat_stack = lc->nodat_stack - STACK_INIT_OFFSET; in pcpu_free_lowcore()
238 async_stack = lc->async_stack - STACK_INIT_OFFSET; in pcpu_free_lowcore()
239 mcck_stack = lc->mcck_stack - STACK_INIT_OFFSET; in pcpu_free_lowcore()
242 nmi_free_per_cpu(lc); in pcpu_free_lowcore()
246 free_pages((unsigned long) lc, LC_ORDER); in pcpu_free_lowcore()
251 struct lowcore *lc = lowcore_ptr[cpu]; in pcpu_prepare_secondary() local
255 lc->cpu_nr = cpu; in pcpu_prepare_secondary()
256 lc->restart_flags = RESTART_FLAG_CTLREGS; in pcpu_prepare_secondary()
257 lc->spinlock_lockval = arch_spin_lockval(cpu); in pcpu_prepare_secondary()
258 lc->spinlock_index = 0; in pcpu_prepare_secondary()
259 lc->percpu_offset = __per_cpu_offset[cpu]; in pcpu_prepare_secondary()
260 lc->kernel_asce = S390_lowcore.kernel_asce; in pcpu_prepare_secondary()
261 lc->user_asce = s390_invalid_asce; in pcpu_prepare_secondary()
262 lc->machine_flags = S390_lowcore.machine_flags; in pcpu_prepare_secondary()
263 lc->user_timer = lc->system_timer = in pcpu_prepare_secondary()
264 lc->steal_timer = lc->avg_steal_timer = 0; in pcpu_prepare_secondary()
265 __ctl_store(lc->cregs_save_area, 0, 15); in pcpu_prepare_secondary()
266 lc->cregs_save_area[1] = lc->kernel_asce; in pcpu_prepare_secondary()
267 lc->cregs_save_area[7] = lc->user_asce; in pcpu_prepare_secondary()
268 save_access_regs((unsigned int *) lc->access_regs_save_area); in pcpu_prepare_secondary()
274 struct lowcore *lc; in pcpu_attach_task() local
278 lc = lowcore_ptr[cpu]; in pcpu_attach_task()
279 lc->kernel_stack = (unsigned long) task_stack_page(tsk) in pcpu_attach_task()
281 lc->current_task = (unsigned long) tsk; in pcpu_attach_task()
282 lc->lpp = LPP_MAGIC; in pcpu_attach_task()
283 lc->current_pid = tsk->pid; in pcpu_attach_task()
284 lc->user_timer = tsk->thread.user_timer; in pcpu_attach_task()
285 lc->guest_timer = tsk->thread.guest_timer; in pcpu_attach_task()
286 lc->system_timer = tsk->thread.system_timer; in pcpu_attach_task()
287 lc->hardirq_timer = tsk->thread.hardirq_timer; in pcpu_attach_task()
288 lc->softirq_timer = tsk->thread.softirq_timer; in pcpu_attach_task()
289 lc->steal_timer = 0; in pcpu_attach_task()
294 struct lowcore *lc; in pcpu_start_fn() local
298 lc = lowcore_ptr[cpu]; in pcpu_start_fn()
299 lc->restart_stack = lc->kernel_stack; in pcpu_start_fn()
300 lc->restart_fn = (unsigned long) func; in pcpu_start_fn()
301 lc->restart_data = (unsigned long) data; in pcpu_start_fn()
302 lc->restart_source = -1U; in pcpu_start_fn()
320 struct lowcore *lc = lowcore_ptr[pcpu - pcpu_devices]; in pcpu_delegate() local
331 mem_assign_absolute(lc->restart_stack, stack); in pcpu_delegate()
332 mem_assign_absolute(lc->restart_fn, (unsigned long) func); in pcpu_delegate()
333 mem_assign_absolute(lc->restart_data, (unsigned long) data); in pcpu_delegate()
334 mem_assign_absolute(lc->restart_source, source_cpu); in pcpu_delegate()
387 struct lowcore *lc = lowcore_ptr[0]; in smp_call_ipl_cpu() local
390 lc = &S390_lowcore; in smp_call_ipl_cpu()
393 lc->nodat_stack); in smp_call_ipl_cpu()
613 struct lowcore *lc; in smp_store_status() local
618 lc = lowcore_ptr[cpu]; in smp_store_status()
619 pa = __pa(&lc->floating_pt_save_area); in smp_store_status()
625 pa = __pa(lc->mcesad & MCESA_ORIGIN_MASK); in smp_store_status()
627 pa |= lc->mcesad & MCESA_LC_MASK; in smp_store_status()
1251 static __always_inline void set_new_lowcore(struct lowcore *lc) in set_new_lowcore() argument
1258 dst.even = (unsigned long) lc; in set_new_lowcore()
1259 dst.odd = sizeof(*lc); in set_new_lowcore()
1260 pfx = (unsigned long) lc; in set_new_lowcore()
1273 struct lowcore *lc, *lc_ipl; in smp_reinit_ipl_cpu() local
1277 lc = (struct lowcore *) __get_free_pages(GFP_KERNEL | GFP_DMA, LC_ORDER); in smp_reinit_ipl_cpu()
1281 if (!lc || !nodat_stack || !async_stack || !mcck_stack) in smp_reinit_ipl_cpu()
1286 set_new_lowcore(lc); in smp_reinit_ipl_cpu()
1290 lowcore_ptr[0] = lc; in smp_reinit_ipl_cpu()