gsfp(3)

๐Ÿ“ฆ
version 1.3.1 ยท 3 versions
, in epel 10

๐Ÿ’… 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 a BIT(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 a 2 ๐Ÿซ 
  • 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 in errors array (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 firmware enum 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 be NULL if 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
  • hw_capabilities โ€” Bitmap holding hw capabilities on the platform.
    • See also: enum igsc_ifr_hw_capabilities_masks
  • ifr_applied โ€” Bitmap holding the in-field-repairs applied during boot.
    • See also: enum igsc_ifr_repairs_mask
  • prev_errors โ€” Bitmap holding which errors were seen on this SOC in previous tests.
    • See also: enum igsc_ifr_previous_errors_masks
  • pending_reset โ€” Whether a reset is pending after running the test.
    • See also: enum igsc_ifr_pending_reset

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
  • extended_status โ€” Test run extended status.
    • See also: enum igsc_ifr_array_scan_extended_status
  • pending_reset โ€” Whether a reset is pending.
    • See also: enum igsc_ifr_pending_reset
  • 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
  • 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