Browse Source

[PATCH] s390: check for interrupt before waiting

The patch that introduced waiting for interrupts after resetting the reader
can cause the boot to fail because the system is waiting for an interrupt that
will never arrive.  Add code to check if an interrupt is supposed to arrive
before waiting endlessly.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Heiko Carstens 20 years ago
parent
commit
350e3ade9e
2 changed files with 14 additions and 0 deletions
  1. 7 0
      arch/s390/kernel/head.S
  2. 7 0
      arch/s390/kernel/head64.S

+ 7 - 0
arch/s390/kernel/head.S

@@ -346,6 +346,13 @@ iplstart:
         la    %r2,.Lreset              
         la    %r2,.Lreset              
         lhi   %r3,26
         lhi   %r3,26
 	diag  %r2,%r3,8
 	diag  %r2,%r3,8
+	la    %r5,.Lirb
+	stsch 0(%r5)			       # check if irq is pending
+	tm    30(%r5),0x0f		       # by verifying if any of the
+	bnz   .Lwaitforirq		       # activity or status control
+	tm    31(%r5),0xff		       # bits is set in the schib
+	bz    .Lnoreset
+.Lwaitforirq:
 	mvc   0x78(8),.Lrdrnewpsw              # set up IO interrupt psw
 	mvc   0x78(8),.Lrdrnewpsw              # set up IO interrupt psw
 .Lwaitrdrirq:
 .Lwaitrdrirq:
 	lpsw  .Lrdrwaitpsw
 	lpsw  .Lrdrwaitpsw

+ 7 - 0
arch/s390/kernel/head64.S

@@ -345,6 +345,13 @@ iplstart:
         la    %r2,.Lreset              
         la    %r2,.Lreset              
         lhi   %r3,26
         lhi   %r3,26
 	diag  %r2,%r3,8
 	diag  %r2,%r3,8
+	la    %r5,.Lirb
+	stsch 0(%r5)			       # check if irq is pending
+	tm    30(%r5),0x0f		       # by verifying if any of the
+	bnz   .Lwaitforirq		       # activity or status control
+	tm    31(%r5),0xff		       # bits is set in the schib
+	bz    .Lnoreset
+.Lwaitforirq:
 	mvc   0x78(8),.Lrdrnewpsw	       # set up IO interrupt psw
 	mvc   0x78(8),.Lrdrnewpsw	       # set up IO interrupt psw
 .Lwaitrdrirq:
 .Lwaitrdrirq:
 	lpsw  .Lrdrwaitpsw
 	lpsw  .Lrdrwaitpsw