• Cédric Le Goater's avatar
    powerpc/64/kexec: fix race in kexec when XIVE is shutdown · d2b04b0c
    Cédric Le Goater authored
    The kexec_state KEXEC_STATE_IRQS_OFF barrier is reached by all
    secondary CPUs before the kexec_cpu_down() operation is called on
    secondaries. This can raise conflicts and provoque errors in the XIVE
    hcalls when XIVE is shutdown with H_INT_RESET on the primary CPU.
    
    To synchronize the kexec_cpu_down() operations and make sure the
    secondaries have completed their task before the primary starts doing
    the same, let's move the primary kexec_cpu_down() after the
    KEXEC_STATE_REAL_MODE barrier.
    
    This change of the ending sequence of kexec is mostly useful on the
    pseries platform but it impacts also the powernv, ps3 and 85xx
    platforms. powernv can be easily tested and fixed but some caution is
    required for the other two.
    Signed-off-by: default avatarCédric Le Goater <clg@kaod.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    d2b04b0c
machine_kexec_64.c 11.3 KB