• Heiko Carstens's avatar
    s390/smp: fix ipl from cpu with non-zero address · 0861b5a7
    Heiko Carstens authored
    Commit af51160e ("s390/smp: initialize cpu_present_mask in
    setup_arch") initializes the cpu_present_mask much earlier than
    before. However the cpu detection code relies on the fact that iff
    logical cpu 0 is marked present then also the corresponding physical
    cpu address within the pcpu_devices array slot is valid.
    
    Since commit 44fd2299 ("[PATCH] Register the boot-cpu in the cpu
    maps earlier") this assumption is not true anymore. The patch marks
    logical cpu 0 as present in common code without that architecture code
    had a chance to setup the logical to physical map.
    
    With that change the cpu detection code assumes that the physical cpu
    address of cpu 0 is also 0, which is not necessarily true.
    Subsequently the physical cpu address of the ipl cpu will be mapped to
    a different logical cpu. If that cpu is brought online later the ipl
    cpu will send itself an initial cpu reset sigp signal. This in turn
    completely resets the ipl cpu and the system stops working.
    
    A dump of such a system looks like a "store status" has been
    forgotten. But actually the kernel itself removed all traces which
    would allow to easily tell what went wrong.
    
    To fix this initialize the logical to physical cpu address already in
    smp_setup_processor_id(). In addition remove the initialization of the
    cpu_present_mask and cpu_online_mask for cpu 0, since that has already
    been done. Also add a sanity check, just in case common code will be
    changed again...
    
    The problem can be easily reproduced within a z/VM guest:
    
    > chcpu -d 0
    > vmcp ipl
    
    Fixes: af51160e ("s390/smp: initialize cpu_present_mask in setup_arch")
    Reported-by: default avatarSebastian Ott <sebott@linux.vnet.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    0861b5a7
smp.c 29.3 KB