meta-phosphor: systemd-policy: move to systemd

Don't install systemd policy if:
 - systemd is not being installed
 - a non phosphor distro

Use RRECOMMENDS for easy opt-out in Phosphor based distros.

Change-Id: Icabde199863f351d1bcc04eb1a80e974324a4488
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
diff --git a/recipes-core/systemd/phosphor-systemd-policy.bb b/recipes-core/systemd/phosphor-systemd-policy.bb
new file mode 100644
index 0000000..2143397
--- /dev/null
+++ b/recipes-core/systemd/phosphor-systemd-policy.bb
@@ -0,0 +1,20 @@
+SUMMARY = "Phosphor systemd configuration overrides"
+DESCRIPTION = "Overrides for systemd and its applications"
+PR = "r1"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
+
+DEPENDS += "systemd"
+
+SRC_URI += "file://service-restart-policy.conf"
+SRC_URI += "file://journald-maxlevel-policy.conf"
+
+FILES_${PN} += "${systemd_unitdir}/system.conf.d/service-restart-policy.conf"
+FILES_${PN} += "${systemd_unitdir}/journald.conf.d/journald-maxlevel-policy.conf"
+
+
+do_install() {
+        install -m 644 -D ${WORKDIR}/service-restart-policy.conf ${D}${systemd_unitdir}/system.conf.d/service-restart-policy.conf
+        install -m 644 -D ${WORKDIR}/journald-maxlevel-policy.conf ${D}${systemd_unitdir}/journald.conf.d/journald-maxlevel-policy.conf
+}
diff --git a/recipes-core/systemd/phosphor-systemd-policy/journald-maxlevel-policy.conf b/recipes-core/systemd/phosphor-systemd-policy/journald-maxlevel-policy.conf
new file mode 100644
index 0000000..f5f3d0f
--- /dev/null
+++ b/recipes-core/systemd/phosphor-systemd-policy/journald-maxlevel-policy.conf
@@ -0,0 +1,6 @@
+# Don't store "debug" messages, only "info" and below.
+# Reference: journald.conf(5)
+
+[Journal]
+MaxLevelStore=info
+MaxLevelSyslog=info
diff --git a/recipes-core/systemd/phosphor-systemd-policy/service-restart-policy.conf b/recipes-core/systemd/phosphor-systemd-policy/service-restart-policy.conf
new file mode 100644
index 0000000..54516c2
--- /dev/null
+++ b/recipes-core/systemd/phosphor-systemd-policy/service-restart-policy.conf
@@ -0,0 +1,31 @@
+# This file overrides some defaults for systemd
+#
+# - Change the RestartSec from 100ms to 1s.
+# When a service hits a failure, our new debug collection service kicks
+# in.  When a core file is involved, it's been found that generating 5 core
+# files within ~500ms puts a huge strain on the BMC.  Also, if the bmc is
+# going to get a fix on a restart of a service, the more time the better
+# (think retries on device driver scenarios).
+#
+# - Change the StartLimitBurst to 2
+# Five just seems excessive for our services in openbmc.  In all fail
+# scenarios seen so far (other then with phosphor-hwmon), either
+# restarting once does the job or restarting all 5 times does not help
+# and we just end up hitting the 5 limit anyway.
+#
+# - Change the StartLimitIntervalSec to 30s
+# The BMC CPU performance is already challenged. When a service is
+# failing and a core dump is being generated and collected into a dump,
+# it's even more challenged. Recent failures have shown situations where
+# the service does not fail again until 15-20 seconds after the initial
+# failure which means the default of 10s for this results in the service
+# being restarted indefinitely. Change this to 30s to only allow a service
+# to be restarted StartLimitBurst times within a 30s interval before
+# being put in a permanent fail state.
+#
+# See systemd-system.conf(5) for details on the conf files
+
+[Manager]
+DefaultRestartSec=1s
+DefaultStartLimitBurst=2
+DefaultStartLimitIntervalSec=30s
diff --git a/recipes-core/systemd/systemd_%.bbappend b/recipes-core/systemd/systemd_%.bbappend
index 1aabe37..f1046de 100644
--- a/recipes-core/systemd/systemd_%.bbappend
+++ b/recipes-core/systemd/systemd_%.bbappend
@@ -25,3 +25,5 @@
 ALTERNATIVE_TARGET[init] = "${rootlibexecdir}/systemd/systemd"
 ALTERNATIVE_LINK_NAME[init] = "${base_sbindir}/init"
 ALTERNATIVE_PRIORITY[init] ?= "300"
+
+RRECOMMENDS_${PN}_append_openbmc-phosphor = " phosphor-systemd-policy"