/openbmc/phosphor-logging/test/openpower-pels/ |
H A D | repository_test.cpp | 31 * And because we have PEL object, also clean up 73 auto pel = std::make_unique<PEL>(data); in TEST_F() local 75 repo.add(pel); in TEST_F() 77 // Check that the PEL was stored where it was supposed to be, in TEST_F() 78 // and that it wrote the PEL data. in TEST_F() 79 const auto ts = pel->privateHeader().commitTimestamp(); in TEST_F() 80 auto name = Repository::getPELFilename(pel->id(), ts); in TEST_F() 86 auto pelData = pel->data(); in TEST_F() 89 EXPECT_EQ(repo.lastPelID(), pel->id()); in TEST_F() 94 using pelID = Repository::LogID::Pel; in TEST_F() [all …]
|
H A D | host_notifier_test.cpp | 78 * @brief Create PEL with the specified action flags 82 * @return std::unique_ptr<PEL> 84 std::unique_ptr<PEL> makePEL(uint16_t actionFlagsMask = 0) in makePEL() 92 auto pel = std::make_unique<PEL>(data, obmcID++); in makePEL() local 93 pel->assignID(); in makePEL() 94 pel->setCommitTime(); in makePEL() 95 return pel; in makePEL() 162 auto pel = makePEL(); in TEST_F() local 163 repo.add(pel); in TEST_F() 166 EXPECT_TRUE(notifier.enqueueRequired(pel->id())); in TEST_F() [all …]
|
H A D | pel_test.cpp | 18 #include "extensions/openpower-pels/pel.hpp" 63 auto pel = std::make_unique<PEL>(data); in TEST_F() local 66 EXPECT_TRUE(pel->valid()); in TEST_F() 67 EXPECT_EQ(pel->id(), 0x80818283); in TEST_F() 68 EXPECT_EQ(pel->plid(), 0x50515253); in TEST_F() 69 EXPECT_EQ(pel->userHeader().subsystem(), 0x10); in TEST_F() 70 EXPECT_EQ(pel->userHeader().actionFlags(), 0x80C0); in TEST_F() 73 auto flattenedData = pel->data(); in TEST_F() 75 EXPECT_EQ(flattenedData.size(), pel->size()); in TEST_F() 81 auto pel = std::make_unique<PEL>(data); in TEST_F() local [all …]
|
/openbmc/phosphor-logging/extensions/openpower-pels/ |
H A D | repository.cpp | 95 PEL pel{data}; in restore() local 96 if (pel.valid()) in restore() 100 if (pel.hostTransmissionState() == TransmissionState::sent) in restore() 102 pel.setHostTransmissionState(TransmissionState::newPEL); in restore() 105 write(pel, dirEntry.path()); in restore() 110 "Failed to save PEL after updating host state, PEL ID = {ID}", in restore() 111 "ID", lg2::hex, pel.id()); in restore() 118 pel.privateHeader().creatorID(), in restore() 119 pel.userHeader().subsystem(), in restore() 120 pel.userHeader().severity(), in restore() [all …]
|
H A D | manager.hpp | 11 #include "pel.hpp" 15 #include <org/open_power/Logging/PEL/Entry/server.hpp> 16 #include <org/open_power/Logging/PEL/server.hpp> 28 sdbusplus::org::open_power::Logging::server::PEL>; 31 * @brief PEL manager object 102 * @brief Creates a PEL based on the OpenBMC event log contents. If 103 * a PEL was passed in via the RAWPEL specifier in the 122 * @brief Erase a PEL based on its OpenBMC event log ID 137 * time because its corresponding PEL cannot be. 139 * There are PEL retention policies that can prohibit the manual deletion [all …]
|
H A D | repository.hpp | 4 #include "pel.hpp" 25 * @brief Structure of commonly used PEL attributes. 57 * @brief A structure that holds both the PEL and corresponding 60 * lookup. To find a PEL based on just one of the IDs, just use 65 struct Pel struct 68 explicit Pel(uint32_t i) : id(i) {} in Pel() argument 76 Pel pelID; 80 LogID(Pel pel, Obmc obmc) : pelID(pel), obmcID(obmc) {} in LogID() 82 explicit LogID(Pel id) : pelID(id), obmcID(0) {} in LogID() 91 * one can look up a PEL with just one of the IDs. [all …]
|
H A D | host_notifier.hpp | 4 #include "pel.hpp" 27 * The high level good path flow for sending a single PEL is: 29 * 1) Send the ID and size of the new PEL to the host. 32 * 2) The host reads the raw PEL data (outside of this class). 34 * 3) The host sends the PEL to the OS, and then sends an AckPEL 38 * After this, a PEL never needs to be sent again, but if the 46 * PELs from being sent, and the first PEL that hits this will have 61 * @param[in] repo - The PEL repository object 74 * @brief Returns the PEL queue size. 86 * @brief Specifies if the PEL needs to go onto the queue to be [all …]
|
H A D | manager.cpp | 21 #include "pel.hpp" 82 // If a PEL was passed in via a filename or in an ESEL, in create() 118 "Filesystem error reading a raw PEL. File = {FILE}, obmcLogID = {LOGID}", in addRawPEL() 134 "Raw PEL file from BMC event log does not exit. File = {FILE}, obmcLogID = {LOGID}", in addRawPEL() 141 auto pel = std::make_unique<openpower::pels::PEL>(pelData, obmcLogID); in addPEL() local 142 if (pel->valid()) in addPEL() 145 pel->setCommitTime(); in addPEL() 147 // Assign Id other than to Hostbot PEL in addPEL() 148 if ((pel->privateHeader()).creatorID() != in addPEL() 151 pel->assignID(); in addPEL() [all …]
|
H A D | README.md | 1 # OpenPower Platform Event Log (PEL) extension 4 to point to the raw PEL to use in the OpenBMC event, and then that will be used 9 - [Passing in data when creating PELs](#passing-pel-related-data-within-an-openbmc-event-log) 11 - [The PEL Message Registry](#the-pel-message-registry) 15 - [PEL Retention](#pel-retention) 16 - [Adding python3 modules for PEL UserData and SRC parsing](#adding-python3-modules-for-pel-userdat… 19 - [PEL Archiving](#pel-archiving) 22 ## Passing PEL related data within an OpenBMC event log 24 An error log creator can pass in data that is relevant to a PEL by using certain 31 This keyword is used to point to an existing PEL in a binary file that should be [all …]
|
H A D | pel.hpp | 37 /** @class PEL 42 * Every field in a PEL are in structures call sections, of which there are 46 * The only two required sections for every type of PEL are the Private Header 56 * - From a full formed flattened PEL. 57 * - From scratch based on an OpenBMC event and its corresponding PEL message 60 * The data() method allows one to retrieve the PEL as a vector<uint8_t>. This 63 class PEL class 66 PEL() = delete; 67 ~PEL() = default; 68 PEL(const PEL&) = delete; [all …]
|
H A D | service_indicators.hpp | 4 #include "pel.hpp" 34 * based on PEL contents. 36 * @param[in] pel - The PEL 38 virtual void activate(const PEL& pel) = 0; 75 * @brief Turns on LEDs for certain FRUs called out in the PEL. 90 * @param[in] pel - The PEL 92 void activate(const PEL& pel) override; 100 * @param[in] callouts - The Callout list from a PEL 116 * @param[in] pel - The PEL 118 * @return bool - If the PEL should be ignored or not. [all …]
|
H A D | host_notifier.cpp | 83 bool HostNotifier::addPELToQueue(const PEL& pel) in addPELToQueue() argument 85 if (enqueueRequired(pel.id())) in addPELToQueue() 87 _pelQueue.push_back(pel.id()); in addPELToQueue() 97 Repository::LogID i{Repository::LogID::Pel{id}}; in enqueueRequired() 127 lg2::error("Host Enqueue: Unable to find PEL ID {ID} in repository", in enqueueRequired() 138 Repository::LogID i{Repository::LogID::Pel{id}}; in notifyRequired() 170 void HostNotifier::newLogCallback(const PEL& pel) in newLogCallback() argument 172 if (!enqueueRequired(pel.id())) in newLogCallback() 177 lg2::debug("New PEL added to queue, PEL ID = {ID}", "ID", lg2::hex, in newLogCallback() 178 pel.id()); in newLogCallback() [all …]
|
H A D | severity.hpp | 14 * @brief Convert an OpenBMC event log severity to a PEL severity 18 * @return uint8_t - The PEL severity value 24 * current LogSeverity and PEL severity. 27 * sync with the PEL severity: 28 * - critical PEL but non critical LogSeverity 29 * - info PEL but non info LogSeverity 30 * - non info PEL but info LogSeverity 33 * @param[in] pelSeverity - The PEL severity
|
/openbmc/phosphor-dbus-interfaces/yaml/org/open_power/Logging/ |
H A D | PEL.interface.yaml | 6 Returns a file descriptor to a PEL. 11 The PEL log ID of the PEL to retrieve. 16 A file descriptor for a file that contains the PEL. 23 Returns PEL data based on the OpenBMC event log ID. 28 The OpenBMC event log ID of the PEL to retrieve. 33 The PEL data 39 Notifies the PEL handler that the host (usually the OS) acked a PEL. 44 The PEL log ID 50 Notifies the PEL handler that the host could not process a PEL. 55 The PEL log ID [all …]
|
/openbmc/openbmc-test-automation/openpower/pel/ |
H A D | test_bmc_pel.robot | 2 Documentation This suite tests Platform Event Log (PEL) functionality of OpenBMC. 27 Create Test PEL Log And Verify 28 [Documentation] Create PEL log using busctl command and verify via peltool. 32 Create Test PEL Log 33 ${pel_id}= Get PEL Log Via BMC CLI 34 Should Not Be Empty ${pel_id} msg=System PEL log entry is empty. 37 Verify PEL Log Details 38 [Documentation] Verify PEL log details via peltool. 44 Create Test PEL Log 71 # Verify if "CompID" and "SRC" fields of PEL ha [all...] |
/openbmc/openpower-hw-diags/attn/pel/ |
H A D | extended_user_header.cpp | 5 namespace pel namespace 8 ExtendedUserHeader::ExtendedUserHeader(Stream& pel) in ExtendedUserHeader() argument 10 unflatten(pel); in ExtendedUserHeader() 13 void ExtendedUserHeader::flatten(Stream& pel) const in flatten() 15 pel << _header; in flatten() 16 pel.write(_mtms, mtmsSize); in flatten() 17 pel.write(_serverFWVersion.data(), _serverFWVersion.size()); in flatten() 18 pel.write(_subsystemFWVersion.data(), _subsystemFWVersion.size()); in flatten() 19 pel << _reserved4B << _refTime << _reserved1B1 << _reserved1B2 in flatten() 23 void ExtendedUserHeader::unflatten(Stream& pel) in unflatten() argument [all …]
|
H A D | pel_minimal.hpp | 13 namespace pel namespace 18 * @brief Class for a minimal platform event log (PEL) 20 * This class can be used to create form a PEL and create a raw PEL file. The 23 * This PEL consists of the following position dependent sections: 48 * @brief Create a minimal PEL object from raw data 50 * @param[in] pelBuffer - buffer containing a raw PEL 62 * @brief Stream raw PEL data to buffer 138 * @brief Maximum PEL size 143 * @brief Returns the size of the PEL 145 * @return size_t The PEL size in bytes [all …]
|
/openbmc/phosphor-logging/extensions/openpower-pels/tools/ |
H A D | peltool.cpp | 23 #include "../pel.hpp" 46 using PELFunc = std::function<void(const PEL&, bool hexDump)>; 72 * @brief helper function to get PEL commit timestamp from file name 73 * @retrun uint64_t - PEL commit timestamp 168 * @brief helper function to get PEL id from file name 169 * @retrun uint32_t - PEL id 187 * @brief Check if the string ends with the PEL ID string passed in 188 * @param[in] str - string to check for PEL ID 189 * @param[in] pelID - PEL id string 214 * @brief get data form raw PEL file. [all …]
|
/openbmc/openpower-hw-diags/attn/ |
H A D | attn_logging.cpp | 8 #include <attn/pel/pel_minimal.hpp> 95 * Create a PEL from an existing PEL 97 * Create a new PEL based on the specified raw PEL and submit the new PEL 98 * to the backend logging code as a raw PEL. Note that additional data map 99 * here contains data to be committed to the PEL and it can also be used to 100 * create the PEL as it contains needed information. 102 * @param i_rawPel - buffer containing a raw PEL 103 * @param i_additional - additional data to be added to the new PEL 108 // create PEL object from buffer in createPelCustom() 109 auto tiPel = std::make_unique<pel::PelMinimal>(i_rawPel); in createPelCustom() [all …]
|
H A D | attn_dbus.hpp | 28 * Create a PEL from raw PEL data 30 * Create a PEL based on the pel defined in the data buffer specified. 32 * @param i_buffer - buffer containing a raw PEL 37 * Get file descriptor of exisitng PEL 39 * The backend logging code will search for a PEL having the provided pel id 40 * and return a file descriptor of a file containing this pel in raw form. 42 * @param i_pelid - the PEL ID
|
/openbmc/pldm/oem/ibm/libpldmresponder/ |
H A D | file_io_type_pel.cpp | 11 #include <org/open_power/Logging/PEL/server.hpp> 34 * @brief Finds the Entry::Level value for the severity of the PEL 40 * @param[in] pelFileName - The file containing the PEL 66 std::ifstream pel{pelFileName}; in getEntryLevelFromPEL() local 67 if (pel.good()) in getEntryLevelFromPEL() 69 pel.seekg(severityOffset); in getEntryLevelFromPEL() 72 pel.read(reinterpret_cast<char*>(&sev), 1); in getEntryLevelFromPEL() 85 error("Unable to open PEL file '{FILE}'", "FILE", pelFileName); in getEntryLevelFromPEL() 98 static constexpr auto logInterface = "org.open_power.Logging.PEL"; in readIntoMemory() 118 "Failed to get PEL D-Bus call for PEL ID '{FILE_HANDLE}', error - {ERROR}", in readIntoMemory() [all …]
|
/openbmc/phosphor-logging/extensions/openpower-pels/registry/ |
H A D | README.md | 4 phosphor-logging using a message registry that provides the PEL related fields. 15 A component ID is a 2 byte value of the form 0xYY00 used in a PEL to: 19 2. Reside in the section header of the Private Header PEL section to specify the 33 [here](O_component_ids.json). That file can used by PEL parsers to display a 48 OpenBMC event log that the PEL is being created from. 56 This field is part of the PEL User Header section, and is used to specify the 58 PEL value. If the subsystem isn't known ahead of time, it can be passed in at 59 the time of PEL creation using the 'PEL_SUBSYSTEM' AdditionalData field. In this 79 This field is part of the PEL User Header section, and is used to specify the 80 PEL severity. It is an optional field, if it isn't specified, then the severity [all …]
|
/openbmc/openbmc-test-automation/lib/ |
H A D | pel_utils.py | 4 PEL functions. 89 Returns PEL data from BMC else throws exception. 105 print("No PEL data present in BMC ...") 108 "Failed to get PEL data from BMC : " + str(exception) 115 Verify that no PEL exists in BMC. Raise an exception if it does. 124 print("PEL data present. \n", pel_data) 125 raise PeltoolException("PEL data present in BMC") 128 "Failed to get PEL data from BMC : " + str(exception) 134 Compare PEL log attributes like "SRC", "Created at" with Redfish 139 pel_record PEL record. [all …]
|
/openbmc/openpower-debug-collector/dump/ |
H A D | create_pel.hpp | 15 namespace openpower::dump::pel namespace 31 * @brief Create SBE boot error PEL and return id 35 * @param[in] ffdcData - failure data to append to PEL 45 * @brief Convert a FAPI2 severity code to PEL severity. 50 openpower::dump::pel::Severity convertSeverityToEnum(uint8_t severity); 57 * @param[out] pelAdditionalData - A reference to additional PEL data to be 58 * included in the PEL. 62 openpower::dump::pel::FFDCData& pelAdditionalData); 112 * Used to create ffdc file to pass PEL api for creating 113 * pel records. [all …]
|
/openbmc/openpower-proc-control/extensions/phal/ |
H A D | create_pel.hpp | 18 namespace pel namespace 27 * @brief Create PEL with additional parameters and callout 30 * @param[in] calloutData - callout data to append to PEL 31 * @param[in] ffdcData - failure data to append to PEL 39 * @brief Create SBE boot error PEL and return id 43 * @param[in] ffdcData - failure data to append to PEL 54 * @brief Create a PEL for the specified event type and additional data 57 * @param[in] ffdcData - failure data to append to PEL 111 * Used to create ffdc file to pass PEL api for creating 112 * pel records. [all …]
|