aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/smp.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390/kernel/smp.c')
-rw-r--r--arch/s390/kernel/smp.c19
1 files changed, 3 insertions, 16 deletions
diff --git a/arch/s390/kernel/smp.c b/arch/s390/kernel/smp.c
index 76a6fdd46c45..384a6846a65e 100644
--- a/arch/s390/kernel/smp.c
+++ b/arch/s390/kernel/smp.c
@@ -248,15 +248,6 @@ EXPORT_SYMBOL(smp_ctl_clear_bit);
248 248
249#ifdef CONFIG_ZFCPDUMP 249#ifdef CONFIG_ZFCPDUMP
250 250
251/*
252 * zfcpdump_prefix_array holds prefix registers for the following scenario:
253 * 64 bit zfcpdump kernel and 31 bit kernel which is to be dumped. We have to
254 * save its prefix registers, since they get lost, when switching from 31 bit
255 * to 64 bit.
256 */
257unsigned int zfcpdump_prefix_array[NR_CPUS + 1] \
258 __attribute__((__section__(".data")));
259
260static void __init smp_get_save_area(unsigned int cpu, unsigned int phy_cpu) 251static void __init smp_get_save_area(unsigned int cpu, unsigned int phy_cpu)
261{ 252{
262 if (ipl_info.type != IPL_TYPE_FCP_DUMP) 253 if (ipl_info.type != IPL_TYPE_FCP_DUMP)
@@ -266,21 +257,17 @@ static void __init smp_get_save_area(unsigned int cpu, unsigned int phy_cpu)
266 "the dump\n", cpu, NR_CPUS - 1); 257 "the dump\n", cpu, NR_CPUS - 1);
267 return; 258 return;
268 } 259 }
269 zfcpdump_save_areas[cpu] = kmalloc(sizeof(union save_area), GFP_KERNEL); 260 zfcpdump_save_areas[cpu] = kmalloc(sizeof(struct save_area), GFP_KERNEL);
270 __cpu_logical_map[CPU_INIT_NO] = (__u16) phy_cpu; 261 __cpu_logical_map[CPU_INIT_NO] = (__u16) phy_cpu;
271 while (signal_processor(CPU_INIT_NO, sigp_stop_and_store_status) == 262 while (signal_processor(CPU_INIT_NO, sigp_stop_and_store_status) ==
272 sigp_busy) 263 sigp_busy)
273 cpu_relax(); 264 cpu_relax();
274 memcpy(zfcpdump_save_areas[cpu], 265 memcpy(zfcpdump_save_areas[cpu],
275 (void *)(unsigned long) store_prefix() + SAVE_AREA_BASE, 266 (void *)(unsigned long) store_prefix() + SAVE_AREA_BASE,
276 SAVE_AREA_SIZE); 267 sizeof(struct save_area));
277#ifdef CONFIG_64BIT
278 /* copy original prefix register */
279 zfcpdump_save_areas[cpu]->s390x.pref_reg = zfcpdump_prefix_array[cpu];
280#endif
281} 268}
282 269
283union save_area *zfcpdump_save_areas[NR_CPUS + 1]; 270struct save_area *zfcpdump_save_areas[NR_CPUS + 1];
284EXPORT_SYMBOL_GPL(zfcpdump_save_areas); 271EXPORT_SYMBOL_GPL(zfcpdump_save_areas);
285 272
286#else 273#else