From 40108db4434d8c2e0a1ad2d1dd3f5ae34b17352c Mon Sep 17 00:00:00 2001 From: "Jason M. Bills" Date: Mon, 3 Aug 2020 15:40:26 -0700 Subject: Update to internal 0.72 Signed-off-by: Jason M. Bills --- .../configuration/entity-manager_%.bbappend | 2 +- .../console/obmc-console/obmc-console.conf | 3 + .../console/obmc-console/obmc-console@.service | 21 + .../console/obmc-console/sol-option-check.sh | 32 ++ .../console/obmc-console_%.bbappend | 17 + .../fans/phosphor-pid-control_%.bbappend | 2 +- .../0001-Add-more-error-types.patch | 459 +++++++++++++++++++++ .../0008-PFR-image-HASH-verification.patch | 39 +- ...-Add-error-reporting-to-pfr_image_manager.patch | 187 +++++++++ ...Fix-for-RedudancyPriority-in-item_updater.patch | 38 ++ .../flash/phosphor-software-manager_%.bbappend | 5 +- ...-Firmware-update-support-for-StandBySpare.patch | 133 +++--- ...2-Use-chip-id-based-UUID-for-Service-Root.patch | 19 +- ...porarily-disable-EventService-log-support.patch | 30 -- ...changes-for-setting-ApplyOptions-ClearCfg.patch | 14 +- .../recipes-phosphor/interfaces/bmcweb_%.bbappend | 3 +- .../ipmi/phosphor-ipmi-config/channel_config.json | 2 +- .../ipmi/phosphor-ipmi-kcs_%.bbappend | 2 +- .../ipmi/phosphor-ipmi-net_%.bbappend | 2 +- .../recipes-phosphor/pmci/libmctp-intel_git.bb | 2 +- .../recipes-phosphor/pmci/mctp-emulator.bb | 2 +- .../meta-common/recipes-phosphor/pmci/mctpd.bb | 2 +- .../sensors/dbus-sensors_%.bbappend | 8 +- .../service-config-manager_%.bbappend | 6 +- .../recipes-phosphor/settings/settings_git.bb | 6 +- .../special-mode-mgr/special-mode-mgr_git.bb | 2 +- .../watchdog/frb2-watchdog/frb2-watchdog.cpp | 3 +- .../webui/phosphor-webui_%.bbappend | 2 +- 28 files changed, 907 insertions(+), 136 deletions(-) create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console.conf create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console@.service create mode 100755 meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/sol-option-check.sh create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console_%.bbappend create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0001-Add-more-error-types.patch create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0010-Add-error-reporting-to-pfr_image_manager.patch create mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0011-Fix-for-RedudancyPriority-in-item_updater.patch delete mode 100644 meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-Temporarily-disable-EventService-log-support.patch (limited to 'meta-openbmc-mods/meta-common/recipes-phosphor') 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 813561384..e76c23fa6 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 = "8c505da0ffd8709f3c799a855ff921cfbd446201" +SRCREV = "ac09fe44dba113aacee1d2fd995e137c0d5ea18e" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console.conf b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console.conf new file mode 100644 index 000000000..1d332e2a2 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console.conf @@ -0,0 +1,3 @@ +baud = 921600 +local-tty = ttyS3 +local-tty-baud = 921600 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console@.service b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console@.service new file mode 100644 index 000000000..7fb8f79d3 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/obmc-console@.service @@ -0,0 +1,21 @@ +[Unit] +Description=Phosphor Console Muxer listening on device /dev/%I +BindsTo=dev-%i.device +After=dev-%i.device + +[Service] +ExecStartPre=/usr/bin/sol-option-check.sh +ExecStartPre=/bin/sh -c 'echo -n "uart3" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/uart1' +ExecStartPre=/bin/sh -c 'echo -n "uart1" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/uart3' +ExecStartPre=/bin/sh -c 'echo -n "io1" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/uart4' +ExecStartPre=/bin/sh -c 'echo -n "uart4" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/io1' +ExecStart=/usr/bin/env obmc-console-server --config {sysconfdir}/obmc-console.conf %i +ExecStopPost=/bin/sh -c 'echo -n "io1" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/uart1' +ExecStopPost=/bin/sh -c 'echo -n "io3" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/uart3' +ExecStopPost=/bin/sh -c 'echo -n "io4" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/uart4' +ExecStopPost=/bin/sh -c 'echo -n "uart1" > /sys/bus/platform/drivers/aspeed-uart-routing/1e78909c.uart_routing/io1' +SyslogIdentifier=obmc-console-server +Restart=always + +[Install] +WantedBy={SYSTEMD_DEFAULT_TARGET} diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/sol-option-check.sh b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/sol-option-check.sh new file mode 100755 index 000000000..19179c497 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console/sol-option-check.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +# Copyright 2017-2020 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# + +CPUPART="CPU part" +AST2500_ID="0xb76" +AST2600_ID="0xc07" + +if ([ $(grep "$CPUPART" /proc/cpuinfo | grep "$AST2500_ID" | wc -l) != 0 ] && \ + [ $(grep 192000000 /sys/class/tty/ttyS0/uartclk | wc -l) != 0 ]) || \ + ([ $(grep "$CPUPART" /proc/cpuinfo | grep "$AST2600_ID" | wc -l) != 0 ] && \ + [ $(grep 14769216 /sys/class/tty/ttyS0/uartclk | wc -l) != 0 ]); then + echo "hs-uart" + sed -i -e 's/115200/921600/g' /etc/obmc-console.conf +else + echo "normal uart" + sed -i -e 's/921600/115200/g' /etc/obmc-console.conf +fi diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console_%.bbappend new file mode 100644 index 000000000..09510fec8 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/console/obmc-console_%.bbappend @@ -0,0 +1,17 @@ +FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" +OBMC_CONSOLE_HOST_TTY = "ttyS2" +SRC_URI += "file://sol-option-check.sh \ + file://obmc-console@.service \ + " +inherit obmc-phosphor-systemd + +SYSTEMD_SERVICE_${PN} += " \ + ${PN}@${OBMC_CONSOLE_HOST_TTY}.service \ + " + +do_install_append() { + rm -rf ${D}${base_libdir}/udev/rules.d/80-obmc-console-uart.rules + install -m 0644 ${WORKDIR}/${PN}@.service ${D}${systemd_system_unitdir} + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/sol-option-check.sh ${D}${bindir} +} 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 e6c993658..5efc383f0 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 = "e30916c9ef6d363328b95c9947ac95d94a2b6a24" +SRCREV = "4b36f265a10048127d93e4b70916c181827c9af2" FILES_${PN} = "${bindir}/swampd ${bindir}/setsensor" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0001-Add-more-error-types.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0001-Add-more-error-types.patch new file mode 100644 index 000000000..d43256bf4 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0001-Add-more-error-types.patch @@ -0,0 +1,459 @@ +From e710df3123c382fc735c451a048f7c51250c1a92 Mon Sep 17 00:00:00 2001 +From: James Feist +Date: Thu, 11 Jun 2020 13:14:11 -0700 +Subject: [PATCH 1/2] Add more error types + +This adds ImageFailure and Busy error types +to updates status in bmcweb. + +elog-errors.hpp is a generated file. + +Tested: Could create errors + +Signed-off-by: James Feist +--- + elog-errors.hpp | 269 ++++++++++++------ + .../Software/Image.errors.yaml | 5 + + .../Software/Image.metadata.yaml | 11 + + 3 files changed, 204 insertions(+), 81 deletions(-) + +diff --git a/elog-errors.hpp b/elog-errors.hpp +index 2888f0d..38016e1 100644 +--- a/elog-errors.hpp ++++ b/elog-errors.hpp +@@ -2,12 +2,12 @@ + // See elog-gen.py for more details + #pragma once + +-#include +-#include +-#include + #include + #include + #include ++#include ++#include ++#include + + namespace sdbusplus + { +@@ -21,7 +21,7 @@ namespace Image + { + namespace Error + { +-struct UnTarFailure; ++ struct InternalFailure; + } // namespace Error + } // namespace Image + } // namespace Software +@@ -41,7 +41,7 @@ namespace Image + { + namespace Error + { +-struct InternalFailure; ++ struct UnTarFailure; + } // namespace Error + } // namespace Image + } // namespace Software +@@ -61,7 +61,7 @@ namespace Image + { + namespace Error + { +-struct ManifestFileFailure; ++ struct BusyFailure; + } // namespace Error + } // namespace Image + } // namespace Software +@@ -69,6 +69,47 @@ struct ManifestFileFailure; + } // namespace xyz + } // namespace sdbusplus + ++namespace sdbusplus ++{ ++namespace xyz ++{ ++namespace openbmc_project ++{ ++namespace Software ++{ ++namespace Image ++{ ++namespace Error ++{ ++ struct ImageFailure; ++} // namespace Error ++} // namespace Image ++} // namespace Software ++} // namespace openbmc_project ++} // namespace xyz ++} // namespace sdbusplus ++ ++namespace sdbusplus ++{ ++namespace xyz ++{ ++namespace openbmc_project ++{ ++namespace Software ++{ ++namespace Image ++{ ++namespace Error ++{ ++ struct ManifestFileFailure; ++} // namespace Error ++} // namespace Image ++} // namespace Software ++} // namespace openbmc_project ++} // namespace xyz ++} // namespace sdbusplus ++ ++ + namespace phosphor + { + +@@ -88,38 +129,25 @@ namespace _UnTarFailure + + struct PATH + { +- static constexpr auto str = "PATH=%s"; ++ /* ++ * We can't use -fsanitize=undefined if we declare a ++ * 'static constexpr auto str' member, so don't. Instead, open-code the ++ * mako template lookups. ++ */ + static constexpr auto str_short = "PATH"; +- using type = std::tuple, const char*>; +- explicit constexpr PATH(const char* a) : _entry(entry(str, a)){}; ++ using type = std::tuple,const char*>; ++ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)) {}; + type _entry; + }; + +-} // namespace _UnTarFailure ++} // namespace _UnTarFailure + +-struct UnTarFailure : public sdbusplus::exception_t ++struct UnTarFailure + { +- static constexpr auto errName = +- "xyz.openbmc_project.Software.Image.UnTarFailure"; +- static constexpr auto errDesc = "An error occurred during untar."; + static constexpr auto L = level::ERR; + using PATH = _UnTarFailure::PATH; + using metadata_types = std::tuple; + +- const char* name() const noexcept +- { +- return errName; +- } +- +- const char* description() const noexcept +- { +- return errDesc; +- } +- +- const char* what() const noexcept +- { +- return errName; +- } + }; + + } // namespace Image +@@ -127,16 +155,17 @@ struct UnTarFailure : public sdbusplus::exception_t + } // namespace openbmc_project + } // namespace xyz + ++ + namespace details + { + + template <> +-struct map_exception_type< +- sdbusplus::xyz::openbmc_project::Software::Image::Error::UnTarFailure> ++struct map_exception_type + { + using type = xyz::openbmc_project::Software::Image::UnTarFailure; + }; +-} // namespace details ++ ++} + + namespace xyz + { +@@ -151,38 +180,25 @@ namespace _ManifestFileFailure + + struct PATH + { +- static constexpr auto str = "PATH=%s"; ++ /* ++ * We can't use -fsanitize=undefined if we declare a ++ * 'static constexpr auto str' member, so don't. Instead, open-code the ++ * mako template lookups. ++ */ + static constexpr auto str_short = "PATH"; +- using type = std::tuple, const char*>; +- explicit constexpr PATH(const char* a) : _entry(entry(str, a)){}; ++ using type = std::tuple,const char*>; ++ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)) {}; + type _entry; + }; + +-} // namespace _ManifestFileFailure ++} // namespace _ManifestFileFailure + +-struct ManifestFileFailure : public sdbusplus::exception_t ++struct ManifestFileFailure + { +- static constexpr auto errName = +- "xyz.openbmc_project.Software.Image.ManifestFileFailure"; +- static constexpr auto errDesc = "An error when reading the Manifest file."; + static constexpr auto L = level::ERR; + using PATH = _ManifestFileFailure::PATH; + using metadata_types = std::tuple; + +- const char* name() const noexcept +- { +- return errName; +- } +- +- const char* description() const noexcept +- { +- return errDesc; +- } +- +- const char* what() const noexcept +- { +- return errName; +- } + }; + + } // namespace Image +@@ -190,16 +206,17 @@ struct ManifestFileFailure : public sdbusplus::exception_t + } // namespace openbmc_project + } // namespace xyz + ++ + namespace details + { + + template <> +-struct map_exception_type ++struct map_exception_type + { + using type = xyz::openbmc_project::Software::Image::ManifestFileFailure; + }; +-} // namespace details ++ ++} + + namespace xyz + { +@@ -214,39 +231,76 @@ namespace _InternalFailure + + struct FAIL + { +- static constexpr auto str = "FAIL=%s"; ++ /* ++ * We can't use -fsanitize=undefined if we declare a ++ * 'static constexpr auto str' member, so don't. Instead, open-code the ++ * mako template lookups. ++ */ + static constexpr auto str_short = "FAIL"; +- using type = std::tuple, const char*>; +- explicit constexpr FAIL(const char* a) : _entry(entry(str, a)){}; ++ using type = std::tuple,const char*>; ++ explicit constexpr FAIL(const char* a) : _entry(entry("FAIL=%s", a)) {}; + type _entry; + }; + +-} // namespace _InternalFailure ++} // namespace _InternalFailure + +-struct InternalFailure : public sdbusplus::exception_t ++struct InternalFailure + { +- static constexpr auto errName = +- "xyz.openbmc_project.Software.Image.InternalFailure"; +- static constexpr auto errDesc = +- "The operation failed internally during processing the image."; + static constexpr auto L = level::ERR; + using FAIL = _InternalFailure::FAIL; + using metadata_types = std::tuple; + +- const char* name() const noexcept +- { +- return errName; +- } ++}; ++ ++} // namespace Image ++} // namespace Software ++} // namespace openbmc_project ++} // namespace xyz ++ ++ ++namespace details ++{ ++ ++template <> ++struct map_exception_type ++{ ++ using type = xyz::openbmc_project::Software::Image::InternalFailure; ++}; ++ ++} + +- const char* description() const noexcept +- { +- return errDesc; +- } ++namespace xyz ++{ ++namespace openbmc_project ++{ ++namespace Software ++{ ++namespace Image ++{ ++namespace _ImageFailure ++{ ++ ++struct PATH ++{ ++ /* ++ * We can't use -fsanitize=undefined if we declare a ++ * 'static constexpr auto str' member, so don't. Instead, open-code the ++ * mako template lookups. ++ */ ++ static constexpr auto str_short = "PATH"; ++ using type = std::tuple,const char*>; ++ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)) {}; ++ type _entry; ++}; ++ ++} // namespace _ImageFailure ++ ++struct ImageFailure ++{ ++ static constexpr auto L = level::ERR; ++ using PATH = _ImageFailure::PATH; ++ using metadata_types = std::tuple; + +- const char* what() const noexcept +- { +- return errName; +- } + }; + + } // namespace Image +@@ -254,16 +308,69 @@ struct InternalFailure : public sdbusplus::exception_t + } // namespace openbmc_project + } // namespace xyz + ++ + namespace details + { + + template <> +-struct map_exception_type< +- sdbusplus::xyz::openbmc_project::Software::Image::Error::InternalFailure> ++struct map_exception_type + { +- using type = xyz::openbmc_project::Software::Image::InternalFailure; ++ using type = xyz::openbmc_project::Software::Image::ImageFailure; + }; +-} // namespace details ++ ++} ++ ++namespace xyz ++{ ++namespace openbmc_project ++{ ++namespace Software ++{ ++namespace Image ++{ ++namespace _BusyFailure ++{ ++ ++struct PATH ++{ ++ /* ++ * We can't use -fsanitize=undefined if we declare a ++ * 'static constexpr auto str' member, so don't. Instead, open-code the ++ * mako template lookups. ++ */ ++ static constexpr auto str_short = "PATH"; ++ using type = std::tuple,const char*>; ++ explicit constexpr PATH(const char* a) : _entry(entry("PATH=%s", a)) {}; ++ type _entry; ++}; ++ ++} // namespace _BusyFailure ++ ++struct BusyFailure ++{ ++ static constexpr auto L = level::ERR; ++ using PATH = _BusyFailure::PATH; ++ using metadata_types = std::tuple; ++ ++}; ++ ++} // namespace Image ++} // namespace Software ++} // namespace openbmc_project ++} // namespace xyz ++ ++ ++namespace details ++{ ++ ++template <> ++struct map_exception_type ++{ ++ using type = xyz::openbmc_project::Software::Image::BusyFailure; ++}; ++ ++} ++ + + } // namespace logging + +diff --git a/xyz/openbmc_project/Software/Image.errors.yaml b/xyz/openbmc_project/Software/Image.errors.yaml +index 67d6c20..2b8f7ee 100644 +--- a/xyz/openbmc_project/Software/Image.errors.yaml ++++ b/xyz/openbmc_project/Software/Image.errors.yaml +@@ -4,3 +4,8 @@ + description: An error when reading the Manifest file. + - name: InternalFailure + description: The operation failed internally during processing the image. ++- name: ImageFailure ++ description: An error occured processing the image. ++- name: BusyFailure ++ description: The device is busy during the update. ++ +diff --git a/xyz/openbmc_project/Software/Image.metadata.yaml b/xyz/openbmc_project/Software/Image.metadata.yaml +index 5e749c9..65d4e1c 100644 +--- a/xyz/openbmc_project/Software/Image.metadata.yaml ++++ b/xyz/openbmc_project/Software/Image.metadata.yaml +@@ -13,3 +13,14 @@ + meta: + - str: "FAIL=%s" + type: string ++- name: ImageFailure ++ level: ERR ++ meta: ++ - str: "PATH=%s" ++ type: string ++- name: BusyFailure ++ level: ERR ++ meta: ++ - str: "PATH=%s" ++ type: string ++ +-- +2.17.1 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0008-PFR-image-HASH-verification.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0008-PFR-image-HASH-verification.patch index 31373104f..c65f8318c 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0008-PFR-image-HASH-verification.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0008-PFR-image-HASH-verification.patch @@ -8,11 +8,43 @@ firmware updates Tested: tested firmware update with good and bad HASH images. +A) +1. Upload the corrupted image for fw update. +2. Image present in /tmp/images/ +-rw-r--r-- 1 root root 22969344 Jun 3 09:27 +5dea710b-8b85-4065-8af7-3149ada81edf + +3. Journalctl logs during image verification +Jun 03 09:27:20 intel-obmc phosphor-version-software-manager[4755]: +Firmware image HASH verification failed +Jun 03 09:27:20 intel-obmc phosphor-version-software-manager[4755]: +Error verifying uploaded image +Jun 03 09:27:20 intel-obmc phosphor-version-software-manager[4755]: +Error processing image + +4. image deleted from /tmp/images/ + +B) +1. Upload the correct image. +POST: https:///redfish/v1/UpdateService/ + with binary file +2. Image verification is success and proceeds with update. +{ + "@odata.id": "/redfish/v1/TaskService/Tasks/0", + "@odata.type": "#Task.v1_4_3.Task", + "Id": "0", + "TaskState": "Running", + "TaskStatus": "OK" +} + +Change-Id: I9336980bfb74c8136690024782bfef45f6b08d56 +Signed-off-by: Chalapathi Venkataramashetty + Signed-off-by: Vikram Bodireddy --- - pfr_image_manager.cpp | 149 ++++++++++++++++++++++++++++++++---------- + pfr_image_manager.cpp | 150 +++++++++++++++++++++++++++++++++---------- pfr_image_manager.hpp | 112 +++++++++++++++++++++++++++++-- - 2 files changed, 221 insertions(+), 40 deletions(-) + 2 files changed, 222 insertions(+), 40 deletions(-) diff --git a/pfr_image_manager.cpp b/pfr_image_manager.cpp index 242a6ca..1a41cbe 100644 @@ -168,7 +200,7 @@ index 242a6ca..1a41cbe 100644 } catch (std::exception& e) { -@@ -79,20 +174,20 @@ static int getPFRImgInfo(const std::filesystem::path imgPath, uint8_t& imgType, +@@ -79,20 +174,21 @@ static int getPFRImgInfo(const std::filesystem::path imgPath, uint8_t& imgType, int Manager::processImage(const std::string& imgFilePath) { @@ -189,6 +221,7 @@ index 242a6ca..1a41cbe 100644 phosphor::logging::log( - "Error reading uploaded image type and version"); + "Error verifying uploaded image"); ++ std::filesystem::remove_all(imgFilePath); return -1; } diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0010-Add-error-reporting-to-pfr_image_manager.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0010-Add-error-reporting-to-pfr_image_manager.patch new file mode 100644 index 000000000..9c3ab4dd2 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0010-Add-error-reporting-to-pfr_image_manager.patch @@ -0,0 +1,187 @@ +From ffa3642e436b559d8062f777f00458cc7b5ecb01 Mon Sep 17 00:00:00 2001 +From: James Feist +Date: Thu, 11 Jun 2020 13:30:02 -0700 +Subject: [PATCH 1/1] Add error reporting to pfr_image_manager + +This uses report functionality to update error +return status for redfish updates. + +Tested: Got 400 error with different messages based +on failure type + +{ + "error": { + "@Message.ExtendedInfo": [ + { + "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", + "Message": "Invalid file uploaded to /redfish/v1/UpdateService: invalid archive.", + "MessageArgs": [ + "/redfish/v1/UpdateService", + "invalid archive" + ], + "MessageId": "OpenBMC.0.1.0.InvalidFile", + "Resolution": "None.", + "Severity": "Warning" + } + ], + "code": "OpenBMC.0.1.0.InvalidFile", + "message": "Invalid file uploaded to /redfish/v1/UpdateService: invalid archive." + } +} + +{ + "error": { + "@Message.ExtendedInfo": [ + { + "@odata.type": "/redfish/v1/$metadata#Message.v1_0_0.Message", + "Message": "Invalid file uploaded to /redfish/v1/UpdateService: invalid image format.", + "MessageArgs": [ + "/redfish/v1/UpdateService", + "invalid image format" + ], + "MessageId": "OpenBMC.0.1.0.InvalidFile", + "Resolution": "None.", + "Severity": "Warning" + } + ], + "code": "OpenBMC.0.1.0.InvalidFile", + "message": "Invalid file uploaded to /redfish/v1/UpdateService: invalid image format." + } +} + +{ + "error": { + "@Message.ExtendedInfo": [ + { + "@odata.type": "#Message.v1_0_0.Message", + "Message": "The resource /redfish/v1/UpdateService was unable to satisfy the request due to unavailability of resources.", + "MessageArgs": [ + "/redfish/v1/UpdateService" + ], + "MessageId": "Base.1.4.0.ResourceExhaustion", + "Resolution": "Ensure that the resources are available and resubmit the request.", + "Severity": "Critical" + } + ], + "code": "Base.1.4.0.ResourceExhaustion", + "message": "The resource /redfish/v1/UpdateService was unable to satisfy the request due to unavailability of resources." + } +} + +Signed-off-by: James Feist +--- + dbus_helpers.hpp | 30 ++++++++++++++++++++++++++++++ + pfr_image_manager.cpp | 18 ++++++++++++++++++ + 2 files changed, 48 insertions(+) + create mode 100644 dbus_helpers.hpp + +diff --git a/dbus_helpers.hpp b/dbus_helpers.hpp +new file mode 100644 +index 0000000..b9ffa36 +--- /dev/null ++++ b/dbus_helpers.hpp +@@ -0,0 +1,30 @@ ++#pragma once ++ ++#include "config.h" ++ ++#include ++inline bool isFwupdScriptRunning(sdbusplus::bus::bus& bus) ++{ ++ using ObjectPath = sdbusplus::message::object_path; ++ // type is ssssssouso ++ using ListUnitsType = ++ std::tuple; ++ auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH, ++ SYSTEMD_INTERFACE, "ListUnits"); ++ ++ auto reply = bus.call(method); ++ std::vector resp; ++ reply.read(resp); ++ ++ for (const auto& unit : resp) ++ { ++ if (std::get<0>(unit).find("fwupd@") != std::string::npos && ++ std::get<3>(unit) != "failed") ++ { ++ return true; ++ } ++ } ++ return false; ++} +diff --git a/pfr_image_manager.cpp b/pfr_image_manager.cpp +index 1a41cbe..fe1e6f9 100644 +--- a/pfr_image_manager.cpp ++++ b/pfr_image_manager.cpp +@@ -2,6 +2,7 @@ + + #include "pfr_image_manager.hpp" + ++#include "dbus_helpers.hpp" + #include "version.hpp" + #include "watch.hpp" + +@@ -33,6 +34,9 @@ namespace manager + + using namespace sdbusplus::xyz::openbmc_project::Software::Image::Error; + namespace Software = phosphor::logging::xyz::openbmc_project::Software; ++using UnTarFail = Software::Image::UnTarFailure; ++using ImageFail = Software::Image::ImageFailure; ++using BusyFail = Software::Image::BusyFailure; + + static constexpr const uint32_t pfmPos = 2054; + static constexpr const uint32_t block0Magic = 0xB6EAFD19; +@@ -74,6 +78,8 @@ int Manager::verifyPFRImage(const std::filesystem::path imgPath, + phosphor::logging::log( + "Image magic number match failed", + phosphor::logging::entry("IMAGEMAGIC=0x%x", imgMagic)); ++ phosphor::logging::report( ++ UnTarFail::PATH(imgPath.c_str())); + return -1; + } + +@@ -108,6 +114,8 @@ int Manager::verifyPFRImage(const std::filesystem::path imgPath, + + phosphor::logging::log( + "Unknown image type"); ++ phosphor::logging::report( ++ ImageFail::PATH(imgPath.c_str())); + return -1; + } + +@@ -151,6 +159,8 @@ int Manager::verifyPFRImage(const std::filesystem::path imgPath, + "PRIORITY=%i", LOG_ERR, "REDFISH_MESSAGE_ID=%s", + redfishMsgID.c_str(), "REDFISH_MESSAGE_ARGS=%s", + "Image HASH check fail", NULL); ++ phosphor::logging::report( ++ ImageFail::PATH(imgPath.c_str())); + return -1; + } + +@@ -165,6 +175,8 @@ int Manager::verifyPFRImage(const std::filesystem::path imgPath, + catch (std::exception& e) + { + phosphor::logging::log(e.what()); ++ phosphor::logging::report( ++ ImageFail::PATH(imgPath.c_str())); + return -1; + } + } +@@ -180,6 +192,12 @@ int Manager::processImage(const std::string& imgFilePath) + if (!std::filesystem::exists(imgPath)) + return -1; + ++ if (isFwupdScriptRunning(bus)) ++ { ++ phosphor::logging::report(BusyFail::PATH(imgPath.c_str())); ++ return -1; ++ } ++ + int retry = 3; + std::string ver; + std::string purposeString; +-- +2.17.1 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0011-Fix-for-RedudancyPriority-in-item_updater.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0011-Fix-for-RedudancyPriority-in-item_updater.patch new file mode 100644 index 000000000..4c8f82aa3 --- /dev/null +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0011-Fix-for-RedudancyPriority-in-item_updater.patch @@ -0,0 +1,38 @@ +From 0babf82f51561ac92a9b0dd56991d8de01930129 Mon Sep 17 00:00:00 2001 +From: Vikram Bodireddy +Date: Sun, 5 Jul 2020 00:54:57 +0530 +Subject: [PATCH] Fix for RedudancyPriority in item_updater + +This fixes accessing RedudancyPriority property for the +activated image in item_updater. The downloaded image object +is not actually associated with RedudancyPriority before and +after activation. There exists no RedundancyPriority property +for downloaded image, accessing it causing a crash in +item_updater. + +Tested: Tested for coredumps during Seamless firmware update. + +Signed-off-by: Vikram Bodireddy +--- + item_updater.cpp | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/item_updater.cpp b/item_updater.cpp +index af01e39..8d7bb82 100644 +--- a/item_updater.cpp ++++ b/item_updater.cpp +@@ -655,8 +655,9 @@ void ItemUpdater::freeSpace(Activation& caller) + // Failed activations don't have priority, assign them a large value + // for sorting purposes. + auto priority = 999; +- if (iter.second.get()->activation() == +- server::Activation::Activations::Active) ++ if ((iter.second.get()->activation() == ++ server::Activation::Activations::Active)&& ++ iter.second->redundancyPriority.get()) + { + priority = iter.second->redundancyPriority.get()->priority(); + } +-- +2.17.1 + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend index f72c18cd0..ae108bf70 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend @@ -5,17 +5,20 @@ SYSTEMD_SERVICE_${PN}-updater += "fwupd@.service" EXTRA_OECONF += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', '--enable-pfr_update', '', d)}" -SRC_URI += "file://0002-Redfish-firmware-activation.patch \ +SRC_URI += "file://0001-Add-more-error-types.patch \ + file://0002-Redfish-firmware-activation.patch \ file://0004-Changed-the-condition-of-software-version-service-wa.patch \ file://0005-Modified-firmware-activation-to-launch-fwupd.sh-thro.patch \ file://0006-Modify-the-ID-of-software-image-updater-object-on-DB.patch \ file://0007-Adding-StandBySpare-for-firmware-activation.patch \ file://0008-item_updater-update-the-bmc_active-objectPath.patch \ + file://0011-Fix-for-RedudancyPriority-in-item_updater.patch \ " SRC_URI_PFR = "file://0007-PFR-images-support.patch \ file://0008-PFR-image-HASH-verification.patch \ file://0009-Add-ApplyOptions-D-bus-property-under-Software.patch \ + file://0010-Add-error-reporting-to-pfr_image_manager.patch \ " SRC_URI += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', SRC_URI_PFR, '', d)}" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch index 46e94e339..3895424ac 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0001-Firmware-update-support-for-StandBySpare.patch @@ -1,6 +1,6 @@ -From 461da7ec950704a1f5bcc7f6527ed8ca119cfaf9 Mon Sep 17 00:00:00 2001 +From 98c57392535227f1906fdc2d6f65980267b5d97c Mon Sep 17 00:00:00 2001 From: Vikram Bodireddy -Date: Tue, 24 Mar 2020 16:05:32 +0530 +Date: Tue, 30 Jun 2020 21:47:55 +0530 Subject: [PATCH] Firmware update support for StandBySpare Firmware update support for StandBySpare. This will @@ -28,38 +28,38 @@ Tested: Signed-off-by: Vikram Bodireddy --- - redfish-core/lib/update_service.hpp | 274 +++++++++++++++++++++++++++++++----- - 1 file changed, 241 insertions(+), 33 deletions(-) + redfish-core/lib/update_service.hpp | 276 ++++++++++++++++++++++++---- + 1 file changed, 243 insertions(+), 33 deletions(-) diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp -index e9793eb..a913bac 100644 +index 8dae2fb..86ddd8a 100644 --- a/redfish-core/lib/update_service.hpp +++ b/redfish-core/lib/update_service.hpp -@@ -30,6 +30,17 @@ static std::unique_ptr fwUpdateMatcher; +@@ -32,6 +32,17 @@ static std::unique_ptr fwUpdateErrorMatcher; static bool fwUpdateInProgress = false; // Timer for software available static std::unique_ptr fwAvailableTimer; -+static constexpr const char *versionIntf = ++static constexpr const char* versionIntf = + "xyz.openbmc_project.Software.Version"; -+static constexpr const char *activationIntf = ++static constexpr const char* activationIntf = + "xyz.openbmc_project.Software.Activation"; -+static constexpr const char *reqActivationPropName = "RequestedActivation"; -+static constexpr const char *reqActivationsActive = ++static constexpr const char* reqActivationPropName = "RequestedActivation"; ++static constexpr const char* reqActivationsActive = + "xyz.openbmc_project.Software.Activation.RequestedActivations.Active"; -+static constexpr const char *reqActivationsStandBySpare = ++static constexpr const char* reqActivationsStandBySpare = + "xyz.openbmc_project.Software.Activation.RequestedActivations.StandbySpare"; -+static constexpr const char *activationsStandBySpare = ++static constexpr const char* activationsStandBySpare = + "xyz.openbmc_project.Software.Activation.Activations.StandbySpare"; static void cleanUp() { -@@ -37,27 +48,119 @@ static void cleanUp() - fwUpdateMatcher = nullptr; +@@ -40,27 +51,119 @@ static void cleanUp() + fwUpdateErrorMatcher = nullptr; } - static void activateImage(const std::string &objPath, -- const std::string &service) -+ const std::string &service, -+ const std::vector &imgUriTargets) + static void activateImage(const std::string& objPath, +- const std::string& service) ++ const std::string& service, ++ const std::vector& imgUriTargets) { BMCWEB_LOG_DEBUG << "Activate image for " << objPath << " " << service; + // If targets is empty, it will apply to the active. @@ -90,7 +90,7 @@ index e9793eb..a913bac 100644 - if (error_code) + [objPath, service, imgTarget{imgUriTargets[0]}]( + const boost::system::error_code ec, -+ const crow::openbmc_mapper::GetSubTreeType &subtree) { ++ const crow::openbmc_mapper::GetSubTreeType& subtree) { + if (ec || !subtree.size()) { - BMCWEB_LOG_DEBUG << "error_code = " << error_code; @@ -98,7 +98,7 @@ index e9793eb..a913bac 100644 + return; + } + -+ for (const auto &[invObjPath, invDict] : subtree) ++ for (const auto& [invObjPath, invDict] : subtree) + { + std::size_t idPos = invObjPath.rfind("/"); + if ((idPos == std::string::npos) || @@ -173,23 +173,23 @@ index e9793eb..a913bac 100644 + "xyz.openbmc_project.ObjectMapper", + "/xyz/openbmc_project/object_mapper", + "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/", -+ static_cast(0), std::array{versionIntf}); ++ static_cast(0), std::array{versionIntf}); } // Note that asyncResp can be either a valid pointer or nullptr. If nullptr // then no asyncResp updates will occur static void softwareInterfaceAdded(std::shared_ptr asyncResp, + const std::vector imgUriTargets, - sdbusplus::message::message &m, - const crow::Request &req) + sdbusplus::message::message& m, + const crow::Request& req) { -@@ -70,25 +173,27 @@ static void softwareInterfaceAdded(std::shared_ptr asyncResp, +@@ -73,25 +176,27 @@ static void softwareInterfaceAdded(std::shared_ptr asyncResp, m.read(objPath, interfacesProperties); - BMCWEB_LOG_DEBUG << "obj path = " << objPath.str; + BMCWEB_LOG_DEBUG << "Software Interface Added. obj path = " << objPath.str; - for (auto &interface : interfacesProperties) + for (auto& interface : interfacesProperties) { BMCWEB_LOG_DEBUG << "interface = " << interface.first; @@ -205,7 +205,7 @@ index e9793eb..a913bac 100644 + [objPath, asyncResp, imgTargets{imgUriTargets}, req](const boost::system::error_code error_code, const std::vector>> &objInfo) { + std::string, std::vector>>& objInfo) { if (error_code) { - BMCWEB_LOG_DEBUG << "error_code = " << error_code; @@ -215,7 +215,7 @@ index e9793eb..a913bac 100644 BMCWEB_LOG_DEBUG << "error msg = " << error_code.message(); if (asyncResp) -@@ -115,7 +220,7 @@ static void softwareInterfaceAdded(std::shared_ptr asyncResp, +@@ -118,7 +223,7 @@ static void softwareInterfaceAdded(std::shared_ptr asyncResp, // is added fwAvailableTimer = nullptr; @@ -224,13 +224,13 @@ index e9793eb..a913bac 100644 if (asyncResp) { std::shared_ptr task = -@@ -196,17 +301,16 @@ static void softwareInterfaceAdded(std::shared_ptr asyncResp, +@@ -248,18 +353,17 @@ static void softwareInterfaceAdded(std::shared_ptr asyncResp, "xyz.openbmc_project.ObjectMapper", "/xyz/openbmc_project/object_mapper", "xyz.openbmc_project.ObjectMapper", "GetObject", objPath.str, -- std::array{ +- std::array{ - "xyz.openbmc_project.Software.Activation"}); -+ std::array{activationIntf}); ++ std::array{activationIntf}); } } } @@ -238,28 +238,30 @@ index e9793eb..a913bac 100644 // Note that asyncResp can be either a valid pointer or nullptr. If nullptr // then no asyncResp updates will occur -static void monitorForSoftwareAvailable(std::shared_ptr asyncResp, -- const crow::Request &req, +- const crow::Request& req, +- const std::string& url, - int timeoutTimeSeconds = 5) +static void monitorForSoftwareAvailable( -+ std::shared_ptr asyncResp, const crow::Request &req, -+ const std::vector &imgUriTargets, int timeoutTimeSeconds = 5) ++ std::shared_ptr asyncResp, const crow::Request& req, ++ const std::string& url, const std::vector& imgUriTargets, ++ int timeoutTimeSeconds = 5) { // Only allow one FW update at a time if (fwUpdateInProgress != false) -@@ -246,9 +350,10 @@ static void monitorForSoftwareAvailable(std::shared_ptr asyncResp, +@@ -299,9 +403,10 @@ static void monitorForSoftwareAvailable(std::shared_ptr asyncResp, } }); -- auto callback = [asyncResp, req](sdbusplus::message::message &m) { +- auto callback = [asyncResp, req](sdbusplus::message::message& m) { + auto callback = [asyncResp, imgTargets{imgUriTargets}, -+ req](sdbusplus::message::message &m) { ++ req](sdbusplus::message::message& m) { BMCWEB_LOG_DEBUG << "Match fired"; - softwareInterfaceAdded(asyncResp, m, req); + softwareInterfaceAdded(asyncResp, imgTargets, m, req); }; fwUpdateInProgress = true; -@@ -358,9 +463,12 @@ class UpdateServiceActionsSimpleUpdate : public Node +@@ -467,12 +572,15 @@ class UpdateServiceActionsSimpleUpdate : public Node std::string fwFile = imageURI.substr(separator + 1); BMCWEB_LOG_DEBUG << "Server: " << tftpServer + " File: " << fwFile; @@ -268,32 +270,35 @@ index e9793eb..a913bac 100644 + // Setup callback for when new software detected // Give TFTP 2 minutes to complete -- monitorForSoftwareAvailable(nullptr, req, 120); -+ monitorForSoftwareAvailable(nullptr, req, httpUriTargets, 120); + monitorForSoftwareAvailable( + nullptr, req, + "/redfish/v1/UpdateService/Actions/UpdateService.SimpleUpdate", +- 120); ++ httpUriTargets, 120); // TFTP can take up to 2 minutes depending on image size and // connection speed. Return to caller as soon as the TFTP operation -@@ -394,7 +502,8 @@ class UpdateServiceActionsSimpleUpdate : public Node +@@ -506,7 +614,8 @@ class UpdateServiceActionsSimpleUpdate : public Node class UpdateService : public Node { public: -- UpdateService(CrowApp &app) : Node(app, "/redfish/v1/UpdateService/") -+ UpdateService(CrowApp &app) : +- UpdateService(CrowApp& app) : Node(app, "/redfish/v1/UpdateService/") ++ UpdateService(CrowApp& app) : + Node(app, "/redfish/v1/UpdateService/"), httpPushUriTargetBusy(false) { entityPrivileges = { {boost::beast::http::verb::get, {{"Login"}}}, -@@ -406,6 +515,9 @@ class UpdateService : public Node +@@ -518,6 +627,9 @@ class UpdateService : public Node } private: + std::vector httpPushUriTargets; + bool httpPushUriTargetBusy; + - void doGet(crow::Response &res, const crow::Request &req, - const std::vector ¶ms) override + void doGet(crow::Response& res, const crow::Request& req, + const std::vector& params) override { -@@ -416,6 +528,8 @@ class UpdateService : public Node +@@ -528,6 +640,8 @@ class UpdateService : public Node res.jsonValue["Description"] = "Service for Software Update"; res.jsonValue["Name"] = "Update Service"; res.jsonValue["HttpPushUri"] = "/redfish/v1/UpdateService"; @@ -302,7 +307,7 @@ index e9793eb..a913bac 100644 // UpdateService cannot be disabled res.jsonValue["ServiceEnabled"] = true; res.jsonValue["FirmwareInventory"] = { -@@ -475,9 +589,14 @@ class UpdateService : public Node +@@ -587,9 +701,14 @@ class UpdateService : public Node std::shared_ptr asyncResp = std::make_shared(res); std::optional pushUriOptions; @@ -319,7 +324,7 @@ index e9793eb..a913bac 100644 return; } -@@ -545,6 +664,98 @@ class UpdateService : public Node +@@ -657,6 +776,98 @@ class UpdateService : public Node } } } @@ -370,7 +375,7 @@ index e9793eb..a913bac 100644 + } + + bool swInvObjFound = false; -+ for (const std::string &path : swInvPaths) ++ for (const std::string& path : swInvPaths) + { + std::size_t idPos = path.rfind("/"); + if ((idPos == std::string::npos) || @@ -402,7 +407,7 @@ index e9793eb..a913bac 100644 + "/xyz/openbmc_project/object_mapper", + "xyz.openbmc_project.ObjectMapper", "GetSubTreePaths", + "/", static_cast(0), -+ std::array{versionIntf}); ++ std::array{versionIntf}); + } + else + { @@ -417,27 +422,28 @@ index e9793eb..a913bac 100644 + } } - void doPost(crow::Response &res, const crow::Request &req, -@@ -555,7 +766,7 @@ class UpdateService : public Node + void doPost(crow::Response& res, const crow::Request& req, +@@ -667,8 +878,8 @@ class UpdateService : public Node std::shared_ptr asyncResp = std::make_shared(res); // Setup callback for when new software detected -- monitorForSoftwareAvailable(asyncResp, req); -+ monitorForSoftwareAvailable(asyncResp, req, httpPushUriTargets); +- monitorForSoftwareAvailable(asyncResp, req, +- "/redfish/v1/UpdateService"); ++ monitorForSoftwareAvailable(asyncResp, req, "/redfish/v1/UpdateService", ++ httpPushUriTargets); std::string filepath( "/tmp/images/" + -@@ -641,8 +852,7 @@ class SoftwareInventoryCollection : public Node +@@ -754,7 +965,7 @@ class SoftwareInventoryCollection : public Node "/xyz/openbmc_project/object_mapper", "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/xyz/openbmc_project/software", static_cast(0), -- std::array{ -- "xyz.openbmc_project.Software.Version"}); -+ std::array{versionIntf}); +- std::array{"xyz.openbmc_project.Software.Version"}); ++ std::array{versionIntf}); } }; -@@ -825,7 +1035,7 @@ class SoftwareInventory : public Node +@@ -937,7 +1148,7 @@ class SoftwareInventory : public Node }, obj.second[0].first, obj.first, "org.freedesktop.DBus.Properties", "GetAll", @@ -446,17 +452,16 @@ index e9793eb..a913bac 100644 } if (!found) { -@@ -846,9 +1056,7 @@ class SoftwareInventory : public Node +@@ -958,8 +1169,7 @@ class SoftwareInventory : public Node "xyz.openbmc_project.ObjectMapper", "/xyz/openbmc_project/object_mapper", "xyz.openbmc_project.ObjectMapper", "GetSubTree", "/", - static_cast(0), -- std::array{ -- "xyz.openbmc_project.Software.Version"}); -+ static_cast(0), std::array{versionIntf}); +- std::array{"xyz.openbmc_project.Software.Version"}); ++ static_cast(0), std::array{versionIntf}); } }; -- -2.7.4 +2.17.1 diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Use-chip-id-based-UUID-for-Service-Root.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Use-chip-id-based-UUID-for-Service-Root.patch index 03c27fb43..e963b1423 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Use-chip-id-based-UUID-for-Service-Root.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0002-Use-chip-id-based-UUID-for-Service-Root.patch @@ -1,7 +1,10 @@ -From d629bf86a9ac970d8c0505c0aa2488373c9df102 Mon Sep 17 00:00:00 2001 +From b68d62ddf0a9d77a287a7e9a99762915e31d02b9 Mon Sep 17 00:00:00 2001 From: Wiktor Golgowski Date: Thu, 30 Apr 2020 11:09:35 +0200 Subject: [PATCH] Use chip id-based UUID for Service Root. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit If the sysfs-provided chip id is available, it will be used as payload to generate Service Root UUID from hardcoded namespace. @@ -12,15 +15,16 @@ If the sysfs node is not available, code falls back to randomly generated UUID. Signed-off-by: Wiktor GoĊ‚gowski + --- - include/persistent_data_middleware.hpp | 32 +++++++++++++++++++++++--- + include/persistent_data_middleware.hpp | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/include/persistent_data_middleware.hpp b/include/persistent_data_middleware.hpp -index 348079b..925e7b6 100644 +index de3a6ba..a20b213 100644 --- a/include/persistent_data_middleware.hpp +++ b/include/persistent_data_middleware.hpp -@@ -30,6 +30,10 @@ class Middleware +@@ -31,6 +31,10 @@ class Middleware public: // todo(ed) should read this from a fixed location somewhere, not CWD static constexpr const char* filename = "bmcweb_persistent_data.json"; @@ -30,8 +34,8 @@ index 348079b..925e7b6 100644 + "944847ed76f5}"; struct Context - { -@@ -143,9 +147,31 @@ class Middleware + {}; +@@ -141,9 +145,31 @@ class Middleware if (systemUuid.empty()) { @@ -66,6 +70,3 @@ index 348079b..925e7b6 100644 } if (fileRevision < jsonRevision) { --- -2.20.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-Temporarily-disable-EventService-log-support.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-Temporarily-disable-EventService-log-support.patch deleted file mode 100644 index bfa843e73..000000000 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-Temporarily-disable-EventService-log-support.patch +++ /dev/null @@ -1,30 +0,0 @@ -From cd173b21c42456bde9765e7f6164e495b6c6a303 Mon Sep 17 00:00:00 2001 -From: James Feist -Date: Wed, 3 Jun 2020 10:08:05 -0700 -Subject: [PATCH 1/1] Temporarily disable EventService log support - -This is causing bmcweb to crash when there is no -redfish log. - -Change-Id: Id53e57f1ca140ee44f69fec46fd63bec18490c99 -Signed-off-by: James Feist ---- - src/webserver_main.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/webserver_main.cpp b/src/webserver_main.cpp -index ea32122..421cd1d 100644 ---- a/src/webserver_main.cpp -+++ b/src/webserver_main.cpp -@@ -116,7 +116,7 @@ int main(int argc, char** argv) - - redfish::RedfishService redfish(app); - --#ifndef BMCWEB_ENABLE_REDFISH_DBUS_LOG_ENTRIES -+#if 0 - int rc = redfish::EventServiceManager::startEventLogMonitor(*io); - if (rc) - { --- -2.17.1 - diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-bmcweb-changes-for-setting-ApplyOptions-ClearCfg.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-bmcweb-changes-for-setting-ApplyOptions-ClearCfg.patch index 844a65ec9..704031fe1 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-bmcweb-changes-for-setting-ApplyOptions-ClearCfg.patch +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb/0003-bmcweb-changes-for-setting-ApplyOptions-ClearCfg.patch @@ -1,6 +1,6 @@ -From 4d88fcada1d95f485ea5a1dd418b31c508652712 Mon Sep 17 00:00:00 2001 +From e883ea9d43a84998641428448d7220c0f5be72c0 Mon Sep 17 00:00:00 2001 From: Vikram Bodireddy -Date: Fri, 15 May 2020 21:12:44 +0530 +Date: Tue, 30 Jun 2020 22:09:10 +0530 Subject: [PATCH] bmcweb changes for setting ApplyOptions-ClearCfg ApplyOptions are used to specify firmware update specific options @@ -25,10 +25,10 @@ Signed-off-by: Vikram Bodireddy create mode 100644 static/redfish/v1/schema/OemUpdateService_v1.xml diff --git a/redfish-core/lib/update_service.hpp b/redfish-core/lib/update_service.hpp -index a913bac..3a64e63 100644 +index 86ddd8a..291acec 100644 --- a/redfish-core/lib/update_service.hpp +++ b/redfish-core/lib/update_service.hpp -@@ -579,6 +579,29 @@ class UpdateService : public Node +@@ -691,6 +691,29 @@ class UpdateService : public Node "/xyz/openbmc_project/software/apply_time", "org.freedesktop.DBus.Properties", "Get", "xyz.openbmc_project.Software.ApplyTime", "RequestedApplyTime"); @@ -44,7 +44,7 @@ index a913bac..3a64e63 100644 + return; + } + -+ const bool *b = std::get_if(&applyOption); ++ const bool* b = std::get_if(&applyOption); + + if (b) + { @@ -57,8 +57,8 @@ index a913bac..3a64e63 100644 + "Get", "xyz.openbmc_project.Software.ApplyOptions", "ClearConfig"); } - void doPatch(crow::Response &res, const crow::Request &req, -@@ -591,15 +614,59 @@ class UpdateService : public Node + void doPatch(crow::Response& res, const crow::Request& req, +@@ -703,15 +726,59 @@ class UpdateService : public Node std::optional pushUriOptions; std::optional> imgTargets; std::optional imgTargetBusy; 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 a1ce5f99b..5c70f25d7 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/interfaces/bmcweb_%.bbappend @@ -1,6 +1,6 @@ # todo(james) remove nobranch SRC_URI = "git://github.com/openbmc/bmcweb.git" -SRCREV = "dc3fbbd0b0021ae888a97bf48a62f30129fc3f4d" +SRCREV = "a502de3d661acf95613d4e4d27c9611f2c8148ea" FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" @@ -12,7 +12,6 @@ GROUPADD_PARAM_${PN} = "web; redfish " SRC_URI += "file://0001-Firmware-update-support-for-StandBySpare.patch \ file://0002-Use-chip-id-based-UUID-for-Service-Root.patch \ - file://0003-Temporarily-disable-EventService-log-support.patch \ file://0003-bmcweb-changes-for-setting-ApplyOptions-ClearCfg.patch \ " 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 b02595e81..656207de6 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 @@ -45,7 +45,7 @@ }, "4" : { "name" : "RESERVED", - "is_valid" : true, + "is_valid" : false, "active_sessions" : 0, "channel_info" : { "medium_type" : "reserved", diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend index 97d329498..a3dceb01e 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-kcs_%.bbappend @@ -11,7 +11,7 @@ SMM_DEVICE = "ipmi_kcs4" SYSTEMD_SERVICE_${PN}_append = " ${PN}@${SMM_DEVICE}.service " SRC_URI = "git://github.com/openbmc/kcsbridge.git" -SRCREV = "58d596ad9625790b5e06804360aa161579364425" +SRCREV = "d8594e9a62feb8b2fac789159966b4782b4aa31e" SRC_URI += "file://99-ipmi-kcs.rules" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend index 0a9a6ba57..10d0d8c94 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend @@ -3,7 +3,7 @@ inherit useradd # TODO: This should be removed, once up-stream bump up # issue is resolved SRC_URI += "git://github.com/openbmc/phosphor-net-ipmid" -SRCREV = "9d9b7638cb1e95989329680730ec272da786615f" +SRCREV = "ecb32fbc699aaacee4d6a42bb986575c4c5780dc" USERADD_PACKAGES = "${PN}" # add a group called ipmi diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libmctp-intel_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libmctp-intel_git.bb index 5607ab823..055e9710e 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libmctp-intel_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libmctp-intel_git.bb @@ -2,7 +2,7 @@ SUMMARY = "libmctp_intel" DESCRIPTION = "Implementation of MCTP(DMTF DSP0236)" SRC_URI = "git://github.com/Intel-BMC/libmctp.git;protocol=ssh" -SRCREV = "8cf0d4e76516511ec77bda9e3a1ad1e75f801cdd" +SRCREV = "58581630af62fce296206e9d09da38cf1d6d1a0f" S = "${WORKDIR}/git/" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-emulator.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-emulator.bb index ae11b299a..829bc1636 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-emulator.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-emulator.bb @@ -5,7 +5,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=bcd9ada3a943f58551867d72893cc9ab" SRC_URI = "git://github.com/Intel-BMC/pmci.git;protocol=ssh" -SRCREV = "31c8b7aa2bf24060fee2954ae1891c3418a3ae46" +SRCREV = "cd15b3175e2dd8315d1e01634f2c8a24174c9b21" S = "${WORKDIR}/git/mctp_emulator/" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpd.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpd.bb index 764b65c36..f20426ba1 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpd.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpd.bb @@ -5,7 +5,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" SRC_URI = "git://github.com/Intel-BMC/pmci.git;protocol=ssh" -SRCREV = "31c8b7aa2bf24060fee2954ae1891c3418a3ae46" +SRCREV = "cd15b3175e2dd8315d1e01634f2c8a24174c9b21" S = "${WORKDIR}/git/mctpd/" 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 ab36babb3..882547ea7 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,9 +1,11 @@ -SRCREV = "54ffb271b995db4f0b00f0661baab23763fae5bd" +SRCREV = "5591cf0860895607bda0b8ae713e6b05ac0623b1" #SRC_URI = "git://github.com/openbmc/dbus-sensors.git" DEPENDS_append = " libgpiod libmctp" FILESEXTRAPATHS_append := ":${THISDIR}/${PN}" -EXTRA_OECMAKE += "-DDISABLE_NVME=OFF" -SYSTEMD_SERVICE_${PN} += " xyz.openbmc_project.nvmesensor.service" +PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'disable-nvme-sensors', d)}" +PACKAGECONFIG[disable-nvme-sensors] = "-DDISABLE_NVME=ON, -DDISABLE_NVME=OFF" + +SYSTEMD_SERVICE_${PN} += "${@bb.utils.contains('DISTRO_FEATURES', 'disable-nvme-sensors', '', 'xyz.openbmc_project.nvmesensor.service', d)}" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/service-config-manager/service-config-manager_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/service-config-manager/service-config-manager_%.bbappend index 3b4b25021..6d26a95a9 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/service-config-manager/service-config-manager_%.bbappend +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/service-config-manager/service-config-manager_%.bbappend @@ -1,3 +1,5 @@ -# Enable downstream autobump +inherit meson pkgconfig systemd SRC_URI = "git://github.com/openbmc/service-config-manager" -SRCREV = "ee853eb2d865c7da9eec99cdcac04f8aee750e49" +SRCREV = "1a885d98eea964bd9a3d57152dcaae7d4808211f" + + diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb index e49a410cb..e15525bba 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/settings/settings_git.bb @@ -1,7 +1,7 @@ SUMMARY = "Settings" -SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh" -SRCREV = "bee56d62b209088454d166d1efae4825a2b175df" +SRC_URI = "git://github.com/Intel-BMC/settings.git;protocol=ssh" +SRCREV = "cf55f85c9cd676736356f06fc47a7e98abd297f3" PV = "0.1+git${SRCPV}" LICENSE = "Apache-2.0" @@ -13,7 +13,7 @@ DEPENDS = "boost \ nlohmann-json \ sdbusplus" -S = "${WORKDIR}/git/settings" +S = "${WORKDIR}/git" inherit cmake systemd EXTRA_OECMAKE = "-DYOCTO=1" 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 6f6bb860d..ea8971eb4 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 @@ -9,7 +9,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" SRC_URI = "git://github.com/Intel-BMC/special-mode-manager.git;protocol=ssh" -SRCREV = "cf2ba04cf68d76047211f66d9bb4ae1be1907323" +SRCREV = "658d313be17b971aedae69e9edbba5f26667dd03" EXTRA_OECMAKE += "${@bb.utils.contains('EXTRA_IMAGE_FEATURES', 'validation-unsecure', '-DBMC_VALIDATION_UNSECURE_FEATURE=ON', '', d)}" diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/frb2-watchdog/frb2-watchdog.cpp b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/frb2-watchdog/frb2-watchdog.cpp index 5356e95db..792e564d9 100644 --- a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/frb2-watchdog/frb2-watchdog.cpp +++ b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/frb2-watchdog/frb2-watchdog.cpp @@ -127,8 +127,7 @@ template void setProperty(const std::string &key, const T &val) boost::system::system_error(err).what())); } }, - wdBus, wdPath, propIntf, "Set", wdIntf, key, - sdbusplus::message::variant_ns::variant(val)); + wdBus, wdPath, propIntf, "Set", wdIntf, key, std::variant(val)); } catch (sdbusplus::exception::SdBusError &e) { 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 217eb9ef9..ce46ec5cd 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,4 +1,4 @@ SRC_URI = "git://github.com/Intel-BMC/phosphor-webui;protocol=ssh;branch=intel2" FILESEXTRAPATHS_prepend_intel := "${THISDIR}/${PN}:" -SRCREV = "190f423c191f1f292d24b55f1310eadd565e5ee9" +SRCREV = "7d6650577d28a52e7be47dd2106d9e0f3b6e1c59" -- cgit v1.2.3