systemd: new obmc-chassis-emergency-poweroff@.target

When firmware detects a critical power or thermal error (i.e. something
that could potentially cause physical damage to the system), it's
critical that it has a way to quickly turn off the system and notify
the user.

This new obmc-chassis-emergency-poweroff@.target is that way. It will utilize
both the obmc-chassis-hard-poweroff@.target(to power off quickly) and the
obmc-host-quiesce@.target(to notify the user that the host is no longer
running and the system is in an error state).

This target will be special in that no automated recovery will occur
when it is started. It is assumed that if the target is started, then user
intervention is required to diagnose and repair the system.

Signed-off-by: Andrew Geissler <geissonator@yahoo.com>
Change-Id: Ib1e3a653db7ab9b348158410c40d33215ff90326
diff --git a/architecture/openbmc-systemd.md b/architecture/openbmc-systemd.md
index 793f804..3adae4f 100644
--- a/architecture/openbmc-systemd.md
+++ b/architecture/openbmc-systemd.md
@@ -105,6 +105,20 @@
 [object][https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/xyz/openbmc_project/State/Host.interface.yaml]
 in a `Quiesced` state.
 
+## Server Emergency Power Off due to Error
+The `obmc-chassis-emergency-poweroff@.target` is a wrapper target around the
+`obmc-chassis-hard-poweroff@.target` and `obmc-host-quiesce@.target`. It is
+utilized by applications that have detected critical thermal or power errors
+which require an immediate shutdown of the system. It will turn the chassis off
+and put the host into Quiesce (if the host is running). Certain non-critical
+services in the shutdown path can conflict with this target to ensure only the
+most critical services are run in this path.
+
+Automated error recovery (i.e. host reboot) will not be done if this target is
+started. User intervention is required to exit from it. The user could request
+a power on if they wished or a host stop / power off if they wanted to get out
+of quiesce.
+
 ## Systemd Control in OpenBMC
 There are a collection of services within OpenBMC that interact with systemd and
 its unit files, providing somewhat of an abstraction layer from the user of the