6f005199 | 10-Mar-2020 |
Harisuddin Mohamed Isa <harisuddin@gmail.com> |
PEL: peltool: Implement SRC regex filtering
Added "-s, --scrub filename" option to ignore PELs matching regular expression passed through the specified file.
Scrubbing by SRC applies to the -l, -a
PEL: peltool: Implement SRC regex filtering
Added "-s, --scrub filename" option to ignore PELs matching regular expression passed through the specified file.
Scrubbing by SRC applies to the -l, -a and -n options of peltool.
\# ./peltool -l -h { "0x50000C00": { "SRC": "BD8D1001", "Message": "An operation timed out", "PLID": "0x50000C00", "CreatorID": "BMC", "Subsystem": "BMC Firmware", "Commit Time": "12/05/2019 18:32:42", "Sev": "Informational Event", "CompID": "0x1000" } }
\# ./peltool -l -h -s filename {}
\# ./peltool -n -h -s filename { "Number of PELs found": 0 }
Signed-off-by: Harisuddin Mohamed Isa <harisuddin@gmail.com> Change-Id: Idb44c6574f1bd192dfbf354d2879cae084251e4c
show more ...
|
5f5352e5 | 05-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add HostNotifier related debug traces
Add some debug traces that make it easier to debug issues in the code paths that send PELs to the host. They will only show up when the journald conf file
PEL: Add HostNotifier related debug traces
Add some debug traces that make it easier to debug issues in the code paths that send PELs to the host. They will only show up when the journald conf files are modified to turn on debug journal entries.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I1ad6b584bed8c6b58aee94ac2178c4d0b6e3e5d8
show more ...
|
7cb985ff | 05-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Tell HostNotifier about deleted PELs
Have the HostNotifier class subscribe to the Repository class's PEL deletion callbacks so that when a PEL is deleted HostNotifier can remove that PEL from i
PEL: Tell HostNotifier about deleted PELs
Have the HostNotifier class subscribe to the Repository class's PEL deletion callbacks so that when a PEL is deleted HostNotifier can remove that PEL from its queue and also from its sent list.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I37c61bd62f208512e0c45a628548e0881272d2f5
show more ...
|
829b052d | 04-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Clear PLDM instance IDs in certain cases
When the host powers off or the code hits the maximum amount of retries after a failure and gives up, call the PLDM interface's cancelCmd function to en
PEL: Clear PLDM instance IDs in certain cases
When the host powers off or the code hits the maximum amount of retries after a failure and gives up, call the PLDM interface's cancelCmd function to ensure that the code will get a new instance ID on any future attempts at sending a PEL to the host.
Note that in the power off case the PLDMInterface class would only have an instance ID around if it was in the middle of sending a command at the time.
It is doing this because there is no way to know when the next attempt at sending up a PEL will occur, it could be months or years, and it can't assume the PLDM daemon will not have already given that ID to someone else by then.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I6cd5ef6131ee0b2a205fcf71db5a2bfaa2e44e36
show more ...
|
3a4243a6 | 03-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Decrease the PLDM send failure retry time
The original desire for waiting 6s before retrying on a PLDM send failure was in the hopes that the PLDM daemon would free up PLDM instance IDs after t
PEL: Decrease the PLDM send failure retry time
The original desire for waiting 6s before retrying on a PLDM send failure was in the hopes that the PLDM daemon would free up PLDM instance IDs after that time in case they were all taken.
However, the PLDM daemon did not end up implementing that feature, and even if it did now that the D-Bus call to get that is asynchronous the send function would succeed in that case anyway.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I442e7259fe731d13eb8c0502936bfb5b7ac2ccd6
show more ...
|
fea92d10 | 03-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Remove the synchronous getPLDMInstanceID call
This original call to get the PLDM instance ID was synchronous, and it was stubbed out anyway because it would deadlock with the PLDM daemon. The d
PEL: Remove the synchronous getPLDMInstanceID call
This original call to get the PLDM instance ID was synchronous, and it was stubbed out anyway because it would deadlock with the PLDM daemon. The deadlock was fixed by making this call asynchronously in a previous commit.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I576f0e8cb0ecc2fcdfbced91882cce0b529933b7
show more ...
|
2843ba28 | 03-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Get PLDM instance ID asynchonously
Start actually getting the PLDM instance ID from the PLDM daemon for use in sending PLDM commands, and refactor the PLDM interface class to do this using sd_b
PEL: Get PLDM instance ID asynchonously
Start actually getting the PLDM instance ID from the PLDM daemon for use in sending PLDM commands, and refactor the PLDM interface class to do this using sd_bus_call_method_async. After the instance ID is obtained then the rest of the PLDM command sequence can be run to notify the host of PELs.
This is necessary because the PLDM daemon may be making a call to the logging daemon at the same time to create a new OpenBMC event log due to a host PEL that came down, and there will be a deadlock if the method call was synchronous.
A new instance ID is needed for every new PLDM command, unless there was a failure before the host could respond, so the code keeps track of when it needs to get a new ID.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I0e00d1180363250662bd85f9ec69813ada500931
show more ...
|
a44efe48 | 03-Mar-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Common function to call host iface response
Add a function to the HostInterface class to invoke the user defined command response function if there is one, and then change the code to use this
PEL: Common function to call host iface response
Add a function to the HostInterface class to invoke the user defined command response function if there is one, and then change the code to use this new function.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ia376923df70863bcd46120cf23918c2f255f984f
show more ...
|
a214ed30 | 28-Feb-2020 |
Harisuddin Mohamed Isa <harisuddin@gmail.com> |
PEL: peltool: Print all PELs into JSON array
Added -a option to display all PELS at once into a JSON array.
Read message registry once to parse SRC sections in PELs.
Signed-off-by: Harisuddin Moha
PEL: peltool: Print all PELs into JSON array
Added -a option to display all PELS at once into a JSON array.
Read message registry once to parse SRC sections in PELs.
Signed-off-by: Harisuddin Mohamed Isa <harisuddin@gmail.com> Change-Id: I19690a866a3348cf2d8a9a89be38bc09e3eb7f9f
show more ...
|
51e927cc | 27-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Fix possible D-Bus race condition
In a few places in the code, a D-Bus property read was being done before adding the watch for the interfacesAdded signal. This opens the (very small) window t
PEL: Fix possible D-Bus race condition
In a few places in the code, a D-Bus property read was being done before adding the watch for the interfacesAdded signal. This opens the (very small) window that the interfacesAdded signal would fire after the property read and before the match object was created, leading to the property never being successfully read.
Change the order of this code to add the interfacesAdded match object before doing the property read to close this window.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I80b11e743925143de183df98dca4ccafdc987d55
show more ...
|
9e819c77 | 12-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add JSON schema for callouts in registry
Add the JSON schema for the structures needed to describe callouts in the message registry. The PEL code will then add these callouts to that PEL when
PEL: Add JSON schema for callouts in registry
Add the JSON schema for the structures needed to describe callouts in the message registry. The PEL code will then add these callouts to that PEL when it creates it.
The callouts to create for a PEL can vary based on system type, as well as by an AdditionalData field if desired.
This is an optional field.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ib4e0edffc705e3147e5f7a40364f2adedaabb545
show more ...
|
70311203 | 12-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Explain PEL callouts
Update the READMEs to describe how callouts can be added to PELs.
At a high level, they can be added by specifying them completely in AdditionalData fields like CALLOUT_IN
PEL: Explain PEL callouts
Update the READMEs to describe how callouts can be added to PELs.
At a high level, they can be added by specifying them completely in AdditionalData fields like CALLOUT_INVENTORY_PATH, by specifying them completely in the PEL message registry JSON, or by a combination of the 2.
A future commit will add the new JSON schema.
Note, there is still a use case that maybe isn't covered here, and that is when an application like openpower-hw-diags gets its full callout list, including priorities, from its own data. This should cover everything else though.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ia42286b8d1bf1e13d1be9f742c532ab48f6e7ff9
show more ...
|
d4002f39 | 26-Feb-2020 |
Harisuddin Mohamed Isa <harisuddin@gmail.com> |
PEL: peltool: Print number of PELs
Prints the number of PELs found on BMC. Supports -h option to include hidden PELs.
./peltool -n -h { "Number of PELs found": 16 } ./peltool -n { "Number o
PEL: peltool: Print number of PELs
Prints the number of PELs found on BMC. Supports -h option to include hidden PELs.
./peltool -n -h { "Number of PELs found": 16 } ./peltool -n { "Number of PELs found": 10 }
Signed-off-by: Harisuddin Mohamed Isa <harisuddin@gmail.com> Change-Id: I52b687ea09d4c689fa0b42856613858120f9db08
show more ...
|
0c918403 | 21-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: peltool: Remove an error statement
The callers are already handling the error case where a PEL file can't be read, so remove the one inside the function that does the read.
Signed-off-by: Matt
PEL: peltool: Remove an error statement
The callers are already handling the error case where a PEL file can't be read, so remove the one inside the function that does the read.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ifed51808ce8029909fec3478387cdbb86c5c32a3
show more ...
|
1b420bcd | 21-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Refactor peltool's display PEL option
Refactor the code that displays a single PEL to use the 'callFunctionOnPEL' function that was introduced in the previous commit.
Signed-off-by: Matt Spinl
PEL: Refactor peltool's display PEL option
Refactor the code that displays a single PEL to use the 'callFunctionOnPEL' function that was introduced in the previous commit.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I2418de5178ec9da7c0758061986b1792cbc546a7
show more ...
|
27de6f38 | 21-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Delete and delete all support for peltool
Delete 1 PEL: peltool -d <id>
This is done by reading the corresponding OpenBMC event log's ID out of the PEL, and then making the Delete D-Bus meth
PEL: Delete and delete all support for peltool
Delete 1 PEL: peltool -d <id>
This is done by reading the corresponding OpenBMC event log's ID out of the PEL, and then making the Delete D-Bus method call on that event log. Deleting that event log will also delete the PEL.
Delete all PELs: peltool -D
This is done by making the DeleteAll method call on /xyz/openbmc_project/logging. This will delete all event logs and all PELs.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ia807b9b515b9d5b6e04610d884fba578e01ebeb9
show more ...
|
075e5baf | 21-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Save the motherboard CCIN in the SRC
The CCIN field is from the CC keyword of the VINI record in the motherboard VPD.
Save it in the first half of the second hex word of the SRC.
Also print t
PEL: Save the motherboard CCIN in the SRC
The CCIN field is from the CC keyword of the VINI record in the motherboard VPD.
Save it in the first half of the second hex word of the SRC.
Also print this field when displaying the SRC section, but only for SRCs created by this code, which it knows by checking the first 2 characters of the ASCII string.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I25f94f7fbcfd3212adf28c357e55271ea9269add
show more ...
|
b3d488fd | 21-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Read the motherboard CCIN
The 'CCIN' VPD field from the motherboard will go into the SRC PEL section, so add a DataInterface API for it. That class will read it from the VINI record and CC key
PEL: Read the motherboard CCIN
The 'CCIN' VPD field from the motherboard will go into the SRC PEL section, so add a DataInterface API for it. That class will read it from the VINI record and CC keyword in the motherboard VPD.
First, it has to find the motherboard by finding the D-Bus object that has the motherboard inventory item interface. If that object doesn't exist yet, add an interfacesAdded watch for it. When the object is found, add a PropertyWatcher watch for the CC property on the VINI interface.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I143e35405dbcd3ebec4fd9b31972b8de8e0019c5
show more ...
|
c1746f6a | 21-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Tell PropertyWatcher the service to use
The PropertyWatcher class attempts to read its D-Bus property on construction. It would previously look up the service to use from a GetObject call on t
PEL: Tell PropertyWatcher the service to use
The PropertyWatcher class attempts to read its D-Bus property on construction. It would previously look up the service to use from a GetObject call on the mapper. Add a new constructor that takes the service to use instead.
This is useful for when it is trying to do this before the mapper is done introspecting the service, and so can't return a valid response to the GetObject request.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I63639388cdca24c04c97826d959bba98241292be
show more ...
|
f15cbeb3 | 06-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add sysinfo UserData section to README
Mention the UserData section that is added to every BMC PEL that contains system information in the README where it lists the sections created.
Signed-of
PEL: Add sysinfo UserData section to README
Mention the UserData section that is added to every BMC PEL that contains system information in the README where it lists the sections created.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: If36396817f438bc97785a0a60c18e11c7c276ac1
show more ...
|
4aa23a1f | 03-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Add 3 state fields to PEL UserData section
Add the following to the system info UserData section that gets added for PELs created by BMC code:
* CurrentBMCState on /xyz/openbmc_project/state/b
PEL: Add 3 state fields to PEL UserData section
Add the following to the system info UserData section that gets added for PELs created by BMC code:
* CurrentBMCState on /xyz/openbmc_project/state/bmc0 * CurrentHostState on /xyz/openbmc_project/state/host0 * CurrentPowerState on /xyz/openbmc_project/state/chassis0
The RequestedPowerTransition property is also read along with the CurrentPowerState property since it's on the same interface and will be used in a future commit.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Icdc225f2c9bb6d91e67a4cbe608df97803ccee6c
show more ...
|
24a8558b | 27-Jan-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Don't send PELs to host when flag disabled
Don't put any PELs on the queue to send to the host when the setting to send event logs to the host has been set to false.
Signed-off-by: Matt Spinle
PEL: Don't send PELs to host when flag disabled
Don't put any PELs on the queue to send to the host when the setting to send event logs to the host has been set to false.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I37be53f54c354e2c440ac3a932630a4905e311f1
show more ...
|
9cf3cfda | 03-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Read the send PELs to host setting
Certain manufacturing test phases do not need PELs sent to the host, and this will be controlled with an 'Enabled' property on the settings D-Bus object /xyz/
PEL: Read the send PELs to host setting
Certain manufacturing test phases do not need PELs sent to the host, and this will be controlled with an 'Enabled' property on the settings D-Bus object /xyz/openbmc_project/logging/send_event_logs_to_host.
Add a DataInterface API for this, and add the PropertyWatcher instance to handle keeping the class member up to date.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I98f2f747d7d93acd890662c62666dbda744612d6
show more ...
|
2a28c936 | 03-Feb-2020 |
Matt Spinler <spinler@us.ibm.com> |
PEL: Use class to watch properties in DataIface
Instead of having the DataInterface class explicitly watch for all of the PropertiesChanged and InterfacesAdded signals for the D-Bus properties it ne
PEL: Use class to watch properties in DataIface
Instead of having the DataInterface class explicitly watch for all of the PropertiesChanged and InterfacesAdded signals for the D-Bus properties it needs the values of, create some classes to wrap that functionality.
The PropertyWatcher class will call a user defined function, passing it the property value for the path/interface/property specified in the following cases: 1) On construction, by making a property read method call, if the property is on D-Bus then. 2) On a properties changed signal for that property. 3) On an interfaces added signal for that property's interface.
The InterfaceWatcher class will call a user defined function, passing it the property name/value map for all properties in that interface, in the following cases: 1) On construction, by making a GetAll property read method call, if the interface is on D-Bus then. 2) On a properties changed signal for that interface. 3) On an interfaces added signal for that interface.
Both of these are derived from the DBusWatcher class, and the DataInterface will store a vector of DBusWatcher pointers after it creates the instances of the PropertyWatcher or InterfaceWatcher classes in its constructor.
This commit changes the current properties being watched - the system model, the system serial number, and the operating system status to this method.
Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Iade4ac89a9ce1d46bdebf353350bf161722ced9f
show more ...
|
160c51cb | 13-Feb-2020 |
Harisuddin Mohamed Isa <harisuddin@gmail.com> |
PEL: Print Extended User Header section to JSON
"Extended User Header": { "Section Version": "1", "Sub-section type": "0", "Created by": "0x4552", "Rep
PEL: Print Extended User Header section to JSON
"Extended User Header": { "Section Version": "1", "Sub-section type": "0", "Created by": "0x4552", "Reporting Machine Type": "OPWR-131", "Reporting Serial Number": "1318ABA", "FW Released Ver": "BE868_007", "FW SubSys Version": "00040905079B0004", "Common Ref Time": "00/00/0000 00:00:00", "Symptom Id Len": "0", "Symptom Id": "" },
Verified peltool output and all testcases passed. Signed-off-by: Harisuddin Mohamed Isa <harisuddin@gmail.com> Change-Id: Id66b9da27d49c89befd157b0e94bbc9defed0d6a
show more ...
|