x86, mce: add table driven machine check grading

The machine check grading (as in deciding what should be done for a given
register value) has to be done multiple times soon and it's also getting
more complicated.
So it makes sense to consolidate it into a single function. To get smaller
and more straight forward and possibly more extensible code I opted towards
a new table driven method. The various rules are put into a table
when is then executed by a very simple interpreter.

The grading engine is in a new file mce-severity.c. I also added a private
include file mce-internal.h, because mce.h is already a bit too cluttered.

This is dead code right now, but will be used in followon patches.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Hidetoshi Seto <seto.hidetoshi@jp.fujitsu.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Esse commit está contido em:
Andi Kleen
2009-05-27 21:56:54 +02:00
commit de H. Peter Anvin
commit 817f32d02a
3 arquivos alterados com 72 adições e 0 exclusões

Ver arquivo

@@ -0,0 +1,10 @@
#include <asm/mce.h>
enum severity_level {
MCE_NO_SEVERITY,
MCE_SOME_SEVERITY,
MCE_UC_SEVERITY,
MCE_PANIC_SEVERITY,
};
int mce_severity(struct mce *a, int tolerant, char **msg);