summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--meta-phosphor/common/recipes-core/systemd/obmc-targets.bb11
-rw-r--r--meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target5
-rw-r--r--meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset@.target7
-rw-r--r--meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host.bb25
-rw-r--r--meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-check@.service19
-rw-r--r--meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-running@.service14
6 files changed, 79 insertions, 2 deletions
diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb b/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb
index 6f83a9ed3..1cca3662a 100644
--- a/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb
+++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets.bb
@@ -34,19 +34,25 @@ CHASSIS_POWER_TARGETS_2 = "reset"
# - start: Services to run to do the host boot
# - started: Services to run once the host is booted
# - stop-pre,stop,stopped: Same as above but applied to shutting down the host
-HOST_SYNCH_TARGETS = "start-pre start started stop-pre stop stopped"
+# - reset-running: Services to check if host is running after bmc reset
+HOST_SYNCH_TARGETS = "start-pre start started stop-pre stop stopped reset-running"
# Track all host action targets
# - stop: Services to run to shutdown the host
# - quiesce: Target to enter on host boot failure
HOST_ACTION_TARGETS = "stop quiesce"
+# TODO: openbmc/openbmc#1205 - Move this to standard host action targets
+# - reset: Check host state and update host "start" target if host running
+HOST_ACTION_TARGETS_2 = "reset"
+
CHASSIS_FMT = "obmc-chassis-{0}@.target"
SYNCH_POWER_FMT = "obmc-power-{0}@.target"
CHASSIS_POWER_FMT = "obmc-power-chassis-{0}@.target"
CHASSIS_POWER_FMT_2 = "obmc-chassis-{0}@.target"
HOST_SYNCH_FMT = "obmc-host-{0}@.target"
HOST_ACTION_FMT = "obmc-{0}-host@.target"
+HOST_ACTION_FMT_2 = "obmc-host-{0}@.target"
CHASSIS_LINK_FMT = "${CHASSIS_FMT}:obmc-chassis-{0}@{1}.target"
SYNCH_POWER_LINK_FMT = "${SYNCH_POWER_FMT}:obmc-power-{0}@{1}.target"
@@ -54,6 +60,7 @@ CHASSIS_POWER_LINK_FMT = "${CHASSIS_POWER_FMT}:obmc-power-chassis-{0}@{1}.target
CHASSIS_POWER_LINK_FMT_2 = "${CHASSIS_POWER_FMT_2}:obmc-chassis-{0}@{1}.target"
HOST_LINK_SYNCH_FMT = "${HOST_SYNCH_FMT}:obmc-host-{0}@{1}.target"
HOST_LINK_ACTION_FMT = "${HOST_ACTION_FMT}:obmc-{0}-host@{1}.target"
+HOST_LINK_ACTION_FMT_2 = "${HOST_ACTION_FMT_2}:obmc-host-{0}@{1}.target"
SYSTEMD_SERVICE_${PN} += " \
obmc-mapper.target \
@@ -69,6 +76,7 @@ SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'CHASSIS_POWER_FMT', 'CHASSIS_POWER
SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'CHASSIS_POWER_FMT_2', 'CHASSIS_POWER_TARGETS_2')}"
SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'HOST_SYNCH_FMT', 'HOST_SYNCH_TARGETS')}"
SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'HOST_ACTION_FMT', 'HOST_ACTION_TARGETS')}"
+SYSTEMD_SERVICE_${PN} += "${@compose_list(d, 'HOST_ACTION_FMT_2', 'HOST_ACTION_TARGETS_2')}"
SYSTEMD_LINK_${PN} += "${@compose_list(d, 'CHASSIS_LINK_FMT', 'CHASSIS_TARGETS', 'OBMC_CHASSIS_INSTANCES')}"
SYSTEMD_LINK_${PN} += "${@compose_list(d, 'SYNCH_POWER_LINK_FMT', 'SYNCH_POWER_TARGETS', 'OBMC_POWER_INSTANCES')}"
@@ -76,3 +84,4 @@ SYSTEMD_LINK_${PN} += "${@compose_list(d, 'CHASSIS_POWER_LINK_FMT', 'CHASSIS_POW
SYSTEMD_LINK_${PN} += "${@compose_list(d, 'CHASSIS_POWER_LINK_FMT_2', 'CHASSIS_POWER_TARGETS_2', 'OBMC_CHASSIS_INSTANCES')}"
SYSTEMD_LINK_${PN} += "${@compose_list(d, 'HOST_LINK_SYNCH_FMT', 'HOST_SYNCH_TARGETS', 'OBMC_HOST_INSTANCES')}"
SYSTEMD_LINK_${PN} += "${@compose_list(d, 'HOST_LINK_ACTION_FMT', 'HOST_ACTION_TARGETS', 'OBMC_HOST_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list(d, 'HOST_LINK_ACTION_FMT_2', 'HOST_ACTION_TARGETS_2', 'OBMC_HOST_INSTANCES')}"
diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target
new file mode 100644
index 000000000..9edb84453
--- /dev/null
+++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset-running@.target
@@ -0,0 +1,5 @@
+[Unit]
+Description=Host%i running after reset
+Conflicts=obmc-stop-host@%i.target
+RefuseManualStart=yes
+RefuseManualStop=yes
diff --git a/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset@.target b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset@.target
new file mode 100644
index 000000000..36994075e
--- /dev/null
+++ b/meta-phosphor/common/recipes-core/systemd/obmc-targets/obmc-host-reset@.target
@@ -0,0 +1,7 @@
+[Unit]
+Description=Host%i (Reset Check)
+Conflicts=obmc-stop-host%i.target
+RefuseManualStop=yes
+
+[Install]
+WantedBy={SYSTEMD_DEFAULT_TARGET}
diff --git a/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host.bb b/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host.bb
index fba82d8cc..fa5a00656 100644
--- a/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host.bb
+++ b/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host.bb
@@ -12,11 +12,34 @@ SKELETON_DIR = "op-hostctl"
FMT = "org.openbmc.control.Host@{0}.service"
DBUS_SERVICE_${PN} += "${@compose_list(d, 'FMT', 'OBMC_HOST_INSTANCES')}"
-SYSTEMD_SERVICE_${PN} = "op-start-host@.service"
+SYSTEMD_SERVICE_${PN} = " \
+ op-start-host@.service \
+ op-reset-host-check@.service \
+ op-reset-host-running@.service \
+ "
START_TMPL = "op-start-host@.service"
START_TGTFMT = "obmc-chassis-start@{1}.target"
START_INSTFMT = "obmc-start-host@{0}.service"
START_FMT = "../${START_TMPL}:${START_TGTFMT}.requires/${START_INSTFMT}"
+RESET_CHECK_TMPL = "op-reset-host-check@.service"
+RESET_CHECK_TGTFMT = "obmc-host-reset@{1}.target"
+RESET_CHECK_INSTFMT = "op-reset-host-check@{0}.service"
+RESET_CHECK_FMT = "../${RESET_CHECK_TMPL}:${RESET_CHECK_TGTFMT}.requires/${RESET_CHECK_INSTFMT}"
+
+RESET_RUNNING_TMPL = "op-reset-host-running@.service"
+RESET_RUNNING_TGTFMT = "obmc-host-reset@{1}.target"
+RESET_RUNNING_INSTFMT = "op-reset-host-running@{0}.service"
+RESET_RUNNING_FMT = "../${RESET_RUNNING_TMPL}:${RESET_RUNNING_TGTFMT}.requires/${RESET_RUNNING_INSTFMT}"
+
SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'START_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_CHASSIS_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'RESET_CHECK_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'RESET_RUNNING_FMT', 'OBMC_HOST_INSTANCES', 'OBMC_HOST_INSTANCES')}"
+
+# Force the standby target to run the host reset check target
+RESET_TMPL_CTRL = "obmc-host-reset@.target"
+SYSD_TGT = "${SYSTEMD_DEFAULT_TARGET}"
+RESET_INSTFMT_CTRL = "obmc-host-reset@{0}.target"
+RESET_FMT_CTRL = "../${RESET_TMPL_CTRL}:${SYSD_TGT}.wants/${RESET_INSTFMT_CTRL}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'RESET_FMT_CTRL', 'OBMC_HOST_INSTANCES')}"
diff --git a/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-check@.service b/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-check@.service
new file mode 100644
index 000000000..e3fcb0446
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-check@.service
@@ -0,0 +1,19 @@
+[Unit]
+Description=Check Host%i status on BMC reset
+Wants=mapper-wait@-xyz-openbmc_project-control-host%i.service
+After=mapper-wait@-xyz-openbmc_project-control-host%i.service
+Wants=obmc-host-reset-running@%i.target
+Before=obmc-host-reset-running@%i.target
+Wants=op-reset-chassis-on@%i.service
+After=op-reset-chassis-on@%i.service
+Conflicts=obmc-stop-host@%i.target
+ConditionPathExists=/run/openbmc/chassis@%i-on
+
+[Service]
+RemainAfterExit=yes
+Type=oneshot
+ExecStart=/bin/sh -c "echo TODO - Check Host Status on BMC Reset"
+
+
+[Install]
+WantedBy=obmc-host-reset@%i.target
diff --git a/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-running@.service b/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-running@.service
new file mode 100644
index 000000000..7f3871efc
--- /dev/null
+++ b/meta-phosphor/common/recipes-phosphor/host/obmc-op-control-host/op-reset-host-running@.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Start host%i running after BMC reset
+After=obmc-host-reset-running@%i.target
+Requires=obmc-host-reset-running@%i.target
+ConditionPathExists=/run/openbmc/host@%i-on
+
+[Service]
+RemainAfterExit=no
+# TODO: openbmc/openbmc#1205 - target name refactor
+ExecStart=/bin/systemctl start obmc-chassis-start@%i.target
+
+
+[Install]
+WantedBy=obmc-host-reset@%i.target
OpenPOWER on IntegriCloud