Arthur Heymans has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/54092 )
Change subject: security/intel/txt: Split of microcode error type printing ......................................................................
security/intel/txt: Split of microcode error type printing
The purpose is to reuse the types string in CBnT error printing.
Change-Id: I435de402fef6d4702c9c7250c8bd31243a04a46e Signed-off-by: Arthur Heymans arthur@aheymans.xyz --- M src/security/intel/txt/Makefile.inc M src/security/intel/txt/logging.c M src/security/intel/txt/txt.h 3 files changed, 34 insertions(+), 41 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/92/54092/1
diff --git a/src/security/intel/txt/Makefile.inc b/src/security/intel/txt/Makefile.inc index d332341..5c3ddde 100644 --- a/src/security/intel/txt/Makefile.inc +++ b/src/security/intel/txt/Makefile.inc @@ -1,5 +1,7 @@ ifeq ($(CONFIG_INTEL_TXT),y)
+bootblock-y += logging.c + romstage-y += romstage.c romstage-y += getsec_sclean.S romstage-y += getsec.c diff --git a/src/security/intel/txt/logging.c b/src/security/intel/txt/logging.c index 683247d..641288e 100644 --- a/src/security/intel/txt/logging.c +++ b/src/security/intel/txt/logging.c @@ -3,11 +3,41 @@ #include <arch/mmio.h> #include <console/console.h> #include <cpu/x86/smm.h> +#include <stdint.h> #include <types.h>
#include "txt.h" #include "txt_register.h"
+const char *intel_txt_microcode_error_type(uint8_t type) +{ + static const char *types[] = + { + "Legacy Shutdown", + "", + "", + "", + "", + "Load memory type error in ACM area", + "Unrecognized ACM format", + "Failure to authenticate", + "Invalid ACM format", + "Unexpected Snoop hit", + "Invalid event", + "Invalid MLE", + "Machine check event", + "VMXAbort", + "AC memory corruption", + "Illegal voltage/bus ratio", + }; + static const char *unkown = "Unknown"; + + if (type <= 15 && !(type > 0 && type < 5)) + return types[type]; + + return unkown; +} + /** * Logs microcode or SINIT ACM errors. * Does not log SBIOS ACM errors. @@ -26,47 +56,7 @@
printk(BIOS_ERR, " Type: ");
- switch (txt_error & TXT_ERROR_MASK) { - case 0: - printk(BIOS_ERR, "Legacy Shutdown\n"); - break; - case 5: - printk(BIOS_ERR, "Load memory type error in ACM area\n"); - break; - case 6: - printk(BIOS_ERR, "Unrecognized ACM format\n"); - break; - case 7: - printk(BIOS_ERR, "Failure to authenticate\n"); - break; - case 8: - printk(BIOS_ERR, "Invalid ACM format\n"); - break; - case 9: - printk(BIOS_ERR, "Unexpected Snoop hit\n"); - break; - case 10: - printk(BIOS_ERR, "Invalid event\n"); - break; - case 11: - printk(BIOS_ERR, "Invalid MLE\n"); - break; - case 12: - printk(BIOS_ERR, "Machine check event\n"); - break; - case 13: - printk(BIOS_ERR, "VMXAbort\n"); - break; - case 14: - printk(BIOS_ERR, "AC memory corruption\n"); - break; - case 15: - printk(BIOS_ERR, "Illegal voltage/bus ratio\n"); - break; - default: - printk(BIOS_ERR, "unknown\n"); - break; - } + printk(BIOS_ERR, "%s\n", intel_txt_microcode_error_type(txt_error & TXT_ERROR_MASK)); } }
diff --git a/src/security/intel/txt/txt.h b/src/security/intel/txt/txt.h index 976cc74..60c2408 100644 --- a/src/security/intel/txt/txt.h +++ b/src/security/intel/txt/txt.h @@ -26,5 +26,6 @@ void intel_txt_run_sclean(void); int intel_txt_run_bios_acm(const u8 input_params); bool intel_txt_prepare_txt_env(void); +const char *intel_txt_microcode_error_type(uint8_t type);
#endif /* SECURITY_INTEL_TXT_H_ */