diff options
Diffstat (limited to 'arch/s390')
-rw-r--r-- | arch/s390/kernel/compat_ioctl.c | 6 | ||||
-rw-r--r-- | arch/s390/kernel/head.S | 27 | ||||
-rw-r--r-- | arch/s390/kernel/head64.S | 25 | ||||
-rw-r--r-- | arch/s390/kernel/traps.c | 5 | ||||
-rw-r--r-- | arch/s390/mm/cmm.c | 2 |
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) | ||
46 | COMPATIBLE_IOCTL(DASDAPIVER) | 45 | COMPATIBLE_IOCTL(DASDAPIVER) |
47 | COMPATIBLE_IOCTL(BIODASDDISABLE) | 46 | COMPATIBLE_IOCTL(BIODASDDISABLE) |
48 | COMPATIBLE_IOCTL(BIODASDENABLE) | 47 | COMPATIBLE_IOCTL(BIODASDENABLE) |
@@ -59,16 +58,11 @@ COMPATIBLE_IOCTL(BIODASDPRRD) | |||
59 | COMPATIBLE_IOCTL(BIODASDPSRD) | 58 | COMPATIBLE_IOCTL(BIODASDPSRD) |
60 | COMPATIBLE_IOCTL(BIODASDGATTR) | 59 | COMPATIBLE_IOCTL(BIODASDGATTR) |
61 | COMPATIBLE_IOCTL(BIODASDSATTR) | 60 | COMPATIBLE_IOCTL(BIODASDSATTR) |
62 | #if defined(CONFIG_DASD_CMB) || defined(CONFIG_DASD_CMB_MODULE) | ||
63 | COMPATIBLE_IOCTL(BIODASDCMFENABLE) | 61 | COMPATIBLE_IOCTL(BIODASDCMFENABLE) |
64 | COMPATIBLE_IOCTL(BIODASDCMFDISABLE) | 62 | COMPATIBLE_IOCTL(BIODASDCMFDISABLE) |
65 | COMPATIBLE_IOCTL(BIODASDREADALLCMB) | 63 | COMPATIBLE_IOCTL(BIODASDREADALLCMB) |
66 | #endif | ||
67 | #endif | ||
68 | 64 | ||
69 | #if defined(CONFIG_S390_TAPE) || defined(CONFIG_S390_TAPE_MODULE) | ||
70 | COMPATIBLE_IOCTL(TAPE390_DISPLAY) | 65 | COMPATIBLE_IOCTL(TAPE390_DISPLAY) |
71 | #endif | ||
72 | 66 | ||
73 | /* s390 doesn't need handlers here */ | 67 | /* s390 doesn't need handlers here */ |
74 | COMPATIBLE_IOCTL(TIOCGSERIAL) | 68 | COMPATIBLE_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 | ||
669 | asmlinkage void kernel_stack_overflow(struct pt_regs * regs) | 669 | asmlinkage 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 | ||
23 | static char *sender = "VMRMSVM"; | 23 | static char *sender = "VMRMSVM"; |
24 | module_param(sender, charp, 0); | 24 | module_param(sender, charp, 0400); |
25 | MODULE_PARM_DESC(sender, | 25 | MODULE_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 | ||