summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorBill Schwartz <whs@us.ibm.com>2015-11-18 14:01:33 -0600
committerDaniel M. Crowell <dcrowell@us.ibm.com>2016-03-24 10:27:41 -0400
commitb19c61f81dacb5088180946c5f415909965dd1fa (patch)
treedc5d723cfba93998f68c0e85de11d05ab07b8b3c /src/include
parent16ff4c0894f726ea97362536af36a413b1f255cd (diff)
downloadtalos-hostboot-b19c61f81dacb5088180946c5f415909965dd1fa.tar.gz
talos-hostboot-b19c61f81dacb5088180946c5f415909965dd1fa.zip
Changes related to packaging of memory vpd on Nimbus - part 1
Lower level vpd and targeting plumbing changes for Nimbus direct memory Change-Id: I6ac97404f5ef7432d14192945f9a1e258ed66dd3 RTC: 128112 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/711 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include')
-rw-r--r--src/include/usr/devicefw/userif.H29
-rw-r--r--src/include/usr/hwas/common/deconfigGard.H14
-rw-r--r--src/include/usr/hwas/common/hwas.H14
-rw-r--r--src/include/usr/hwas/common/hwas_reasoncodes.H3
-rw-r--r--src/include/usr/vpd/dvpdenums.H140
-rw-r--r--src/include/usr/vpd/vpdreasoncodes.H5
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,
OpenPOWER on IntegriCloud