Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1bbf387 authored by Nicholas Piggin's avatar Nicholas Piggin Committed by Michael Ellerman
Browse files

powerpc/64s: allow machine check handler to set severity and initiator



Currently severity and initiator are always set to MCE_SEV_ERROR_SYNC and
MCE_INITIATOR_CPU in the core mce code. Allow them to be set by the
machine specific mce handlers.

No functional change for existing handlers.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 1363875b
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -177,7 +177,8 @@ struct mce_error_info {
		enum MCE_EratErrorType erat_error_type:8;
		enum MCE_TlbErrorType tlb_error_type:8;
	} u;
	uint8_t		reserved[2];
	enum MCE_Severity	severity:8;
	enum MCE_Initiator	initiator:8;
};

#define MAX_MC_EVT	100
+3 −2
Original line number Diff line number Diff line
@@ -90,13 +90,14 @@ void save_mce_event(struct pt_regs *regs, long handled,
	mce->gpr3 = regs->gpr[3];
	mce->in_use = 1;

	mce->initiator = MCE_INITIATOR_CPU;
	/* Mark it recovered if we have handled it and MSR(RI=1). */
	if (handled && (regs->msr & MSR_RI))
		mce->disposition = MCE_DISPOSITION_RECOVERED;
	else
		mce->disposition = MCE_DISPOSITION_NOT_RECOVERED;
	mce->severity = MCE_SEV_ERROR_SYNC;

	mce->initiator = mce_err->initiator;
	mce->severity = mce_err->severity;

	/*
	 * Populate the mce error_type and type-specific error_type.
+6 −0
Original line number Diff line number Diff line
@@ -281,6 +281,9 @@ long __machine_check_early_realmode_p7(struct pt_regs *regs)
	long handled = 1;
	struct mce_error_info mce_error_info = { 0 };

	mce_error_info.severity = MCE_SEV_ERROR_SYNC;
	mce_error_info.initiator = MCE_INITIATOR_CPU;

	srr1 = regs->msr;
	nip = regs->nip;

@@ -352,6 +355,9 @@ long __machine_check_early_realmode_p8(struct pt_regs *regs)
	long handled = 1;
	struct mce_error_info mce_error_info = { 0 };

	mce_error_info.severity = MCE_SEV_ERROR_SYNC;
	mce_error_info.initiator = MCE_INITIATOR_CPU;

	srr1 = regs->msr;
	nip = regs->nip;