Skip to content

Commit

Permalink
[S390] Fix reboot hang
Browse files Browse the repository at this point in the history
We use printks after shutting down all other cpus. This is not allowed
and can lead to deadlocks. Therefore the printks have to be removed.

Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
  • Loading branch information
Michael Holzheu authored and Martin Schwidefsky committed Dec 15, 2006
1 parent a45e141 commit 58be944
Showing 1 changed file with 1 addition and 44 deletions.
45 changes: 1 addition & 44 deletions arch/s390/kernel/ipl.c
Original file line number Diff line number Diff line change
Expand Up @@ -609,42 +609,12 @@ static ssize_t on_panic_store(struct subsystem *subsys, const char *buf,
static struct subsys_attribute on_panic_attr =
__ATTR(on_panic, 0644, on_panic_show, on_panic_store);

static void print_fcp_block(struct ipl_parameter_block *fcp_block)
{
printk(KERN_EMERG "wwpn: %016llx\n",
(unsigned long long)fcp_block->ipl_info.fcp.wwpn);
printk(KERN_EMERG "lun: %016llx\n",
(unsigned long long)fcp_block->ipl_info.fcp.lun);
printk(KERN_EMERG "bootprog: %lld\n",
(unsigned long long)fcp_block->ipl_info.fcp.bootprog);
printk(KERN_EMERG "br_lba: %lld\n",
(unsigned long long)fcp_block->ipl_info.fcp.br_lba);
printk(KERN_EMERG "device: %llx\n",
(unsigned long long)fcp_block->ipl_info.fcp.devno);
printk(KERN_EMERG "opt: %x\n", fcp_block->ipl_info.fcp.opt);
}

void do_reipl(void)
{
struct ccw_dev_id devid;
static char buf[100];
char loadparm[LOADPARM_LEN + 1];

switch (reipl_type) {
case IPL_TYPE_CCW:
reipl_get_ascii_loadparm(loadparm);
printk(KERN_EMERG "reboot on ccw device: 0.0.%04x\n",
reipl_block_ccw->ipl_info.ccw.devno);
printk(KERN_EMERG "loadparm = '%s'\n", loadparm);
break;
case IPL_TYPE_FCP:
printk(KERN_EMERG "reboot on fcp device:\n");
print_fcp_block(reipl_block_fcp);
break;
default:
break;
}

switch (reipl_method) {
case IPL_METHOD_CCW_CIO:
devid.devno = reipl_block_ccw->ipl_info.ccw.devno;
Expand All @@ -654,6 +624,7 @@ void do_reipl(void)
reipl_ccw_dev(&devid);
break;
case IPL_METHOD_CCW_VM:
reipl_get_ascii_loadparm(loadparm);
if (strlen(loadparm) == 0)
sprintf(buf, "IPL %X",
reipl_block_ccw->ipl_info.ccw.devno);
Expand Down Expand Up @@ -683,7 +654,6 @@ void do_reipl(void)
diag308(DIAG308_IPL, NULL);
break;
}
printk(KERN_EMERG "reboot failed!\n");
signal_processor(smp_processor_id(), sigp_stop_and_store_status);
}

Expand All @@ -692,19 +662,6 @@ static void do_dump(void)
struct ccw_dev_id devid;
static char buf[100];

switch (dump_type) {
case IPL_TYPE_CCW:
printk(KERN_EMERG "Automatic dump on ccw device: 0.0.%04x\n",
dump_block_ccw->ipl_info.ccw.devno);
break;
case IPL_TYPE_FCP:
printk(KERN_EMERG "Automatic dump on fcp device:\n");
print_fcp_block(dump_block_fcp);
break;
default:
return;
}

switch (dump_method) {
case IPL_METHOD_CCW_CIO:
smp_send_stop();
Expand Down

0 comments on commit 58be944

Please sign in to comment.