aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--hw/chiptod.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/hw/chiptod.c b/hw/chiptod.c
index c7de0a4..22c265c 100644
--- a/hw/chiptod.c
+++ b/hw/chiptod.c
@@ -656,6 +656,13 @@ static bool tfmr_recover_tb_errors(uint64_t tfmr)
/* write 1 to bit 45 to clear the error */
tfmr_reset_error |= SPR_TFMR_TB_RESIDUE_ERR;
}
+
+ if (tfmr & SPR_TFMR_FW_CONTROL_ERR)
+ tfmr_reset_error |= SPR_TFMR_FW_CONTROL_ERR;
+
+ if (tfmr & SPR_TFMR_TBST_CORRUPT)
+ tfmr_reset_error |= SPR_TFMR_TBST_CORRUPT;
+
mtspr(SPR_TFMR, tfmr_reset_error);
/* We have to write "Clear TB Errors" again */
@@ -709,6 +716,8 @@ int chiptod_recover_tb_errors(void)
*/
if ((tfmr & SPR_TFMR_TB_MISSING_STEP) ||
(tfmr & SPR_TFMR_TB_RESIDUE_ERR) ||
+ (tfmr & SPR_TFMR_FW_CONTROL_ERR) ||
+ (tfmr & SPR_TFMR_TBST_CORRUPT) ||
(tfmr & SPR_TFMR_TB_MISSING_SYNC)) {
if (!tfmr_recover_tb_errors(tfmr)) {
rc = 0;