• Heiko Carstens's avatar
    s390/smp: fix physical to logical CPU map for SMT · 72a81ad9
    Heiko Carstens authored
    If an SMT capable system is not IPL'ed from the first CPU the setup of
    the physical to logical CPU mapping is broken: the IPL core gets CPU
    number 0, but then the next core gets CPU number 1. Correct would be
    that all SMT threads of CPU 0 get the subsequent logical CPU numbers.
    
    This is important since a lot of code (like e.g. the CPU topology
    code) assumes that CPU maps are setup like this. If the mapping is
    broken the system will not IPL due to broken topology masks:
    
    [    1.716341] BUG: arch topology broken
    [    1.716342]      the SMT domain not a subset of the MC domain
    [    1.716343] BUG: arch topology broken
    [    1.716344]      the MC domain not a subset of the BOOK domain
    
    This scenario can usually not happen since LPARs are always IPL'ed
    from CPU 0 and also re-IPL is intiated from CPU 0. However older
    kernels did initiate re-IPL on an arbitrary CPU. If therefore a re-IPL
    from an old kernel into a new kernel is initiated this may lead to
    crash.
    
    Fix this by setting up the physical to logical CPU mapping correctly.
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
    72a81ad9
smp.c 31.1 KB