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: Nicholas Piggin <npiggin@gmail.com> [mpe: Use dedicated ratelimit state, not printk_ratelimit()] Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20201128070728.825934-6-npiggin@gmail.com
This commit is contained in:
parent
1d15ffdfc9
commit
f4b239e4c6
|
@ -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,19 +242,22 @@ static void print_hmi_event_info(struct OpalHMIEvent *hmi_evt)
|
|||
break;
|
||||
}
|
||||
|
||||
printk("%s%s Hypervisor Maintenance interrupt [%s]\n",
|
||||
level, sevstr,
|
||||
hmi_evt->disposition == OpalHMI_DISPOSITION_RECOVERED ?
|
||||
"Recovered" : "Not recovered");
|
||||
error_info = hmi_evt->type < ARRAY_SIZE(hmi_error_types) ?
|
||||
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));
|
||||
if ((hmi_evt->type == OpalHMI_ERROR_TFAC) ||
|
||||
(hmi_evt->type == OpalHMI_ERROR_TFMR_PARITY))
|
||||
printk("%s TFMR: %016llx\n", level,
|
||||
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 ?
|
||||
"Recovered" : "Not recovered");
|
||||
error_info = hmi_evt->type < ARRAY_SIZE(hmi_error_types) ?
|
||||
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));
|
||||
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;
|
||||
|
|
Loading…
Reference in New Issue