aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/kernel/compat_ioctl.c6
-rw-r--r--arch/s390/kernel/head.S27
-rw-r--r--arch/s390/kernel/head64.S25
-rw-r--r--arch/s390/kernel/traps.c5
-rw-r--r--arch/s390/mm/cmm.c2
5 files changed, 46 insertions, 19 deletions
diff --git a/arch/s390/kernel/compat_ioctl.c b/arch/s390/kernel/compat_ioctl.c
index 03d03c6d3c..24a1e9f069 100644
--- a/arch/s390/kernel/compat_ioctl.c
+++ b/arch/s390/kernel/compat_ioctl.c
@@ -42,7 +42,6 @@ struct ioctl_trans ioctl_start[] = {
42#include "../../../fs/compat_ioctl.c" 42#include "../../../fs/compat_ioctl.c"
43 43
44/* s390 only ioctls */ 44/* s390 only ioctls */
45#if defined(CONFIG_DASD) || defined(CONFIG_DASD_MODULE)
46COMPATIBLE_IOCTL(DASDAPIVER) 45COMPATIBLE_IOCTL(DASDAPIVER)
47COMPATIBLE_IOCTL(BIODASDDISABLE) 46COMPATIBLE_IOCTL(BIODASDDISABLE)
48COMPATIBLE_IOCTL(BIODASDENABLE) 47COMPATIBLE_IOCTL(BIODASDENABLE)
@@ -59,16 +58,11 @@ COMPATIBLE_IOCTL(BIODASDPRRD)
59COMPATIBLE_IOCTL(BIODASDPSRD) 58COMPATIBLE_IOCTL(BIODASDPSRD)
60COMPATIBLE_IOCTL(BIODASDGATTR) 59COMPATIBLE_IOCTL(BIODASDGATTR)
61COMPATIBLE_IOCTL(BIODASDSATTR) 60COMPATIBLE_IOCTL(BIODASDSATTR)
62#if defined(CONFIG_DASD_CMB) || defined(CONFIG_DASD_CMB_MODULE)
63COMPATIBLE_IOCTL(BIODASDCMFENABLE) 61COMPATIBLE_IOCTL(BIODASDCMFENABLE)
64COMPATIBLE_IOCTL(BIODASDCMFDISABLE) 62COMPATIBLE_IOCTL(BIODASDCMFDISABLE)
65COMPATIBLE_IOCTL(BIODASDREADALLCMB) 63COMPATIBLE_IOCTL(BIODASDREADALLCMB)
66#endif
67#endif
68 64
69#if defined(CONFIG_S390_TAPE) || defined(CONFIG_S390_TAPE_MODULE)
70COMPATIBLE_IOCTL(TAPE390_DISPLAY) 65COMPATIBLE_IOCTL(TAPE390_DISPLAY)
71#endif
72 66
73/* s390 doesn't need handlers here */ 67/* s390 doesn't need handlers here */
74COMPATIBLE_IOCTL(TIOCGSERIAL) 68COMPATIBLE_IOCTL(TIOCGSERIAL)
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index b804c55bd9..fc8bf5e285 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -345,10 +345,25 @@ iplstart:
345 bno .Lnoreset 345 bno .Lnoreset
346 la %r2,.Lreset 346 la %r2,.Lreset
347 lhi %r3,26 347 lhi %r3,26
348 .long 0x83230008 348 diag %r2,%r3,8
349 mvc 0x78(8),.Lrdrnewpsw # set up IO interrupt psw
350.Lwaitrdrirq:
351 lpsw .Lrdrwaitpsw
352.Lrdrint:
353 c %r1,0xb8 # compare subchannel number
354 bne .Lwaitrdrirq
355 la %r5,.Lirb
356 tsch 0(%r5)
349.Lnoreset: 357.Lnoreset:
358 b .Lnoload
359
360 .align 8
361.Lrdrnewpsw:
362 .long 0x00080000,0x80000000+.Lrdrint
363.Lrdrwaitpsw:
364 .long 0x020a0000,0x80000000+.Lrdrint
350#endif 365#endif
351 366
352# 367#
353# everything loaded, go for it 368# everything loaded, go for it
354# 369#
@@ -517,10 +532,10 @@ startup:basr %r13,0 # get base
517 l %r2, .Lrcp2-.LPG1(%r13) # try with Read SCP 532 l %r2, .Lrcp2-.LPG1(%r13) # try with Read SCP
518 b .Lservicecall-.LPG1(%r13) 533 b .Lservicecall-.LPG1(%r13)
519.Lprocsccb: 534.Lprocsccb:
520 lh %r1,.Lscpincr1-PARMAREA(%r4) # use this one if != 0 535 lhi %r1,0
521 chi %r1,0x00 536 icm %r1,3,.Lscpincr1-PARMAREA(%r4) # use this one if != 0
522 jne .Lscnd 537 jnz .Lscnd
523 l %r1,.Lscpincr2-PARMAREA(%r4) # otherwise use this one 538 l %r1,.Lscpincr2-PARMAREA+4(%r4) # otherwise use this one
524.Lscnd: 539.Lscnd:
525 xr %r3,%r3 # same logic 540 xr %r3,%r3 # same logic
526 ic %r3,.Lscpa1-PARMAREA(%r4) 541 ic %r3,.Lscpa1-PARMAREA(%r4)
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index 8366793bc3..f525c0c212 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -344,10 +344,25 @@ iplstart:
344 bno .Lnoreset 344 bno .Lnoreset
345 la %r2,.Lreset 345 la %r2,.Lreset
346 lhi %r3,26 346 lhi %r3,26
347 .long 0x83230008 347 diag %r2,%r3,8
348 mvc 0x78(8),.Lrdrnewpsw # set up IO interrupt psw
349.Lwaitrdrirq:
350 lpsw .Lrdrwaitpsw
351.Lrdrint:
352 c %r1,0xb8 # compare subchannel number
353 bne .Lwaitrdrirq
354 la %r5,.Lirb
355 tsch 0(%r5)
348.Lnoreset: 356.Lnoreset:
357 b .Lnoload
358
359 .align 8
360.Lrdrnewpsw:
361 .long 0x00080000,0x80000000+.Lrdrint
362.Lrdrwaitpsw:
363 .long 0x020a0000,0x80000000+.Lrdrint
349#endif 364#endif
350 365
351# 366#
352# everything loaded, go for it 367# everything loaded, go for it
353# 368#
@@ -518,9 +533,9 @@ startup:basr %r13,0 # get base
518 l %r2,.Lrcp2-.LPG1(%r13) # try with Read SCP 533 l %r2,.Lrcp2-.LPG1(%r13) # try with Read SCP
519 b .Lservicecall-.LPG1(%r13) 534 b .Lservicecall-.LPG1(%r13)
520.Lprocsccb: 535.Lprocsccb:
521 lh %r1,.Lscpincr1-PARMAREA(%r4) # use this one if != 0 536 lghi %r1,0
522 chi %r1,0x00 537 icm %r1,3,.Lscpincr1-PARMAREA(%r4) # use this one if != 0
523 jne .Lscnd 538 jnz .Lscnd
524 lg %r1,.Lscpincr2-PARMAREA(%r4) # otherwise use this one 539 lg %r1,.Lscpincr2-PARMAREA(%r4) # otherwise use this one
525.Lscnd: 540.Lscnd:
526 xr %r3,%r3 # same logic 541 xr %r3,%r3 # same logic
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c
index 8b90e9528b..ca34b6f34b 100644
--- a/arch/s390/kernel/traps.c
+++ b/arch/s390/kernel/traps.c
@@ -668,7 +668,10 @@ asmlinkage void space_switch_exception(struct pt_regs * regs, long int_code)
668 668
669asmlinkage void kernel_stack_overflow(struct pt_regs * regs) 669asmlinkage void kernel_stack_overflow(struct pt_regs * regs)
670{ 670{
671 die("Kernel stack overflow", regs, 0); 671 bust_spinlocks(1);
672 printk("Kernel stack overflow.\n");
673 show_regs(regs);
674 bust_spinlocks(0);
672 panic("Corrupt kernel stack, can't continue."); 675 panic("Corrupt kernel stack, can't continue.");
673} 676}
674 677
diff --git a/arch/s390/mm/cmm.c b/arch/s390/mm/cmm.c
index f5a5bc09b8..2d5cb13857 100644
--- a/arch/s390/mm/cmm.c
+++ b/arch/s390/mm/cmm.c
@@ -21,7 +21,7 @@
21#include <asm/uaccess.h> 21#include <asm/uaccess.h>
22 22
23static char *sender = "VMRMSVM"; 23static char *sender = "VMRMSVM";
24module_param(sender, charp, 0); 24module_param(sender, charp, 0400);
25MODULE_PARM_DESC(sender, 25MODULE_PARM_DESC(sender,
26 "Guest name that may send SMSG messages (default VMRMSVM)"); 26 "Guest name that may send SMSG messages (default VMRMSVM)");
27 27