aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/ipl.c
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2006-12-04 09:40:30 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2006-12-04 09:40:30 -0500
commit740b5706b9c4b3767f597b3ea76654c6f2a800b2 (patch)
tree370dc09ec8f3abaecc742003ed9d28eecf636c3b /arch/s390/kernel/ipl.c
parenta1a392f0b4f27604811bf8aa8d7636b3b4bc3803 (diff)
[S390] cpcmd <-> __cpcmd calling issues
In case of reipl cpcmd gets called when all other cpus are not running anymore. To prevent deadlocks change __cpcmd so that it doesn't take any locks and call cpcmd or __cpcmd, whatever is correct in the current context. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/ipl.c')
-rw-r--r--arch/s390/kernel/ipl.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/s390/kernel/ipl.c b/arch/s390/kernel/ipl.c
index 77f4aff630fe..101b003cfabf 100644
--- a/arch/s390/kernel/ipl.c
+++ b/arch/s390/kernel/ipl.c
@@ -677,7 +677,7 @@ void do_reipl(void)
677 else 677 else
678 sprintf(buf, "IPL %X LOADPARM '%s'", 678 sprintf(buf, "IPL %X LOADPARM '%s'",
679 reipl_block_ccw->ipl_info.ccw.devno, loadparm); 679 reipl_block_ccw->ipl_info.ccw.devno, loadparm);
680 cpcmd(buf, NULL, 0, NULL); 680 __cpcmd(buf, NULL, 0, NULL);
681 break; 681 break;
682 case IPL_METHOD_CCW_DIAG: 682 case IPL_METHOD_CCW_DIAG:
683 diag308(DIAG308_SET, reipl_block_ccw); 683 diag308(DIAG308_SET, reipl_block_ccw);
@@ -691,12 +691,12 @@ void do_reipl(void)
691 diag308(DIAG308_IPL, NULL); 691 diag308(DIAG308_IPL, NULL);
692 break; 692 break;
693 case IPL_METHOD_FCP_RO_VM: 693 case IPL_METHOD_FCP_RO_VM:
694 cpcmd("IPL", NULL, 0, NULL); 694 __cpcmd("IPL", NULL, 0, NULL);
695 break; 695 break;
696 case IPL_METHOD_NONE: 696 case IPL_METHOD_NONE:
697 default: 697 default:
698 if (MACHINE_IS_VM) 698 if (MACHINE_IS_VM)
699 cpcmd("IPL", NULL, 0, NULL); 699 __cpcmd("IPL", NULL, 0, NULL);
700 diag308(DIAG308_IPL, NULL); 700 diag308(DIAG308_IPL, NULL);
701 break; 701 break;
702 } 702 }
@@ -732,9 +732,9 @@ static void do_dump(void)
732 case IPL_METHOD_CCW_VM: 732 case IPL_METHOD_CCW_VM:
733 dump_smp_stop_all(); 733 dump_smp_stop_all();
734 sprintf(buf, "STORE STATUS"); 734 sprintf(buf, "STORE STATUS");
735 cpcmd(buf, NULL, 0, NULL); 735 __cpcmd(buf, NULL, 0, NULL);
736 sprintf(buf, "IPL %X", dump_block_ccw->ipl_info.ccw.devno); 736 sprintf(buf, "IPL %X", dump_block_ccw->ipl_info.ccw.devno);
737 cpcmd(buf, NULL, 0, NULL); 737 __cpcmd(buf, NULL, 0, NULL);
738 break; 738 break;
739 case IPL_METHOD_CCW_DIAG: 739 case IPL_METHOD_CCW_DIAG:
740 diag308(DIAG308_SET, dump_block_ccw); 740 diag308(DIAG308_SET, dump_block_ccw);