1*ed1e8cacSPotin LaiFILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" 2*ed1e8cacSPotin Lai 3*ed1e8cacSPotin Lai#=============================================================================== 4*ed1e8cacSPotin Lai# TODO: need to be removed once patch merged. 5*ed1e8cacSPotin Lai# meta-facebook: phosphor-state-manager: refactor targets and relationships 6*ed1e8cacSPotin Lai# https://gerrit.openbmc.org/c/openbmc/openbmc/+/69903 7*ed1e8cacSPotin Lai 8*ed1e8cacSPotin LaiPACKAGECONFIG:remove = "only-run-apr-on-power-loss" 9*ed1e8cacSPotin Lai 10*ed1e8cacSPotin Lai# The host-graceful-poweroff service replaces the `pldmSoftPowerOff` and 11*ed1e8cacSPotin Lai# `xyz.openbmc_project.Ipmi.Internal.SoftPowerOff` services to gracefully 12*ed1e8cacSPotin Lai# shutdown the host. 13*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:append = " \ 14*ed1e8cacSPotin Lai obmc-host-shutdown@{}.target.requires/host-graceful-poweroff@{}.service \ 15*ed1e8cacSPotin Lai obmc-host-warm-reboot@{}.target.requires/host-graceful-poweroff@{}.service \ 16*ed1e8cacSPotin Lai " 17*ed1e8cacSPotin Lai 18*ed1e8cacSPotin Lai# The "warm-reboot" is what does the graceful shutdown operation and the 19*ed1e8cacSPotin Lai# normal "reboot" is suppose to do a forced reboot. `host-shutdown` is used 20*ed1e8cacSPotin Lai# as part of the graceful shutdown path, which we want to skip in a normal 21*ed1e8cacSPotin Lai# reboot, so remove the dependency. The `phosphor-reboot-host@.service` does 22*ed1e8cacSPotin Lai# continue to be in `obmc-host-reboot` requirements and it depends on 23*ed1e8cacSPotin Lai# `obmc-host-stop`, which will initiate a `host-force-poweroff`. 24*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:remove = " \ 25*ed1e8cacSPotin Lai obmc-host-reboot@{}.target.requires/obmc-host-shutdown@{}.service \ 26*ed1e8cacSPotin Lai " 27*ed1e8cacSPotin Lai 28*ed1e8cacSPotin Lai# The host-poweron service is the equivalent to the start_host@ service 29*ed1e8cacSPotin Lai# from meta-openpower. 30*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:append = " \ 31*ed1e8cacSPotin Lai obmc-host-startmin@{}.target.requires/host-poweron@{}.service \ 32*ed1e8cacSPotin Lai " 33*ed1e8cacSPotin Lai 34*ed1e8cacSPotin Lai# The host-stop service is called as a side-effect of force-warm-reboot and is 35*ed1e8cacSPotin Lai# expected to force-stop the processors. They will be restarted in the 36*ed1e8cacSPotin Lai# subsequent `obmc-host-reboot` (which calls `host-startmin`) 37*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:append = " \ 38*ed1e8cacSPotin Lai obmc-host-stop@{}.target.requires/host-force-poweroff@{}.service \ 39*ed1e8cacSPotin Lai " 40*ed1e8cacSPotin Lai 41*ed1e8cacSPotin Lai# Add services for the chassis power operations. 42*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:append = " \ 43*ed1e8cacSPotin Lai obmc-chassis-poweron@{}.target.requires/chassis-poweron@{}.service \ 44*ed1e8cacSPotin Lai obmc-chassis-hard-poweroff@{}.target.requires/chassis-poweroff@{}.service \ 45*ed1e8cacSPotin Lai obmc-chassis-powercycle@{}.target.requires/chassis-powercycle@{}.service \ 46*ed1e8cacSPotin Lai " 47*ed1e8cacSPotin Lai 48*ed1e8cacSPotin Lai# We don't use the obmc-power-start or obmc-power-stop, which use the 49*ed1e8cacSPotin Lai# `org.openbmc` interface but instead install our own chassis-poweron and 50*ed1e8cacSPotin Lai# chassis-poweroff. 51*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \ 52*ed1e8cacSPotin Lai obmc-chassis-poweron@{}.target.requires/obmc-power-start@{}.service \ 53*ed1e8cacSPotin Lai obmc-chassis-poweroff@{}.target.requires/obmc-power-stop@{}.service \ 54*ed1e8cacSPotin Lai " 55*ed1e8cacSPotin Lai 56*ed1e8cacSPotin Lai# The obmc-chassis-powerreset target is used to determine the state of the host 57*ed1e8cacSPotin Lai# when the BMC resets (to handle cases where the BMC reset while the host is 58*ed1e8cacSPotin Lai# running). The default implementation of these relies on `org.openbmc` 59*ed1e8cacSPotin Lai# interfaces we do not implement, so we need to remove them. 60*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \ 61*ed1e8cacSPotin Lai obmc-chassis-powerreset@{}.target.requires/phosphor-reset-chassis-on@{}.service \ 62*ed1e8cacSPotin Lai obmc-chassis-powerreset@{}.target.requires/phosphor-reset-chassis-running@{}.service \ 63*ed1e8cacSPotin Lai " 64*ed1e8cacSPotin Lai 65*ed1e8cacSPotin LaiRDEPENDS:${PN}:append = " bash" 66*ed1e8cacSPotin Lai 67*ed1e8cacSPotin LaiFILES:${PN} += "${systemd_system_unitdir}/*.service" 68*ed1e8cacSPotin LaiFILES:${PN} += "${libexecdir}/${PN}" 69*ed1e8cacSPotin Lai 70*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \ 71*ed1e8cacSPotin Lai obmc-chassis-poweron@{}.target.wants/chassis-poweron@{}.service \ 72*ed1e8cacSPotin Lai obmc-chassis-hard-poweroff@{}.target.wants/chassis-poweroff@{}.service \ 73*ed1e8cacSPotin Lai obmc-chassis-powercycle@{}.target.wants/chassis-powercycle@{}.service \ 74*ed1e8cacSPotin Lai" 75*ed1e8cacSPotin Lai 76*ed1e8cacSPotin LaiHOST_DEFAULT_TARGETS:remove = " \ 77*ed1e8cacSPotin Lai obmc-host-shutdown@{}.target.wants/host-poweroff@{}.service \ 78*ed1e8cacSPotin Lai obmc-host-start@{}.target.wants/host-poweron@{}.service \ 79*ed1e8cacSPotin Lai obmc-host-reboot@{}.target.wants/host-powercycle@{}.service \ 80*ed1e8cacSPotin Lai obmc-host-force-warm-reboot@{}.target.wants/host-powerreset@{}.service \ 81*ed1e8cacSPotin Lai" 82*ed1e8cacSPotin Lai#=============================================================================== 83*ed1e8cacSPotin Lai 84*ed1e8cacSPotin LaiRDEPENDS:${PN}:append = " bash" 85*ed1e8cacSPotin LaiPACKAGECONFIG:append = " host-gpio" 86*ed1e8cacSPotin Lai 87*ed1e8cacSPotin LaiSRC_URI:append = " \ 88*ed1e8cacSPotin Lai file://chassis-power-state-init \ 89*ed1e8cacSPotin Lai file://chassis-power-state-init.conf \ 90*ed1e8cacSPotin Lai file://chassis-powercycle \ 91*ed1e8cacSPotin Lai file://chassis-powercycle@.service \ 92*ed1e8cacSPotin Lai file://chassis-poweron \ 93*ed1e8cacSPotin Lai file://chassis-poweron@.service \ 94*ed1e8cacSPotin Lai file://host-force-poweroff \ 95*ed1e8cacSPotin Lai file://host-force-poweroff@.service \ 96*ed1e8cacSPotin Lai file://host-graceful-poweroff \ 97*ed1e8cacSPotin Lai file://host-graceful-poweroff@.service \ 98*ed1e8cacSPotin Lai file://host-poweron \ 99*ed1e8cacSPotin Lai file://host-poweron@.service \ 100*ed1e8cacSPotin Lai file://power-cmd \ 101*ed1e8cacSPotin Lai file://phosphor-wait-power-off@.service \ 102*ed1e8cacSPotin Lai " 103*ed1e8cacSPotin Lai 104*ed1e8cacSPotin Lai# Catalina chassis off is host force off 105*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \ 106*ed1e8cacSPotin Lai obmc-chassis-hard-poweroff@{}.target.requires/chassis-poweroff@{}.service \ 107*ed1e8cacSPotin Lai " 108*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:append = " \ 109*ed1e8cacSPotin Lai obmc-chassis-hard-poweroff@{}.target.requires/host-force-poweroff@{}.service \ 110*ed1e8cacSPotin Lai " 111*ed1e8cacSPotin Lai 112*ed1e8cacSPotin Lai#We need to ensure that the chassis power is always on. 113*ed1e8cacSPotin LaiCHASSIS_DEFAULT_TARGETS:remove = " \ 114*ed1e8cacSPotin Lai obmc-host-shutdown@{}.target.requires/obmc-chassis-poweroff@{}.target \ 115*ed1e8cacSPotin Lai " 116*ed1e8cacSPotin LaiHARD_OFF_TMPL_CTRL="" 117*ed1e8cacSPotin LaiHARD_OFF_TGTFMT_CTRL="" 118*ed1e8cacSPotin LaiHARD_OFF_FMT_CTRL="" 119*ed1e8cacSPotin LaiHARD_OFF_INSTFMT_CTRL="" 120*ed1e8cacSPotin Lai 121*ed1e8cacSPotin Laido_install:append() { 122*ed1e8cacSPotin Lai install -d ${D}${systemd_system_unitdir} 123*ed1e8cacSPotin Lai install -m 0644 ${WORKDIR}/*.service ${D}${systemd_system_unitdir}/ 124*ed1e8cacSPotin Lai 125*ed1e8cacSPotin Lai install -d ${D}${libexecdir}/${PN} 126*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/chassis-power-state-init ${D}${libexecdir}/${PN}/ 127*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/chassis-poweron ${D}${libexecdir}/${PN}/ 128*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/chassis-powercycle ${D}${libexecdir}/${PN}/ 129*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/host-force-poweroff ${D}${libexecdir}/${PN}/ 130*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/host-graceful-poweroff ${D}${libexecdir}/${PN}/ 131*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/host-poweron ${D}${libexecdir}/${PN}/ 132*ed1e8cacSPotin Lai install -m 0755 ${WORKDIR}/power-cmd ${D}${libexecdir}/${PN}/ 133*ed1e8cacSPotin Lai} 134*ed1e8cacSPotin Lai 135*ed1e8cacSPotin LaiSYSTEMD_OVERRIDE:${PN}-host += "chassis-power-state-init.conf:xyz.openbmc_project.State.Host@0.service.d/chassis-power-state-init.conf" 136