Nicholas Piggin <npiggin@xxxxxxxxx> writes: > 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@xxxxxxxxx> > --- > arch/powerpc/platforms/powernv/opal-hmi.c | 27 +++++++++++++---------- > 1 file changed, 15 insertions(+), 12 deletions(-) > > diff --git a/arch/powerpc/platforms/powernv/opal-hmi.c b/arch/powerpc/platforms/powernv/opal-hmi.c > index 3e1f064a18db..959da6df0227 100644 > --- a/arch/powerpc/platforms/powernv/opal-hmi.c > +++ b/arch/powerpc/platforms/powernv/opal-hmi.c > @@ -240,19 +240,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 || printk_ratelimit()) { > + 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)); > + } Same comment RE printk_ratelimit(), I folded this in: diff --git a/arch/powerpc/platforms/powernv/opal-hmi.c b/arch/powerpc/platforms/powernv/opal-hmi.c index 959da6df0227..f0c1830deb51 100644 --- a/arch/powerpc/platforms/powernv/opal-hmi.c +++ b/arch/powerpc/platforms/powernv/opal-hmi.c @@ -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,7 +242,7 @@ static void print_hmi_event_info(struct OpalHMIEvent *hmi_evt) break; } - if (hmi_evt->severity != OpalHMI_SEV_NO_ERROR || printk_ratelimit()) { + 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 ? cheers