• Greg Kurz's avatar
    powerpc/pseries: Fix xive=off command line · a3bf9fbd
    Greg Kurz authored
    On POWER9, if the hypervisor supports XIVE exploitation mode, the
    guest OS will unconditionally requests for the XIVE interrupt mode
    even if XIVE was deactivated with the kernel command line xive=off.
    Later on, when the spapr XIVE init code handles xive=off, it disables
    XIVE and tries to fall back on the legacy mode XICS.
    
    This discrepency causes a kernel panic because the hypervisor is
    configured to provide the XIVE interrupt mode to the guest :
    
      kernel BUG at arch/powerpc/sysdev/xics/xics-common.c:135!
      ...
      NIP xics_smp_probe+0x38/0x98
      LR  xics_smp_probe+0x2c/0x98
      Call Trace:
        xics_smp_probe+0x2c/0x98 (unreliable)
        pSeries_smp_probe+0x40/0xa0
        smp_prepare_cpus+0x62c/0x6ec
        kernel_init_freeable+0x148/0x448
        kernel_init+0x2c/0x148
        ret_from_kernel_thread+0x5c/0x68
    
    Look for xive=off during prom_init and don't ask for XIVE in this
    case. One exception though: if the host only supports XIVE, we still
    want to boot so we ignore xive=off.
    
    Similarly, have the spapr XIVE init code to looking at the interrupt
    mode negotiated during CAS, and ignore xive=off if the hypervisor only
    supports XIVE.
    
    Fixes: eac1e731 ("powerpc/xive: guest exploitation of the XIVE interrupt controller")
    Cc: stable@vger.kernel.org # v4.20
    Reported-by: default avatarPavithra R. Prakash <pavrampu@in.ibm.com>
    Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
    Reviewed-by: default avatarCédric Le Goater <clg@kaod.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    a3bf9fbd
prom_init.c 85.7 KB