From 822403ea5dcc51a5c70c0ab061ef49adb17d82e4 Mon Sep 17 00:00:00 2001 From: Mahesh Salgaonkar Date: Wed, 11 Mar 2015 16:03:44 +0530 Subject: opal: Handle TB residue and HDEC parity HMI errors on split core. In case of split core, some of the Timer facility errors needs cleanup to be done before we proceed with the error recovery. Certain TB/HDEC errors leaves dirty data in timebase and HDEC registers, which need to cleared before we initiate clear_tb_errors through TFMR[24]. The cleanup has to be done by any one thread from core or subcore. In split core mode, it is required to clear the dirty data from TB/HDEC register by all subcores (active partitions) before we clear tb errors through TFMR[24]. The HMI recovery would fail even if one subcore do not cleanup the respective TB/HDEC register. Dirty data can be cleaned by writing zero's to TB/HDEC register. For un-split core, any one thread can do the cleanup. For split core, any one thread from each subcore can do the cleanup. Errors that required pre-recovery cleanup: - SPR_TFMR_TB_RESIDUE_ERR - SPR_TFMR_HDEC_PARITY_ERROR This patch implements pre-recovery steps to clean dirty data from TB/HDEC register for above mentioned timer facility errors. Signed-off-by: Mahesh Salgaonkar Signed-off-by: Stewart Smith --- include/chiptod.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/chiptod.h') diff --git a/include/chiptod.h b/include/chiptod.h index e0490b6..43f1d3d 100644 --- a/include/chiptod.h +++ b/include/chiptod.h @@ -24,5 +24,6 @@ extern void chiptod_init(void); extern bool chiptod_wakeup_resync(void); extern int chiptod_recover_tb_errors(void); +extern void chiptod_reset_tb(void); #endif /* __CHIPTOD_H */ -- cgit v1.1