Commit 75aa8038 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by David Gibson
Browse files

ppc/spapr: Ignore common "ibm,nmi-interlock" Linux bug



Linux kernels call "ibm,nmi-interlock" in their system reset handlers
contrary to PAPR. Returning an error because the CPU does not hold the
interlock here causes Linux to print warning messages. PowerVM returns
success in this case, so do the same for now.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Message-Id: <20200316142613.121089-9-npiggin@gmail.com>
Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
parent 0e236d34
Loading
Loading
Loading
Loading
+12 −2
Original line number Diff line number Diff line
@@ -461,8 +461,18 @@ static void rtas_ibm_nmi_interlock(PowerPCCPU *cpu,
    }

    if (spapr->fwnmi_machine_check_interlock != cpu->vcpu_id) {
        /* The vCPU that hit the NMI should invoke "ibm,nmi-interlock" */
        rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR);
        /*
	 * The vCPU that hit the NMI should invoke "ibm,nmi-interlock"
         * This should be PARAM_ERROR, but Linux calls "ibm,nmi-interlock"
	 * for system reset interrupts, despite them not being interlocked.
	 * PowerVM silently ignores this and returns success here. Returning
	 * failure causes Linux to print the error "FWNMI: nmi-interlock
	 * failed: -3", although no other apparent ill effects, this is a
	 * regression for the user when enabling FWNMI. So for now, match
	 * PowerVM. When most Linux clients are fixed, this could be
	 * changed.
	 */
        rtas_st(rets, 0, RTAS_OUT_SUCCESS);
        return;
    }