ACPI, APEI, GHES, Error records content based throttle
commit152cef40a808d3034e383465b3f7d6783613e458
authorHuang Ying <ying.huang@intel.com>
Wed, 13 Jul 2011 05:14:26 +0000 (13 13:14 +0800)
committerLen Brown <len.brown@intel.com>
Wed, 3 Aug 2011 15:15:57 +0000 (3 11:15 -0400)
treef0d098fbaea73e9636b02f7904c72e38d381cede
parent67eb2e99076708cc790019a6a08ca3e0ae130a3a
ACPI, APEI, GHES, Error records content based throttle

printk is used by GHES to report hardware errors.  Ratelimit is
enforced on the printk to avoid too many hardware error reports in
kernel log.  Because there may be thousands or even millions of
corrected hardware errors during system running.

Currently, a simple scheme is used.  That is, the total number of
hardware error reporting is ratelimited.  This may cause some issues
in practice.

For example, there are two kinds of hardware errors occurred in
system.  One is corrected memory error, because the fault memory
address is accessed frequently, there may be hundreds error report
per-second.  The other is corrected PCIe AER error, it will be
reported once per-second.  Because they share one ratelimit control
structure, it is highly possible that only memory error is reported.

To avoid the above issue, an error record content based throttle
algorithm is implemented in the patch.  Where after the first
successful reporting, all error records that are same are throttled for
some time, to let other kinds of error records have the opportunity to
be reported.

In above example, the memory errors will be throttled for some time,
after being printked.  Then the PCIe AER error will be printked
successfully.

Signed-off-by: Huang Ying <ying.huang@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/apei/ghes.c