summaryrefslogtreecommitdiff
path: root/meta-fii/meta-kudo
diff options
context:
space:
mode:
Diffstat (limited to 'meta-fii/meta-kudo')
-rw-r--r--meta-fii/meta-kudo/conf/layer.conf1
-rw-r--r--meta-fii/meta-kudo/conf/machine/kudo.conf8
-rw-r--r--meta-fii/meta-kudo/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate10
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service8
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service2
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service11
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service12
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh138
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb2
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh12
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service2
-rw-r--r--meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh13
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json6
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service18
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service16
-rw-r--r--meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend39
17 files changed, 224 insertions, 85 deletions
diff --git a/meta-fii/meta-kudo/conf/layer.conf b/meta-fii/meta-kudo/conf/layer.conf
index d2b0e57e2..09535e909 100644
--- a/meta-fii/meta-kudo/conf/layer.conf
+++ b/meta-fii/meta-kudo/conf/layer.conf
@@ -8,3 +8,4 @@ BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
BBFILE_COLLECTIONS += "kudo-layer"
BBFILE_PATTERN_kudo-layer = "^${LAYERDIR}/"
LAYERSERIES_COMPAT_kudo-layer = "hardknott honister"
+LAYERDEPENDS_kudo-layer = "core phosphor-layer google-layer fii-layer"
diff --git a/meta-fii/meta-kudo/conf/machine/kudo.conf b/meta-fii/meta-kudo/conf/machine/kudo.conf
index 9f64c476b..b53cc46df 100644
--- a/meta-fii/meta-kudo/conf/machine/kudo.conf
+++ b/meta-fii/meta-kudo/conf/machine/kudo.conf
@@ -22,7 +22,7 @@ IMAGE_FSTYPES += " cpio.${INITRAMFS_CTYPE}.u-boot"
SERIAL_CONSOLES = "115200;ttyS0"
-OBMC_MACHINE_FEATURES += " \
+MACHINE_FEATURES += " \
obmc-host-ipmi \
obmc-phosphor-fan-mgmt \
obmc-phosphor-flash-mgmt \
@@ -37,4 +37,8 @@ PREFERRED_PROVIDER_virtual/obmc-fan-mgmt = "packagegroup-kudo-apps"
PREFERRED_PROVIDER_virtual/bmc-update = "kudo-bmc-update"
PREFERRED_PROVIDER_virtual/obmc-chassis-mgmt = "packagegroup-kudo-apps"
# Remove unneeded binaries from image
-IMAGE_FEATURES:remove = "obmc-health-monitor"
+IMAGE_FEATURES:remove = "obmc-health-monitor \
+ obmc-fan-control \
+ obmc-inventory \
+ "
+
diff --git a/meta-fii/meta-kudo/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate b/meta-fii/meta-kudo/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
index a6ba28d86..a4119a392 100644
--- a/meta-fii/meta-kudo/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
+++ b/meta-fii/meta-kudo/recipes-extended/rsyslog/rsyslog/rsyslog.logrotate
@@ -20,3 +20,13 @@
systemctl reload rsyslog 2> /dev/null || true
endscript
}
+# Keep up to two 2k files for gpio log (4k total)
+/usr/share/kudo-vrlog/gpio.log
+{
+ rotate 1
+ size 2k
+ missingok
+ postrotate
+ systemctl reload rsyslog 2> /dev/null || true
+ endscript
+}
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
index f7daa94a8..327053cc9 100644
--- a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl.bb
@@ -14,7 +14,8 @@ SRC_URI = "file://ampere-host-shutdown.service \
file://ampere_power_util.sh \
file://ampere-chassis-poweroff.service \
file://ampere-chassis-poweron.service \
- file://ampere-host-reset-ack.service \
+ file://ampere-chassis-powercycle.service \
+ file://ampere-host-shutdown-ack.service \
file://ampere-host-force-reset.service \
file://ampere-host-power-cycle.service \
"
@@ -28,7 +29,8 @@ SYSTEMD_SERVICE:${PN} = " \
ampere-host-reset.service \
ampere-chassis-poweroff.service \
ampere-chassis-poweron.service \
- ampere-host-reset-ack.service \
+ ampere-chassis-powercycle.service \
+ ampere-host-shutdown-ack.service \
ampere-host-force-reset.service \
ampere-host-power-cycle.service \
"
@@ -68,6 +70,11 @@ CHASSIS_POWEROFF_TGTFMT = "obmc-chassis-poweroff@{0}.target"
CHASSIS_POWEROFF_FMT = "../${CHASSIS_POWEROFF_SVC}:${CHASSIS_POWEROFF_TGTFMT}.requires/${CHASSIS_POWEROFF_SVC}"
SYSTEMD_LINK:${PN} += "${@compose_list_zip(d, 'CHASSIS_POWEROFF_FMT', 'OBMC_CHASSIS_INSTANCES')}"
+CHASSIS_POWERCYCLE_SVC = "ampere-chassis-powercycle.service"
+CHASSIS_POWERCYCLE_TGTFMT = "obmc-chassis-powercycle@{0}.target"
+CHASSIS_POWERCYCLE_FMT = "../${CHASSIS_POWERCYCLE_SVC}:${CHASSIS_POWERCYCLE_TGTFMT}.requires/${CHASSIS_POWERCYCLE_SVC}"
+SYSTEMD_LINK_${PN} += "${@compose_list_zip(d, 'CHASSIS_POWERCYCLE_FMT', 'OBMC_CHASSIS_INSTANCES')}"
+
TMPL = "phosphor-gpio-monitor@.service"
INSTFMT = "phosphor-gpio-monitor@{0}.service"
TGT = "multi-user.target"
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service
new file mode 100644
index 000000000..c55fcd3db
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-chassis-powercycle.service
@@ -0,0 +1,8 @@
+[Unit]
+Description=Ampere Computing LLC Power OFF Chassis
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb hotswap
+SyslogIdentifier=ampere_power_util.sh
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service
index 0b32aa158..3e03e07df 100644
--- a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-power-cycle.service
@@ -2,6 +2,8 @@
Description=Ampere Computing LLC power cycle service
Conflicts=obmc-host-start@0.target
OnFailure=obmc-chassis-powerreset@0.target
+Wants=kudo-bios-verify.service
+After=kudo-bios-verify.service
[Service]
RemainAfterExit=no
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service
deleted file mode 100644
index a5338797a..000000000
--- a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-reset-ack.service
+++ /dev/null
@@ -1,11 +0,0 @@
-[Unit]
-Description=Ampere Computing LLC triggering reset ACK
-Conflicts=obmc-host-start@0.target
-OnFailure=obmc-chassis-powerreset@0.target
-
-[Service]
-RemainAfterExit=no
-Type=oneshot
-ExecStart=/usr/bin/env ampere_power_util.sh mb force_reset
-SyslogIdentifier=ampere_power_util.sh
-
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service
new file mode 100644
index 000000000..fe05915ac
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-kudo/host/ampere-hostctrl/ampere-host-shutdown-ack.service
@@ -0,0 +1,12 @@
+[Unit]
+Description=Ampere Computing LLC host shutdown ACK
+Requires=op-wait-power-off@%i.service
+Before=op-wait-power-off@%i.service
+Conflicts=obmc-chassis-poweron@0.target
+
+[Service]
+RemainAfterExit=no
+Type=oneshot
+ExecStart=/usr/bin/env ampere_power_util.sh mb shutdown_ack
+SyslogIdentifier=ampere_power_util.sh
+
diff --git a/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh b/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh
index 420abfb8c..19ccc0e8e 100644
--- a/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/host/files/ampere_power_util.sh
@@ -1,24 +1,40 @@
#!/bin/bash
+
+source /usr/sbin/kudo-lib.sh
+
# Usage of this utility
function usage() {
- echo "usage: power-util mb [on|off|status|cycle|reset|graceful_shutdown|graceful_reset|force_reset]";
+ echo "usage: power-util mb [on|off|graceful_shutdown|force_reset|shutdown_ack|hotswap|power_button]";
+}
+
+hotswap() {
+ kudo.sh rst hotswap
+}
+
+force_off() {
+ echo "Powering down Server"
+
+ set_gpio_ctrl 203 out 1
+ sleep 6
+ set_gpio_ctrl 203 out 0
}
power_off() {
- echo "Shutting down Server $2"
+ busctl set-property xyz.openbmc_project.Watchdog /xyz/openbmc_project/watchdog/host0 xyz.openbmc_project.State.Watchdog ExpireAction s xyz.openbmc_project.State.Watchdog.Action.None
busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.Off
}
power_on() {
- echo "Powering on Server $2"
- gpioset 6 11=1
+ echo "Powering on Server"
+
+ set_gpio_ctrl 203 out 1
sleep 1
- gpioset 6 11=0
+ set_gpio_ctrl 203 out 0
busctl set-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis RequestedPowerTransition s xyz.openbmc_project.State.Chassis.Transition.On
}
power_status() {
- st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d"." -f6)
+ st=$(busctl get-property xyz.openbmc_project.State.Chassis /xyz/openbmc_project/state/chassis0 xyz.openbmc_project.State.Chassis CurrentPowerState | cut -d "." -f6)
if [ "$st" == "On\"" ]; then
echo "on"
else
@@ -26,33 +42,73 @@ power_status() {
fi
}
-power_reset() {
- echo "Reset on server $2"
- busctl set-property xyz.openbmc_project.State.Host /xyz/openbmc_project/state/host0 xyz.openbmc_project.State.Host RequestedHostTransition s xyz.openbmc_project.State.Host.Transition.Reboot
+host_status() {
+ BOOT_OK=$(get_gpio_ctrl 194)
+ S5_N=$(get_gpio_ctrl 204)
+ if [ $S5_N == 1 ] || [ $BOOT_OK == 1 ]; then
+ echo "on"
+ else
+ echo "off"
+ fi
+}
+
+timestamp() {
+ date +"%s" # current time
}
graceful_shutdown() {
if [ -f "/run/openbmc/host@0-request" ]; then
- echo "shutdown host immediately"
- gpioset 6 11=1
- sleep 6
- gpioset 6 11=0
+ echo "Shutdown host immediately"
power_off
else
echo "Triggering graceful shutdown"
- gpioset -l 2 6=0
+ mkdir /run/openbmc
+ echo "$(timestamp)" > "/run/openbmc/host@0-shutdown-req-time"
+ set_gpio_ctrl 70 out 0
sleep 3
- gpioset -l 2 6=1
- sleep 30s
- power_off
+ set_gpio_ctrl 70 out 1
fi
}
force_reset() {
- echo "Triggering sysreset pin"
- gpioset -l 2 1=0
- sleep 1
- gpioset -l 2 1=1
+ if [ $(host_status) == "on" ]; then
+ echo "Triggering sysreset pin"
+ busctl set-property xyz.openbmc_project.Watchdog /xyz/openbmc_project/watchdog/host0 xyz.openbmc_project.State.Watchdog ExpireAction s xyz.openbmc_project.State.Watchdog.Action.None
+ set_gpio_ctrl 65 out 0
+ sleep 1
+ set_gpio_ctrl 65 out 1
+ else
+ echo "Host is off, cannot reset."
+ fi
+}
+
+shutdown_ack() {
+ echo "Receive shutdown ACK triggered"
+ power_off
+
+ if [ -f "/run/openbmc/host@0-shutdown-req-time" ]; then
+ rm -rf "/run/openbmc/host@0-shutdown-req-time"
+ fi
+}
+
+power_button() {
+ echo "Power button trigger event."
+ current_time="$(timestamp)"
+ if [ -f "/run/openbmc/power-button" ]; then
+ echo "Power button released"
+ press_time="$(cat /run/openbmc/power-button)"
+ if [[ "$current_time" -le "(($press_time + 1))" ]]; then
+ power_on
+ elif [[ "$current_time" -ge "(($press_time + 5))" ]]; then
+ power_off
+ else
+ echo "Button press did not match interval."
+ fi
+ rm "/run/openbmc/power-button"
+ else
+ echo "Power button pressed"
+ echo "$(timestamp)" > "/run/openbmc/power-button"
+ fi
}
if [ $# -lt 2 ]; then
@@ -69,49 +125,31 @@ if [ $1 != "mb" ]; then
fi
if [ $2 = "on" ]; then
+ sleep 3
if [ $(power_status) == "off" ]; then
power_on
fi
elif [ $2 = "off" ]; then
if [ $(power_status) == "on" ]; then
power_off
+ sleep 6
+ if [ $(host_status) == "on" ]; then
+ force_off
+ fi
fi
- # If any request of graceful reset, need to power on
- if [ -f "/run/openbmc/host@0-graceful-reset" ]; then
- sleep 20s
- power_on
- rm -f "/run/openbmc/host@0-graceful-reset"
- fi
-elif [ $2 == "cycle" ]; then
- if [ $(power_status) == "on" ]; then
- echo "Power cycling server"
- power_off
- sleep 20s
- power_on
- else
- echo "Host is already off, do nothing"
- fi
-elif [ $2 == "reset" ]; then
- if [ $(power_status) == "on" ]; then
- power_reset
- else
- echo "ERROR: Server not powered on"
- fi
+elif [[ $2 == "hotswap" ]]; then
+ hotswap
elif [[ $2 == "graceful_shutdown" ]]; then
graceful_shutdown
-elif [ $2 == "graceful_reset" ]; then
- mkdir -p "/run/openbmc/"
- touch "/run/openbmc/host@0-graceful-reset"
- graceful_shutdown
- sleep 20s
-elif [ $2 == "status" ]; then
- power_status
elif [ $2 == "force_reset" ]; then
force_reset
+elif [ $2 == "shutdown_ack" ]; then
+ shutdown_ack
+elif [ $2 == "power_button" ]; then
+ power_button
else
echo "Invalid parameter2=$2"
usage;
fi
exit 0;
-
diff --git a/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb b/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb
index b56ce441e..682d567ed 100644
--- a/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb
+++ b/meta-fii/meta-kudo/recipes-kudo/ipmi/fii-ipmi-oem_git.bb
@@ -15,7 +15,7 @@ EXTRA_OECMAKE="-DENABLE_TEST=0 -DYOCTO=1"
LIBRARY_NAMES = "libfiioemcmds.so"
SRC_URI = "git://github.com/openbmc/foxconn-ipmi-oem.git"
-SRCREV = "35c1ac40e476caa19c84a546d4f85ba96cb5dbbd"
+SRCREV = "da2cf0d2b0f4cd56bc93575a435a5ee1c848f7b0"
HOSTIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}"
NETIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}"
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
index 5e0763a64..bb35b29be 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-fw-utility/kudo-fw/kudo-fw.sh
@@ -40,11 +40,15 @@ function fwbios() {
fi
i2cset -y -f -a 13 0x76 0x10 0x00
- # Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE.
- # Moved to before SCP as fwscp function returns 0 on success
+ # Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE for SCP 1.06 and older.
nvparm -s 0x1 -o 0x114090
- # TODO: Disabled toggling of SMPro heartbeat (require CPLD v 1.12.0.0+)
- # nvparm -s 0x1 -o 0x5F0638
+
+ # Disable LPI mode NV_SI_CPU_LPI_FREQ_DISABLE for SCP 1.07 and newer
+ nvparm -s 0x1 -o 0x02A8
+
+ # Disable toggling of SMPro heartbeat
+ nvparm -s 0x0 -o 0x5F0638
+
if [ $? -ne 0 ]; then
echo "Setting default nvparms failed " >&2
return 1
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service
index 54c7c7aa1..8a8d46f14 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/host-powerctrl.service
@@ -2,6 +2,8 @@
Description = Host Power Control Sequence
Wants=ssifbridge.service
After=ssifbridge.service
+Wants=kudo-bios-verify.service
+After=kudo-bios-verify.service
[Service]
Restart=no
diff --git a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
index 8231e3de8..55661df80 100644
--- a/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
+++ b/meta-fii/meta-kudo/recipes-kudo/kudo-sys-utility/kudo-boot/init_once.sh
@@ -35,10 +35,6 @@ if [[ $boardver -lt 64 ]]; then
# Power control
# S0_BMC_OK, GPIO 69
set_gpio_ctrl 69 out 1
-
- # MON_BMC_ALIVE, GPIO 10(EVT), GPIO137(DVT)
- set_gpio_ctrl 137 out 0 # setting unused GPIO
- set_gpio_ctrl 10 out 1
else
echo "DVT or PVT system"
# sleep so that FRU and all ipmitool Devices are ready before HOST OS
@@ -49,11 +45,7 @@ else
# Power control
# S0_BMC_OK, GPIO 69
set_gpio_ctrl 69 out 1
-
- # MON_BMC_ALIVE GPIO137(DVT)
- set_gpio_ctrl 10 out 0 # setting unused GPIO
- set_gpio_ctrl 137 out 1
-fi
+fi
# Disable CPU 1 CLK when cpu not detected
# echo init_once cpu $CPU1_STATUS > /dev/ttyS0
@@ -72,3 +64,6 @@ if [[ $CPU1_STATUS_N == 1 ]]; then
i2cset -y -a -f 16 0x6a 11 1 0x01 i
i2cset -y -a -f 17 0x67 1 2 0x3f 0x0c i
fi
+
+# Create /run/openbmc for system power files
+mkdir "/run/openbmc"
diff --git a/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
index 2dccd42e8..47cb2cc60 100644
--- a/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
+++ b/meta-fii/meta-kudo/recipes-phosphor/skeleton/obmc-libobmc-intf/gpio_defs.json
@@ -6,7 +6,6 @@
"power_up_outs": [
],
"reset_outs": [
- {"name": "BMC_S0_SYSRESET_N", "polarity": false}
]
}
},
@@ -16,11 +15,6 @@
"name": "PGOOD",
"num": 200,
"direction": "in"
- },
- {
- "name": "BMC_S0_SYSRESET_N",
- "num": 65,
- "direction": "out"
}
]
}
diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service
new file mode 100644
index 000000000..d8df56164
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Chassis.service
@@ -0,0 +1,18 @@
+[Unit]
+Description=Phosphor Chassis State Manager
+Before=mapper-wait@-xyz-openbmc_project-state-chassis.service
+Wants=obmc-mapper.target
+After=obmc-mapper.target
+After=org.openbmc.control.Power@0.service
+After=host-powerctrl.service
+
+[Service]
+ExecStartPre=/bin/sleep 5
+ExecStart=/usr/bin/phosphor-chassis-state-manager
+Restart=always
+Type=dbus
+BusName=xyz.openbmc_project.State.Chassis
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service
new file mode 100644
index 000000000..3455aeea2
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager/xyz.openbmc_project.State.Host.service
@@ -0,0 +1,16 @@
+[Unit]
+Description=Phosphor Host State Manager
+Wants=mapper-wait@-xyz-openbmc_project-control-host0-auto_reboot.service
+After=mapper-wait@-xyz-openbmc_project-control-host0-auto_reboot.service
+Before=mapper-wait@-xyz-openbmc_project-state-host.service
+Wants=obmc-mapper.target
+After=obmc-mapper.target
+
+[Service]
+ExecStart=/usr/bin/phosphor-host-state-manager
+Restart=always
+Type=dbus
+BusName=xyz.openbmc_project.State.Host
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend
new file mode 100644
index 000000000..39106e8c1
--- /dev/null
+++ b/meta-fii/meta-kudo/recipes-phosphor/state/phosphor-state-manager_%.bbappend
@@ -0,0 +1,39 @@
+FILESEXTRAPATHS:prepend:kudo := "${THISDIR}/${PN}:"
+
+CHASSIS_ACTION_TARGETS:append:kudo = " powercycle"
+
+STATE_MGR_PACKAGES:remove:kudo = " ${PN}-host-check ${PN}-reset-sensor-states"
+SYSTEMD_PACKAGES:remove:kudo = " ${PN}-reset-sensor-states"
+RRECOMMENDS:${PN}-host:remove:kudo = " ${PN}-host-check ${PN}-reset-sensor-states"
+
+pkg_postinst:${PN}-obmc-targets:append:kudo() {
+ rm "$D$systemd_system_unitdir/obmc-host-shutdown@0.target.requires/obmc-chassis-poweroff@0.target"
+
+ rm "$D$systemd_system_unitdir/obmc-host-warm-reboot@0.target.requires/xyz.openbmc_project.Ipmi.Internal.SoftPowerOff.service"
+ rm "$D$systemd_system_unitdir/obmc-host-warm-reboot@0.target.requires/obmc-host-force-warm-reboot@0.target"
+
+ rm "$D$systemd_system_unitdir/obmc-host-reboot@0.target.requires/phosphor-reboot-host@0.service"
+ rm "$D$systemd_system_unitdir/obmc-host-reboot@0.target.requires/obmc-host-shutdown@0.target"
+
+ rm "$D$systemd_system_unitdir/obmc-host-force-warm-reboot@0.target.requires/obmc-host-stop@0.target"
+ rm "$D$systemd_system_unitdir/obmc-host-force-warm-reboot@0.target.requires/phosphor-reboot-host@0.service"
+
+ rm "$D$systemd_system_unitdir/obmc-host-reset@0.target.requires/phosphor-reset-host-running@0.service"
+ rm "$D$systemd_system_unitdir/obmc-host-quiesce@0.target.wants/phosphor-reset-sensor-states@0.service"
+ rm "$D$systemd_system_unitdir/obmc-host-stop@0.target.wants/phosphor-reset-sensor-states@0.service"
+}
+
+SRC_URI:append:kudo = " \
+ file://xyz.openbmc_project.State.Chassis.service \
+ file://xyz.openbmc_project.State.Host.service \
+ "
+
+do_install:append:kudo() {
+ install -d ${D}${systemd_system_unitdir}
+ install -m 0644 ${WORKDIR}/xyz.openbmc_project.State.Chassis.service ${D}${systemd_system_unitdir}/xyz.openbmc_project.State.Chassis.service
+ install -m 0644 ${WORKDIR}/xyz.openbmc_project.State.Host.service ${D}${systemd_system_unitdir}/xyz.openbmc_project.State.Host.service
+ rm -f ${D}${systemd_system_unitdir}/phosphor-reset-host-check@.service
+ rm -f ${D}${systemd_system_unitdir}/phosphor-reset-sensor-states@.service
+ rm -f ${D}${systemd_system_unitdir}/phosphor-reset-host-running@.service
+}
+