gsfp(3)
๐
gsfp โ the gsfp(3) manual, bestie edition โจ
Okay so this is gsfp(3), and before you panic: it's a library functions manual, and yes it's a whole vibe. Buckle up ๐
โจ NAME โจ
gsfp โ Gsfp. That's literally it, that's the whole name section, we love a minimal moment ๐
๐ธ SYNOPSIS ๐ธ
๐ฆ Data Structures
struct igsc_gfsp_tile_mem_errโ the per-tile memory error count situation ๐งstruct igsc_gfsp_mem_errโ the whole-card memory error count situation ๐
๐ฅ Enumerations
enum igsc_ifr_pending_resetโ{ IGSC_IFR_PENDING_RESET_NONE = 0, IGSC_IFR_PENDING_RESET_SHALLOW = 1, IGSC_IFR_PENDING_RESET_DEEP = 2 }โ how spicy the pending reset is: none, shallow, or deep ๐ซถenum igsc_ifr_array_scan_test_status_maskโ{ IGSC_ARRAY_SCAN_STATUS_TEST_EXECUTION_MASK = BIT(0), IGSC_ARRAY_SCAN_STATUS_TEST_RESULT_MASK = BIT(1), IGSC_ARRAY_SCAN_STATUS_FOUND_HW_ERROR_MASK = BIT(2), IGSC_ARRAY_SCAN_STATUS_HW_REPAIR_MASK = BIT(3) }โ mask bits for whether the test ran, what it found, whether it found a hardware error, and whether hardware repair happened โญenum igsc_ifr_array_scan_extended_statusโ the extended-status receipts, all thirteen of them, no skipping:
enum igsc_ifr_array_scan_extended_status {
IGSC_IFR_EXT_STS_PASSED = 0,
IGSC_IFR_EXT_STS_SHALLOW_RST_PENDING = 1,
IGSC_IFR_EXT_STS_DEEP_RST_PENDING = 2,
IGSC_IFR_EXT_STS_NO_REPAIR_NEEDED = 3,
IGSC_IFR_EXT_STS_REPAIRED_ARRAY = 4,
IGSC_IFR_EXT_STS_REPAIRED_SUBSLICE = 5,
IGSC_IFR_EXT_STS_REPAIRED_ARRAY_SUBSLICE = 6,
IGSC_IFR_EXT_STS_REPAIRED_ARRAY_FAULTY_SUBSLICE = 7,
IGSC_IFR_EXT_STS_REPAIR_NOT_SUPPORTED = 8,
IGSC_IFR_EXT_STS_NO_RESORCES = 9,
IGSC_IFR_EXT_STS_NON_SUBSLICE_IN_ARRAY = 10,
IGSC_IFR_EXT_STS_NON_SUBSLICE_IN_SCAN = 11,
IGSC_IFR_EXT_STS_TEST_ERROR = 12
}
Yeah IGSC_IFR_EXT_STS_NO_RESORCES is spelled like that in the source. We do not fix it. We respect it. ๐
enum igsc_ifr_supported_tests_masksโ{ IGSC_IFR_SUPPORTED_TESTS_ARRAY_AND_SCAN = BIT(0), IGSC_IFR_SUPPORTED_TESTS_MEMORY_PPR = BIT(1) }โ which tests are even on the menu: array-and-scan, and memory PPR ๐enum igsc_ifr_hw_capabilities_masksโ{ IGSC_IRF_HW_CAPABILITY_IN_FIELD_REPAIR = BIT(0), IGSC_IRF_HW_CAPABILITY_FULL_EU_MODE_SWITCH = BIT(1) }โ hardware capability bits: in-field repair and full EU mode switch ๐enum igsc_ifr_previous_errors_masksโ every single "oops we did that before" bit, and yes there's aBIT(31)in there, main character energy:
enum igsc_ifr_previous_errors_masks {
IGSC_IFR_PREV_ERROR_DSS_ERR_ARR_STS_PKT = BIT(0),
IGSC_IFR_PREV_ERROR_NON_DSS_ERR_ARR_STS_PKT = BIT(1),
IGSC_IFR_PREV_ERROR_DSS_REPAIRABLE_PKT = BIT(2),
IGSC_IFR_PREV_ERROR_DSS_UNREPAIRABLE_PKT = BIT(3),
IGSC_IFR_PREV_ERROR_NON_DSS_REPAIRABLE_PKT = BIT(4),
IGSC_IFR_PREV_ERROR_NON_DSS_UNREPAIRABLE_PKT = BIT(5),
IGSC_IFR_PREV_ERROR_DSS_ERR_SCAN_STS_PKT = BIT(6),
IGSC_IFR_PREV_ERROR_NON_DSS_ERR_SCAN_STS_PKT = BIT(7),
IGSC_IFR_PREV_ERROR_NOT_ENOUGH_SPARE_DSS = BIT(8),
IGSC_IFR_PREV_ERROR_MIS_DSS_STS_PKT_ON_ARR = BIT(9),
IGSC_IFR_PREV_ERROR_MIS_NON_DSS_STS_PKT_ON_ARR = BIT(10),
IGSC_IFR_PREV_ERROR_MIS_DSS_STS_PKT_ON_SCAN = BIT(11),
IGSC_IFR_PREV_ERROR_MIS_NON_DSS_STS_PKT_ON_SCAN = BIT(12),
IGSC_IFR_PREV_ERROR_DSS_ENG_DONE_CLR_IN_ARR = BIT(13),
IGSC_IFR_PREV_ERROR_NON_DSS_ENG_DONE_CLR_IN_ARR = BIT(14),
IGSC_IFR_PREV_ERROR_UNEXPECTED = BIT(31)
}
enum igsc_ifr_repairs_maskโ{ IGSC_IFR_REPAIRS_MASK_DSS_EN_REPAIR = BIT(0), IGSC_IFR_REPAIRS_MASK_ARRAY_REPAIR = BIT(1), IGSC_IFR_REPAIRS_MASK_FAILURE = BIT(2) }โ what got repaired, and whether it instead went full failure mode ๐ญenum igsc_gfsp_health_indicatorsโ{ IGSC_HEALTH_INDICATOR_HEALTHY = 0, IGSC_HEALTH_INDICATOR_DEGRADED = 1, IGSC_HEALTH_INDICATOR_CRITICAL = 2, IGSC_HEALTH_INDICATOR_REPLACE = 3 }โ gets memory health indicator ๐ฉบenum csc_late_binding_flagsโ{ CSC_LATE_BINDING_FLAGS_IS_PERSISTENT_MASK = 0x1 }โ the one late-binding flag we have, and it's the persistent one ๐enum csc_late_binding_typeโ{ CSC_LATE_BINDING_TYPE_INVALID = 0, CSC_LATE_BINDING_TYPE_FAN_TABLE = 1, CSC_LATE_BINDING_TYPE_VR_CONFIG = 2, CSC_LATE_BINDING_TYPE_OCODE = 3, CSC_LATE_BINDING_TYPE_DGDIAG = 4 }โ sends Late Binding HECI command ๐จenum csc_late_binding_statusโ the status enum that ate, honestly, because look at all these:
enum csc_late_binding_status {
CSC_LATE_BINDING_STATUS_SUCCESS = 0,
CSC_LATE_BINDING_STATUS_4ID_MISMATCH = 1,
CSC_LATE_BINDING_STATUS_ARB_FAILURE = 2,
CSC_LATE_BINDING_STATUS_GENERAL_ERROR = 3,
CSC_LATE_BINDING_STATUS_INVALID_PARAMS = 4,
CSC_LATE_BINDING_STATUS_INVALID_SIGNATURE = 5,
CSC_LATE_BINDING_STATUS_INVALID_PAYLOAD = 6,
CSC_LATE_BINDING_STATUS_TIMEOUT = 7,
CSC_LATE_BINDING_STATUS_BUFFER_TOO_SMALL = 8,
CSC_LATE_BINDING_STATUS_INTERNAL_ERROR = 9,
CSC_LATE_BINDING_STATUS_INVALID_FPT_TABLE = 10,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_VERIFICATION_ERROR = 11,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_INVALID_CPD = 12,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_FW_VERSION_MISMATCH = 13,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_INVALID_MANIFEST = 14,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_INVALID_HASH = 15,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_BINDING_TYPE_MISMATCH = 16,
CSC_LATE_BINDING_STATUS_SIGNED_PAYLOAD_HANDLE_SVN_FAILED = 17,
CSC_LATE_BINDING_STATUS_DESTINATION_MBOX_FAILURE = 18,
CSC_LATE_BINDING_STATUS_MISSING_LOADING_PATCH = 19,
CSC_LATE_BINDING_STATUS_INVALID_COMMAND = 20,
CSC_LATE_BINDING_STATUS_INVALID_HECI_HEADER = 21,
CSC_LATE_BINDING_STATUS_IP_ERROR_START = 0x80000000
}
enum csc_late_binding_svn_sourceโ{ CSC_LATE_BINDING_SVN_SOURCE_SPI = 0, CSC_LATE_BINDING_SVN_SOURCE_KEY_MANIFEST = 1 }โ where the SVN came from, SPI or key manifest ๐
๐ซถ Functions
Every single one, IGSC_EXPORT and all, no cap:
IGSC_EXPORT int igsc_gfsp_count_tiles (IN struct igsc_device_handle *handle, OUT uint32_t *max_num_of_tiles)โ gets number of tiles ๐งฎIGSC_EXPORT int igsc_gfsp_memory_errors (IN struct igsc_device_handle *handle, IN OUT struct igsc_gfsp_mem_err *tiles)โ gets GFSP number of memory errors ๐ฅIGSC_EXPORT int igsc_ifr_run_array_scan_test (IN struct igsc_device_handle *handle, OUT uint32_t *status, OUT uint32_t *extended_status, OUT uint32_t *pending_reset, OUT uint32_t *error_code)โ runs IFR Array and Scan tests on GSC IFR device ๐งชIGSC_EXPORT int igsc_ifr_run_mem_ppr_test (IN struct igsc_device_handle *handle, OUT uint32_t *status, OUT uint32_t *pending_reset, OUT uint32_t *error_code)โ runs IFR memory Post Package Repair (PPR) test on GSC IFR device ๐งIGSC_EXPORT int igsc_ifr_get_status_ext (IN struct igsc_device_handle *handle, OUT uint32_t *supported_tests, OUT uint32_t *hw_capabilities, OUT uint32_t *ifr_applied, OUT uint32_t *prev_errors, OUT uint32_t *pending_reset)โ retrieves the status of GSC IFR device ๐IGSC_EXPORT int igsc_ifr_count_tiles (IN struct igsc_device_handle *handle, OUT uint16_t *supported_tiles)โ counts the IFR supported tiles ๐ขIGSC_EXPORT int igsc_ifr_get_tile_repair_info (IN struct igsc_device_handle *handle, IN uint16_t tile_idx, OUT uint16_t *used_array_repair_entries, OUT uint16_t *available_array_repair_entries, OUT uint16_t *failed_dss)โ retrieves the IFR repair info ๐ ๏ธIGSC_EXPORT int igsc_ecc_config_set (IN struct igsc_device_handle *handle, IN uint8_t req_ecc_state, OUT uint8_t *cur_ecc_state, OUT uint8_t *pen_ecc_state)โ set ECC Configuration โ๏ธIGSC_EXPORT int igsc_ecc_config_get (IN struct igsc_device_handle *handle, OUT uint8_t *cur_ecc_state, OUT uint8_t *pen_ecc_state)โ get ECC Configuration โ๏ธIGSC_EXPORT int igsc_device_oem_version (IN struct igsc_device_handle *handle, OUT struct igsc_oem_version *version)โ retrieves the OEM Version from the device ๐ท๏ธIGSC_EXPORT int igsc_device_oem_serial_number (IN struct igsc_device_handle *handle, OUT struct igsc_oem_serial_number *sn)โ retrieves the OEM serial number from the device ๐IGSC_EXPORT int igsc_device_ifr_bin_version (IN struct igsc_device_handle *handle, OUT struct igsc_ifr_bin_version *version)โ retrieves the IFR Binary Version from the device ๐ฆIGSC_EXPORT int igsc_device_psc_version (IN struct igsc_device_handle *handle, OUT struct igsc_psc_version *version)โ retrieves the PSC Version from the device ๐ฆIGSC_EXPORT int igsc_gfsp_get_health_indicator (IN struct igsc_device_handle *handle, OUT uint8_t *health_indicator)โ no blurb in the source, but the name is literally giving "get the health indicator" ๐IGSC_EXPORT int igsc_gfsp_heci_cmd (struct igsc_device_handle *handle, uint32_t gfsp_cmd, uint8_t *in_buffer, size_t in_buffer_size, uint8_t *out_buffer, size_t out_buffer_size, size_t *actual_out_buffer_size)โ send generic GFSP command and receive response ๐ฌIGSC_EXPORT int igsc_device_update_late_binding_config (IN struct igsc_device_handle *handle, IN uint32_t type, IN uint32_t flags, IN uint8_t *payload, IN size_t payload_size, OUT uint32_t *status)โ update the late binding config, original flavor โจIGSC_EXPORT int igsc_device_update_late_binding_config2 (IN struct igsc_device_handle *handle, IN uint32_t type, IN uint32_t flags, IN uint8_t *payload, IN size_t payload_size, OUT uint32_t *status)โ and this one, the sequel, with a2๐ซIGSC_EXPORT int igsc_device_get_late_binding_info (IN struct igsc_device_handle *handle, IN uint32_t type, OUT uint32_t *svn_source, OUT uint32_t *min_svn, OUT uint32_t *status)โ grab the late binding info โน๏ธIGSC_EXPORT int igsc_device_commit_arb_svn (IN struct igsc_device_handle *handle, uint8_t *fw_error)โ sends ARB SVN Commit HECI command ๐ฎIGSC_EXPORT int igsc_device_get_min_allowed_arb_svn (IN struct igsc_device_handle *handle, OUT uint8_t *min_allowed_svn)โ retrieves Minimal allowed ARB SVN ๐งท
๐ Detailed Description ๐
So the detailed description section isโฆ empty. Like, fully empty. It's giving blank canvas, and honestly? We respect the mystery ๐
๐ Data Structure Documentation ๐
struct igsc_gfsp_tile_mem_err
gfsp number of memory errors per tile ๐งฉ
Definition at line 1348 of file igsc_lib.h.
Data Fields:
uint32_t corr_errโ correctable memory errors on this boot and tile ๐uint32_t uncorr_errโ uncorrectable memory errors on this boot and tile ๐
struct igsc_gfsp_mem_err
gfsp number of memory errors on the card ๐
Definition at line 1356 of file igsc_lib.h.
Data Fields:
struct igsc_gfsp_tile_mem_err errors[]โ array of memory errors structs for each tile ๐๏ธuint32_t num_of_tilesโ number of entries inerrorsarray (number of available entries when passed to the function and number of filled entries when returned) โ yes, it does double duty, icon behavior ๐
โจ Enumeration Type Documentation โจ
๐ enum csc_late_binding_flags
Late Binding flags ๐
Definition at line 1677 of file igsc_lib.h.
๐ฆ enum csc_late_binding_status
Late Binding payload status ๐
Returns: IGSC_SUCCESS if successful, otherwise error code.
Definition at line 1695 of file igsc_lib.h.
๐ธ enum csc_late_binding_svn_source
Late Binding SVN source ๐
Definition at line 1724 of file igsc_lib.h.
๐ enum csc_late_binding_type
This one is the Late Binding payload type, bestie. It sends the Late Binding HECI command and retrieves info about a specific Late Binding type โจ. It also sends the Late Binding HECI command to version 2 firmware ๐ .
Parameters ๐ซถ
handleโ A handle to the device.typeโ Late Binding payload type.flagsโ Late Binding flags to be sent to the firmwareenum csc_late_binding_flags.payloadโ Late Binding data to be sent to the firmware.payload_sizeโ Size of the payload data.statusโ Late Binding payload status.handleโ A handle to the device.typeโ Late Binding payload type.svn_sourceโ Source of the ARB SVN for the specific type.min_svnโ The minimum ARB SVN of the specific type.statusโ Late Binding payload status.
Definition at line 1684 of file igsc_lib.h.
๐ enum igsc_gfsp_health_indicators
Gets memory health indicator ๐.
Parameters ๐
handleโ A handle to the device.health_indicatorโ contains pointer to
Returns: IGSC_SUCCESS if successful, otherwise error code.
Definition at line 1636 of file igsc_lib.h.
๐ enum igsc_ifr_array_scan_extended_status
Enumerators ๐
IGSC_IFR_EXT_STS_PASSEDโ Test passed successfully, no repairs needed.IGSC_IFR_EXT_STS_SHALLOW_RST_PENDINGโ Shallow reset already pending from previous test, aborting test.IGSC_IFR_EXT_STS_DEEP_RST_PENDINGโ Deep reset already pending from previous test, aborting test.IGSC_IFR_EXT_STS_NO_REPAIR_NEEDEDโ Test passed, recoverable error found, no repair needed.IGSC_IFR_EXT_STS_REPAIRED_ARRAYโ Test passed, recoverable error found and repaired using array repairs.IGSC_IFR_EXT_STS_REPAIRED_SUBSLICEโ Test passed, recoverable error found and repaired using Subslice swaps.IGSC_IFR_EXT_STS_REPAIRED_ARRAY_SUBSLICEโ Test passed, recoverable error found and repaired using array repairs and Subslice swaps.IGSC_IFR_EXT_STS_REPAIRED_ARRAY_FAULTY_SUBSLICEโ Test passed, recoverable error found and repaired using array repairs and faulty spare Subslice.IGSC_IFR_EXT_STS_REPAIR_NOT_SUPPORTEDโ Test completed, unrecoverable error found, part doesn't support in field repair.IGSC_IFR_EXT_STS_NO_RESORCESโ Test completed, unrecoverable error found, not enough repair resources available.IGSC_IFR_EXT_STS_NON_SUBSLICE_IN_ARRAYโ Test completed, unrecoverable error found, non-Subslice failure in Array test.IGSC_IFR_EXT_STS_NON_SUBSLICE_IN_SCANโ Test completed, unrecoverable error found, non-Subslice failure in Scan test.IGSC_IFR_EXT_STS_TEST_ERRORโ Test error.
Definition at line 1405 of file igsc_lib.h.
๐ง enum igsc_ifr_array_scan_test_status_mask
IFR array and scan test status bit masks ๐.
Enumerators โญ
IGSC_ARRAY_SCAN_STATUS_TEST_EXECUTION_MASKโ 0 - Test executed, 1 - Test not executed.IGSC_ARRAY_SCAN_STATUS_TEST_RESULT_MASKโ 0 - Test finished successfully, 1 - Error occurred during test execution.IGSC_ARRAY_SCAN_STATUS_FOUND_HW_ERROR_MASKโ 0 - HW error not found, 1 - HW error found.IGSC_ARRAY_SCAN_STATUS_HW_REPAIR_MASKโ 0 - HW error will be fully repaired or no HW error found, 1 - HW error will not be fully repaired.
Definition at line 1398 of file igsc_lib.h.
๐ฅ enum igsc_ifr_hw_capabilities_masks
IFR hw capabilities masks ๐.
Enumerators ๐ธ
IGSC_IRF_HW_CAPABILITY_IN_FIELD_REPAIRโ 1: both in field tests and in field repairs are supported. 0: only in field tests are supported.IGSC_IRF_HW_CAPABILITY_FULL_EU_MODE_SWITCHโ 1: Full EU mode switch is supported.
Definition at line 1467 of file igsc_lib.h.
๐ซ enum igsc_ifr_pending_reset
IFR pending reset values definition ๐ฆ.
Enumerators ๐
IGSC_IFR_PENDING_RESET_NONEโ 0 - No reset needed.IGSC_IFR_PENDING_RESET_SHALLOWโ 1 - Need to perform a shallow reset.IGSC_IFR_PENDING_RESET_DEEPโ 2 - Need to perform a deep reset.
Definition at line 1389 of file igsc_lib.h.
๐ enum igsc_ifr_previous_errors_masks
IFR previous errors masks ๐ญ.
Enumerators ๐
IGSC_IFR_PREV_ERROR_DSS_ERR_ARR_STS_PKTโ DSS Engine error in an array test status packet.IGSC_IFR_PREV_ERROR_NON_DSS_ERR_ARR_STS_PKTโ Non DSS Engine error in an array test status packet.IGSC_IFR_PREV_ERROR_DSS_REPAIRABLE_PKTโ DSS Repairable repair packet in an array test.IGSC_IFR_PREV_ERROR_DSS_UNREPAIRABLE_PKTโ DSS Unrepairable repair packet in an array test.IGSC_IFR_PREV_ERROR_NON_DSS_REPAIRABLE_PKTโ Non DSS Repairable repair packet in an array test.IGSC_IFR_PREV_ERROR_NON_DSS_UNREPAIRABLE_PKTโ Non DSS Unrepairable repair packet in an array test.IGSC_IFR_PREV_ERROR_DSS_ERR_SCAN_STS_PKTโ DSS failure in a scan test packet.IGSC_IFR_PREV_ERROR_NON_DSS_ERR_SCAN_STS_PKTโ Non DSS failure in a scan test packet.IGSC_IFR_PREV_ERROR_NOT_ENOUGH_SPARE_DSSโ Not enough spare DSS available.IGSC_IFR_PREV_ERROR_MIS_DSS_STS_PKT_ON_ARRโ Missing DSS status packet on array test.IGSC_IFR_PREV_ERROR_MIS_NON_DSS_STS_PKT_ON_ARRโ Missing non DSS status packet on array test.IGSC_IFR_PREV_ERROR_MIS_DSS_STS_PKT_ON_SCANโ Missing DSS status packet on scan test.IGSC_IFR_PREV_ERROR_MIS_NON_DSS_STS_PKT_ON_SCANโ Missing non DSS status packet on scan test.IGSC_IFR_PREV_ERROR_DSS_ENG_DONE_CLR_IN_ARRโ DSS Engine Done clear bit in array test status packet.IGSC_IFR_PREV_ERROR_NON_DSS_ENG_DONE_CLR_IN_ARRโ Non DSS Engine Done clear bit in array test status packet.IGSC_IFR_PREV_ERROR_UNEXPECTEDโ Unexpected test failure.
Definition at line 1476 of file igsc_lib.h.
๐ enum igsc_ifr_repairs_mask
IFR repairs masks ๐ซถ.
Enumerators ๐
IGSC_IFR_REPAIRS_MASK_DSS_EN_REPAIRโ DSS enable repair applied.IGSC_IFR_REPAIRS_MASK_ARRAY_REPAIRโ Array repair applied.IGSC_IFR_REPAIRS_MASK_FAILUREโ Repair failure occurred.
Definition at line 1498 of file igsc_lib.h.
๐ enum igsc_ifr_supported_tests_masks
IFR supported tests masks โจ.
Enumerators ๐
IGSC_IFR_SUPPORTED_TESTS_ARRAY_AND_SCANโ 1 - Array and Scan test.IGSC_IFR_SUPPORTED_TESTS_MEMORY_PPRโ 2 - Memory PPR.
Definition at line 1459 of file igsc_lib.h.
โจ Function Documentation โจ
okay bestie, this is the main character section โ the actual callable functions you'll be linking against ๐ซถ. Every single one of them returns IGSC_SUCCESS when things go well, or an error code when they don't, and basically all of them want a handle (your handle to the device) as the first thing. That's the pattern, periodt ๐
.
๐ igsc_device_commit_arb_svn
IGSC_EXPORT int igsc_device_commit_arb_svn (IN struct igsc_device_handle * handle, uint8_t * fw_error)
Sends the ARB SVN Commit HECI command. That's the whole job, no cap.
handleโ a handle to the device.fw_errorโ an error returned by firmware in case of failure; can beNULLif you don't need it.
Returns: IGSC_SUCCESS if successful, otherwise an error code. โจ
๐ igsc_device_get_min_allowed_arb_svn
IGSC_EXPORT int igsc_device_get_min_allowed_arb_svn (IN struct igsc_device_handle * handle, OUT uint8_t * min_allowed_svn)
Retrieves the Minimal allowed ARB SVN. lowkey a mouthful but she's simple: you give her a buffer, she fills it. ๐ฆ
handleโ a handle to the device.min_allowed_svnโ buffer for the minimal allowed ARB SVN value.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ธ igsc_device_ifr_bin_version
IGSC_EXPORT int igsc_device_ifr_bin_version (IN struct igsc_device_handle * handle, OUT struct igsc_ifr_bin_version * version)
Retrieves the IFR Binary Version from the device. iconic little version-fetch, honestly.
handleโ a handle to the device.versionโ the memory to store the obtained IFR binary version.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_device_oem_serial_number
IGSC_EXPORT int igsc_device_oem_serial_number (IN struct igsc_device_handle * handle, OUT struct igsc_oem_serial_number * sn)
Retrieves the OEM serial number from the device.
handleโ a handle to the device.snโ the memory to store the obtained OEM serial number.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_device_oem_version
IGSC_EXPORT int igsc_device_oem_version (IN struct igsc_device_handle * handle, OUT struct igsc_oem_version * version)
Retrieves the OEM Version from the device.
handleโ a handle to the device.versionโ the memory to store the obtained OEM version.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ง igsc_device_psc_version
IGSC_EXPORT int igsc_device_psc_version (IN struct igsc_device_handle * handle, OUT struct igsc_psc_version * version)
Retrieves the PSC Version from the device. yes, another version getter, she's serving consistency ๐ .
handleโ a handle to the device.versionโ the memory to store the obtained PSC version.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_ecc_config_get
IGSC_EXPORT int igsc_ecc_config_get (IN struct igsc_device_handle * handle, OUT uint8_t * cur_ecc_state, OUT uint8_t * pen_ecc_state)
Get ECC Configuration. you get two states back, because we're fancy like that.
handleโ a handle to the device.cur_ecc_stateโ current ECC state.pen_ecc_stateโ pending ECC state.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ฅ igsc_ecc_config_set
IGSC_EXPORT int igsc_ecc_config_set (IN struct igsc_device_handle * handle, IN uint8_t req_ecc_state, OUT uint8_t * cur_ecc_state, OUT uint8_t * pen_ecc_state)
Set ECC Configuration. you ask for a state, and she tells you where things actually landed โ that's the vibe check.
handleโ a handle to the device.req_ecc_stateโ requested ECC state.cur_ecc_stateโ current ECC state after command execution.pen_ecc_stateโ pending ECC state after command execution.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ฆ igsc_gfsp_count_tiles
IGSC_EXPORT int igsc_gfsp_count_tiles (IN struct igsc_device_handle * handle, OUT uint32_t * max_num_of_tiles)
Gets the number of tiles. tile inventory, basically ๐.
handleโ a handle to the device.max_num_of_tilesโ maximum number of tiles.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
โญ igsc_gfsp_heci_cmd
IGSC_EXPORT int igsc_gfsp_heci_cmd (struct igsc_device_handle * handle, uint32_t gfsp_cmd, uint8_t * in_buffer, size_t in_buffer_size, uint8_t * out_buffer, size_t out_buffer_size, size_t * actual_out_buffer_size)
Send a generic GFSP command and receive the response. this is the "you pick the command id, you bring your own buffers" one โ highkey versatile ๐
handleโ a handle to the device.gfsp_cmdโ command id.in_bufferโ pointer to the input buffer.in_buffer_sizeโ input buffer size.out_bufferโ pointer to the output buffer.out_buffer_sizeโ output buffer size.actual_out_buffer_sizeโ pointer to the actual data size returned in the output buffer.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_gfsp_memory_errors
IGSC_EXPORT int igsc_gfsp_memory_errors (IN struct igsc_device_handle * handle, IN OUT struct igsc_gfsp_mem_err * tiles)
Gets the GFSP number of memory errors. note the IN OUT โ you're passing in the tiles struct and she's filling it in for you, so it's a both-directions situation ๐.
handleโ a handle to the device.tilesโ structure to store errors.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_ifr_count_tiles
IGSC_EXPORT int igsc_ifr_count_tiles (IN struct igsc_device_handle * handle, OUT uint16_t * supported_tiles)
Counts the IFR supported tiles. tiny uint16_t queen that she is ๐.
handleโ a handle to the device.supported_tilesโ number of supported tiles.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_ifr_get_status_ext
IGSC_EXPORT int igsc_ifr_get_status_ext (IN struct igsc_device_handle * handle, OUT uint32_t * supported_tests, OUT uint32_t * hw_capabilities, OUT uint32_t * ifr_applied, OUT uint32_t * prev_errors, OUT uint32_t * pending_reset)
Retrieves the status of the GSC IFR device. this one hands you back five different bitmaps, so get your pointers ready bestie ๐ญ.
handleโ a handle to the device.supported_testsโ Bitmap holding the tests supported on the platform.- See also:
enum igsc_ifr_supported_tests_masks
- See also:
hw_capabilitiesโ Bitmap holding hw capabilities on the platform.- See also:
enum igsc_ifr_hw_capabilities_masks
- See also:
ifr_appliedโ Bitmap holding the in-field-repairs applied during boot.- See also:
enum igsc_ifr_repairs_mask
- See also:
prev_errorsโ Bitmap holding which errors were seen on this SOC in previous tests.- See also:
enum igsc_ifr_previous_errors_masks
- See also:
pending_resetโ Whether a reset is pending after running the test.- See also:
enum igsc_ifr_pending_reset
- See also:
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐งต igsc_ifr_get_tile_repair_info
IGSC_EXPORT int igsc_ifr_get_tile_repair_info (IN struct igsc_device_handle * handle, IN uint16_t tile_idx, OUT uint16_t * used_array_repair_entries, OUT uint16_t * available_array_repair_entries, OUT uint16_t * failed_dss)
Retrieves the IFR repair info. you point at one tile (by index) and she reports the repair receipts ๐ซถ.
handleโ a handle to the device.tile_idxโ the index of the tile the info is requested from.used_array_repair_entriesโ number of array repair entries used by FW.available_array_repair_entriesโ number of available array repair entries.failed_dssโ number of failed DSS.
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ igsc_ifr_run_array_scan_test
IGSC_EXPORT int igsc_ifr_run_array_scan_test (IN struct igsc_device_handle * handle, OUT uint32_t * status, OUT uint32_t * extended_status, OUT uint32_t * pending_reset, OUT uint32_t * error_code)
Runs the IFR Array and Scan tests on a GSC IFR device. actual test-running hours ๐ .
handleโ a handle to the device.statusโ Test run status.- See also:
enum igsc_ifr_array_scan_test_status_mask
- See also:
extended_statusโ Test run extended status.- See also:
enum igsc_ifr_array_scan_extended_status
- See also:
pending_resetโ Whether a reset is pending.- See also:
enum igsc_ifr_pending_reset
- See also:
error_codeโ The error code of the test (0- no error).
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ธ igsc_ifr_run_mem_ppr_test
IGSC_EXPORT int igsc_ifr_run_mem_ppr_test (IN struct igsc_device_handle * handle, OUT uint32_t * status, OUT uint32_t * pending_reset, OUT uint32_t * error_code)
Runs the IFR memory Post Package Repair (PPR) test on a GSC IFR device. post package repair, she's doing repairs after packaging, it's giving glow-up ๐ง.
handleโ a handle to the device.statusโ Test run status;0- Test is available and will be run after a reset; other values - error.pending_resetโ Whether a reset is pending.- See also:
enum igsc_ifr_pending_reset
- See also:
error_codeโ The error code of the test (0- no error).
Returns: IGSC_SUCCESS if successful, otherwise an error code.
๐ Author
Generated automatically by Doxygen for Intel Graphics System Controller Firmware Update Library from the source code. so no, a human didn't hand-write this, Doxygen did it and honestly she ate โจ
that's the whole page, bestie!! go forth and call your functions responsibly ๐
Intel Graphics System Controller Firmware Update Library โ that's the source/version this whole thing comes from, and this is the gsfp(3) page, section 3, mwah ๐ ๐
๐ฆ where this page comes from
- epel 10: intel-gsc-devel 1.3.1-1.el10_3 ยท Apache-2.0
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms