From d0f63ef62c76c932a2003eaa42c0b250065ae06f Mon Sep 17 00:00:00 2001 From: Ed Tanous Date: Wed, 31 Jul 2019 10:43:37 -0700 Subject: Update to internal 7-31-19 Signed-off-by: Ed Tanous --- ...1-Modify-dbus-interface-for-power-control.patch | 38 --- .../0002-Capture-host-restart-cause.patch | 338 --------------------- ...boot-for-the-Reboot-host-state-transition.patch | 71 ----- .../0004-Add-Power-Restore-delay-support.patch | 141 --------- .../phosphor-reboot-host@.service | 18 -- .../phosphor-reset-host-check@.service | 19 -- .../phosphor-reset-host-reboot-attempts@.service | 14 - .../state/phosphor-state-manager_%.bbappend | 10 - 8 files changed, 649 deletions(-) delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0001-Modify-dbus-interface-for-power-control.patch delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0002-Capture-host-restart-cause.patch delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0003-Use-warm-reboot-for-the-Reboot-host-state-transition.patch delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0004-Add-Power-Restore-delay-support.patch delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reboot-host@.service delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-check@.service delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-reboot-attempts@.service delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor/state') diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0001-Modify-dbus-interface-for-power-control.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0001-Modify-dbus-interface-for-power-control.patch deleted file mode 100644 index fac9b52f1..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0001-Modify-dbus-interface-for-power-control.patch +++ /dev/null @@ -1,38 +0,0 @@ -From d34a2a5f6ca0564275ed0e2664624525cad64585 Mon Sep 17 00:00:00 2001 -From: Yong Li -Date: Fri, 13 Jul 2018 09:08:52 +0800 -Subject: [PATCH] Modify dbus interface for power control -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Switch power control service namespace from “org” to “xyz”, -to compatible with new intel-chassis services - -Change-Id: I1bf5e218f72eb9fd4fb6f203c35479818d12b1fa -Signed-off-by: Yong Li ---- - chassis_state_manager.cpp | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/chassis_state_manager.cpp b/chassis_state_manager.cpp -index 03dd176..05e2440 100644 ---- a/chassis_state_manager.cpp -+++ b/chassis_state_manager.cpp -@@ -63,10 +63,11 @@ void Chassis::determineInitialState() - { - sdbusplus::message::variant pgood = -1; - auto method = this->bus.new_method_call( -- "org.openbmc.control.Power", "/org/openbmc/control/power0", -+ "xyz.openbmc_project.Chassis.Control.Power", -+ "/xyz/openbmc_project/Chassis/Control/Power0", - "org.freedesktop.DBus.Properties", "Get"); - -- method.append("org.openbmc.control.Power", "pgood"); -+ method.append("xyz.openbmc_project.Chassis.Control.Power", "pgood"); - try - { - auto reply = this->bus.call(method); --- -2.7.4 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0002-Capture-host-restart-cause.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0002-Capture-host-restart-cause.patch deleted file mode 100644 index 2adff372e..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0002-Capture-host-restart-cause.patch +++ /dev/null @@ -1,338 +0,0 @@ -From ed64fe7379a259a822aca69e70426a2b07aad25d Mon Sep 17 00:00:00 2001 -From: Kuiying Wang -Date: Tue, 7 Aug 2018 16:43:00 +0800 -Subject: [PATCH] Capture host restart cause - -Capture host restart cause on power/reset button pressed, -ipmi command/webui, host OS reboot(Ctrl-Alt-Del), -and power restore policy settings. -Save the restart cause into file system, -and restore it when BMC boot up. - -Signed-off-by: Kuiying Wang -Signed-off-by: Yong Li ---- - configure.ac | 4 +- - discover_system_state.cpp | 14 +++++ - host_state_manager.cpp | 17 ++++++ - host_state_manager.hpp | 148 +++++++++++++++++++++++++++++++++++++++++++++- - 4 files changed, 178 insertions(+), 5 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 7919ec5..051a0c0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -52,9 +52,9 @@ AC_ARG_VAR(HOST_RUNNING_FILE, [File to create if host is running]) - AS_IF([test "x$HOST_RUNNING_FILE" == "x"], [HOST_RUNNING_FILE="/run/openbmc/host@%u-on"]) - AC_DEFINE_UNQUOTED([HOST_RUNNING_FILE], ["$HOST_RUNNING_FILE"], [File to create if host is running]) - --AC_ARG_VAR(HOST_STATE_PERSIST_PATH, [Path of file for storing requested host state.]) -+AC_ARG_VAR(HOST_STATE_PERSIST_PATH, [Path of file for storing host state.]) - AS_IF([test "x$HOST_STATE_PERSIST_PATH" == "x"], \ -- [HOST_STATE_PERSIST_PATH="/var/lib/phosphor-state-manager/requestedHostTransition"]) -+ [HOST_STATE_PERSIST_PATH="/var/lib/phosphor-state-manager/hostState"]) - AC_DEFINE_UNQUOTED([HOST_STATE_PERSIST_PATH], ["$HOST_STATE_PERSIST_PATH"], \ - [Path of file for storing requested host state.]) - -diff --git a/discover_system_state.cpp b/discover_system_state.cpp -index 3a38152..0b5798a 100644 ---- a/discover_system_state.cpp -+++ b/discover_system_state.cpp -@@ -12,6 +12,7 @@ - #include "settings.hpp" - #include "xyz/openbmc_project/Common/error.hpp" - #include "xyz/openbmc_project/Control/Power/RestorePolicy/server.hpp" -+#include - - namespace phosphor - { -@@ -181,6 +182,10 @@ int main(int argc, char** argv) - log("power_policy=ALWAYS_POWER_ON, powering host on"); - setProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition", - convertForMessage(server::Host::Transition::On)); -+ -+ setProperty( -+ bus, hostPath, HOST_BUSNAME, "HostRestartCause", -+ convertForMessage(server::Host::RestartCause::PowerPolicyAlwaysOn)); - } - else if (RestorePolicy::Policy::Restore == - RestorePolicy::convertPolicyFromString(powerPolicy)) -@@ -192,6 +197,15 @@ int main(int argc, char** argv) - getProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition"); - setProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition", - hostReqState); -+ -+ if (server::Host::convertTransitionFromString(hostReqState) == -+ server::Host::Transition::On) -+ { -+ setProperty( -+ bus, hostPath, HOST_BUSNAME, "HostRestartCause", -+ convertForMessage( -+ server::Host::RestartCause::PowerPolicyPreviousState)); -+ } - } - - return 0; -diff --git a/host_state_manager.cpp b/host_state_manager.cpp -index 7d661dd..0e00e78 100644 ---- a/host_state_manager.cpp -+++ b/host_state_manager.cpp -@@ -308,6 +308,15 @@ bool Host::deserialize(const fs::path& path) - } - } - -+void Host::restoreHostRestartCause() -+{ -+ if (!deserialize(HOST_STATE_PERSIST_PATH)) -+ { -+ // set to default value -+ server::Host::hostRestartCause(server::Host::RestartCause::Unknown); -+ } -+} -+ - Host::Transition Host::requestedHostTransition(Transition value) - { - log("Host State transaction request", -@@ -321,6 +330,7 @@ Host::Transition Host::requestedHostTransition(Transition value) - // check of this count will occur - if (value != server::Host::Transition::Off) - { -+ hostRestartCause(RestartCause::IpmiCommand); - decrementRebootCount(); - } - -@@ -353,6 +363,13 @@ Host::HostState Host::currentHostState(HostState value) - return server::Host::currentHostState(value); - } - -+Host::RestartCause Host::hostRestartCause(RestartCause value) -+{ -+ auto retVal = server::Host::hostRestartCause(value); -+ serialize(); -+ return retVal; -+} -+ - } // namespace manager - } // namespace state - } // namespace phosphor -diff --git a/host_state_manager.hpp b/host_state_manager.hpp -index 2b00777..afd8aa3 100644 ---- a/host_state_manager.hpp -+++ b/host_state_manager.hpp -@@ -32,6 +32,22 @@ using namespace phosphor::logging; - namespace sdbusRule = sdbusplus::bus::match::rules; - namespace fs = std::experimental::filesystem; - -+const static constexpr char* powerButtonPath = -+ "/xyz/openbmc_project/Chassis/Buttons/Power0"; -+const static constexpr char* powerButtonIntf = -+ "xyz.openbmc_project.Chassis.Buttons.Power"; -+const static constexpr char* resetButtonPath = -+ "/xyz/openbmc_project/Chassis/Buttons/Reset0"; -+const static constexpr char* resetButtonIntf = -+ "xyz.openbmc_project.Chassis.Buttons.Reset"; -+ -+const static constexpr char* powerControlService = -+ "xyz.openbmc_project.Chassis.Control.Power"; -+const static constexpr char* powerControlPath = -+ "/xyz/openbmc_project/Chassis/Control/Power0"; -+const static constexpr char* powerControlInterface = -+ "xyz.openbmc_project.Chassis.Control.Power"; -+ - /** @class Host - * @brief OpenBMC host state management implementation. - * @details A concrete implementation for xyz.openbmc_project.State.Host -@@ -59,8 +75,93 @@ class Host : public HostInherit - sdbusRule::interface("org.freedesktop.systemd1.Manager"), - std::bind(std::mem_fn(&Host::sysStateChange), this, - std::placeholders::_1)), -- settings(bus) -+ settings(bus), -+ powerButtonPressedSignal( -+ bus, -+ sdbusRule::type::signal() + sdbusRule::member("Pressed") + -+ sdbusRule::path(powerButtonPath) + -+ sdbusRule::interface(powerButtonIntf), -+ [this](sdbusplus::message::message& msg) { -+ phosphor::logging::log( -+ "powerButtonPressedSignal callback function is called..."); -+ this->hostRestartCause(this->RestartCause::PowerButton); -+ this->powerButtonPressed = true; -+ return; -+ }), -+ resetButtonPressedSignal( -+ bus, -+ sdbusRule::type::signal() + sdbusRule::member("Pressed") + -+ sdbusRule::path(resetButtonPath) + -+ sdbusRule::interface(resetButtonIntf), -+ [this](sdbusplus::message::message& msg) { -+ phosphor::logging::log( -+ "resetButtonPressedSignal callback function is called..."); -+ this->hostRestartCause(this->RestartCause::ResetButton); -+ this->resetButtonPressed = true; -+ return; -+ }), -+ postCompletePropSignal( -+ bus, -+ sdbusplus::bus::match::rules::propertiesChanged( -+ powerControlPath, powerControlInterface), -+ [this](sdbusplus::message::message& msg) { -+ phosphor::logging::log( -+ "postCompletePropSignal callback function is called..."); -+ -+ using DbusVariant = sdbusplus::message::variant< -+ std::string, bool, uint8_t, uint16_t, int16_t, uint32_t, -+ int32_t, uint64_t, int64_t, double>; -+ -+ std::map props; -+ std::vector inval; -+ std::string iface; -+ msg.read(iface, props, inval); -+ -+ for (const auto& t : props) -+ { -+ auto key = t.first; -+ auto value = t.second; -+ -+ if (key == "state") -+ { -+ this->powerStateChanged = true; -+ } -+ -+ else if (key == "pgood") -+ { -+ this->pgood = -+ sdbusplus::message::variant_ns::get(value); -+ } -+ -+ else if (key == "post_complete") -+ { -+ bool postState = -+ sdbusplus::message::variant_ns::get(value); -+ -+ if (!postState && this->pgood) -+ { -+ if (!this->resetButtonPressed && -+ !this->powerButtonPressed && -+ !this->powerStateChanged) -+ { -+ phosphor::logging::log< -+ phosphor::logging::level::INFO>( -+ "OEM Reset"); -+ this->hostRestartCause(this->RestartCause::OEM); -+ } -+ this->powerButtonPressed = false; -+ this->powerStateChanged = false; -+ this->resetButtonPressed = false; -+ } -+ } -+ } -+ }) - { -+ powerButtonPressed = false; -+ powerStateChanged = false; -+ resetButtonPressed = false; -+ pgood = 0; -+ - // Enable systemd signals - subscribeToSystemdSignals(); - -@@ -69,8 +170,29 @@ class Host : public HostInherit - - attemptsLeft(BOOT_COUNT_MAX_ALLOWED); - -+ restoreHostRestartCause(); // restore host restart cause from persisted -+ // file -+ - // We deferred this until we could get our property correct - this->emit_object_added(); -+ sdbusplus::message::variant pgoodProp = -1; -+ auto method = -+ this->bus.new_method_call(powerControlService, powerControlPath, -+ "org.freedesktop.DBus.Properties", "Get"); -+ -+ method.append(powerControlInterface, "pgood"); -+ try -+ { -+ auto reply = this->bus.call(method); -+ reply.read(pgoodProp); -+ pgood = sdbusplus::message::variant_ns::get(pgoodProp); -+ } -+ catch (const sdbusplus::exception::SdBusError& e) -+ { -+ log("Error performing call to get pgood", -+ entry("NAME=%s", e.name()), -+ entry("ERROR=%s", e.what())); -+ } - } - - /** @brief Set value of HostTransition */ -@@ -85,6 +207,9 @@ class Host : public HostInherit - /** @brief Set value of CurrentHostState */ - HostState currentHostState(HostState value) override; - -+ /** @brief Set value of HostRestartCause */ -+ RestartCause hostRestartCause(RestartCause value) override; -+ - /** - * @brief Set host reboot count to default - * -@@ -192,7 +317,9 @@ class Host : public HostInherit - server::Progress::bootProgress()), - convertForMessage( - sdbusplus::xyz::openbmc_project::State::OperatingSystem:: -- server::Status::operatingSystemState())); -+ server::Status::operatingSystemState()), -+ convertForMessage(sdbusplus::xyz::openbmc_project::State:: -+ server::Host::hostRestartCause())); - } - - /** @brief Function required by Cereal to perform deserialization. -@@ -208,7 +335,8 @@ class Host : public HostInherit - std::string reqTranState; - std::string bootProgress; - std::string osState; -- archive(reqTranState, bootProgress, osState); -+ std::string restartCause; -+ archive(reqTranState, bootProgress, osState, restartCause); - auto reqTran = Host::convertTransitionFromString(reqTranState); - // When restoring, set the requested state with persistent value - // but don't call the override which would execute it -@@ -219,6 +347,8 @@ class Host : public HostInherit - sdbusplus::xyz::openbmc_project::State::OperatingSystem::server:: - Status::operatingSystemState( - Host::convertOSStatusFromString(osState)); -+ sdbusplus::xyz::openbmc_project::State::server::Host::hostRestartCause( -+ Host::convertRestartCauseFromString(restartCause)); - } - - /** @brief Serialize and persist requested host state -@@ -239,6 +369,9 @@ class Host : public HostInherit - */ - bool deserialize(const fs::path& path); - -+ /** @brief Used to restore HostRestartCause value from persisted file */ -+ void restoreHostRestartCause(); -+ - /** @brief Persistent sdbusplus DBus bus connection. */ - sdbusplus::bus::bus& bus; - -@@ -247,6 +380,15 @@ class Host : public HostInherit - - // Settings objects of interest - settings::Objects settings; -+ -+ bool resetButtonPressed; -+ bool powerButtonPressed; -+ bool powerStateChanged; -+ int32_t pgood; -+ -+ sdbusplus::bus::match_t powerButtonPressedSignal; -+ sdbusplus::bus::match_t resetButtonPressedSignal; -+ sdbusplus::bus::match_t postCompletePropSignal; - }; - - } // namespace manager --- -2.7.4 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0003-Use-warm-reboot-for-the-Reboot-host-state-transition.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0003-Use-warm-reboot-for-the-Reboot-host-state-transition.patch deleted file mode 100644 index 40722c3c9..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0003-Use-warm-reboot-for-the-Reboot-host-state-transition.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 8a7f73a0688524c71023da89e8cb5578dac16f5d Mon Sep 17 00:00:00 2001 -From: Yong Li -Date: Fri, 8 Mar 2019 17:21:49 +0800 -Subject: [PATCH] Use warm-reboot for the Reboot host state transition - -The same as reset button pressing, the pgood signal will keep on during the reboot - -Tested By: -ipmitool chassis power reset -The pgood(gpio219) will be keep high during the reset process - -Signed-off-by: Yong Li ---- - host_state_manager.cpp | 20 +++++++++++++------- - 1 file changed, 13 insertions(+), 7 deletions(-) - -diff --git a/host_state_manager.cpp b/host_state_manager.cpp -index 03d210d..8fac348 100644 ---- a/host_state_manager.cpp -+++ b/host_state_manager.cpp -@@ -44,8 +44,9 @@ constexpr auto HOST_STATE_SOFT_POWEROFF_TGT = "obmc-host-shutdown@0.target"; - constexpr auto HOST_STATE_POWEROFF_TGT = "obmc-host-stop@0.target"; - constexpr auto HOST_STATE_POWERON_TGT = "obmc-host-start@0.target"; - constexpr auto HOST_STATE_POWERON_MIN_TGT = "obmc-host-startmin@0.target"; --constexpr auto HOST_STATE_REBOOT_TGT = "obmc-host-reboot@0.target"; -+constexpr auto HOST_STATE_REBOOT_TGT = "obmc-host-warm-reset@0.target"; - constexpr auto HOST_STATE_QUIESCE_TGT = "obmc-host-quiesce@0.target"; -+constexpr auto hostStateRebootService = "intel-power-warm-reset@0.service"; - - constexpr auto ACTIVE_STATE = "active"; - constexpr auto ACTIVATING_STATE = "activating"; -@@ -168,6 +169,7 @@ bool Host::stateActive(const std::string& target) - - const auto& currentStateStr = - sdbusplus::message::variant_ns::get(currentState); -+ - return currentStateStr == ACTIVE_STATE || - currentStateStr == ACTIVATING_STATE; - } -@@ -236,18 +238,22 @@ void Host::sysStateChange(sdbusplus::message::message& msg) - // Read the msg and populate each variable - msg.read(newStateID, newStateObjPath, newStateUnit, newStateResult); - -- if ((newStateUnit == HOST_STATE_POWEROFF_TGT) && -- (newStateResult == "done") && -- (!stateActive(HOST_STATE_POWERON_MIN_TGT))) -+ if (((newStateUnit == HOST_STATE_POWEROFF_TGT) && -+ (newStateResult == "done") && -+ (!stateActive(HOST_STATE_POWERON_MIN_TGT))) || -+ ((newStateUnit == hostStateRebootService) && -+ (newStateResult == "done"))) - { - log("Received signal that host is off"); - this->currentHostState(server::Host::HostState::Off); - this->bootProgress(bootprogress::Progress::ProgressStages::Unspecified); - this->operatingSystemState(osstatus::Status::OSStatus::Inactive); - } -- else if ((newStateUnit == HOST_STATE_POWERON_MIN_TGT) && -- (newStateResult == "done") && -- (stateActive(HOST_STATE_POWERON_MIN_TGT))) -+ else if (((newStateUnit == HOST_STATE_POWERON_MIN_TGT) && -+ (newStateResult == "done") && -+ (stateActive(HOST_STATE_POWERON_MIN_TGT))) || -+ ((newStateUnit == HOST_STATE_REBOOT_TGT) && -+ (newStateResult == "done"))) - { - log("Received signal that host is running"); - this->currentHostState(server::Host::HostState::Running); --- -2.7.4 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0004-Add-Power-Restore-delay-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0004-Add-Power-Restore-delay-support.patch deleted file mode 100644 index 31cb31079..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/0004-Add-Power-Restore-delay-support.patch +++ /dev/null @@ -1,141 +0,0 @@ -From 0edff651156ae63b6a73d9cb81e5e76cc6ae501a Mon Sep 17 00:00:00 2001 -From: Yong Li -Date: Fri, 12 Apr 2019 18:43:06 +0800 -Subject: [PATCH] Add Power Restore delay support - -That takes effect whenever the BMC -automatically turns on the system due -to the Power Restore Policy setting - -Tested: -Set power restore delay: -ipmitool raw 0x30 0x54 0 7 -Set restore policy as always-on: -ipmitool chassis policy always-on -AC off/on, check the journal log, the host will start boot after 7 seconds delay - -Signed-off-by: Yong Li ---- - discover_system_state.cpp | 71 +++++++++++++++++++++++++++++++++++++++++++++-- - 1 file changed, 68 insertions(+), 3 deletions(-) - -diff --git a/discover_system_state.cpp b/discover_system_state.cpp -index 0b5798a..298ae5b 100644 ---- a/discover_system_state.cpp -+++ b/discover_system_state.cpp -@@ -1,5 +1,4 @@ - #include --#include - #include - #include - #include -@@ -114,6 +113,49 @@ void setProperty(sdbusplus::bus::bus& bus, const std::string& path, - return; - } - -+int getPowerRestoreDelay(sdbusplus::bus::bus& bus, uint16_t& delay) -+{ -+ static constexpr const char* powerRestoreDelayObjPath = -+ "/xyz/openbmc_project/control/power_restore_delay"; -+ static constexpr const char* powerRestoreDelayIntf = -+ "xyz.openbmc_project.Control.Power.RestoreDelay"; -+ static constexpr const char* powerRestoreDelayProp = "PowerRestoreDelay"; -+ -+ std::string service = -+ getService(bus, powerRestoreDelayObjPath, powerRestoreDelayIntf); -+ -+ sdbusplus::message::message method = bus.new_method_call( -+ service.c_str(), powerRestoreDelayObjPath, PROPERTY_INTERFACE, "Get"); -+ -+ method.append(powerRestoreDelayIntf, powerRestoreDelayProp); -+ -+ try -+ { -+ auto reply = bus.call(method); -+ sdbusplus::message::variant variant; -+ reply.read(variant); -+ delay = sdbusplus::message::variant_ns::get(variant); -+ } -+ catch (sdbusplus::exception_t&) -+ { -+ phosphor::logging::log( -+ "Failed to get property", -+ phosphor::logging::entry("PROPERTY=%s", powerRestoreDelayProp), -+ phosphor::logging::entry("PATH=%s", powerRestoreDelayObjPath), -+ phosphor::logging::entry("INTERFACE=%s", powerRestoreDelayIntf)); -+ return -1; -+ } -+ return 0; -+} -+ -+void applyPowerRestoreDelay(uint16_t delay) -+{ -+ if (delay > 0) -+ { -+ log("Apply Power Restore Delay", entry("DELAY=%d", delay)); -+ std::this_thread::sleep_for(std::chrono::milliseconds(1000 * delay)); -+ } -+} - } // namespace manager - } // namespace state - } // namespace phosphor -@@ -176,13 +218,27 @@ int main(int argc, char** argv) - log("Host power is off, checking power policy", - entry("POWER_POLICY=%s", powerPolicy.c_str())); - -+ uint16_t delay = 0; -+ int ret = getPowerRestoreDelay(bus, delay); -+ -+ if (ret != 0) -+ { -+ log("getPowerRestoreDelay failed!"); -+ delay = 0; -+ } -+ - if (RestorePolicy::Policy::AlwaysOn == - RestorePolicy::convertPolicyFromString(powerPolicy)) - { -+ applyPowerRestoreDelay(delay); -+ - log("power_policy=ALWAYS_POWER_ON, powering host on"); -+ - setProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition", - convertForMessage(server::Host::Transition::On)); - -+ // Host on, needs to set the restart cause after host transition -+ // since host transition will change the restart cause - setProperty( - bus, hostPath, HOST_BUSNAME, "HostRestartCause", - convertForMessage(server::Host::RestartCause::PowerPolicyAlwaysOn)); -@@ -195,17 +251,26 @@ int main(int argc, char** argv) - // Read last requested state and re-request it to execute it - auto hostReqState = - getProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition"); -- setProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition", -- hostReqState); - - if (server::Host::convertTransitionFromString(hostReqState) == - server::Host::Transition::On) - { -+ applyPowerRestoreDelay(delay); -+ setProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition", -+ hostReqState); -+ -+ // Host on, needs to set the restart cause after host transition -+ // since host transition will change the restart cause - setProperty( - bus, hostPath, HOST_BUSNAME, "HostRestartCause", - convertForMessage( - server::Host::RestartCause::PowerPolicyPreviousState)); - } -+ else -+ { -+ setProperty(bus, hostPath, HOST_BUSNAME, "RequestedHostTransition", -+ hostReqState); -+ } - } - - return 0; --- -2.7.4 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reboot-host@.service b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reboot-host@.service deleted file mode 100644 index ffde01ca3..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reboot-host@.service +++ /dev/null @@ -1,18 +0,0 @@ -[Unit] -Description=Reboot host%i -Wants=obmc-host-stop@%i.target -After=obmc-host-stop@%i.target - -[Service] -#ExecStart={base_bindir}/systemctl start obmc-host-start@%i.target -# This service is starting another target that conflicts with the -# target this service is running in. OpenBMC needs a refactor of -# how it does its host reset path. Until then, this short term -# solution does the job. -# Since this is a part of the reboot target, call the startmin -# target which does the minimum required to start the host. -ExecStart=/bin/sh -c "sleep 10 && systemctl start obmc-host-startmin@%i.target" - - -[Install] -WantedBy=obmc-host-reboot@%i.target diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-check@.service b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-check@.service deleted file mode 100644 index 13b8f0fca..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-check@.service +++ /dev/null @@ -1,19 +0,0 @@ -[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-host-stop@%i.target -ConditionPathExists=/run/openbmc/chassis@%i-on - -[Service] -RemainAfterExit=yes -Type=oneshot -ExecStart=/bin/sh -c "if [ $(busctl get-property `mapper get-service /xyz/openbmc_project/Chassis/Control/Power%i` /xyz/openbmc_project/Chassis/Control/Power%i xyz.openbmc_project.Chassis.Control.Power vrd_good | sed 's/i\s*[1]/on/' | grep on | wc -l) != 0 ]; then mkdir -p /run/openbmc/ && touch /run/openbmc/host@%i-on; fi" -SyslogIdentifier=phosphor-host-check - -[Install] -WantedBy=obmc-host-reset@%i.target diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-reboot-attempts@.service b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-reboot-attempts@.service deleted file mode 100644 index 87c750c57..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager/phosphor-reset-host-reboot-attempts@.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Reset host reboot counter -Wants=mapper-wait@-xyz-openbmc_project-state-host%i.service -After=mapper-wait@-xyz-openbmc_project-state-host%i.service -ConditionPathExists=!/run/openbmc/host@%i-on - -[Service] -Restart=no -Type=oneshot -ExecStart=/bin/sh -c "busctl set-property `mapper get-service /xyz/openbmc_project/state/host%i` /xyz/openbmc_project/state/host%i xyz.openbmc_project.Control.Boot.RebootAttempts AttemptsLeft u 3" -StartLimitInterval=0 - -[Install] -WantedBy=obmc-host-start@%i.target diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend deleted file mode 100644 index 63155ce0d..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-state-manager_%.bbappend +++ /dev/null @@ -1,10 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" - -SRC_URI += "file://0001-Modify-dbus-interface-for-power-control.patch \ - file://phosphor-reboot-host@.service \ - file://phosphor-reset-host-reboot-attempts@.service \ - file://phosphor-reset-host-check@.service \ - file://0002-Capture-host-restart-cause.patch \ - file://0003-Use-warm-reboot-for-the-Reboot-host-state-transition.patch \ - file://0004-Add-Power-Restore-delay-support.patch \ - " -- cgit v1.2.3