• Heiko Carstens's avatar
    [PATCH] s390: memory detection > 32GB · e9b9a047
    Heiko Carstens authored
    The kernel takes a very long time to boot if the memory size is bigger then
    32767 MB.  The memory size is contained in a structure created by an sclp
    call.  The kernel accesses the field with a LH instrution which performs a
    sign extension of a 16 bit word.  In the case of a memory size with bit 2^15
    set this results in a very large value and the memory detection just loops for
    a long time.  In addition if more then 64 GB are used on a 64 bit system the
    memory size is read from an incorrect storage location.
    
    Use zero-extention to read the 16 bit memory size and the correct offset to
    read the 4 byte memory size on 64 bit.
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    e9b9a047
head.S 25.2 KB