diff options
Diffstat (limited to 'arch/s390/kernel')
-rw-r--r-- | arch/s390/kernel/setup.c | 4 | ||||
-rw-r--r-- | arch/s390/kernel/smp.c | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 1f5536c2fd02..7c5b05fa2194 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -373,6 +373,10 @@ static void __init setup_lowcore(void) | |||
373 | mem_assign_absolute(S390_lowcore.restart_source, lc->restart_source); | 373 | mem_assign_absolute(S390_lowcore.restart_source, lc->restart_source); |
374 | mem_assign_absolute(S390_lowcore.restart_psw, lc->restart_psw); | 374 | mem_assign_absolute(S390_lowcore.restart_psw, lc->restart_psw); |
375 | 375 | ||
376 | #ifdef CONFIG_SMP | ||
377 | lc->spinlock_lockval = arch_spin_lockval(0); | ||
378 | #endif | ||
379 | |||
376 | set_prefix((u32)(unsigned long) lc); | 380 | set_prefix((u32)(unsigned long) lc); |
377 | lowcore_ptr[0] = lc; | 381 | lowcore_ptr[0] = lc; |
378 | } | 382 | } |
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c index 86e65ec3422b..1f0b474041c4 100644 --- a/arch/s390/kernel/smp.c +++ b/arch/s390/kernel/smp.c | |||
@@ -170,6 +170,7 @@ static int pcpu_alloc_lowcore(struct pcpu *pcpu, int cpu) | |||
170 | lc->panic_stack = pcpu->panic_stack + PAGE_SIZE | 170 | lc->panic_stack = pcpu->panic_stack + PAGE_SIZE |
171 | - STACK_FRAME_OVERHEAD - sizeof(struct pt_regs); | 171 | - STACK_FRAME_OVERHEAD - sizeof(struct pt_regs); |
172 | lc->cpu_nr = cpu; | 172 | lc->cpu_nr = cpu; |
173 | lc->spinlock_lockval = arch_spin_lockval(cpu); | ||
173 | #ifndef CONFIG_64BIT | 174 | #ifndef CONFIG_64BIT |
174 | if (MACHINE_HAS_IEEE) { | 175 | if (MACHINE_HAS_IEEE) { |
175 | lc->extended_save_area_addr = get_zeroed_page(GFP_KERNEL); | 176 | lc->extended_save_area_addr = get_zeroed_page(GFP_KERNEL); |
@@ -226,6 +227,7 @@ static void pcpu_prepare_secondary(struct pcpu *pcpu, int cpu) | |||
226 | cpumask_set_cpu(cpu, mm_cpumask(&init_mm)); | 227 | cpumask_set_cpu(cpu, mm_cpumask(&init_mm)); |
227 | atomic_inc(&init_mm.context.attach_count); | 228 | atomic_inc(&init_mm.context.attach_count); |
228 | lc->cpu_nr = cpu; | 229 | lc->cpu_nr = cpu; |
230 | lc->spinlock_lockval = arch_spin_lockval(cpu); | ||
229 | lc->percpu_offset = __per_cpu_offset[cpu]; | 231 | lc->percpu_offset = __per_cpu_offset[cpu]; |
230 | lc->kernel_asce = S390_lowcore.kernel_asce; | 232 | lc->kernel_asce = S390_lowcore.kernel_asce; |
231 | lc->machine_flags = S390_lowcore.machine_flags; | 233 | lc->machine_flags = S390_lowcore.machine_flags; |
@@ -809,6 +811,7 @@ void __init smp_cpus_done(unsigned int max_cpus) | |||
809 | void __init smp_setup_processor_id(void) | 811 | void __init smp_setup_processor_id(void) |
810 | { | 812 | { |
811 | S390_lowcore.cpu_nr = 0; | 813 | S390_lowcore.cpu_nr = 0; |
814 | S390_lowcore.spinlock_lockval = arch_spin_lockval(0); | ||
812 | } | 815 | } |
813 | 816 | ||
814 | /* | 817 | /* |