diff options
author | Ed Tanous <ed.tanous@intel.com> | 2019-06-06 19:43:20 +0300 |
---|---|---|
committer | Ed Tanous <ed.tanous@intel.com> | 2019-06-07 00:20:52 +0300 |
commit | 10bc2ef852277cf8e9858f75cea9f55b482bf85b (patch) | |
tree | 6d29c0a7edc3769c9fbba0a3c6f6ed9ba10ba8ed /meta-openbmc-mods/meta-common/recipes-phosphor | |
parent | 9087065ce8c9f13d6450293c15101a3db5fe6f49 (diff) | |
download | openbmc-10bc2ef852277cf8e9858f75cea9f55b482bf85b.tar.xz |
Update to internal 6-6-19
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor')
24 files changed, 465 insertions, 107 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend index 77ef33c29..e773da3cd 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/configuration/entity-manager_%.bbappend @@ -1,6 +1,6 @@ # this is here just to bump faster than upstream SRC_URI = "git://github.com/openbmc/entity-manager.git" -SRCREV = "24b01fdd5681726c71ddab73b2b9dfc89ee3de70" +SRCREV = "683ff83b9cfe0ec3d9683f7220bd40ef77dbfe96" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch new file mode 100644 index 000000000..181d12428 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch @@ -0,0 +1,40 @@ +From b55c6847b18fdee5a72d601b871d73085481e4d9 Mon Sep 17 00:00:00 2001 +From: "Jason M. Bills" <jason.m.bills@linux.intel.com> +Date: Mon, 3 Jun 2019 16:31:29 -0700 +Subject: [PATCH] Add chassis power-cycle and reset to Chassis State + +This adds chassis PowerCycle and Reset as possible Transition +values for the Chassis State. These are to support chassis +power cycle and a chassis reset button, respectively. + +Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com> +--- + xyz/openbmc_project/State/Chassis.interface.yaml | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +diff --git a/xyz/openbmc_project/State/Chassis.interface.yaml b/xyz/openbmc_project/State/Chassis.interface.yaml +index 4ae6274..470a3a2 100644 +--- a/xyz/openbmc_project/State/Chassis.interface.yaml ++++ b/xyz/openbmc_project/State/Chassis.interface.yaml +@@ -31,10 +31,17 @@ enumerations: + values: + - name: 'Off' + description: > +- Chassis power should be off ++ Chassis power should be off + - name: 'On' + description: > + Chassis power should be on ++ - name: 'PowerCycle' ++ description: > ++ Chassis power should be cycled ++ - name: 'Reset' ++ description: > ++ Chassis should be reset ++ + + - name: PowerState + description: > +-- +2.7.4 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0023-Add-host-interrupt-to-the-Host-State.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0023-Add-host-interrupt-to-the-Host-State.patch new file mode 100644 index 000000000..650fd3bc9 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces/0023-Add-host-interrupt-to-the-Host-State.patch @@ -0,0 +1,31 @@ +From 9c94439a5a55efbb72bee10e9cfa0827dbedf511 Mon Sep 17 00:00:00 2001 +From: "Jason M. Bills" <jason.m.bills@linux.intel.com> +Date: Mon, 3 Jun 2019 16:35:46 -0700 +Subject: [PATCH] Add host interrupt to the Host State + +This adds host Interrupt as possible Transition value for the +Host State. This is to support an interrupt signal to the host +firmware or software. + +Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com> +--- + xyz/openbmc_project/State/Host.interface.yaml | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/xyz/openbmc_project/State/Host.interface.yaml b/xyz/openbmc_project/State/Host.interface.yaml +index 1ceba13..3d71280 100644 +--- a/xyz/openbmc_project/State/Host.interface.yaml ++++ b/xyz/openbmc_project/State/Host.interface.yaml +@@ -28,6 +28,9 @@ enumerations: + description: > + The desired transition for host firmware + values: ++ - name: 'Interrupt' ++ description: > ++ Host firmware should be interrupted + - name: 'Off' + description: > + Host firmware should be off +-- +2.7.4 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend index 8521f6839..94eff8ac7 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend @@ -1,5 +1,5 @@ SRC_URI = "git://github.com/openbmc/phosphor-dbus-interfaces.git" -SRCREV = "b8a82d92bb6e1727257d745189215b03016a39c6" +SRCREV = "57b878d048f929643276f1bf7fdf750abc4bde8b" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" @@ -16,4 +16,6 @@ SRC_URI += "file://0002-Modify-Dbus-for-IPv6.patch \ file://0018-Define-post-code-interfaces-for-post-code-manager.patch \ file://0019-Creating-the-Session-interface-for-Host-and-LAN.patch \ file://0021-Add-interface-suppot-for-provisioning-modes.patch \ + file://0022-Add-chassis-power-cycle-and-reset-to-Chassis-State.patch \ + file://0023-Add-host-interrupt-to-the-Host-State.patch \ " diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend index 2706f8508..1ce94dca4 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/fans/phosphor-pid-control_%.bbappend @@ -5,6 +5,6 @@ SYSTEMD_SERVICE_${PN} = "phosphor-pid-control.service" EXTRA_OECONF = "--enable-configure-dbus=yes" SRC_URI = "git://github.com/openbmc/phosphor-pid-control.git" -SRCREV = "ded0ab5662212155e5d209343375e34ce9d34cdb" +SRCREV = "98b704e179f12d987179fe6b0ea6234d1bace48f" FILES_${PN} = "${bindir}/swampd ${bindir}/setsensor" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb index 588ae46b6..e24245525 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/gpiodaemon/gpiodaemon.bb @@ -8,9 +8,9 @@ S = "${WORKDIR}/git/gpiodaemon" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" -SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh" +SRC_URI = "git://git@github.com/Intel-BMC/provingground.git;protocol=ssh" -SRCREV = "ec8f1c06be71d6059c82fd442475420286f5dbcd" +SRCREV = "9d2d365a79591ec21b54ecde957263f1ba1d8391" inherit cmake systemd SYSTEMD_SERVICE_${PN} = "gpiodaemon.service" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend index 62e332e2e..6ac05b61d 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend @@ -1,5 +1,5 @@ SRC_URI = "git://github.com/openbmc/bmcweb.git" -SRCREV = "22c33710fed78a5c47446ee91ececf8b8ab104db" +SRCREV = "d62cec731dcb533b3fecb08ba115dbf713539681" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json index a7815a9a9..c2f3c9a0e 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-config/channel_config.json @@ -77,7 +77,7 @@ } }, "7" : { - "name" : "ipmi-kcs4", + "name" : "ipmi_kcs4", "is_valid" : true, "active_sessions" : 0, "channel_info" : { @@ -165,7 +165,7 @@ } }, "15" : { - "name" : "ipmi-kcs3", + "name" : "ipmi_kcs3", "is_valid" : true, "active_sessions" : 0, "channel_info" : { diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0012-ipmi-set-get-boot-options.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0012-ipmi-set-get-boot-options.patch deleted file mode 100644 index fb5dcee09..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0012-ipmi-set-get-boot-options.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 7b5c6a54c049a447b1fd3a42f9d63322dcee4dc7 Mon Sep 17 00:00:00 2001 -From: Yong Li <yong.b.li@linux.intel.com> -Date: Sun, 16 Sep 2018 19:45:10 +0800 -Subject: [PATCH] [ipmi] set/get boot options - -1. fix issue for handling unsupported paramter -2. add support for floppy/USB boot - -Change-Id: I2b888c1ad67fec7924dd5825f78622cd216a55f4 -Signed-off-by: Jia, Chunhui <chunhui.jia@intel.com> -Signed-off-by: Yong Li <yong.b.li@linux.intel.com> ---- - chassishandler.cpp | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/chassishandler.cpp b/chassishandler.cpp -index 666addb..77af2dc 100644 ---- a/chassishandler.cpp -+++ b/chassishandler.cpp -@@ -1244,7 +1244,8 @@ constexpr auto ipmiDefault = 0; - std::map<IpmiValue, Source::Sources> sourceIpmiToDbus = { - {0x01, Source::Sources::Network}, - {0x02, Source::Sources::Disk}, - {0x05, Source::Sources::ExternalMedia}, -+ {0x0f, Source::Sources::RemovableMedia}, - {ipmiDefault, Source::Sources::Default}}; - - std::map<IpmiValue, Mode::Modes> modeIpmiToDbus = { -@@ -1255,7 +1256,8 @@ std::map<IpmiValue, Mode::Modes> modeIpmiToDbus = { - std::map<Source::Sources, IpmiValue> sourceDbusToIpmi = { - {Source::Sources::Network, 0x01}, - {Source::Sources::Disk, 0x02}, - {Source::Sources::ExternalMedia, 0x05}, -+ {Source::Sources::RemovableMedia, 0x0f}, - {Source::Sources::Default, ipmiDefault}}; - - std::map<Mode::Modes, IpmiValue> modeDbusToIpmi = { -@@ -1533,7 +1535,7 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd, - setBootMode(Mode::Modes::Regular); - } - } -- if (modeIpmiToDbus.end() != modeItr) -+ else if (modeIpmiToDbus.end() != modeItr) - { - rc = setBootMode(modeItr->second); - if (rc != IPMI_CC_OK) -@@ -1550,6 +1552,12 @@ ipmi_ret_t ipmi_chassis_set_sys_boot_options(ipmi_netfn_t netfn, ipmi_cmd_t cmd, - setBootSource(Source::Sources::Default); - } - } -+ else -+ { -+ // if boot option is not in support list, return error -+ *data_len = 0; -+ return IPMI_CC_INVALID_FIELD_REQUEST; -+ } - } - catch (InternalFailure& e) - { --- -2.7.4 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch index 2a4cc9bb1..903ae96a7 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0053-Fix-keep-looping-issue-when-entering-OS.patch @@ -1,4 +1,4 @@ -From 9ed3fd11047f8c360b7d808946939ef280813811 Mon Sep 17 00:00:00 2001 +From ad93a6e17310d92ef07b8d367b23c93793562d0f Mon Sep 17 00:00:00 2001 From: Cheng C Yang <cheng.c.yang@linux.intel.com> Date: Wed, 23 Jan 2019 17:02:40 +0800 Subject: [PATCH] Fix keep looping issue when entering OS @@ -20,19 +20,19 @@ correctly through KCS channel. 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/host-cmd-manager.cpp b/host-cmd-manager.cpp -index 0a61e63..6e50684 100644 +index f3aba7f..465eb81 100644 --- a/host-cmd-manager.cpp +++ b/host-cmd-manager.cpp @@ -26,6 +26,8 @@ constexpr auto MAPPER_INTERFACE = "xyz.openbmc_project.ObjectMapper"; constexpr auto HOST_STATE_PATH = "/xyz/openbmc_project/state/host0"; constexpr auto HOST_STATE_INTERFACE = "xyz.openbmc_project.State.Host"; constexpr auto HOST_TRANS_PROP = "RequestedHostTransition"; -+constexpr const char* IPMI_PATH = "/org/openbmc/HostIpmi/1"; -+constexpr const char* IPMI_INTERFACE = "org.openbmc.HostIpmi"; ++constexpr const char* IPMI_PATH = "/xyz/openbmc_project/Ipmi/Channel/ipmi_kcs3"; ++constexpr const char* IPMI_INTERFACE = "xyz.openbmc_project.Ipmi.Channel.SMS"; // For throwing exceptions using namespace phosphor::logging; -@@ -107,6 +109,20 @@ void Manager::clearQueue() +@@ -106,6 +108,20 @@ void Manager::clearQueue() // `false` indicating Failure std::get<CallBack>(command)(ipmiCmdData, false); } @@ -53,7 +53,7 @@ index 0a61e63..6e50684 100644 } // Called for alerting the host -@@ -116,9 +132,6 @@ void Manager::checkQueueAndAlertHost() +@@ -115,9 +131,6 @@ void Manager::checkQueueAndAlertHost() { log<level::DEBUG>("Asserting SMS Attention"); @@ -63,7 +63,7 @@ index 0a61e63..6e50684 100644 auto host = ::ipmi::getService(this->bus, IPMI_INTERFACE, IPMI_PATH); // Start the timer for this transaction -@@ -132,9 +145,8 @@ void Manager::checkQueueAndAlertHost() +@@ -131,9 +144,8 @@ void Manager::checkQueueAndAlertHost() return; } @@ -76,5 +76,5 @@ index 0a61e63..6e50684 100644 if (reply.is_method_error()) -- -2.16.2 +2.7.4 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0061-Use-xyz.openbmc_project.State.Chassis-for-IPMI-chass.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0061-Use-xyz.openbmc_project.State.Chassis-for-IPMI-chass.patch new file mode 100644 index 000000000..877c5336a --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0061-Use-xyz.openbmc_project.State.Chassis-for-IPMI-chass.patch @@ -0,0 +1,127 @@ +From 514b76d1c05d7ed7fb7e1df27833e423e04c9a1c Mon Sep 17 00:00:00 2001 +From: "Jason M. Bills" <jason.m.bills@linux.intel.com> +Date: Tue, 21 May 2019 09:57:16 -0700 +Subject: [PATCH] Use xyz.openbmc_project.State.Chassis for IPMI chassis status + +Instead of directly using pgood on dbus, this change uses the +xyz.openbmc_project.State.Chassis "CurrentPowerState" property +for the IPMI chassis status command. This will allow us to +remove pgood from dbus. + +Tested: +Ran IPMI chassis commands and confirmed that they behave as +expected: +ipmitool power status +Chassis Power is on + +ipmitool power off +Chassis Power Control: Down/Off + +ipmitool power status +Chassis Power is off + +ipmitool power on +Chassis Power Control: Up/On + +ipmitool power status +Chassis Power is on + +Change-Id: I7836c16b76c3b309f176186f3e2453082e4cd1af +Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com> +--- + chassishandler.cpp | 61 ++++++++++++++++++++++++++++++++++++------------------ + 1 file changed, 41 insertions(+), 20 deletions(-) + +diff --git a/chassishandler.cpp b/chassishandler.cpp +index 1738ccc..e4e842d 100644 +--- a/chassishandler.cpp ++++ b/chassishandler.cpp +@@ -824,44 +824,65 @@ std::optional<uint2_t> getPowerRestorePolicy() + */ + std::optional<bool> getPowerStatus() + { +- constexpr const char* powerControlObj = +- "/xyz/openbmc_project/Chassis/Control/Power0"; +- constexpr const char* powerControlIntf = +- "xyz.openbmc_project.Chassis.Control.Power"; + bool powerGood = false; + std::shared_ptr<sdbusplus::asio::connection> busp = getSdBus(); + try + { ++ constexpr const char* chassisStatePath = ++ "/xyz/openbmc_project/state/chassis0"; ++ constexpr const char* chassisStateIntf = ++ "xyz.openbmc_project.State.Chassis"; + auto service = +- ipmi::getService(*busp, powerControlIntf, powerControlObj); ++ ipmi::getService(*busp, chassisStateIntf, chassisStatePath); + +- ipmi::Value variant = ipmi::getDbusProperty( +- *busp, service, powerControlObj, powerControlIntf, "pgood"); +- powerGood = static_cast<bool>(std::get<int>(variant)); ++ ipmi::Value variant = ++ ipmi::getDbusProperty(*busp, service, chassisStatePath, ++ chassisStateIntf, "CurrentPowerState"); ++ std::string powerState = std::get<std::string>(variant); ++ if (powerState == "xyz.openbmc_project.State.Chassis.PowerState.On") ++ { ++ powerGood = true; ++ } + } + catch (const std::exception& e) + { + try + { +- // FIXME: some legacy modules use the older path; try that next +- constexpr const char* legacyPwrCtrlObj = +- "/org/openbmc/control/power0"; +- constexpr const char* legacyPwrCtrlIntf = +- "org.openbmc.control.Power"; ++ // FIXME: some modules use pgood; try that next ++ constexpr const char* powerControlObj = ++ "/xyz/openbmc_project/Chassis/Control/Power0"; ++ constexpr const char* powerControlIntf = ++ "xyz.openbmc_project.Chassis.Control.Power"; + auto service = +- ipmi::getService(*busp, legacyPwrCtrlIntf, legacyPwrCtrlObj); ++ ipmi::getService(*busp, powerControlIntf, powerControlObj); + + ipmi::Value variant = ipmi::getDbusProperty( +- *busp, service, legacyPwrCtrlObj, legacyPwrCtrlIntf, "pgood"); ++ *busp, service, powerControlObj, powerControlIntf, "pgood"); + powerGood = static_cast<bool>(std::get<int>(variant)); + } + catch (const std::exception& e) + { +- log<level::ERR>("Failed to fetch pgood property", +- entry("ERROR=%s", e.what()), +- entry("PATH=%s", powerControlObj), +- entry("INTERFACE=%s", powerControlIntf)); +- return std::nullopt; ++ try ++ { ++ // FIXME: some legacy modules use the older path; try that next ++ constexpr const char* legacyPwrCtrlObj = ++ "/org/openbmc/control/power0"; ++ constexpr const char* legacyPwrCtrlIntf = ++ "org.openbmc.control.Power"; ++ auto service = ipmi::getService(*busp, legacyPwrCtrlIntf, ++ legacyPwrCtrlObj); ++ ++ ipmi::Value variant = ++ ipmi::getDbusProperty(*busp, service, legacyPwrCtrlObj, ++ legacyPwrCtrlIntf, "pgood"); ++ powerGood = static_cast<bool>(std::get<int>(variant)); ++ } ++ catch (const std::exception& e) ++ { ++ log<level::ERR>("Failed to fetch pgood property", ++ entry("ERROR=%s", e.what())); ++ return std::nullopt; ++ } + } + } + return std::make_optional(powerGood); +-- +2.7.4 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch new file mode 100644 index 000000000..498233881 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host/0062-Update-IPMI-Chassis-Control-command.patch @@ -0,0 +1,214 @@ +From f11928c6b39052c679c9300e9d836837ef60be06 Mon Sep 17 00:00:00 2001 +From: "Jason M. Bills" <jason.m.bills@linux.intel.com> +Date: Mon, 3 Jun 2019 17:01:47 -0700 +Subject: [PATCH] Update IPMI Chassis Control command + +This change updates the IPMI Chassis Control command to use the new +chassis state transitions. This allows each chassis control action +to more closely follow the behavior defined in the IPMI spec. + +Tested: +Ran each IPMI chassis control command to confirm the expected +behavior: +ipmitool power on: system is powered-on +ipmitool power off: system is forced off +ipmitool power cycle: system is forced off then powered-on +ipmitool power reset: system is hard reset +ipmitool power soft: soft power-off requested from system software + +Change-Id: Ic9fba3ca4abd9a758eb88f1e6ee09f7ca64ff80a +Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com> +--- + chassishandler.cpp | 138 +++++++++++++++++++++-------------------------------- + 1 file changed, 54 insertions(+), 84 deletions(-) + +diff --git a/chassishandler.cpp b/chassishandler.cpp +index e4e842d..d71b95f 100644 +--- a/chassishandler.cpp ++++ b/chassishandler.cpp +@@ -31,6 +31,7 @@ + #include <xyz/openbmc_project/Control/Boot/Mode/server.hpp> + #include <xyz/openbmc_project/Control/Boot/Source/server.hpp> + #include <xyz/openbmc_project/Control/Power/RestorePolicy/server.hpp> ++#include <xyz/openbmc_project/State/Chassis/server.hpp> + #include <xyz/openbmc_project/State/Host/server.hpp> + #include <xyz/openbmc_project/State/PowerOnHours/server.hpp> + +@@ -712,59 +713,63 @@ ipmi_ret_t ipmi_set_chassis_cap(ipmi_netfn_t netfn, ipmi_cmd_t cmd, + //------------------------------------------ + // Calls into Host State Manager Dbus object + //------------------------------------------ +-int initiate_state_transition(State::Host::Transition transition) ++int initiateHostStateTransition(State::Host::Transition transition) + { + // OpenBMC Host State Manager dbus framework +- constexpr auto HOST_STATE_MANAGER_ROOT = "/xyz/openbmc_project/state/host0"; +- constexpr auto HOST_STATE_MANAGER_IFACE = "xyz.openbmc_project.State.Host"; +- constexpr auto DBUS_PROPERTY_IFACE = "org.freedesktop.DBus.Properties"; +- constexpr auto PROPERTY = "RequestedHostTransition"; ++ constexpr auto hostStatePath = "/xyz/openbmc_project/state/host0"; ++ constexpr auto hostStateIntf = "xyz.openbmc_project.State.Host"; + +- // sd_bus error +- int rc = 0; +- char* busname = NULL; ++ auto service = ipmi::getService(*getSdBus(), hostStateIntf, hostStatePath); + +- // SD Bus error report mechanism. +- sd_bus_error bus_error = SD_BUS_ERROR_NULL; ++ // Convert to string equivalent of the passed in transition enum. ++ auto request = State::convertForMessage(transition); + +- // Gets a hook onto either a SYSTEM or SESSION bus +- sd_bus* bus_type = ipmid_get_sd_bus_connection(); +- rc = mapper_get_service(bus_type, HOST_STATE_MANAGER_ROOT, &busname); +- if (rc < 0) ++ try ++ { ++ ipmi::setDbusProperty(*getSdBus(), service, hostStatePath, ++ hostStateIntf, "RequestedHostTransition", ++ request); ++ } ++ catch (std::exception& e) + { + log<level::ERR>( +- "Failed to get bus name", +- entry("ERRNO=0x%X, OBJPATH=%s", -rc, HOST_STATE_MANAGER_ROOT)); +- return rc; ++ "Failed to initiate transition", ++ entry("EXCEPTION=%s, REQUEST=%s", e.what(), request.c_str())); ++ return -1; + } ++ return 0; ++} ++ ++//------------------------------------------ ++// Calls into Chassis State Manager Dbus object ++//------------------------------------------ ++int initiateChassisStateTransition(State::Chassis::Transition transition) ++{ ++ // OpenBMC Chassis State Manager dbus framework ++ constexpr auto chassisStatePath = "/xyz/openbmc_project/state/chassis0"; ++ constexpr auto chassisStateIntf = "xyz.openbmc_project.State.Chassis"; ++ ++ auto service = ++ ipmi::getService(*getSdBus(), chassisStateIntf, chassisStatePath); + + // Convert to string equivalent of the passed in transition enum. + auto request = State::convertForMessage(transition); + +- rc = sd_bus_call_method(bus_type, // On the system bus +- busname, // Service to contact +- HOST_STATE_MANAGER_ROOT, // Object path +- DBUS_PROPERTY_IFACE, // Interface name +- "Set", // Method to be called +- &bus_error, // object to return error +- nullptr, // Response buffer if any +- "ssv", // Takes 3 arguments +- HOST_STATE_MANAGER_IFACE, PROPERTY, "s", +- request.c_str()); +- if (rc < 0) ++ try + { +- log<level::ERR>("Failed to initiate transition", +- entry("ERRNO=0x%X, REQUEST=%s", -rc, request.c_str())); ++ ipmi::setDbusProperty(*getSdBus(), service, chassisStatePath, ++ chassisStateIntf, "RequestedPowerTransition", ++ request); + } +- else ++ catch (std::exception& e) + { +- log<level::INFO>("Transition request initiated successfully"); ++ log<level::ERR>( ++ "Failed to initiate transition", ++ entry("EXCEPTION=%s, REQUEST=%s", e.what(), request.c_str())); ++ return -1; + } + +- sd_bus_error_free(&bus_error); +- free(busname); +- +- return rc; ++ return 0; + } + + namespace power_policy +@@ -1138,61 +1143,26 @@ ipmi::RspType<> ipmiChassisControl(uint8_t chassisControl) + switch (chassisControl) + { + case CMD_POWER_ON: +- rc = initiate_state_transition(State::Host::Transition::On); ++ rc = initiateHostStateTransition(State::Host::Transition::On); + break; + case CMD_POWER_OFF: +- // This path would be hit in 2 conditions. +- // 1: When user asks for power off using ipmi chassis command 0x04 +- // 2: Host asking for power off post shutting down. +- +- // If it's a host requested power off, then need to nudge Softoff +- // application that it needs to stop the watchdog timer if running. +- // If it is a user requested power off, then this is not really +- // needed. But then we need to differentiate between user and host +- // calling this same command +- +- // For now, we are going ahead with trying to nudge the soft off and +- // interpret the failure to do so as a non softoff case +- rc = stop_soft_off_timer(); +- +- // Only request the Off transition if the soft power off +- // application is not running +- if (rc < 0) +- { +- // First create a file to indicate to the soft off application +- // that it should not run. Not doing this will result in State +- // manager doing a default soft power off when asked for power +- // off. +- indicate_no_softoff_needed(); +- +- // Now request the shutdown +- rc = initiate_state_transition(State::Host::Transition::Off); +- } +- else +- { +- log<level::INFO>("Soft off is running, so let shutdown target " +- "stop the host"); +- } ++ rc = ++ initiateChassisStateTransition(State::Chassis::Transition::Off); + break; +- + case CMD_HARD_RESET: ++ rc = initiateChassisStateTransition( ++ State::Chassis::Transition::Reset); ++ break; + case CMD_POWER_CYCLE: +- // SPEC has a section that says certain implementations can trigger +- // PowerOn if power is Off when a command to power cycle is +- // requested +- +- // First create a file to indicate to the soft off application +- // that it should not run since this is a direct user initiated +- // power reboot request (i.e. a reboot request that is not +- // originating via a soft power off SMS request) +- indicate_no_softoff_needed(); +- +- rc = initiate_state_transition(State::Host::Transition::Reboot); ++ rc = initiateChassisStateTransition( ++ State::Chassis::Transition::PowerCycle); + break; +- + case CMD_SOFT_OFF_VIA_OVER_TEMP: +- // Request Host State Manager to do a soft power off +- rc = initiate_state_transition(State::Host::Transition::Off); ++ rc = initiateHostStateTransition(State::Host::Transition::Off); ++ break; ++ case CMD_PULSE_DIAGNOSTIC_INTR: ++ rc = ++ initiateHostStateTransition(State::Host::Transition::Interrupt); + break; + + default: +-- +2.7.4 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend index 91319a9d3..3509ebfd6 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-host_%.bbappend @@ -3,12 +3,11 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" # TODO: This should be removed, once up-stream bump up # issue is resolved #SRC_URI = "git://github.com/openbmc/phosphor-host-ipmid" -SRCREV = "fdb8389df74f9f0d6428252a75c33f6abf6d8481" +SRCREV = "ea1c401c4bac43d6070bf7d515df08f8bf57c0a2" SRC_URI += "file://phosphor-ipmi-host.service \ file://0009-IPv6-Network-changes.patch \ file://0010-fix-get-system-GUID-ipmi-command.patch \ - file://0012-ipmi-set-get-boot-options.patch \ file://0013-ipmi-add-set-bios-id-to-whitelist.patch \ file://0021-Implement-IPMI-Commmand-Get-Host-Restart-Cause.patch \ file://0039-ipmi-add-oem-command-get-AIC-FRU-to-whitelist.patch \ @@ -20,6 +19,8 @@ SRC_URI += "file://phosphor-ipmi-host.service \ file://0057-Add-timer-use-actions-support.patch \ file://0059-Move-Set-SOL-config-parameter-to-host-ipmid.patch \ file://0060-Move-Get-SOL-config-parameter-to-host-ipmid.patch \ + file://0061-Use-xyz.openbmc_project.State.Chassis-for-IPMI-chass.patch \ + file://0062-Update-IPMI-Chassis-Control-command.patch \ " # remove the softpoweroff service since we do not need it diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb index 4861755b6..af83facf6 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-node-manager-proxy_git.bb @@ -2,7 +2,7 @@ SUMMARY = "Node Manager Proxy" DESCRIPTION = "The Node Manager Proxy provides a simple interface for communicating \ with Management Engine via IPMB" -SRC_URI = "git://github.com/Intel-BMC/node-manager;protocol=ssh" +SRC_URI = "git://git@github.com/Intel-BMC/node-manager;protocol=ssh" SRCREV = "2ab90332828614c95e0ce22c0c95285734b55b65" PV = "0.1+git${SRCPV}" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/leds/intel-led-manager-config/led.yaml b/meta-openbmc-mods/meta-common/recipes-phosphor/leds/intel-led-manager-config/led.yaml index 7b193f85b..533df68a4 100755..100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/leds/intel-led-manager-config/led.yaml +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/leds/intel-led-manager-config/led.yaml @@ -34,6 +34,10 @@ enclosure_identify: identify: Action: 'On' +enclosure_identify_blink: + identify: + Action: 'Blink' + cpu0_fault: cpu0fault: Action: 'On' diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb index e7cd1ab42..31b9e9338 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/multi-node-manager/multi-node-manager.bb @@ -1,7 +1,7 @@ SUMMARY = "Multi node manager" DESCRIPTION = "Daemon to handle chassis level shared resources on multi-node platform" -SRC_URI = "git://github.com/Intel-BMC/multi-node-manager.git;protocol=ssh" +SRC_URI = "git://git@github.com/Intel-BMC/multi-node-manager.git;protocol=ssh" SRCREV = "8a34c017e04dd8f327aff127f64855f6132bd318" PV = "0.1+git${SRCPV}" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/selftest/intel-self-test_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/selftest/intel-self-test_git.bb index f655d22e4..da1d74207 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/selftest/intel-self-test_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/selftest/intel-self-test_git.bb @@ -1,7 +1,7 @@ SUMMARY = "BMC Self Test service" DESCRIPTION = "BMC Self Test service for subsystem diagnosis failure info" -SRC_URI = "git://github.com/Intel-BMC/intel-self-test;protocol=ssh" +SRC_URI = "git://git@github.com/Intel-BMC/intel-self-test;protocol=ssh" PV = "1.0+git${SRCPV}" SRCREV = "d039998ad2c55aeae4191af30e15bbd3032508c1" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend index ba82532fc..996f11b42 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/sensors/dbus-sensors_%.bbappend @@ -1,7 +1,7 @@ -SRCREV = "8dbb395364629673a1f1dde81b1cf7d8041b0662" +SRCREV = "930fcde3c8776c02f2a3d969d05608e2155eb159" SRC_URI = "git://github.com/openbmc/dbus-sensors.git" -DEPENDS_append = " i2c-tools" +DEPENDS_append = " libgpiod" #todo(cheng) remove this when synced upstream SYSTEMD_SERVICE_${PN} += " xyz.openbmc_project.psusensor.service" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb index bcb8361dd..503f3875a 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/special-mode-mgr/special-mode-mgr_git.bb @@ -8,7 +8,7 @@ S = "${WORKDIR}/git/special-mode-mgr" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" -SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh;nobranch=1" +SRC_URI = "git://git@github.com/Intel-BMC/provingground.git;protocol=ssh;nobranch=1" SRCREV = "ec8f1c06be71d6059c82fd442475420286f5dbcd" inherit cmake systemd diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb index c3d71d30c..878de75bb 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/srvcfg-manager/srvcfg-manager_git.bb @@ -8,8 +8,8 @@ S = "${WORKDIR}/git/srvcfg-manager" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" -SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh" -SRCREV = "ec8f1c06be71d6059c82fd442475420286f5dbcd" +SRC_URI = "git://git@github.com/Intel-BMC/provingground.git;protocol=ssh" +SRCREV = "9d2d365a79591ec21b54ecde957263f1ba1d8391" inherit cmake systemd SYSTEMD_SERVICE_${PN} = "srvcfg-manager.service" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb index 818259153..4bef0fd0e 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/system/callback-manager.bb @@ -1,13 +1,13 @@ SUMMARY = "Callback Manager" DESCRIPTION = "D-Bus daemon that registers matches that trigger method calls" -SRC_URI = "git://github.com/Intel-BMC/provingground;protocol=ssh" +SRC_URI = "git://git@github.com/Intel-BMC/provingground;protocol=ssh" inherit cmake systemd DEPENDS = "boost sdbusplus" PV = "0.1+git${SRCPV}" -SRCREV = "ec8f1c06be71d6059c82fd442475420286f5dbcd" +SRCREV = "9d2d365a79591ec21b54ecde957263f1ba1d8391" S = "${WORKDIR}/git/callback-manager" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend index 70cbc72f6..0cb531e60 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/users/phosphor-user-manager_%.bbappend @@ -1,7 +1,7 @@ FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" #SRC_URI = "git://github.com/openbmc/phosphor-user-manager" -SRCREV = "fef578960f632abacc5cd615b2bedfb3ab9ebb90" +SRCREV = "59dba4435d0d553369790e8936d7eb43251ff302" SRC_URI += " \ diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch index 6e057f681..28995d14b 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Add-redfish-log-support-for-IPMI-watchdog-timeout-ac.patch @@ -1,4 +1,4 @@ -From 1c0e658833ea7595b2fb42261ce5e0ce781bac98 Mon Sep 17 00:00:00 2001 +From 38faf5c040660e752741dcf7f03e4bb1e9f3411b Mon Sep 17 00:00:00 2001 From: Yong Li <yong.b.li@linux.intel.com> Date: Thu, 4 Apr 2019 18:24:54 +0800 Subject: [PATCH] Add redfish log support for IPMI watchdog timeout actions @@ -17,11 +17,11 @@ https://BMCIP/redfish/v1/Systems/system/LogServices/EventLog/Entries Signed-off-by: Yong Li <yong.b.li@linux.intel.com> --- - watchdog.cpp | 8 ++++++++ - 1 file changed, 8 insertions(+) + watchdog.cpp | 9 +++++++++ + 1 file changed, 9 insertions(+) diff --git a/watchdog.cpp b/watchdog.cpp -index d529746..008cde5 100644 +index bc3ba95..4774fd8 100644 --- a/watchdog.cpp +++ b/watchdog.cpp @@ -1,5 +1,7 @@ @@ -32,19 +32,20 @@ index d529746..008cde5 100644 #include <chrono> #include <phosphor-logging/elog.hpp> #include <phosphor-logging/log.hpp> -@@ -115,6 +117,12 @@ void Watchdog::timeOutHandler() - entry("ACTION=%s", convertForMessage(action).c_str()), - entry("TARGET=%s", target->second.c_str())); +@@ -101,6 +103,13 @@ void Watchdog::timeOutHandler() + action = fallback->action; + } -+ // Log into redfish event log -+ sd_journal_send("MESSAGE=IPMIWatchdog: Timed out ACTION=%s; TARGET=%s", -+ convertForMessage(action).c_str(), -+ target->second.c_str(), "PRIORITY=%i", LOG_INFO, -+ "REDFISH_MESSAGE_ID=%s", "IPMIWatchdog", NULL); ++ // Log into redfish event log ++ sd_journal_send("MESSAGE=IPMIWatchdog: Timed out ACTION=%s", ++ convertForMessage(action).c_str(), "PRIORITY=%i", LOG_INFO, ++ "REDFISH_MESSAGE_ID=%s", "OpenBMC.0.1.IPMIWatchdog", ++ "REDFISH_MESSAGE_ARGS=%s", ++ convertForMessage(action).c_str(), NULL); + - try - { - auto method = bus.new_method_call(SYSTEMD_SERVICE, SYSTEMD_ROOT, + expiredTimerUse(currentTimerUse()); + + auto target = actionTargetMap.find(action); -- 2.7.4 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend index 3d8f359f8..e6e329d06 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend @@ -1,6 +1,6 @@ FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" #SRC_URI = "git://github.com/openbmc/phosphor-webui.git" -SRCREV = "44da471fceb3790b49a43bc023781f62b19f9fde" +SRCREV = "5bd1dec7fdc8f6a3a20e6c23dc491b3d31392bc5" SRC_URI += "file://0004-Implement-force-boot-to-bios-in-server-power-control.patch" |