aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2012-05-09 10:27:38 -0400
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2012-05-16 08:42:40 -0400
commit58770be6cc5901bfbb908d9c6d8ca679fc55df26 (patch)
treef83ef3786225009d0cf59ac34b698c0a8f4ccac4 /arch/s390
parentc15787a7c3f702c4240708fb8e63abce1bfe1136 (diff)
s390/ipl: remove builtin tape ipl code
Remove the builtin tape ipl code. If somebody really wants to create a tape which can be ipl'ed from, then this can be achieved by using zipl. zipl can write an ipl record to a tape device and aftwards the kernel image must be written to tape. The steps are described in the "Linux on System z - Device Drivers, Features, and Commands" book (SC33-8411). Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390')
-rw-r--r--arch/s390/Kconfig27
-rw-r--r--arch/s390/kernel/head.S123
2 files changed, 0 insertions, 150 deletions
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index eeaed9be5fda..354c0fe72ae3 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -406,33 +406,6 @@ config CHSC_SCH
406 406
407comment "Misc" 407comment "Misc"
408 408
409config IPL
410 def_bool y
411 prompt "Builtin IPL record support"
412 help
413 If you want to use the produced kernel to IPL directly from a
414 device, you have to merge a bootsector specific to the device
415 into the first bytes of the kernel. You will have to select the
416 IPL device.
417
418choice
419 prompt "IPL method generated into head.S"
420 depends on IPL
421 default IPL_VM
422 help
423 Select "tape" if you want to IPL the image from a Tape.
424
425 Select "vm_reader" if you are running under VM/ESA and want
426 to IPL the image from the emulated card reader.
427
428config IPL_TAPE
429 bool "tape"
430
431config IPL_VM
432 bool "vm_reader"
433
434endchoice
435
436source "fs/Kconfig.binfmt" 409source "fs/Kconfig.binfmt"
437 410
438config FORCE_MAX_ZONEORDER 411config FORCE_MAX_ZONEORDER
diff --git a/arch/s390/kernel/head.S b/arch/s390/kernel/head.S
index adccd908ebc7..4939d15375aa 100644
--- a/arch/s390/kernel/head.S
+++ b/arch/s390/kernel/head.S
@@ -34,125 +34,7 @@
34#endif 34#endif
35 35
36__HEAD 36__HEAD
37#ifndef CONFIG_IPL
38 .org 0
39 .long 0x00080000,0x80000000+startup # Just a restart PSW
40#else
41#ifdef CONFIG_IPL_TAPE
42#define IPL_BS 1024
43 .org 0
44 .long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded
45 .long 0x27000000,0x60000001 # by ipl to addresses 0-23.
46 .long 0x02000000,0x20000000+IPL_BS # (a PSW and two CCWs).
47 .long 0x00000000,0x00000000 # external old psw
48 .long 0x00000000,0x00000000 # svc old psw
49 .long 0x00000000,0x00000000 # program check old psw
50 .long 0x00000000,0x00000000 # machine check old psw
51 .long 0x00000000,0x00000000 # io old psw
52 .long 0x00000000,0x00000000
53 .long 0x00000000,0x00000000
54 .long 0x00000000,0x00000000
55 .long 0x000a0000,0x00000058 # external new psw
56 .long 0x000a0000,0x00000060 # svc new psw
57 .long 0x000a0000,0x00000068 # program check new psw
58 .long 0x000a0000,0x00000070 # machine check new psw
59 .long 0x00080000,0x80000000+.Lioint # io new psw
60 37
61 .org 0x100
62#
63# subroutine for loading from tape
64# Parameters:
65# R1 = device number
66# R2 = load address
67.Lloader:
68 st %r14,.Lldret
69 la %r3,.Lorbread # r3 = address of orb
70 la %r5,.Lirb # r5 = address of irb
71 st %r2,.Lccwread+4 # initialize CCW data addresses
72 lctl %c6,%c6,.Lcr6
73 slr %r2,%r2
74.Lldlp:
75 la %r6,3 # 3 retries
76.Lssch:
77 ssch 0(%r3) # load chunk of IPL_BS bytes
78 bnz .Llderr
79.Lw4end:
80 bas %r14,.Lwait4io
81 tm 8(%r5),0x82 # do we have a problem ?
82 bnz .Lrecov
83 slr %r7,%r7
84 icm %r7,3,10(%r5) # get residual count
85 lcr %r7,%r7
86 la %r7,IPL_BS(%r7) # IPL_BS-residual=#bytes read
87 ar %r2,%r7 # add to total size
88 tm 8(%r5),0x01 # found a tape mark ?
89 bnz .Ldone
90 l %r0,.Lccwread+4 # update CCW data addresses
91 ar %r0,%r7
92 st %r0,.Lccwread+4
93 b .Lldlp
94.Ldone:
95 l %r14,.Lldret
96 br %r14 # r2 contains the total size
97.Lrecov:
98 bas %r14,.Lsense # do the sensing
99 bct %r6,.Lssch # dec. retry count & branch
100 b .Llderr
101#
102# Sense subroutine
103#
104.Lsense:
105 st %r14,.Lsnsret
106 la %r7,.Lorbsense
107 ssch 0(%r7) # start sense command
108 bnz .Llderr
109 bas %r14,.Lwait4io
110 l %r14,.Lsnsret
111 tm 8(%r5),0x82 # do we have a problem ?
112 bnz .Llderr
113 br %r14
114#
115# Wait for interrupt subroutine
116#
117.Lwait4io:
118 lpsw .Lwaitpsw
119.Lioint:
120 c %r1,0xb8 # compare subchannel number
121 bne .Lwait4io
122 tsch 0(%r5)
123 slr %r0,%r0
124 tm 8(%r5),0x82 # do we have a problem ?
125 bnz .Lwtexit
126 tm 8(%r5),0x04 # got device end ?
127 bz .Lwait4io
128.Lwtexit:
129 br %r14
130.Llderr:
131 lpsw .Lcrash
132
133 .align 8
134.Lorbread:
135 .long 0x00000000,0x0080ff00,.Lccwread
136 .align 8
137.Lorbsense:
138 .long 0x00000000,0x0080ff00,.Lccwsense
139 .align 8
140.Lccwread:
141 .long 0x02200000+IPL_BS,0x00000000
142.Lccwsense:
143 .long 0x04200001,0x00000000
144.Lwaitpsw:
145 .long 0x020a0000,0x80000000+.Lioint
146
147.Lirb: .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
148.Lcr6: .long 0xff000000
149 .align 8
150.Lcrash:.long 0x000a0000,0x00000000
151.Lldret:.long 0
152.Lsnsret: .long 0
153#endif /* CONFIG_IPL_TAPE */
154
155#ifdef CONFIG_IPL_VM
156#define IPL_BS 0x730 38#define IPL_BS 0x730
157 .org 0 39 .org 0
158 .long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded 40 .long 0x00080000,0x80000000+iplstart # The first 24 bytes are loaded
@@ -256,7 +138,6 @@ __HEAD
256 .long 0x02600050,0x00000000 138 .long 0x02600050,0x00000000
257 .endr 139 .endr
258 .long 0x02200050,0x00000000 140 .long 0x02200050,0x00000000
259#endif /* CONFIG_IPL_VM */
260 141
261iplstart: 142iplstart:
262 lh %r1,0xb8 # test if subchannel number 143 lh %r1,0xb8 # test if subchannel number
@@ -325,7 +206,6 @@ iplstart:
325 clc 0(3,%r2),.L_eof 206 clc 0(3,%r2),.L_eof
326 bz .Lagain2 207 bz .Lagain2
327 208
328#ifdef CONFIG_IPL_VM
329# 209#
330# reset files in VM reader 210# reset files in VM reader
331# 211#
@@ -358,7 +238,6 @@ iplstart:
358 .long 0x00080000,0x80000000+.Lrdrint 238 .long 0x00080000,0x80000000+.Lrdrint
359.Lrdrwaitpsw: 239.Lrdrwaitpsw:
360 .long 0x020a0000,0x80000000+.Lrdrint 240 .long 0x020a0000,0x80000000+.Lrdrint
361#endif
362 241
363# 242#
364# everything loaded, go for it 243# everything loaded, go for it
@@ -376,8 +255,6 @@ iplstart:
376.L_eof: .long 0xc5d6c600 /* C'EOF' */ 255.L_eof: .long 0xc5d6c600 /* C'EOF' */
377.L_hdr: .long 0xc8c4d900 /* C'HDR' */ 256.L_hdr: .long 0xc8c4d900 /* C'HDR' */
378 257
379#endif /* CONFIG_IPL */
380
381# 258#
382# SALIPL loader support. Based on a patch by Rob van der Heij. 259# SALIPL loader support. Based on a patch by Rob van der Heij.
383# This entry point is called directly from the SALIPL loader and 260# This entry point is called directly from the SALIPL loader and