[S390] cpu shutdown rework
Let one master cpu kill all other cpus instead of sending an external interrupt to all other cpus so they can kill themselves. Simplifies reipl/shutdown functions a lot. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
committed by
Martin Schwidefsky
parent
740b5706b9
commit
c6b5b847a7
@@ -576,23 +576,6 @@ static struct subsys_attribute dump_type_attr =
|
||||
|
||||
static decl_subsys(dump, NULL, NULL);
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static void dump_smp_stop_all(void)
|
||||
{
|
||||
int cpu;
|
||||
preempt_disable();
|
||||
for_each_online_cpu(cpu) {
|
||||
if (cpu == smp_processor_id())
|
||||
continue;
|
||||
while (signal_processor(cpu, sigp_stop) == sigp_busy)
|
||||
udelay(10);
|
||||
}
|
||||
preempt_enable();
|
||||
}
|
||||
#else
|
||||
#define dump_smp_stop_all() do { } while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Shutdown actions section
|
||||
*/
|
||||
@@ -724,13 +707,13 @@ static void do_dump(void)
|
||||
|
||||
switch (dump_method) {
|
||||
case IPL_METHOD_CCW_CIO:
|
||||
dump_smp_stop_all();
|
||||
smp_send_stop();
|
||||
devid.devno = dump_block_ccw->ipl_info.ccw.devno;
|
||||
devid.ssid = 0;
|
||||
reipl_ccw_dev(&devid);
|
||||
break;
|
||||
case IPL_METHOD_CCW_VM:
|
||||
dump_smp_stop_all();
|
||||
smp_send_stop();
|
||||
sprintf(buf, "STORE STATUS");
|
||||
__cpcmd(buf, NULL, 0, NULL);
|
||||
sprintf(buf, "IPL %X", dump_block_ccw->ipl_info.ccw.devno);
|
||||
@@ -1059,9 +1042,6 @@ void s390_reset_system(void)
|
||||
{
|
||||
struct _lowcore *lc;
|
||||
|
||||
/* Disable all interrupts/machine checks */
|
||||
__load_psw_mask(PSW_KERNEL_BITS & ~PSW_MASK_MCHECK);
|
||||
|
||||
/* Stack for interrupt/machine check handler */
|
||||
lc = (struct _lowcore *)(unsigned long) store_prefix();
|
||||
lc->panic_stack = S390_lowcore.panic_stack;
|
||||
|
Reference in New Issue
Block a user