/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 | manager_main.cpp | 16 * @brief Main function for VPD parser application. 31 std::make_shared<vpd::Manager>(io_con, interface, connection); in main() 35 std::make_shared<vpd::BiosHandler<vpd::IbmBiosHandler>>( in main() 40 vpd::logging::logMessage("Start VPD-Manager event loop"); in main() 52 if (typeid(l_ex) == typeid(vpd::JsonException)) in main() 55 vpd::EventLogger::createAsyncPel( in main() 56 vpd::types::ErrorType::JsonFailure, in main() 57 vpd::types::SeverityType::Informational, __FILE__, __FUNCTION__, in main() 59 std::string("VPD Manager service failed with : ") + l_ex.what(), in main() 62 else if (typeid(l_ex) == typeid(vpd::GpioException)) 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 …]
|
/openbmc/linux/drivers/pci/ |
H A D | vpd.c | 3 * PCI VPD support 41 /* VPD access through PCI 2.2+ VPD capability */ 69 pci_warn(dev, "failed VPD read at offset %zu\n", in pci_vpd_size() 93 pci_info(dev, "invalid VPD tag %#04x (size %zu) at offset %zu%s\n", in pci_vpd_size() 101 struct pci_vpd *vpd = &dev->vpd; in pci_vpd_available() local 103 if (!vpd->cap) in pci_vpd_available() 106 if (vpd->len == 0 && check_size) { in pci_vpd_available() 107 vpd->len = pci_vpd_size(dev); in pci_vpd_available() 108 if (vpd->len == PCI_VPD_SZ_INVALID) { in pci_vpd_available() 109 vpd->cap = 0; in pci_vpd_available() [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. 23 Verify System VPD Data Via Vpdtool 24 [Documentation] Verify the system VPD details via vpdtool output. 26 [Template] Verify VPD Data Via Vpdtool 34 Verify VPD Component Read 35 [Documentation] Verify details of all VPD component via vpdtool. 41 Verify VPD Component Read Operation ${component} 45 Verify VPD Field Read 46 [Documentation] Verify reading VPD field value via vpdtool. 57 Verify VPD Field Read Operation ${component} [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. 62 * Before BUS name for VPD-Manager is claimed, fitconfig whould be set for 64 * system VPD should be on DBus. [all …]
|
H A D | manager.hpp | 10 namespace vpd namespace 13 * @brief Class to manage VPD processing. 15 * The class is responsible to implement methods to manage VPD on the system. 17 * VPD data. 51 * To update IPZ type VPD, input parameter for writing should be in the form 54 * To update Keyword type VPD, input parameter for writing should be in the 74 * To update IPZ type VPD, input parameter for writing should be in the form 77 * To update Keyword type VPD, input parameter for writing should be in the 93 * API can be used to read VPD keyword from the given input path. 98 * To read keyword from keyword type VPD, just keyword name has to be [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 | 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 …]
|
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 …]
|
/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.txt | 1 option('BUSNAME', type : 'string', value : 'com.ibm.VPD.Manager',description : 'BUS NAME FOR THE SE… 2 option('OBJPATH', type : 'string', value : '/com/ibm/VPD/Manager', description : 'OBJECT PATH FOR T… 3 option('IFACE', type : 'string', value : 'com.ibm.VPD.Manager', description : 'INTERFACE NAME') 6 …'BAD_VPD_DIR', type: 'string', value: '/tmp/bad-vpd/', description: 'Directory which contains the … 7 …lue: '/usr/share/vpd/vpd_inventory.json', description: 'JSON file that defines inventory blueprin… 8 …N_SYM_LINK', type: 'string', value: '/var/lib/vpd/vpd_inventory.json', description: 'Symbolic lin… 9 option('JSON_ABSOLUTE_PATH_PREFIX', type: 'string', value: '/usr/share/vpd/', description: 'Path t… 10 …ing', value: '/sys/bus/i2c/drivers/at24/8-0050/eeprom', description: 'EEPROM path of system VPD.') 11 …n('VPD_SYMLIMK_PATH', type: 'string', value: '/var/lib/vpd', description: 'Symlink folder for VPD…
|
/openbmc/phosphor-dbus-interfaces/yaml/com/ibm/VPD/ |
H A D | Manager.interface.yaml | 2 Implement to manage VPD data in system. 6 A method to update the keyword value for a given VPD record. 26 - com.ibm.VPD.Error.PathNotFound 27 - com.ibm.VPD.Error.RecordNotFound 28 - com.ibm.VPD.Error.KeywordNotFound 52 - com.ibm.VPD.Error.LocationNotFound 53 - com.ibm.VPD.Error.NodeNotFound 72 - com.ibm.VPD.Error.LocationNotFound 73 - com.ibm.VPD.Error.NodeNotFound 97 - com.ibm.VPD.Error.LocationNotFound [all …]
|
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-phosphor/recipes-phosphor/configuration/ |
H A D | entity-manager_git.bb | 18 PACKAGECONFIG[dts-vpd] = "-Ddevicetree-vpd=true, -Ddevicetree-vpd=false" 32 SYSTEMD_SERVICE:devicetree-vpd = "devicetree-vpd-parser.service" 40 ${@bb.utils.contains('PACKAGECONFIG', 'dts-vpd', 'devicetree-vpd', '', d)} \ 51 FILES:devicetree-vpd = "${bindir}/devicetree-vpd-parser" 55 ${@bb.utils.contains('PACKAGECONFIG', 'dts-vpd', 'devicetre [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/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/openpower-vpd-parser/vpd-tool/include/ |
H A D | vpd_tool.hpp | 10 namespace vpd namespace 13 * @brief Class to support operations on VPD. 19 * Fix system VPD if any mismatch between DBus and hardware data. 20 * Reset specific system VPD keywords to its default value. 21 * Force VPD collection for hardware. 142 * @brief Prints the user options for fix system VPD command. 157 * vpd-manager DBus service to get the keyword's value. 166 * @brief API to print system VPD keyword's information. 195 * @brief API to handle more option for fix system VPD command. 204 * @brief API to get VPD value of keyword in BIOS Config Manager. [all …]
|
/openbmc/openpower-vpd-parser/scripts/ |
H A D | wait-vpd-status.sh | 3 echo "Checking every 2s for VPD collection status ...." 7 …output=$(busctl get-property com.ibm.VPD.Manager /com/ibm/VPD/Manager com.ibm.VPD.Manager Collecti… 10 echo "VPD collection is completed" 15 echo "Waiting for VPD status update. Retries remaining: $retries" 17 echo "Exit wait for VPD services to finish with timeout"
|