diff options
Diffstat (limited to 'src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H')
-rw-r--r-- | src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H | 1116 |
1 files changed, 1091 insertions, 25 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H index f0e498b66..fbb0cf9b1 100644 --- a/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H +++ b/src/import/chips/p9/procedures/hwp/memory/lib/mss_attribute_accessors.H @@ -10596,31 +10596,6 @@ fapi_try_exit: } /// -/// @brief ATTR_MSS_NEST_CAPABLE_FREQUENCIES getter -/// @param[in] const ref to the TARGET_TYPE_MCBIST -/// @param[out] uint64_t& reference to store the value -/// @note Generated by gen_accessors.pl generateParameters (NODIM A) -/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK -/// @note The NEST frequencies the memory chip can run at computed by the mss_freq. The -/// possibilities are ORed together. The platform uses these value and the MRW to -/// determine what frequency to boot the fabric (nest) if it can. There are two -/// values: 8G and -/// 9.6G -/// -inline fapi2::ReturnCode nest_capable_frequencies(const fapi2::Target<fapi2::TARGET_TYPE_MCBIST>& i_target, - uint64_t& o_value) -{ - - FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_NEST_CAPABLE_FREQUENCIES, i_target, o_value) ); - return fapi2::current_err; - -fapi_try_exit: - FAPI_ERR("failed accessing ATTR_MSS_NEST_CAPABLE_FREQUENCIES: 0x%lx (target: %s)", - uint64_t(fapi2::current_err), mss::c_str(i_target)); - return fapi2::current_err; -} - -/// /// @brief ATTR_MSS_VOLT_OVERRIDE getter /// @param[in] const ref to the TARGET_TYPE_MCBIST /// @param[out] uint8_t& reference to store the value @@ -19788,6 +19763,28 @@ fapi_try_exit: return fapi2::current_err; } +/// +/// @brief ATTR_MSS_MRW_SUPPORTED_FREQ getter +/// @param[out] uint32_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM A) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note List of memory frequencies supported by the current +/// system. +/// +inline fapi2::ReturnCode mrw_supported_freq(uint32_t* o_array) +{ + uint32_t l_value[4]; + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_MRW_SUPPORTED_FREQ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), l_value) ); + memcpy(o_array, &l_value, 16); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MSS_MRW_SUPPORTED_FREQ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + /// /// @brief ATTR_MSS_VPD_MR_0_VERSION_LAYOUT getter @@ -26221,6 +26218,1075 @@ fapi_try_exit: } +/// +/// @brief ATTR_FREQ_PROC_REFCLOCK_KHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The frequency of the processor refclock in kHz. Provided by the Machine Readable +/// Workbook. This can be overridden to adjust the refclock +/// frequency. +/// +inline fapi2::ReturnCode freq_proc_refclock_khz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_PROC_REFCLOCK_KHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_PROC_REFCLOCK_KHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_MEM_REFCLOCK getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The frequency of the memory refclock in MHz. Provided by the Machine Readable +/// Workbook. This is read by the set_ref_clock HWP to find out the desired +/// frequency. This can be overridden to adjust the refclock +/// frequency. +/// +inline fapi2::ReturnCode freq_mem_refclock(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_MEM_REFCLOCK, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_MEM_REFCLOCK: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_MAX_ALLOWED_DIMM_FREQ getter +/// @param[out] uint32_t* memory to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM A) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Maximum frequency (in MHz) that this system can run the DIMMs at. There are 5 +/// possible values determined by the dimm configuration. For configurations which +/// have mixed rank configurations, the lowest frequency based on ranks of either +/// DIMM is chosen. For example if there was a 1R and a 2R DIMM installed, and 1R +/// dual drop was a lower max freq than 2R dual drop, then the 1R max freq would be +/// the max allowed. [0]=One rank, single drop [1]=Two rank, single drop [2]=Four +/// rank, single drop [3]=One rank, dual drop [4]=Two rank, dual drop A value of +/// zero would indicate an unsupported configuration. Note: Do not use this +/// attribute to limit configurations, it is not checked during plug rules. If you +/// have an unsupported configuration, use the value 0 as the maximum +/// freq. +/// +inline fapi2::ReturnCode max_allowed_dimm_freq(uint32_t* o_array) +{ + uint32_t l_value[5]; + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MAX_ALLOWED_DIMM_FREQ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), l_value) ); + memcpy(o_array, &l_value, 20); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MAX_ALLOWED_DIMM_FREQ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_MEMVPD_POS getter +/// @param[in] const ref to the TARGET_TYPE_MCS +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (NODIM A) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The position of the MCS target's VPD selector data, relative to the EEPROM that +/// contains its data. For systems with a single EEPROM for all chips, this should +/// be equivalent to ATTR_FAPI_POS (the logical MCA position). For systems with an +/// EEPROM per chip, this value should be equivalent to +/// ATTR_CHIP_UNIT_POS. +/// +inline fapi2::ReturnCode memvpd_pos(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEMVPD_POS, i_target, o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MEMVPD_POS: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_REQUIRED_SYNCH_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Specify the system policy to enforce synchronous mode between memory and nest. +/// This drives the value of ATTR_MEM_IN_SYNCH_MODE. UNDETERMINED : Run +/// synchronously if the dimm and nest freq matches ALWAYS : Require matching +/// frequencies and deconfigure memory that does not match the nest NEVER : Do not +/// run synchronously, even if the frequencies +/// match +/// +inline fapi2::ReturnCode required_synch_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_REQUIRED_SYNCH_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_REQUIRED_SYNCH_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + + +/// +/// @brief ATTR_IS_SIMULATION getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note env: 1 = Awan/HWSimulator. 0 = +/// Simics/RealHW. +/// +inline fapi2::ReturnCode is_simulation(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_IS_SIMULATION, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_IS_SIMULATION: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_EXECUTION_PLATFORM getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Which execution platform the HW Procedure is running on Some HWPs (e.g. special +/// wakeup) use different registers for different platforms to avoid arbitration +/// problems when multiple platforms do the same thing +/// concurrently +/// +inline fapi2::ReturnCode execution_platform(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_EXECUTION_PLATFORM, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_EXECUTION_PLATFORM: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + + +/// +/// @brief ATTR_FREQ_PB_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The frequency of a processor's nest mesh clock, in MHz. This is the same for all +/// chips in the system. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode freq_pb_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_PB_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_PB_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_A_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The frequency of a processor's A link clocks, in MHz. This is the same for all +/// chips in the system. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode freq_a_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_A_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_A_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_X_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The frequency of a processor's X link clocks, in MHz. This is the same for all +/// chips in the system. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode freq_x_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_X_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_X_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_CORE_FLOOR_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The lowest frequency that a core can be set to in MHz. This is the same for all +/// cores in the system. Provided by the MVPD #V and is calculated as the max of the +/// Power Save +/// frequencies. +/// +inline fapi2::ReturnCode freq_core_floor_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_CORE_FLOOR_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_CORE_FLOOR_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_CORE_NOMINAL_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The nominal core frequency in MHz. This is the same for all cores in the system. +/// Provided by the #V bucket of module +/// VPD. +/// +inline fapi2::ReturnCode freq_core_nominal_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_CORE_NOMINAL_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_CORE_NOMINAL_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_CORE_CEILING_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The maximum core frequency in MHz. This is the same for all cores in the system. +/// Provided by the #V bucket of module VPD and is calculated as the minimum of the +/// turbo +/// frequencies. +/// +inline fapi2::ReturnCode freq_core_ceiling_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_CORE_CEILING_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_CORE_CEILING_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PM_SAFE_FREQUENCY_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Frequency (in MHz) to move to if the Power Management function fails. This is +/// the same for all cores in the system. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode pm_safe_frequency_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PM_SAFE_FREQUENCY_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PM_SAFE_FREQUENCY_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_FREQ_PCIE_MHZ getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note The frequency of a processor's PCI-e bus in MHz. This is the same for all PCI-e +/// busses in the system. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode freq_pcie_mhz(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_FREQ_PCIE_MHZ, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_FREQ_PCIE_MHZ: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_ASYNC_SAFE_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Set to force all fabric asynchronous boundary crossings into safe +/// mode. +/// +inline fapi2::ReturnCode proc_fabric_async_safe_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_ASYNC_SAFE_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_ASYNC_SAFE_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_A_BUS_WIDTH getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP A bus width. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_a_bus_width(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_A_BUS_WIDTH, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_A_BUS_WIDTH: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_X_BUS_WIDTH getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP X bus width. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_x_bus_width(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_X_BUS_WIDTH, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_X_BUS_WIDTH: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_CORE_FLOOR_RATIO getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP core floor/nest frequency +/// ratio +/// +inline fapi2::ReturnCode proc_fabric_core_floor_ratio(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_CORE_FLOOR_RATIO, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), + o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_CORE_FLOOR_RATIO: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_CORE_CEILING_RATIO getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP core celing/nest frequency +/// ratio +/// +inline fapi2::ReturnCode proc_fabric_core_ceiling_ratio(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_CORE_CEILING_RATIO, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), + o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_CORE_CEILING_RATIO: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_PUMP_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP Fabric broadcast scope configuration. CHIP_IS_NODE = MODE1 = +/// default CHIP_IS_GROUP = MODE2 Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_pump_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_PUMP_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_PUMP_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_CCSM_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP topology configuration. 0 = default = 1 or 2 hop topology (PHYP +/// image spans system) 1 = 3 hop topology (PHYP image spans group). Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_ccsm_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_CCSM_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_CCSM_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_SMP_OPTICS_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor SMP optics mode. 0 = default = Optics_is_X_bus 1 = Optics_is_A_bus +/// Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_smp_optics_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_SMP_OPTICS_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_SMP_OPTICS_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_CAPI_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor CAPI attachement protocol mode. 0 = default = no: SMPA CAPI +/// attachement 1 = yes: SMPA CAPI attachement Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_capi_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_CAPI_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_CAPI_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_FABRIC_ADDR_BAR_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor memory map configuration. 0 = default = large system address map 1 = +/// small system address map Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_fabric_addr_bar_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_FABRIC_ADDR_BAR_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_FABRIC_ADDR_BAR_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_GB_PERCENTAGE getter +/// @param[out] int8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Guardband percentage to apply to baseline epsilon calculations Set by +/// p9_fbc_eff_config. +/// +inline fapi2::ReturnCode proc_eps_gb_percentage(int8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_GB_PERCENTAGE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_GB_PERCENTAGE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_TABLE_TYPE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Processor epsilon table type. Used to calculate the processor nest epsilon +/// register values. Provided by the +/// MRW. +/// +inline fapi2::ReturnCode proc_eps_table_type(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_TABLE_TYPE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_TABLE_TYPE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_READ_CYCLES_T0 getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Calculated read tier0 epsilon protection +/// count. +/// +inline fapi2::ReturnCode proc_eps_read_cycles_t0(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_READ_CYCLES_T0, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_READ_CYCLES_T0: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_READ_CYCLES_T1 getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Calculated read tier1 epsilon protection +/// count. +/// +inline fapi2::ReturnCode proc_eps_read_cycles_t1(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_READ_CYCLES_T1, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_READ_CYCLES_T1: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_READ_CYCLES_T2 getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Calculated read tier2 epsilon protection +/// count. +/// +inline fapi2::ReturnCode proc_eps_read_cycles_t2(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_READ_CYCLES_T2, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_READ_CYCLES_T2: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_WRITE_CYCLES_T1 getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Calculated write tier1 epsilon protection +/// count. +/// +inline fapi2::ReturnCode proc_eps_write_cycles_t1(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T1, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_WRITE_CYCLES_T1: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_EPS_WRITE_CYCLES_T2 getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Calculated write tier2 epsilon protection +/// count. +/// +inline fapi2::ReturnCode proc_eps_write_cycles_t2(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_EPS_WRITE_CYCLES_T2, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_EPS_WRITE_CYCLES_T2: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_DMI_REFCLOCK_SWIZZLE getter +/// @param[in] const ref to the TARGET_TYPE_MCS +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (NODIM A) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Define DMI Ref clock/Swizzle for Centaur. Provided by the +/// MRW +/// +inline fapi2::ReturnCode dmi_refclock_swizzle(const fapi2::Target<fapi2::TARGET_TYPE_MCS>& i_target, uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_DMI_REFCLOCK_SWIZZLE, i_target, o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_DMI_REFCLOCK_SWIZZLE: 0x%lx (target: %s)", + uint64_t(fapi2::current_err), mss::c_str(i_target)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_SYSTEM_IPL_PHASE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Define context for current phase of system +/// IPL. +/// +inline fapi2::ReturnCode system_ipl_phase(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SYSTEM_IPL_PHASE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_SYSTEM_IPL_PHASE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_IS_MPIPL getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Indicates if current IPL is +/// memory-preserving +/// +inline fapi2::ReturnCode is_mpipl(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_IS_MPIPL, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_IS_MPIPL: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_XSCOM_BAR_BASE_ADDR_OFFSET getter +/// @param[out] uint64_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note XSCOM BAR base address offset creator: platform consumer: p9_sbe_scominit +/// firmware notes: Defines 16GB range (size implied) mapped for XSCOM usage +/// Attribute holds offset (relative to chip MMIO origin) to program into chip +/// address range field of BAR -- RA bits 22:29 (excludes system/memory +/// select/group/chip +/// fields) +/// +inline fapi2::ReturnCode proc_xscom_bar_base_addr_offset(uint64_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_XSCOM_BAR_BASE_ADDR_OFFSET, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), + o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_XSCOM_BAR_BASE_ADDR_OFFSET: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PROC_LPC_BAR_BASE_ADDR_OFFSET getter +/// @param[out] uint64_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note LPC BAR base address offset creator: platform consumer: p9_sbe_scominit firmware +/// notes: Defines 4GB range (size implied) mapped for LPC usage Attribute holds +/// offset (relative to chip MMIO origin) to program into chip address range field +/// of BAR -- RA bits 22:31 (excludes system/memory select/group/chip +/// fields) +/// +inline fapi2::ReturnCode proc_lpc_bar_base_addr_offset(uint64_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PROC_LPC_BAR_BASE_ADDR_OFFSET, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), + o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PROC_LPC_BAR_BASE_ADDR_OFFSET: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_MEM_MIRROR_PLACEMENT_POLICY getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Define placement policy/scheme for non-mirrored/mirrored memory layout NORMAL = +/// non-mirrored start: 0, mirrored start: 1024TB FLIPPED = mirrored start: 0, +/// non-mirrored start: 512TB Set by platform. Used by +/// mss_eff_grouping. +/// +inline fapi2::ReturnCode mem_mirror_placement_policy(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MEM_MIRROR_PLACEMENT_POLICY, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MEM_MIRROR_PLACEMENT_POLICY: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_MSS_INTERLEAVE_ENABLE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Used in the setting of groups. It is a bit vector. If the value BITWISE_AND 0x01 +/// = 0x01 then groups of 1 are enabled, if the value BITWISE_AND 0x02 = 0x02, then +/// groups of 2 are possible, if the value BITWISE_AND 0x04 = 0x04, then group of 3 +/// are possible, if the value BITWISE_AND 0x08 = 0x08, then groups of 4 are +/// possible, if the value BITWISE_AND 0x20 = 0x20, then groups of 6 are possible, +/// if the value BITWISE_AND 0x80 = 0x80, then groups of 8 are possible. If no +/// groups can formed according to this input, then an error will be thrown. +/// Provided by the +/// MRW +/// +inline fapi2::ReturnCode mss_interleave_enable(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MSS_INTERLEAVE_ENABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MSS_INTERLEAVE_ENABLE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_MRW_HW_MIRRORING_ENABLE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note TRUE : HW mirroring is enabled. FALSE : HW mirroring is disabled. Provided by +/// the +/// MRW. +/// +inline fapi2::ReturnCode mrw_hw_mirroring_enable(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_MRW_HW_MIRRORING_ENABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_MRW_HW_MIRRORING_ENABLE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + + +/// +/// @brief ATTR_NEST_PLL_BUCKET getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Select Nest I2C and pll setting from one of the supported +/// frequencies +/// +inline fapi2::ReturnCode nest_pll_bucket(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_NEST_PLL_BUCKET, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_NEST_PLL_BUCKET: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_RISK_LEVEL getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note HWP/Init "risk level" enabled. Used by HB to pass to HB driven +/// HWPs +/// +inline fapi2::ReturnCode risk_level(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_RISK_LEVEL, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_RISK_LEVEL: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_DISABLE_HBBL_VECTORS getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note BootLoader HWP flag to not place 12K exception vectors. This flag is only +/// applicable when security is +/// disabled. +/// +inline fapi2::ReturnCode disable_hbbl_vectors(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_DISABLE_HBBL_VECTORS, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_DISABLE_HBBL_VECTORS: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_BOOT_FLAGS getter +/// @param[out] uint32_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Switch to using a flag to indicate SEEPROM side +/// SBE +/// +inline fapi2::ReturnCode boot_flags(uint32_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_BOOT_FLAGS, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_BOOT_FLAGS: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_SYS_FORCE_ALL_CORES getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Indicate that p9_sbe_select_ex should force selection to ALL good EX chiplets +/// having good cores even if only a single EX chiplet mode is +/// executed. +/// +inline fapi2::ReturnCode sys_force_all_cores(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SYS_FORCE_ALL_CORES, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_SYS_FORCE_ALL_CORES: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_SECURITY_ENABLE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Holds the state of Security Access Bit +/// (SAB) +/// +inline fapi2::ReturnCode security_enable(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SECURITY_ENABLE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_SECURITY_ENABLE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_SECURITY_MODE getter +/// @param[out] uint8_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note If SBE image has ATTR_SECURITY_MODE == 0b1, then leave SAB bit as is Else +/// ATTR_SECURITY_MODE == 0b0, then clear the SAB +/// bit +/// +inline fapi2::ReturnCode security_mode(uint8_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_SECURITY_MODE, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_SECURITY_MODE: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PIBMEM_REPAIR0 getter +/// @param[out] uint64_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Pibmem repair attribute +/// 0 +/// +inline fapi2::ReturnCode pibmem_repair0(uint64_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PIBMEM_REPAIR0, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PIBMEM_REPAIR0: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PIBMEM_REPAIR1 getter +/// @param[out] uint64_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Pibmem repair attribute +/// 1 +/// +inline fapi2::ReturnCode pibmem_repair1(uint64_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PIBMEM_REPAIR1, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PIBMEM_REPAIR1: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + +/// +/// @brief ATTR_PIBMEM_REPAIR2 getter +/// @param[out] uint64_t& reference to store the value +/// @note Generated by gen_accessors.pl generateParameters (SYSTEM) +/// @return fapi2::ReturnCode - FAPI2_RC_SUCCESS iff get is OK +/// @note Pibmem repair attribute +/// 2 +/// +inline fapi2::ReturnCode pibmem_repair2(uint64_t& o_value) +{ + + FAPI_TRY( FAPI_ATTR_GET(fapi2::ATTR_PIBMEM_REPAIR2, fapi2::Target<fapi2::TARGET_TYPE_SYSTEM>(), o_value) ); + return fapi2::current_err; + +fapi_try_exit: + FAPI_ERR("failed accessing ATTR_PIBMEM_REPAIR2: 0x%lx (system target)", + uint64_t(fapi2::current_err)); + return fapi2::current_err; +} + + } #endif |