/openbmc/docs/designs/ |
H A D | vpd-collection.md | 1 # VPD collection app on OpenBMC 9 On OpenBMC, Vital Product Data (VPD) collection is limited to only one or two 11 systems, the BMC also supports just one VPD format, the [OpenPower VPD] [1] 13 VPD, which the BMC currently does not support. Certain FRUs also have keyword 14 format VPD. 16 The BMC requires to read VPD for all FRUs for several reasons: 18 - Some of the VPD information such as FRU part number, serial number need to be 26 - There are use cases for the BMC to send VPD data to the host 28 get VPD that is not directly accessible to it. 30 The VPD data itself may reside on an EEPROM (typical) or may be synthesized out [all …]
|
/openbmc/phosphor-power/phosphor-regulators/src/ |
H A D | vpd.hpp | 30 * @class VPD 32 * Abstract base class that provides an interface to hardware VPD (Vital Product 35 * The interface is used to obtain VPD keyword values. 37 class VPD class 41 VPD() = default; 42 VPD(const VPD&) = delete; 43 VPD(VPD&&) = delete; 44 VPD& operator=(const VPD&) = delete; 45 VPD& operator=(VPD&&) = delete; 46 virtual ~VPD() = default; [all …]
|
/openbmc/openpower-vpd-parser/vpd-manager/src/ |
H A D | vpd_parser_main.cpp | 17 * It recieves path of the VPD file(mandatory) and path to a config 21 * Steps to get parsed VPD. 22 * - Pass VPD file path and config file (if applicable). 23 * - Read VPD file to vector. 25 * parser object to get the Parsed VPD map. 26 * - If VPD format is other than the existing formats. Follow the steps 40 CLI::App app{"VPD-parser-app - APP to parse VPD. "}; in main() 42 app.add_option("-f, --file", vpdFilePath, "VPD file path")->required(); in main() 50 vpd::logging::logMessage("VPD file path recieved" + vpdFilePath); in main() 52 // VPD file path is a mandatory parameter to execute any parser. in main() [all …]
|
H A D | parser_factory.cpp | 10 namespace vpd namespace 14 * @brief Type of VPD formats. 18 IPZ_VPD, /**< IPZ VPD type */ 19 KEYWORD_VPD, /**< Keyword VPD type */ 20 DDR4_DDIMM_MEMORY_VPD, /**< DDR4 DDIMM Memory VPD type */ 21 DDR5_DDIMM_MEMORY_VPD, /**< DDR5 DDIMM Memory VPD type */ 22 DDR4_ISDIMM_MEMORY_VPD, /**< DDR4 ISDIMM Memory VPD type */ 23 DDR5_ISDIMM_MEMORY_VPD, /**< DDR5 ISDIMM Memory VPD type */ 24 INVALID_VPD_FORMAT /**< Invalid VPD type */ 28 * @brief API to get the type of VPD. [all …]
|
H A D | manager_main.cpp | 17 * @brief Main function for VPD parser application. 33 vpd::constants::vpdCollectionInterface); in main() 35 auto vpdManager = std::make_shared<vpd::Manager>( in main() 40 std::make_shared<vpd::BiosHandler<vpd::IbmBiosHandler>>( in main() 46 vpd::logging::logMessage("Start VPD-Manager event loop"); in main() 58 vpd::logging::logMessage("VPD-Manager service failed to start."); in main() 59 vpd::EventLogger::createSyncPel( in main() 60 vpd::EventLogger::getErrorType(l_ex), in main() 61 vpd::types::SeverityType::Critical, __FILE__, __FUNCTION__, 0, in main() 62 vpd::EventLogger::getErrorMsg(l_ex), std::nullopt, std::nullopt, in main()
|
/openbmc/openpower-vpd-parser/wait-vpd-parser/src/ |
H A D | wait_vpd_parser.cpp | 14 * @brief API to check for VPD collection status 16 * This API checks for VPD manager collection status by reading the 17 * collection "Status" property exposed by vpd-manager on Dbus. The read logic 31 auto l_logger = vpd::Logger::getLoggerInstance(); in checkVpdCollectionStatus() 37 "s for VPD collection status ...."); in checkVpdCollectionStatus() 40 l_retries != vpd::constants::VALUE_0; --l_retries) in checkVpdCollectionStatus() 46 const auto l_propValue = vpd::dbusUtility::readDbusProperty( in checkVpdCollectionStatus() 47 IFACE, OBJPATH, vpd::constants::vpdCollectionInterface, in checkVpdCollectionStatus() 52 if (*l_val == vpd::constants::vpdCollectionCompleted) in checkVpdCollectionStatus() 54 l_logger->logMessage("VPD collection is completed"); in checkVpdCollectionStatus() [all …]
|
/openbmc/openpower-vpd-parser/vpd-tool/src/ |
H A D | vpd_tool_main.cpp | 11 * @brief Resets the VPD on DBus for all the Frus. 14 * manager(PIM) DBus service and the VPD manager service. VPD manager service 15 * collects the VPD for all the FRU's listed on the system config JSON and calls 16 * PIM to publish VPD on DBus. 24 if (vpd::utils::isChassisPowerOff()) in forceReset() 26 vpd::VpdTool l_vpdToolObj; in forceReset() 33 return vpd::constants::FAILURE; in forceReset() 55 …<< "This option resets some of the system VPD keywords to their default values. Do you really wish… in doMfgClean() 60 return vpd::constants::SUCCESS; in doMfgClean() 64 vpd::VpdTool l_vpdToolObj; in doMfgClean() [all …]
|
/openbmc/openpower-vpd-parser/vpd-manager/include/ |
H A D | keyword_vpd_parser.hpp | 6 namespace vpd namespace 10 * @brief Concrete class to implement Keyword VPD parsing 13 * functionality to implement parsing logic for Keyword VPD format. 34 * @brief A wrapper function to parse the keyword VPD binary data. 39 * @throw DataException - VPD is not valid 46 * @brief Parse the VPD data and emplace them as pair into the Map. 48 * @throw DataException - VPD data size is 0, check VPD 59 * @param[in] i_checkSumStart - VPD iterator pointing at checksum start 61 * @param[in] i_checkSumEnd - VPD iterator pointing at checksum end value 62 * @throw DataException - checksum invalid, check VPD [all …]
|
H A D | worker.hpp | 13 namespace vpd namespace 16 * @brief A class to process and publish VPD data. 18 * The class works on VPD and is mainly responsible for following tasks: 21 * 3) Calling respective parser class to get parsed VPD. 22 * 4) Arranging VPD data under required interfaces. 23 * 5) Calling PIM to publish VPD. 25 * The class may also implement helper functions required for VPD handling. 45 * @param[in] i_maxThreadCount - Maximum thread while collecting FRUs VPD. 59 * @brief An API to check if system VPD is already published. 78 * @brief API to parse VPD data [all …]
|
H A D | parser.hpp | 13 namespace vpd namespace 17 * The class based on VPD file passed, selects the required parser and exposes 18 * API to parse the VPD and return the parsed data in required format to the 27 * @param[in] vpdFilePath - Path to the VPD file. 35 * This API is called to select parser based on the vpd data extracted from 36 * the VPD file path passed to the constructor of the class. 43 * @brief API to get parser instance based on VPD type. 45 * This API detects the VPD type based on the file path passed to the 50 std::shared_ptr<vpd::ParserInterface> getVpdParserInstance(); 59 * To update IPZ type VPD, input parameter for writing should be in the form [all …]
|
H A D | ddimm_parser.hpp | 9 namespace vpd namespace 12 * @brief Concrete class to implement DDIMM VPD parsing. 15 * functionality to implement parsing logic for DDIMM VPD format. 35 * @param[in] i_vpdVector - VPD data. 43 throw(DataException("Malformed DDIMM VPD")); in DdimmVpdParser() 48 * @brief API to parse DDIMM VPD file. 50 * @return parsed VPD data 59 * @param[in] i_iterator - iterator to buffer containing VPD 64 * @brief API to calculate DDIMM size from DDIMM VPD 66 * @param[in] i_iterator - iterator to buffer containing VPD [all …]
|
H A D | parser_factory.hpp | 9 namespace vpd namespace 15 * on the type of vpd file. 32 * type of VPD extracted from VPD vector passed to the API. 33 * To detect respective parser from VPD vector, add logic into the API 36 * Note: API throws DataException in case vpd type check fails for any 39 * @param[in] i_vpdVector - vpd file content to check for the type. 41 * @param[in] i_vpdStartOffset - Offset from where VPD starts in the VPD 50 } // namespace vpd
|
H A D | bios_handler.hpp | 8 namespace vpd namespace 62 * The API will read the backed up data from the VPD keyword and based on 90 * The API checks value stored in VPD. If found default then the BIOS value 91 * is saved to VPD else VPD value is restored in BIOS pending attribute 97 * @brief API to save FCO data into VPD. 111 * @brief API to save AMM data into VPD. 127 * The API checks value stored in VPD. If found default then the BIOS value 128 * is saved to VPD else VPD value is restored in BIOS pending attribute 136 * The API reads the value from VPD and restore it to the BIOS attribute 149 * @brief API to save given value to VPD. [all …]
|
H A D | ipz_parser.hpp | 10 namespace vpd namespace 13 * @brief Concrete class to implement IPZ VPD parsing. 16 * functionality to implement parsing logic for IPZ VPD format. 31 * @param[in] vpdVector - VPD data. 32 * @param[in] vpdFilePath - Path to VPD EEPROM. 33 * @param[in] vpdStartOffset - Offset from where VPD starts in the file. 60 * @brief API to parse IPZ VPD file. 65 * @return parsed VPD data. 70 * @brief API to check validity of VPD header. 74 * @param[in] itrToVPD - Iterator to the beginning of VPD file. [all …]
|
/openbmc/openpower-vpd-parser/ |
H A D | README.md | 3 This repository hosts code for OpenPower and IBM IPZ format VPD parsers. Both 4 OpenPower VPD and IPZ VPD formats are structured binaries that consist of 11 ## OpenPower VPD Parser 13 This is a build-time YAML driven application that parses the OpenPower VPD 18 - How VPD data is translated into D-Bus interfaces and properties. 20 The application instance must be passed in the file path to the VPD (this can, 24 ## IBM VPD Parser 27 option. This parser differs from the OpenPower VPD parser in the following ways: 29 - It parses all the records and keywords from the VPD, including large keywords 33 representing the VPD for a given VPD file path. [all …]
|
H A D | meson.options | 4 value: 'com.ibm.VPD.Manager', 10 value: '/com/ibm/VPD/Manager', 16 value: 'com.ibm.VPD.Manager', 29 value: '/usr/share/vpd/vpd_inventory.json', 30 …description: 'JSON file that defines inventory blueprint. The default path before system VPD servi… 35 value: '/var/lib/vpd/vpd_inventory.json', 36 description: 'Symbolic link to vpd inventory json.', 41 value: '/usr/share/vpd/', 48 description: 'EEPROM path of system VPD.', 53 value: '/var/lib/vpd', [all …]
|
/openbmc/openbmc-test-automation/openpower/vpd/ |
H A D | test_vpd_tool.robot | 2 Documentation This suite tests System Vital Product Data (VPD) using vpdtool. 21 Verify System VPD Data Via Vpdtool 22 [Documentation] Verify the system VPD details via vpdtool output. 24 [Template] Verify VPD Data Via Vpdtool 32 Verify VPD Component Read 33 [Documentation] Verify details of all VPD component via vpdtool. 39 Verify VPD Component Read Operation ${component} 43 Verify VPD Field Read 44 [Documentation] Verify reading VPD field value via vpdtool. 55 Verify VPD Field Read Operation ${component} [all …]
|
/openbmc/openbmc-test-automation/lib/ |
H A D | vpd_tool_resource.robot | 2 Documentation Utility file for system Vital Product Data (VPD) using vpdtool. 20 Verify VPD Component Read Operation 21 [Documentation] Verify reading VPD details of given component via vpdtool. 47 # Skip check if VPD field is empty. 50 # Get VPD field values via busctl. 67 Verify VPD Field Read Operation 68 [Documentation] Verify reading all VPD fields for given component via vpdtool. 99 Verify VPD Field Write Operation 100 [Documentation] Verify writing VPD fields for given component via vpdtool. 102 [Teardown] Restore VPD Value ${component} ${field} ${old_field_value} [all …]
|
/openbmc/openpower-vpd-parser/vpd-manager/oem-handler/ |
H A D | ibm_handler.hpp | 12 namespace vpd namespace 50 * @brief API to collect all FRUs VPD. 52 * This api will call worker API to perform VPD collection for all FRUs 54 * the Dbus VPD collection status property hosted under vpd-manager. 57 * System VPD collection will always be skipped. 67 * @brief Set timer to detect and set VPD collection status for the system. 69 * Collection of FRU VPD is triggered in a separate thread. Resulting in 72 * sets the status of the VPD collection for the system accordingly. 79 * @brief API to process VPD collection thread failed EEPROMs. 84 * @brief API to check and update PowerVS VPD. [all …]
|
/openbmc/phosphor-dbus-interfaces/yaml/com/ibm/ipzvpd/ |
H A D | README.md | 1 # IPZ VPD D-Bus Interfaces 3 IPZ is a VPD (Vital Product Data) format used in IBM Power systems. The format 8 The [OpenPower VPD][1] format is quite similar to the IPZ format and describes 11 Also refer to the [VPD Collection design document][2] that describes how the VPD 12 collection application on the BMC will parse and publish the VPD data for IBM 15 The D-Bus interfaces defined here describe how IPZ VPD will be made available on 16 D-Bus. Each YAML here represents a record in the IPZ VPD and keywords that 22 [2]: https://github.com/openbmc/docs/blob/master/designs/vpd-collection.md
|
/openbmc/openbmc/meta-phosphor/recipes-phosphor/configuration/ |
H A D | entity-manager_git.bb | 17 PACKAGECONFIG[dts-vpd] = "-Ddevicetree-vpd=true, -Ddevicetree-vpd=false" 34 SYSTEMD_SERVICE:devicetree-vpd = "devicetree-vpd-parser.service" 41 ${@bb.utils.contains('PACKAGECONFIG', 'dts-vpd', 'devicetree-vpd', '', d)} \ 54 FILES:devicetree-vpd = "${bindir}/devicetree-vpd-parser" 58 ${@bb.utils.contains('PACKAGECONFIG', 'dts-vpd', 'devicetre [all...] |
/openbmc/phosphor-dbus-interfaces/yaml/com/ibm/VPD/ |
H A D | Collection.interface.yaml | 2 Implement to provide VPD collection state management. 8 Property which tells the current status of FRU VPD collection. 13 The current status of FRU VPD collection. 17 FRU VPD collection is in progress. 20 FRU VPD collection is successfully completed. 23 FRU VPD collection failed. 26 FRU VPD collection not started.
|
/openbmc/openbmc/meta-ibm/dynamic-layers/meta-openpower/recipes-phosphor/vpd/ |
H A D | openpower-fru-vpd_%.bbappend | 8 SYSTEMD_SERVICE:${PN}:append:p10bmc = " system-vpd.service" 9 SYSTEMD_SERVICE:${PN}:append:p10bmc = " wait-vpd-parsers.service" 10 SYSTEMD_SERVICE:${PN}:append:p10bmc = " vpd-manager.service" 13 FILES:${PN}:append:p10bmc = " ${datadir}/vpd/*.json" 16 # Remove files that are used by openpower-read-vpd 19 rm ${D}/${nonarch_base_libdir}/udev/rules.d/70-op-vpd.rules 29 LINK="$D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.wants/wait-vpd-parsers.service" 30 TARGET="../wait-vpd-parsers.service" 34 LINK="$D$systemd_system_unitdir/obmc-chassis-poweroff@0.target.wants/wait-vpd-parsers.service"
|
/openbmc/openpower-vpd-parser/test/ |
H A D | utest_ipz_parser.cpp | 12 vpd::Parser l_vpdParser(l_vpdFile, l_json); in TEST() 14 vpd::types::IPZVpdMap l_ipzVpdMap; in TEST() 16 if (auto l_ipzVpdMapPtr = std::get_if<vpd::types::IPZVpdMap>(&l_parsedMap)) in TEST() 66 // Vpd file does not exist in TEST() 70 EXPECT_THROW(vpd::Parser(l_vpdFile, l_json), std::runtime_error); in TEST() 78 vpd::Parser l_vpdParser(l_vpdFile, l_json); in TEST() 88 vpd::Parser l_vpdParser(l_vpdFile, l_json); in TEST() 95 // Vpd vector size is less than RECORD_MIN(44), fails for checkHeader in TEST() 98 vpd::Parser l_vpdParser(l_vpdFile, l_json); in TEST() 110 vpd::Parser l_vpdParser(l_vpdFile, l_json); in TEST() [all …]
|
/openbmc/openbmc/meta-openpower/recipes-phosphor/vpd/ |
H A D | openpower-fru-vpd_git.bb | 1 SUMMARY = "Parser for OpenPOWER-format FRU VPD" 2 DESCRIPTION = "Parse OpenPOWER-format FRU VPD and update inventory" 7 inherit openpower-fru-vpd 13 SRC_URI += "file://70-op-vpd.rules" 16 virtual/openpower-fru-vpd-layout \ 27 SYSTEMD_SERVICE:${PN} += "op-vpd-parser.service" 28 SYSTEMD_SERVICE:${PN} += "vpd-manager.service" 46 install -m0644 ${UNPACKDIR}/70-op-vpd.rules ${D}/${nonarch_base_libdir}/udev/rules.d/
|