summaryrefslogtreecommitdiffstats
path: root/extensions/openpower-pels
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/openpower-pels')
-rw-r--r--extensions/openpower-pels/host_notifier.hpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/extensions/openpower-pels/host_notifier.hpp b/extensions/openpower-pels/host_notifier.hpp
index 01eac48..cad2b36 100644
--- a/extensions/openpower-pels/host_notifier.hpp
+++ b/extensions/openpower-pels/host_notifier.hpp
@@ -16,6 +16,34 @@ namespace openpower::pels
* @class HostNotifier
*
* This class handles notifying the host firmware of new PELs.
+ *
+ * It uses the Repository class's subscription feature to be
+ * notified about new PELs.
+ *
+ * Some PELs do not need to be sent - see enqueueRequired() and
+ * notifyRequired().
+ *
+ * The high level good path flow for sending a single PEL is:
+ *
+ * 1) Send the ID and size of the new PEL to the host.
+ * - The command response is asynchronous.
+ *
+ * 2) The host reads the raw PEL data (outside of this class).
+ *
+ * 3) The host sends the PEL to the OS, and then sends an AckPEL
+ * PLDM command to the PLDM daemon, who makes a D-Bus method
+ * call to this daemon, which calls HostNotifer::ackPEL().
+ *
+ * After this, a PEL never needs to be sent again, but if the
+ * host is rebooted before the ack comes it will.
+ *
+ * The host firmware has a finite amount of space to store PELs before
+ * sending to the OS, and it's possible it will fill up. In this case,
+ * the AckPEL command will have a special response that will tell the
+ * PLDM daemon to call HostReject D-Bus method on this daemon instead
+ * which will invoke HostNotifier::setHostFull(). This will stop new
+ * PELs from being sent, and the first PEL that hits this will have
+ * a timer set to retry again later.
*/
class HostNotifier
{
OpenPOWER on IntegriCloud