diff options
Diffstat (limited to 'src/include/usr')
-rw-r--r-- | src/include/usr/devicefw/userif.H | 29 | ||||
-rw-r--r-- | src/include/usr/hwas/common/deconfigGard.H | 14 | ||||
-rw-r--r-- | src/include/usr/hwas/common/hwas.H | 14 | ||||
-rw-r--r-- | src/include/usr/hwas/common/hwas_reasoncodes.H | 3 | ||||
-rw-r--r-- | src/include/usr/vpd/dvpdenums.H | 140 | ||||
-rw-r--r-- | src/include/usr/vpd/vpdreasoncodes.H | 5 |
6 files changed, 191 insertions, 14 deletions
diff --git a/src/include/usr/devicefw/userif.H b/src/include/usr/devicefw/userif.H index e30595e40..06195f326 100644 --- a/src/include/usr/devicefw/userif.H +++ b/src/include/usr/devicefw/userif.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2011,2015 */ +/* Contributors Listed Below - COPYRIGHT 2011,2016 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -54,8 +54,8 @@ namespace DeviceFW PRESENT, FSI, SPD, - MVPD, - CVPD, + MVPD, // Module (processor) VPD + CVPD, // Centaur (memory buffer) VPD SCAN, EEPROM, GPIO, @@ -65,6 +65,7 @@ namespace DeviceFW TPM, SIO, AHB_SIO, + DVPD, // Direct access memory VPD LAST_ACCESS_TYPE, }; @@ -192,6 +193,28 @@ namespace DeviceFW static_cast<uint64_t>(( i_location )) /** + * Construct the device addressing parameters for the DVPD (Direct access + * memory VPD) device ops. + * @param[in] i_record - The enumeration of the DVPD record to access. + * @param[in] i_keyword - The enumeration of the DVPD keyword, located + * within the i_record Record to access. + */ + #define DEVICE_DVPD_ADDRESS( i_record, i_keyword )\ + DEVICE_DVPD_FORCE_ADDRESS( i_record, i_keyword, VPD::AUTOSELECT ) + + /** + * Construct the device addressing parameters for the DVPD device ops. + * @param[in] i_record - The enumeration of the DVPD record to access. + * @param[in] i_keyword - The enumeration of the DVPD keyword, located + * within the i_record Record to access. + * @param[in] i_location - The location of the data (PNOR/SEEPROM) + see vpd_if.H + */ + #define DEVICE_DVPD_FORCE_ADDRESS( i_record, i_keyword, i_location )\ + DeviceFW::DVPD, static_cast<uint64_t>(( i_record )),\ + static_cast<uint64_t>(( i_keyword )),\ + static_cast<uint64_t>(( i_location )) + /** * Construct the device addressing parameters for the SCAN device ops. * @param[in] i_ring - The ring address to scan * @param[in] i_ringlen - The length of the ring to scan in bits diff --git a/src/include/usr/hwas/common/deconfigGard.H b/src/include/usr/hwas/common/deconfigGard.H index 7c11d8643..4e6f51cd9 100644 --- a/src/include/usr/hwas/common/deconfigGard.H +++ b/src/include/usr/hwas/common/deconfigGard.H @@ -118,8 +118,11 @@ public: // set by call_mss_getecid() in dmi_training.c DECONFIGURED_BY_MEMORY_CONFIG, // BASE | 0x03 - // set by presentByAssoc() when a MCS has no MEMBUFs - DECONFIGURED_BY_NO_CHILD_MEMBUF, // BASE | 0x04 + // set by presentByAssoc() when a MCS has no MEMBUFs or MCAs + DECONFIGURED_BY_NO_CHILD_MEMBUF_OR_MCA, // BASE | 0x04 + // TODO RTC 149367 Remove deprecated enumeration once hwsv is not using + DECONFIGURED_BY_NO_CHILD_MEMBUF = //Deprecated + DECONFIGURED_BY_NO_CHILD_MEMBUF_OR_MCA, // set by deconfigureAssocProc() in hwas/common/deconfigGard.C DECONFIGURED_BY_BUS_DECONFIG, // BASE | 0x05 @@ -145,8 +148,11 @@ public: // set by presentByAssoc() when a MEMBUF has no MBAs DECONFIGURED_BY_NO_CHILD_MBA, // BASE | 0x0C - // set by presentByAssoc() when a DIMM has no MBA - DECONFIGURED_BY_NO_PARENT_MBA, // BASE | 0x0D + // set by presentByAssoc() when a DIMM has no MBA or MCA + DECONFIGURED_BY_NO_PARENT_MBA_OR_MCA, // BASE | 0x0D + // TODO RTC 149367 Remove deprecated enumeration once hwsv is not using + DECONFIGURED_BY_NO_PARENT_MBA = //Deprecated + DECONFIGURED_BY_NO_PARENT_MBA_OR_MCA, CONFIGURED_BY_RESOURCE_RECOVERY, // BASE | 0x0E diff --git a/src/include/usr/hwas/common/hwas.H b/src/include/usr/hwas/common/hwas.H index 7c5a4202a..2a6d59ed9 100644 --- a/src/include/usr/hwas/common/hwas.H +++ b/src/include/usr/hwas/common/hwas.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* Contributors Listed Below - COPYRIGHT 2012,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -152,7 +152,7 @@ typedef std::vector<TargetInfo> TargetInfoVector; * @brief Invokes presentByAssoc * * Called by discoverTargets(). This function queries the system and populates - * a vector of structs representing functional MCS, MEMBUFS, DIMMS. + * a vector of structs representing functional MCS, MEMBUFS, MBAs, MCAs,DIMMS. * This vector is then passed to presentByAssoc() which systematically adds * targets to another vector to be deconfigured based on their related targets * Upon completion of presentByAssoc(), this function iterates @@ -162,15 +162,19 @@ typedef std::vector<TargetInfo> TargetInfoVector; void invokePresentByAssoc(); /** - * @brief Algorithm to check if a MCS has a MEMBUF, a MEMBUF has a MCS and DIMM, - * and a DIMM has a MEMBUF. + * @brief Algorithm to validate the memory target structure. + * + * For non direct memory, check if a MCS has a MEMBUF, a MEMBUF has a MBA, + * and the MBA has a DIMM. + * + * For direct memory, check if a MCS has a MCA, and a MCA has a DIMM. * * The vector o_funcTargets is sorted by affinity path to allow a single pass * with some backtracking to check every scenario more efficiently. * These checks are needed because of scenarios where targets are non-present * and their related targets are not marked as deconfigured * - * @param[in/out] io_funcTargets A vector of functional MCS, MEMBUFS, DIMMS + * @param[in/out] io_funcTargets A vector of functional memory targets * @param[out] o_targToDeconfig A vector of targets to deconfigure, done * this way to allow unit tests */ diff --git a/src/include/usr/hwas/common/hwas_reasoncodes.H b/src/include/usr/hwas/common/hwas_reasoncodes.H index 48e10a699..cceede164 100644 --- a/src/include/usr/hwas/common/hwas_reasoncodes.H +++ b/src/include/usr/hwas/common/hwas_reasoncodes.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2012,2015 */ +/* Contributors Listed Below - COPYRIGHT 2012,2016 */ /* [+] International Business Machines Corp. */ /* */ /* */ @@ -53,6 +53,7 @@ namespace HWAS RC_SYSAVAIL_NO_MEMBUFS_FUNC = HWAS_COMP_ID | 0x09, RC_RESOURCE_RECOVERED = HWAS_COMP_ID | 0x0A, RC_SYSAVAIL_MISSING_CRITICAL_RESOURCE = HWAS_COMP_ID | 0x0B, + RC_SYSAVAIL_NO_MCAS_FUNC = HWAS_COMP_ID | 0x0C, }; }; diff --git a/src/include/usr/vpd/dvpdenums.H b/src/include/usr/vpd/dvpdenums.H new file mode 100644 index 000000000..5f7e99832 --- /dev/null +++ b/src/include/usr/vpd/dvpdenums.H @@ -0,0 +1,140 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/include/usr/vpd/dvpdenums.H $ */ +/* */ +/* OpenPOWER HostBoot Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2013,2016 */ +/* [+] International Business Machines Corp. */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#ifndef __DVPDENUMS_H +#define __DVPDENUMS_H + +#include <vpd/ipvpdenums.H> + +namespace DVPD +{ + +//TODO RTC 144519 Replace with list of direct memory records and keywords +// from memory team. + /** + * @brief Enumeration for the DVPD Records that contain + * the keyword enumerations below. + */ + enum dvpdRecord + { + DVPD_FIRST_RECORD = 0x00, + VEIR = DVPD_FIRST_RECORD, + VER0 = 0x01, + MER0 = 0x02, + VSPD = 0x03, + VINI = 0x04, + OPFR = 0x05, + VNDR = 0x06, + SPDX = 0x07, + // Last Record + DVPD_LAST_RECORD, + DVPD_TEST_RECORD, // Test purposes ONLY! + + //Start common IPVPD enums + DVPD_INVALID_RECORD = IPVPD::INVALID_RECORD, + }; + + /** + * @brief Enumerations for DVPD keywords that can be + * accessed in the DVPD. + */ + enum dvpdKeyword + { + DVPD_FIRST_KEYWORD = 0x00, + pdI = DVPD_FIRST_KEYWORD, + PF = 0x01, + MT = 0x02, + MR = 0x03, + pdA = 0x04, + EL = 0x05, + LM = 0x06, + MW = 0x07, + MV = 0x08, + AM = 0x09, + VZ = 0x0a, + pdD = 0x0b, + MX = 0x0c, + DW = 0x0d, + PN = 0x0e, + SN = 0x0f, + DR = 0x10, + CE = 0x11, + FN = 0x12, + CC = 0x13, + HE = 0x14, + CT = 0x15, + HW = 0x16, + VD = 0x17, + VN = 0x18, + VP = 0x19, + VS = 0x1a, + M0 = 0x1b, + M1 = 0x1c, + M2 = 0x1d, + M3 = 0x1e, + M4 = 0x1f, + M5 = 0x20, + M6 = 0x21, + M7 = 0x22, + M8 = 0x23, + T1 = 0x24, + T2 = 0x25, + T4 = 0x26, + T5 = 0x27, + T6 = 0x28, + T8 = 0x29, + Q0 = 0x2a, + Q1 = 0x2b, + Q2 = 0x2c, + Q3 = 0x2d, + Q4 = 0x2e, + Q5 = 0x2f, + Q6 = 0x30, + Q7 = 0x31, + Q8 = 0x32, + K0 = 0x33, + K1 = 0x34, + K2 = 0x35, + K3 = 0x36, + K4 = 0x37, + K5 = 0x38, + K6 = 0x39, + K7 = 0x3a, + K8 = 0x3b, + MM = 0x3c, + SS = 0x3d, + ET = 0x3e, + + // Last Keyword + DVPD_LAST_KEYWORD, + DVPD_TEST_KEYWORD, // Test purposes ONLY! + + //Start common IPVPD enums + FULL_RECORD = IPVPD::FULL_RECORD, + DVPD_INVALID_KEYWORD = IPVPD::INVALID_KEYWORD, + }; + +}; // end DVPD + +#endif diff --git a/src/include/usr/vpd/vpdreasoncodes.H b/src/include/usr/vpd/vpdreasoncodes.H index 9692a4a78..ca1f34872 100644 --- a/src/include/usr/vpd/vpdreasoncodes.H +++ b/src/include/usr/vpd/vpdreasoncodes.H @@ -5,7 +5,7 @@ /* */ /* OpenPOWER HostBoot Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2013,2015 */ +/* Contributors Listed Below - COPYRIGHT 2013,2016 */ /* [+] Google Inc. */ /* [+] International Business Machines Corp. */ /* */ @@ -65,6 +65,9 @@ enum vpdModuleId // PVPD VPD_PVPD_PRESENCEDETECT = 0x50, + // DVPD + VPD_DVPD_PRESENCEDETECT = 0x58, + // DIMM SPD VPD_SPD_GET_KEYWORD_VALUE = 0x61, VPD_SPD_GET_VALUE = 0x62, |