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

powerpc/64s/powernv: Ratelimit harmless HMI error printing



Harmless HMI errors can be triggered by guests in some cases, and don't
contain much useful information anyway. Ratelimit these to avoid
flooding the console/logs.

Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
[mpe: Use dedicated ratelimit state, not printk_ratelimit()]
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/20201128070728.825934-6-npiggin@gmail.com
parent 1d15ffdf
Loading
Loading
Loading
Loading
+17 −12
Original line number Diff line number Diff line
@@ -213,6 +213,8 @@ static void print_hmi_event_info(struct OpalHMIEvent *hmi_evt)
		"A hypervisor resource error occurred",
		"CAPP recovery process is in progress",
	};
	static DEFINE_RATELIMIT_STATE(rs, DEFAULT_RATELIMIT_INTERVAL,
				      DEFAULT_RATELIMIT_BURST);

	/* Print things out */
	if (hmi_evt->version < OpalHMIEvt_V1) {
@@ -240,6 +242,7 @@ static void print_hmi_event_info(struct OpalHMIEvent *hmi_evt)
		break;
	}

	if (hmi_evt->severity != OpalHMI_SEV_NO_ERROR || __ratelimit(&rs)) {
		printk("%s%s Hypervisor Maintenance interrupt [%s]\n",
			level, sevstr,
			hmi_evt->disposition == OpalHMI_DISPOSITION_RECOVERED ?
@@ -248,11 +251,13 @@ static void print_hmi_event_info(struct OpalHMIEvent *hmi_evt)
				hmi_error_types[hmi_evt->type]
				: "Unknown";
		printk("%s Error detail: %s\n", level, error_info);
	printk("%s	HMER: %016llx\n", level, be64_to_cpu(hmi_evt->hmer));
		printk("%s	HMER: %016llx\n", level,
					be64_to_cpu(hmi_evt->hmer));
		if ((hmi_evt->type == OpalHMI_ERROR_TFAC) ||
			(hmi_evt->type == OpalHMI_ERROR_TFMR_PARITY))
			printk("%s	TFMR: %016llx\n", level,
						be64_to_cpu(hmi_evt->tfmr));
	}

	if (hmi_evt->version < OpalHMIEvt_V2)
		return;