aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/kernel/head64.S
diff options
context:
space:
mode:
authorHongjie Yang <hongjie@us.ibm.com>2007-01-09 04:18:36 -0500
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-01-09 04:18:36 -0500
commitdd401e2b9250e3bb07ef388ddccbbf80aa106fc7 (patch)
tree3043c1d699d3d5f31bf6a47985fdf24760a38990 /arch/s390/kernel/head64.S
parentefa06708fe77190f31bed5c3cb5da49e211240f5 (diff)
[S390] memory detection misses 128k.
Fix a memory leak problem in the memory detection routines. A memory leak of 128k occurs when we have a contiguous memory with mixed access-mode (read or write) ranges. Signed-off-by: Hongjie Yang <hongjie@us.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/kernel/head64.S')
-rw-r--r--arch/s390/kernel/head64.S12
1 files changed, 11 insertions, 1 deletions
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S
index c526279e1123..6ba3f4512dd1 100644
--- a/arch/s390/kernel/head64.S
+++ b/arch/s390/kernel/head64.S
@@ -172,12 +172,15 @@ startup_continue:
172 srl %r7,28 172 srl %r7,28
173 clr %r6,%r7 # compare cc with last access code 173 clr %r6,%r7 # compare cc with last access code
174 je .Lsame 174 je .Lsame
175 j .Lchkmem 175 lghi %r8,0 # no program checks
176 j .Lsavchk
176.Lsame: 177.Lsame:
177 algr %r5,%r1 # add 128KB to end of chunk 178 algr %r5,%r1 # add 128KB to end of chunk
178 # no need to check here, 179 # no need to check here,
179 brc 12,.Lloop # this is the same chunk 180 brc 12,.Lloop # this is the same chunk
180.Lchkmem: # > 16EB or tprot got a program check 181.Lchkmem: # > 16EB or tprot got a program check
182 lghi %r8,1 # set program check flag
183.Lsavchk:
181 clgr %r4,%r5 # chunk size > 0? 184 clgr %r4,%r5 # chunk size > 0?
182 je .Lchkloop 185 je .Lchkloop
183 stg %r4,0(%r3) # store start address of chunk 186 stg %r4,0(%r3) # store start address of chunk
@@ -204,8 +207,15 @@ startup_continue:
204 chi %r10, 0 # do we have chunks left? 207 chi %r10, 0 # do we have chunks left?
205 je .Ldonemem 208 je .Ldonemem
206.Lhsaskip: 209.Lhsaskip:
210 chi %r8,1 # program check ?
211 je .Lpgmchk
212 lgr %r4,%r5 # potential new chunk
213 algr %r5,%r1 # add 128KB to end of chunk
214 j .Llpcnt
215.Lpgmchk:
207 algr %r5,%r1 # add 128KB to end of chunk 216 algr %r5,%r1 # add 128KB to end of chunk
208 lgr %r4,%r5 # potential new chunk 217 lgr %r4,%r5 # potential new chunk
218.Llpcnt:
209 clgr %r5,%r9 # should we go on? 219 clgr %r5,%r9 # should we go on?
210 jl .Lloop 220 jl .Lloop
211.Ldonemem: 221.Ldonemem: