summaryrefslogtreecommitdiffstats
path: root/extensions/openpower-pels/host_notifier.hpp
Commit message (Collapse)AuthorAgeFilesLines
* PEL: Add additional HostNotifier documentationMatt Spinler2020-01-271-0/+28
| | | | | | | Give a high level overview of how the class works. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I83957e572239997cde6757abb77481890cf98b7a
* PEL: Receive a 'bad PEL' indication from hostMatt Spinler2020-01-271-0/+12
| | | | | | | | | | | | | | | | | | | | If the code somehow sent the host a malformed PEL, it will respond with the 'Ack PEL' PLDM command with a special value that indicates this, and the PLDM daemon will relay it to this daemon. In this case, change the host transmission state to 'bad' so it doesn't get sent again. This should never happen as the Repository class already validates PELs and removes bad ones, though maybe the host and Repository have different ideas about what constitutes a malformed PEL. In the future, if event logging support is added to the PEL code running inside the logging daemon, it may be a good idea to create a new PEL for this case. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Id6f9fd37764bf5b5d09b4277a1e36b1f26b3e9a5
* PEL: Notifier support for 'host full'Matt Spinler2020-01-271-0/+47
| | | | | | | | | | | | | | | | | | | | | | | | | | The host firmware may have a limited size for its staging area before it passes the PELs through to the OS, and this area may fill up with PELs it can't send if there are too many or the OS isn't up yet. In this case, it will send down an 'Ack PEL' PLDM command with a special response indicating this host full condition. The PLDM daemon will then call a method on this daemon to let it know. This command handles the host full condition on the HostNotifier class. When this is set: * The PEL that hit this condition will be put back on the queue to be sent again. * No new PELs will be sent up, except as noted below * A 60s timer will be started at the end of which another attempt will be made to send a PEL, in the hopes the condition went away. - If it didn't go away, this process will repeat. - If it did go away, a successful ack will be received and things will proceed as normal. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Iaeb38f43f7acc595bcff234ba50cedf8188b3d9b
* PEL: Support for the host acking a PELMatt Spinler2020-01-271-0/+9
| | | | | | | | | | | | | After the host firmware successfully transfers a PEL to the OS, it will respond with an 'Ack' command that the PLDM daemon sends over to this daemon via a D-Bus method call. Add support to the HostNotifier class for this. It will change the state field in the PEL to 'acked' so that it doesn't get sent up again. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Id2a9985965017d9431419c1375d5374a2d0ae00b
* PEL: On new PEL, send to host if necessaryMatt Spinler2020-01-271-0/+26
| | | | | | | | | | | | | | | | When a new PEL comes in, send it to the host now if the host is up and the class is currently idle. The PLDM command will be dispatched in a standalone function called from the event loop so that this function, which may be part of the 'Create new log' D-Bus method response, can return first. Also added testcases to start verifying these paths now that there is a full mock of the HostInterface class. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ib30a99cc61be9205122287ba310bc315d762e863
* PEL: Take a PEL off the queue and send to hostMatt Spinler2020-01-271-2/+16
| | | | | | | | | | | | | Fill in the code that looks for the first PEL on the queue that still needs to be sent up, and send it. If the failure retry timer is active, or it has already retried the max number of times, then don't send anything. In the former case the timer callback will do the send, and in the latter the next time a log comes in it will start trying again. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: Ibb9692ca83b23e5e021db8b8a89b5549fb979df1
* PEL: Fill in host state change callbackMatt Spinler2020-01-271-0/+12
| | | | | | | | | | If the host is up, start sending PELs. If the host is off, move all of the PELs that are sent but not acked back to the queue to be sent again next time. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I66d382a85afc88f6b23367fb515df4dbe5326be1
* PEL: Fill in host command response handlerMatt Spinler2020-01-271-0/+41
| | | | | | | | | | | | If notifying the host of a new PEL was successful, then it will modify the PEL's host transmission state to 'sent' and add it to the list of sent PELs. If there was a failure, then a timer will be started so a retry can be done. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I77000c603a18726d4cdbb3920ca349e69198fb7f
* PEL: Logic to enqueue a PEL to send to hostMatt Spinler2020-01-271-0/+5
| | | | | | | | | Fill in the function to determine if a PEL needs to be placed on the qeueue to be sent up to the host. It involves checking both the host and HMC transmission states, as well as the PEL action flags field. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I9f1a9fba1b7e6dc7a167f1c7e9dfd6c40d90883f
* PEL: Add HostNotifier classMatt Spinler2020-01-271-0/+125
This class will watch for new PELs being created, and handle sending them up to the host. This first commit for this class mostly just fills in the constructor to set up the various callbacks it will use. It is only instantiated in the Manager class if the Manager constructor used is the one that passes in the HostInterface object, to allow for configurations that don't need PELs passed up. Signed-off-by: Matt Spinler <spinler@us.ibm.com> Change-Id: I0ddcf94d047979eb78209d396c2351566c634dbe
OpenPOWER on IntegriCloud