• Alexander Gordeev's avatar
    s390/smp: enable DAT before CPU restart callback is called · 915fea04
    Alexander Gordeev authored
    The restart interrupt is triggered whenever a secondary CPU is
    brought online, a remote function call dispatched from another
    CPU or a manual PSW restart is initiated and causes the system
    to kdump. The handling routine is always called with DAT turned
    off. It then initializes the stack frame and invokes a callback.
    
    The existing callbacks handle DAT as follows:
    
      * __do_restart() and __machine_kexec() turn in on upon entry;
      * __ipl_run(), __reipl_run() and __dump_run() do not turn it
        right away, but all of them call diag308() - which turns DAT
        on, but only if kasan is enabled;
    
    In addition to the described complexity all callbacks (and the
    functions they call) should avoid kasan instrumentation while
    DAT is off.
    
    This update enables DAT in the assembler restart handler and
    relieves any callbacks (which are mostly C functions) from
    dealing with DAT altogether.
    
    There are four types of CPU restart that initialize control
    registers in different ways:
    
      1. Start of secondary CPU on boot - control registers are
         inherited from the IPL CPU;
      2. Restart of online CPU - control registers of the CPU being
         restarted are kept;
      3. Hotplug of offline CPU - control registers are inherited
         from the starting CPU;
      4. Start of offline CPU triggered by manual PSW restart -
         the control registers are read from the absolute lowcore
         and contain the boot time IPL CPU values updated with all
         follow-up calls of smp_ctl_set_bit() and smp_ctl_clear_bit()
         routines;
    
    In first three cases contents of the control registers is the
    most recent. In the latter case control registers are good
    enough to facilitate successful completion of kdump operation.
    Suggested-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    Signed-off-by: default avatarAlexander Gordeev <agordeev@linux.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
    915fea04
asm-offsets.c 7.2 KB