xilplmi
Vitis Drivers API Documentation
xplmi_err_common.c File Reference

Overview

This file contains error management code which is common for both versal and versal net PLM.

MODIFICATION HISTORY:
Ver   Who  Date        Changes
====  ==== ======== ======================================================-
1.00  kc   02/12/2019 Initial release
1.01  kc   08/01/2019 Added error management framework
      ma   08/01/2019 Added LPD init code
      sn   08/03/2019 Added code to wait until over-temperature condition
                                        gets resolved before restart
      bsv  08/29/2019 Added Multiboot and Fallback support
      scs  08/29/2019 Added support for Extended IDCODE checks
1.02  ma   05/02/2020 Remove SRST error action for PSM errors as it is
                      de-featured
      ma   02/28/2020 Error actions related changes
      bsv  04/04/2020 Code clean up
1.03  bsv  07/07/2020 Made functions used in single transaltion unit as
                                        static
      kc   08/11/2020 Added disabling and clearing of error which has actions
                      selected as subsystem shutdown or restart or custom.
                      They have to be re-enabled again using SetAction
                      command.
      bsv  09/21/2020 Set clock source to IRO before SRST for ES1 silicon
      bm   10/14/2020 Code clean up
      td   10/19/2020 MISRA C Fixes
1.04  td   01/07/2021 Fix warning in PLM memory log regarding NULL handler for
                      PMC_PSM_NCR error
      bsv  01/29/2021 Added APIs for checking and clearing NPI errors
1.05  pj   03/24/2021 Added API to update Subsystem Id of the error node
      pj   03/24/2021 Added API to trigger error handling from software.
                      Added SW Error event and Ids for Healthy Boot errors
      bm   03/24/2021 Added logic to store error status in RTCA
      bl   04/01/2021 Update function signature for PmSystemShutdown
      ma   04/05/2021 Added support for error configuration using Error Mask
                      instead of Error ID. Also, added support to configure
                      multiple errors at once.
      ma   05/03/2021 Minor updates related to PSM and FW errors, trigger
                      FW_CR for PSM and FW errors which have error action
                      set as ERROR_OUT
      bsv  05/15/2021 Remove warning for AXI_WRSTRB NPI error
      ma   05/17/2021 Update only data field when writing error code to FW_ERR
                      register
      bm   05/18/2021 Ignore printing and storing of ssit errors for ES1 silicon
      td   05/20/2021 Fixed blind write on locking NPI address space in
                      XPlmi_ClearNpiErrors
1.06  ma   06/28/2021 Added handler for CPM_NCR error
      ma   07/08/2021 Fix logic in reading link down error mask value
      td   07/08/2021 Fix doxygen warnings
      bsv  07/16/2021 Fix doxygen warnings
      bsv  07/18/2021 Debug enhancements
      kc   07/22/2021 XPlmi_PorHandler scope updated to global
      ma   07/27/2021 Updated print statements in CPM handlers
      bm   08/02/2021 Change debug log level of PMC error status prints
      ma   08/06/2021 Save PMC_FW_ERR register value to RTCA and clear it
      bsv  08/15/2021 Removed unwanted goto statements
      rv   08/19/2021 Updated XPLMI_EM_ACTION_SUBSYS_RESTART error action
                handling
      ma   08/19/2021 Renamed error related macros
      ma   08/30/2021 Modified XPlmi_ErrMgr function to handle errors in
                      SSIT Slave SLRs
      bsv  10/11/2021 Added boundary check before incrementing NumErrOuts
1.07  ma   12/17/2021 Clear SSIT_ERR register during EM init
      bsv  12/24/2021 Move common defines from xilplmi and xilpm to common
                      folder
      is   01/10/2022 Updated XPlmi_SysMonOTDetect API to pass wait time arg
      is   01/10/2022 Updated Copyright Year to 2022
      ma   01/17/2022 Add exceptions to SW Errors list
      ma   01/24/2022 Check error mask registers after error action is
                      enabled or disabled
      ma   01/24/2022 Check if error action is enabled before executing the
                      handler
      ma   02/01/2022 Fix SW-BP-INIT-TO-FAILURE warnings
      ma   03/10/2022 Fix bug in disabling the error actions for PSM errors
      is   03/22/2022 Add custom handler for XPPU/XMPU error events
1.08  ma   05/10/2022 Added PLM to PLM communication feature
      ma   06/01/2022 Added PLM Print Log as new error action
      bsv  06/10/2022 Add CommandInfo to a separate section in elf
      rama 06/28/2022 Added new entries in ErrorTable to support XilSem
                      events
      bm   07/06/2022 Refactor versal and versal_net code
      ma   07/08/2022 Added support for secure lockdown
      ma   07/08/2022 Added support for executing secure lockdown when
                      Halt Boot eFuses are blown
      ma   07/19/2022 Disable interrupts before secure lockdown
      kpt  07/21/2022 Replaced secure lockdown code with function
      bm   07/22/2022 Update EAM logic for In-Place PLM Update
      bm   07/22/2022 Retain critical data structures after In-Place PLM Update
      bm   07/20/2022 Shutdown modules gracefully during update
      bm   07/24/2022 Set PlmLiveStatus during boot time
      ma   07/28/2022 Update FW_ERR register and return from XPlmi_ErrMgr if
                      secure lockdown is in progress
      ma   08/08/2022 Handle EAM errors at task level
      ma   08/08/2022 Fix SW-BP-MAGIC-NUM warning
      ma   09/02/2022 Print EAM errors only if they are enabled
      ma   09/07/2022 Print ERR number as per the register database
1.09  bsv  09/30/2022 Make XPlmi_SoftResetHandler non-static so that
                      it can be used in Image Selector
      sk   10/27/2022 Updated logic to handle invalid node id
      ng   11/11/2022 Updated doxygen comments
      bm   01/03/2023 Remove Triggering of SSIT ERR2 from Slave SLR to
                      Master SLR
      bm   01/03/2023 Create Secure Lockdown as a Critical Priority Task
      bm   01/03/2023 Notify Other SLRs about Secure Lockdown
      ng   02/07/2023 Check to skip the multiboot reg update and SRST
      bm   02/09/2023 Added support to return warnings
      ng   03/12/2023 Fixed Coverity warnings
        dd   03/28/2023 Updated doxygen comments
      ng   03/30/2023 Updated algorithm and return values in doxygen comments
1.10  bm   06/13/2023 Add API to just log PLM error
      sk   07/26/2023 Added redundant call for XPlmi_DetectSlaveSlrTamper
      sk   07/26/2023 Added redundant check in XPlmi_DetectAndHandleTamper
      sk   08/17/2023 Updated logic to handle SubsystemId for EM actions
      sk   08/18/2023 Added redundant call for XPlmi_TriggerSLDOnHaltBoot
      rama 08/30/2023 Changed EAM prints to DEBUG_ALWAYS for debug level_0 option
      mss  09/04/2023 Added Null Check for EmInit
      dd   09/12/2023 MISRA-C violation Rule 10.3 fixed
      dd   09/12/2023 MISRA-C violation Rule 17.7 fixed
1.11  bm   09/25/2023 Fix Error Handling after In-Place PLM Update
      ma   09/27/2023 Add secure lockdown to EAM error actions list
      mss  10/31/2023 Added code to Trigger FW CR error in XPlmi_ErrMgr
      ma   11/14/2023 Update error action to NONE after disabling the error
2.00  ng   12/27/2023 Reduced log level for less frequent prints
      jb   02/22/2024 Removed PmSubsysRestart handler and insed used
                            SystemShutdown for Subsystem restart EM action
      ma   02/29/2024 Removed XPlmi_ErrPrintToLog function from common folder
                      and moved it to xplmi_err.c
      pre  03/01/2024 Added infinite loop for PLM to stop further processing
                      in slave SLR if any error is encountered during boot
      ng   03/09/2024 Fixed format specifier for 32bit variables
      mss  03/13/2024 MISRA-C violatiom Rule 17.8 fixed
      sk   05/07/2024 Added support for In Place Update Error Notify
2.01  sk   08/26/2024 Updated EAM support for Versal 2VE and 2VM Devices
      pre  10/07/2024 Added slave error notification
      sk   02/20/2025 Added emconfig support for Versal 2VE and 2VM Devices
                      moved PSM code to separate source file
 

Functions

void XPlmi_LogPlmErr (int ErrStatusVal)
 This function is called for logging PLM error into FW_ERR register. More...
 
void XPlmi_ErrMgr (int ErrStatusVal)
 This function is called in PLM error cases. More...
 
void XPlmi_UpdateErrorSubsystemId (u32 ErrorNodeId, u32 ErrorMasks, u32 SubsystemId)
 This function updates the SubystemId for the given error index. More...
 
void XPlmi_PORHandler (void)
 This function triggers Power on Reset. More...
 
u32 XPlmi_GetErrorId (u32 ErrorNodeId, u32 RegMask)
 This function returns Error Id for the given error node type and error mask. More...
 
void XPlmi_HandleSwError (u32 ErrorNodeId, u32 RegMask)
 This function handles the Software error triggered from within PLM. More...
 
void XPlmi_ErrIntrHandler (void *CallbackRef)
 This function is default interrupt handler for EAM error which will add the task to the task queue. More...
 
int XPlmi_ErrorTaskHandler (void *Data)
 This function is the interrupt handler for the EAM errors. More...
 
void XPlmi_EmClearError (XPlmi_EventType ErrorNodeType, u32 ErrorId)
 This function clears any previous errors before enabling them. More...
 
u32 EmDisableErrAction (u32 ErrMaskRegAddr, u32 RegMask)
 This function disables the error action for the given error mask. More...
 
int XPlmi_EmDisablePmcErrors (u32 RegOffset, u32 RegMask)
 This function disables the PMC error actions for the given mask. More...
 
int XPlmi_EmDisable (u32 ErrorNodeId, u32 RegMask)
 This function disables the responses for the given error. More...
 
int XPlmi_EmConfig (XPlmi_EventType NodeType, u32 ErrorId, u8 ActionId, XPlmi_ErrorHandler_t ErrorHandler, const u32 SubsystemId)
 This function configures the Action specified for a given Error ID. More...
 
int XPlmi_EmSetAction (u32 ErrorNodeId, u32 ErrorMasks, u8 ActionId, XPlmi_ErrorHandler_t ErrorHandler, const u32 SubsystemId)
 This function sets the Action specified for a given Error Masks. More...
 
int XPlmi_EmInit (XPlmi_ShutdownHandler_t SystemShutdown)
 This function initializes the error module. More...
 
void XPlmi_SoftResetHandler (void)
 This function sets clock source to IRO for ES1 silicon and resets the device. More...
 
void XPlmi_TriggerFwNcrError (void)
 This function sets clock source to IRO for ES1 silicon and triggers FW NCR error. More...
 
void XPlmi_SetEmSubsystemId (const u32 *Id)
 This function sets EmSubsystemId. More...
 
u32 XPlmi_GetEmSubsystemId (void)
 This function returns EmSubsystemId. More...
 
u32 XPlmi_UpdateNumErrOutsCount (u8 UpdateType)
 This function updates NumErrOuts and returns number of error outs count to the caller. More...
 
int XPlmi_CheckNpiErrors (void)
 This function clears NPI errors. More...
 
int XPlmi_ClearNpiErrors (void)
 This function clears NPI errors. More...