Intel® Agilex™ Hard Processor System Remote System Update User Guide

ID 683184
Date 7/13/2022
Public

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents

6.7.1. Maintenance Procedure

  1. Initialize RSU by calling librsu_init() in Linux or rsu_init() in U-Boot. This allows you to:
    • Check SPT integrity, recover a bad SPT if the other one is valid.
    • Check CPB integrity, recover a bad CPB if the other one is valid.
  2. Query the RSU status by calling rsu_status_log().
  3. If the State field from RSU status is STATE_DCIO_CORRUPTED (0xF004D00F), it means the decision firmware data got corrupted, go to the Recover Decision Firmware Procedure.
  4. Query the decision firmware status by calling rsu_dcmf_status().
  5. If any DCMF shows as corrupted, go to the to Recover Decision Firmware Procedure.
  6. Call rsu_slot_count().
  7. If the above returns -ECORRUPTED_SPT, it means both SPTs are corrupted, and you must restore SPT from a backup copy.
  8. Call rsu_slot_get_info().
  9. If the above returns -ECORRUPTED_CPB, it means both CPBs are corrupted, and you must restore CPB from a backup copy, or create a new empty CPB.

Additional optional steps:

  1. Save RSU status reported by firmware.
  2. Clear RSU error reported by firmware by calling rsu_clear_error_status().
  3. Look at the State field from RSU status for more information on what happened:
    • STATE_CPB0_CORRUPTED (0xF004D010): Corrupt CPB0 - already recovered at this point
    • STATE_CPB0_CPB1_CORRUPTED (0xF004D011): Corrupt CPB0 & CPB1 - already recovered at this point
    • 0xF006YYYY: Watchdog timeout, with YYYY being the last Notify value sent by HPS software
  4. Check if running a factory image by calling rsu_running_factory().
  5. Look at the Failed image from saved RSU status. Use custom logic to determine if one or all application images are corrupted and something needs to be done.