diff options
author | Heiko Carstens <heiko.carstens@de.ibm.com> | 2006-12-04 09:40:30 -0500 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-12-04 09:40:30 -0500 |
commit | 740b5706b9c4b3767f597b3ea76654c6f2a800b2 (patch) | |
tree | 370dc09ec8f3abaecc742003ed9d28eecf636c3b /arch/s390/kernel/ipl.c | |
parent | a1a392f0b4f27604811bf8aa8d7636b3b4bc3803 (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.c | 10 |
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); |