summaryrefslogtreecommitdiff
path: root/meta-openbmc-mods
diff options
context:
space:
mode:
authorJason M. Bills <jason.m.bills@linux.intel.com>2021-04-19 22:13:22 +0300
committerJason M. Bills <jason.m.bills@linux.intel.com>2021-04-19 23:02:05 +0300
commitab16ab3d0de4dc9d130ae3db366c38888f1ada5a (patch)
treed7b76b8111aedb06ee17ced2c9cbdebaeaaf6311 /meta-openbmc-mods
parent36caa12533da01d4319c5ffe7613711a0ec7dea7 (diff)
downloadopenbmc-ab16ab3d0de4dc9d130ae3db366c38888f1ada5a.tar.xz
Update to internal 0.45
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
Diffstat (limited to 'meta-openbmc-mods')
-rw-r--r--meta-openbmc-mods/meta-ast2500/conf/machine/include/intel-ast2500.inc1
-rw-r--r--meta-openbmc-mods/meta-ast2600/conf/machine/include/intel-ast2600.inc1
-rw-r--r--meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0027-ast2600-Add-Mailbox-init-function.patch76
-rw-r--r--meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0028-Improve-randomness-of-mac-address-generation.patch53
-rw-r--r--meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend1
-rw-r--r--meta-openbmc-mods/meta-common/recipes-connectivity/openssl/openssl_1.1.1j.bb (renamed from meta-openbmc-mods/meta-common/recipes-connectivity/openssl/openssl_1.1.1i.bb)2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/fw-update/intel-fw-update.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0032-Fix-buffer-overrun-in-EUC-KR-conversion-module-BZ-24973.patch133
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0033-Fix-assertion-failure-in-ISO-20220JP-3-module-bug-27256.patch292
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0035-Fix-build-error.patch26
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/glibc/glibc_%.bbappend8
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/dbus/phosphor-dbus-interfaces_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0017-Fix-build-error.patch34
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager_%.bbappend35
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/host/phosphor-host-postd_git.bbappend3
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/ipmi/phosphor-ipmi-net_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libmctp-intel_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libpldm-intel_git.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-emulator.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-wrapper.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpd.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpwplus.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/nvmemi-daemon.bb17
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pldmd.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pmci-launcher.bb2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-post-code-manager_git.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/telemetry/telemetry_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch73
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/phosphor-webui_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-phosphor/webui/webui-vue_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++/0001-enable-cross-compilation-and-pkgconfig.patch71
-rw-r--r--meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++_git.bb22
-rw-r--r--meta-openbmc-mods/meta-common/recipes-support/boost/boost_%.bbappend2
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Configure-host-error-monitors-for-meta-wht.patch194
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Filter-memory-thermtrip-events-based-on-DIMM-status.patch169
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Add-a-workaround-for-spurious-CPU-errors.patch133
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Filter-memory-thermtrip-events-based-on-DIMM-status.patch143
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor_%.bbappend6
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci/99-peci.rules2
-rw-r--r--meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci_%.bbappend8
45 files changed, 718 insertions, 827 deletions
diff --git a/meta-openbmc-mods/meta-ast2500/conf/machine/include/intel-ast2500.inc b/meta-openbmc-mods/meta-ast2500/conf/machine/include/intel-ast2500.inc
index 3e7bd152f..9ccc399b1 100644
--- a/meta-openbmc-mods/meta-ast2500/conf/machine/include/intel-ast2500.inc
+++ b/meta-openbmc-mods/meta-ast2500/conf/machine/include/intel-ast2500.inc
@@ -7,7 +7,6 @@ KERNEL_DEVICETREE = " \
require conf/machine/include/ast2500.inc
require conf/machine/include/obmc-bsp-si-common.inc
require conf/machine/include/intel.inc
-require conf/distro/include/phosphor-tiny.inc
require conf/distro/include/phosphor-isolation.inc
UBOOT_MACHINE = "ast_g5_phy_config"
diff --git a/meta-openbmc-mods/meta-ast2600/conf/machine/include/intel-ast2600.inc b/meta-openbmc-mods/meta-ast2600/conf/machine/include/intel-ast2600.inc
index ae22138ba..a1700c873 100644
--- a/meta-openbmc-mods/meta-ast2600/conf/machine/include/intel-ast2600.inc
+++ b/meta-openbmc-mods/meta-ast2600/conf/machine/include/intel-ast2600.inc
@@ -8,7 +8,6 @@ KERNEL_DEVICETREE = " \
require conf/machine/include/ast2600.inc
require conf/machine/include/obmc-bsp-si-common.inc
require conf/machine/include/intel.inc
-require conf/distro/include/phosphor-tiny.inc
TARGET_FPU = "hard"
diff --git a/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0027-ast2600-Add-Mailbox-init-function.patch b/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0027-ast2600-Add-Mailbox-init-function.patch
index 2bcf464cf..0933d913c 100644
--- a/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0027-ast2600-Add-Mailbox-init-function.patch
+++ b/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0027-ast2600-Add-Mailbox-init-function.patch
@@ -3,8 +3,18 @@ From: Kuiying Wang <kuiying.wang@intel.com>
Date: Thu, 25 Feb 2021 14:45:12 +0800
Subject: [PATCH] ast2600: Add Mailbox init function.
-Add Mailbox init function to make sure
-mailbox regs are clear when BMC reset.
+Add Mailbox init function to make sure mailbox regs are reset
+to expected values at reset.
+
+At power-on reset, 0x0c=0, 0x0d=2, 0x0e=5e, 0x0f=31
+as per the handshake definition with BIOS.
+
+At all other resets, 0x0c is preserved, 0x0d, 0x0e, 0x0f
+are reset the same as power-on reset.
+
+Because the reset behavior depends on a flag set in the _f phase of
+booting, the mailbox_init function must be called from the _r phase.
+
AST2600 A0 has 16 mailboxes.
AST2600 A1 has 32 mailboxes.
@@ -13,7 +23,7 @@ BMC could boot correctly and all the mailboxes clear
ast# md 0x1e789200
1e789200: 00000000 00000000 00000000 00000000 ................
1e789210: 00000000 00000000 00000000 00000000 ................
-1e789220: 00000000 00000000 00000000 00000000 ................
+1e789220: 00000000 00000002 0000005e 00000031 .........^..1...
1e789230: 00000000 00000000 00000000 00000000 ................
1e789240: 00000000 00000000 00000000 00000000 ................
@@ -25,10 +35,14 @@ Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
1 file changed, 24 insertions(+), 2 deletions(-)
diff --git a/board/aspeed/ast2600_intel/intel.c b/board/aspeed/ast2600_intel/intel.c
-index 17a21c746098..17d1b1952d4d 100644
+index 4a5ff0bdac..fbc3215138 100644
--- a/board/aspeed/ast2600_intel/intel.c
+++ b/board/aspeed/ast2600_intel/intel.c
-@@ -10,6 +10,9 @@
+@@ -7,9 +7,13 @@
+ #include <asm/io.h>
+ #include <malloc.h>
+
++#define SYS_PWR_RESET_FLAG BIT(0) /* from scu_info.c */
#define WATCHDOG_RESET_BIT BIT(20)
#define BOOT_FAILURE_LIMIT 3
@@ -38,16 +52,18 @@ index 17a21c746098..17d1b1952d4d 100644
static int get_boot_failures(void)
{
return env_get_ulong("bootfailures", 10, 0);
-@@ -320,6 +323,25 @@ static void timer_callback(void *cookie)
+@@ -329,6 +333,55 @@ static void timer_callback(void *cookie)
}
}
+#define AST_MBX_BASE 0x1e789200
+#define AST_MBX_COUNT_A0 16
+#define AST_MBX_COUNT 32
++#define MAILBOX_INIT_D 0x02
++#define MAILBOX_INIT_E 0x5e
++#define MAILBOX_INIT_F 0x31
+static void mailbox_init(void)
+{
-+ /* clear out default mbox values */
+ int i, mbx_count;
+
+ if (readl(SCU_BASE + SCU_014) == REV_ID_AST2600A0)
@@ -55,25 +71,53 @@ index 17a21c746098..17d1b1952d4d 100644
+ else
+ mbx_count = AST_MBX_COUNT;
+
-+ for (i = 0; i < mbx_count; i++)
++ if (gd->reset_reason & SYS_PWR_RESET_FLAG)
++ {
++ /* on AC-reset, clear all except special values to d/e/f */
++ for (i = 0; i < mbx_count; i++)
++ {
++ long v;
++ if (i == 0x0d)
++ v = MAILBOX_INIT_D;
++ else if (i == 0x0e)
++ v = MAILBOX_INIT_E;
++ else if (i == 0x0f)
++ v = MAILBOX_INIT_F;
++ else
++ v = 0;
++ writel(v, AST_MBX_BASE + 4 * i);
++ }
++ }
++ else
+ {
-+ writel(0, AST_MBX_BASE + 4 * i);
++ /* on other resets, clear all except c/d/e/f */
++ for (i = 0; i < mbx_count; i++)
++ {
++ long v;
++ if (i == 0x0d)
++ v = MAILBOX_INIT_D;
++ else if (i == 0x0c || i == 0x0e || i == 0x0f)
++ continue;
++ else
++ v = 0;
++ writel(v, AST_MBX_BASE + 4 * i);
++ }
+ }
+}
+
int board_early_init_f(void)
{
/* This is called before relocation; beware! */
-@@ -333,6 +355,8 @@ int board_early_init_f(void)
-
- sgpio_init();
+@@ -350,6 +405,8 @@ int board_early_init_r(void)
+ {
+ debug("board_early_init_r\n");
+ mailbox_init();
+
- /* TODO: is it too late to enforce HW security registers? */
- return 0;
- }
-@@ -469,8 +493,6 @@ extern void timer_enable(int n, u32 interval_us, interrupt_handler_t *handler,
+ enable_onboard_tpm();
+
+ bmc_running_indicator(true);
+@@ -447,8 +504,6 @@ extern void timer_enable(int n, u32 interval_us, interrupt_handler_t *handler,
void *cookie);
int board_late_init(void)
{
diff --git a/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0028-Improve-randomness-of-mac-address-generation.patch b/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0028-Improve-randomness-of-mac-address-generation.patch
new file mode 100644
index 000000000..337e9995b
--- /dev/null
+++ b/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/files/0028-Improve-randomness-of-mac-address-generation.patch
@@ -0,0 +1,53 @@
+From da155e990fe763d3a03bdac76054e1d5530b8c16 Mon Sep 17 00:00:00 2001
+From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+Date: Wed, 10 Mar 2021 20:15:10 -0800
+Subject: [PATCH] Improve randomness of mac address generation
+
+This commit improves randomness of mac address generation using
+AST2600's hardware random number generator.
+
+Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+---
+ lib/rand.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/lib/rand.c b/lib/rand.c
+index af4cf3a0e8cf..0a12b0b82276 100644
+--- a/lib/rand.c
++++ b/lib/rand.c
+@@ -8,16 +8,32 @@
+ */
+
+ #include <common.h>
++#include <asm/io.h>
+
+ static unsigned int y = 1U;
+
+ unsigned int rand_r(unsigned int *seedp)
+ {
++#ifdef CONFIG_ASPEED_AST2600
++#define SCU_524 0x1e6e2524
++ int i;
++
++ /*
++ * Use hardware random number generator. It generates a new number on
++ * each 1us or on each 32 read command cycle so this code makes
++ * intentional dummy 32 reads.
++ */
++ for (i = 0; i < 32; i++)
++ *seedp ^= readl(SCU_524);
++
++ return readl(SCU_524);
++#else
+ *seedp ^= (*seedp << 13);
+ *seedp ^= (*seedp >> 17);
+ *seedp ^= (*seedp << 5);
+
+ return *seedp;
++#endif
+ }
+
+ unsigned int rand(void)
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend b/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
index e05f9e16f..360d8398e 100644
--- a/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
+++ b/meta-openbmc-mods/meta-ast2600/recipes-bsp/u-boot/u-boot-aspeed-sdk_%.bbappend
@@ -33,6 +33,7 @@ SRC_URI_append_intel-ast2600 = " \
file://0025-ast2600-PFR-platform-EXTRST-reset-mask-selection.patch \
file://0025-Enable-PCIe-L1-support.patch \
file://0027-ast2600-Add-Mailbox-init-function.patch \
+ file://0028-Improve-randomness-of-mac-address-generation.patch \
"
# CVE-2020-10648 vulnerability fix
diff --git a/meta-openbmc-mods/meta-common/recipes-connectivity/openssl/openssl_1.1.1i.bb b/meta-openbmc-mods/meta-common/recipes-connectivity/openssl/openssl_1.1.1j.bb
index a9120d136..bf01647ee 100644
--- a/meta-openbmc-mods/meta-common/recipes-connectivity/openssl/openssl_1.1.1i.bb
+++ b/meta-openbmc-mods/meta-common/recipes-connectivity/openssl/openssl_1.1.1j.bb
@@ -23,7 +23,7 @@ SRC_URI_append_class-nativesdk = " \
file://environment.d-openssl.sh \
"
-SRC_URI[sha256sum] = "e8be6a35fe41d10603c3cc635e93289ed00bf34b79671a3a4de64fcee00d5242"
+SRC_URI[sha256sum] = "aaf2fcb575cdf6491b98ab4829abf78a3dec8402b8b81efc8f23c00d443981bf"
inherit lib_package multilib_header multilib_script ptest
MULTILIB_SCRIPTS = "${PN}-bin:${bindir}/c_rehash"
diff --git a/meta-openbmc-mods/meta-common/recipes-core/fw-update/intel-fw-update.bb b/meta-openbmc-mods/meta-common/recipes-core/fw-update/intel-fw-update.bb
index 007a4aece..118d6aab8 100644
--- a/meta-openbmc-mods/meta-common/recipes-core/fw-update/intel-fw-update.bb
+++ b/meta-openbmc-mods/meta-common/recipes-core/fw-update/intel-fw-update.bb
@@ -9,6 +9,8 @@ RDEPENDS_intel-fw-update += "busybox dropbear"
# mkfs.vfat, parted
RDEPENDS_intel-fw-update += "dosfstools dtc"
+RDEPENDS_intel-fw-update += "bash"
+
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${INTELBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658"
PFR_EN = "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', 'pfr', '', d)}"
diff --git a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0032-Fix-buffer-overrun-in-EUC-KR-conversion-module-BZ-24973.patch b/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0032-Fix-buffer-overrun-in-EUC-KR-conversion-module-BZ-24973.patch
deleted file mode 100644
index 82ae284d2..000000000
--- a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0032-Fix-buffer-overrun-in-EUC-KR-conversion-module-BZ-24973.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-From ee7a3144c9922808181009b7b3e50e852fb4999b Mon Sep 17 00:00:00 2001
-From: Andreas Schwab <schwab@suse.de>
-Date: Mon, 21 Dec 2020 08:56:43 +0530
-Subject: [PATCH] Fix buffer overrun in EUC-KR conversion module (bz #24973)
-
-The byte 0xfe as input to the EUC-KR conversion denotes a user-defined
-area and is not allowed. The from_euc_kr function used to skip two bytes
-when told to skip over the unknown designation, potentially running over
-the buffer end.
----
- iconvdata/Makefile | 3 ++-
- iconvdata/bug-iconv13.c | 53 +++++++++++++++++++++++++++++++++++++++++
- iconvdata/euc-kr.c | 6 +----
- iconvdata/ksc5601.h | 6 ++---
- 4 files changed, 59 insertions(+), 9 deletions(-)
- create mode 100644 iconvdata/bug-iconv13.c
-
-diff --git a/iconvdata/Makefile b/iconvdata/Makefile
-index 4ec2741cdc..85009f3390 100644
---- a/iconvdata/Makefile
-+++ b/iconvdata/Makefile
-@@ -73,7 +73,8 @@ modules.so := $(addsuffix .so, $(modules))
- ifeq (yes,$(build-shared))
- tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
- tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
-- bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4
-+ bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4 \
-+ bug-iconv13
- ifeq ($(have-thread-library),yes)
- tests += bug-iconv3
- endif
-diff --git a/iconvdata/bug-iconv13.c b/iconvdata/bug-iconv13.c
-new file mode 100644
-index 0000000000..87aaff398e
---- /dev/null
-+++ b/iconvdata/bug-iconv13.c
-@@ -0,0 +1,53 @@
-+/* bug 24973: Test EUC-KR module
-+ Copyright (C) 2020 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <https://www.gnu.org/licenses/>. */
-+
-+#include <errno.h>
-+#include <iconv.h>
-+#include <stdio.h>
-+#include <support/check.h>
-+
-+static int
-+do_test (void)
-+{
-+ iconv_t cd = iconv_open ("UTF-8//IGNORE", "EUC-KR");
-+ TEST_VERIFY_EXIT (cd != (iconv_t) -1);
-+
-+ /* 0xfe (->0x7e : row 94) and 0xc9 (->0x49 : row 41) are user-defined
-+ areas, which are not allowed and should be skipped over due to
-+ //IGNORE. The trailing 0xfe also is an incomplete sequence, which
-+ should be checked first. */
-+ char input[4] = { '\xc9', '\xa1', '\0', '\xfe' };
-+ char *inptr = input;
-+ size_t insize = sizeof (input);
-+ char output[4];
-+ char *outptr = output;
-+ size_t outsize = sizeof (output);
-+
-+ /* This used to crash due to buffer overrun. */
-+ TEST_VERIFY (iconv (cd, &inptr, &insize, &outptr, &outsize) == (size_t) -1);
-+ TEST_VERIFY (errno == EINVAL);
-+ /* The conversion should produce one character, the converted null
-+ character. */
-+ TEST_VERIFY (sizeof (output) - outsize == 1);
-+
-+ TEST_VERIFY_EXIT (iconv_close (cd) != -1);
-+
-+ return 0;
-+}
-+
-+#include <support/test-driver.c>
-diff --git a/iconvdata/euc-kr.c b/iconvdata/euc-kr.c
-index b0d56cf3ee..1045bae926 100644
---- a/iconvdata/euc-kr.c
-+++ b/iconvdata/euc-kr.c
-@@ -80,11 +80,7 @@ euckr_from_ucs4 (uint32_t ch, unsigned char *cp)
- \
- if (ch <= 0x9f) \
- ++inptr; \
-- /* 0xfe(->0x7e : row 94) and 0xc9(->0x59 : row 41) are \
-- user-defined areas. */ \
-- else if (__builtin_expect (ch == 0xa0, 0) \
-- || __builtin_expect (ch > 0xfe, 0) \
-- || __builtin_expect (ch == 0xc9, 0)) \
-+ else if (__glibc_unlikely (ch == 0xa0)) \
- { \
- /* This is illegal. */ \
- STANDARD_FROM_LOOP_ERR_HANDLER (1); \
-diff --git a/iconvdata/ksc5601.h b/iconvdata/ksc5601.h
-index d3eb3a4ff8..f5cdc72797 100644
---- a/iconvdata/ksc5601.h
-+++ b/iconvdata/ksc5601.h
-@@ -50,15 +50,15 @@ ksc5601_to_ucs4 (const unsigned char **s, size_t avail, unsigned char offset)
- unsigned char ch2;
- int idx;
-
-+ if (avail < 2)
-+ return 0;
-+
- /* row 94(0x7e) and row 41(0x49) are user-defined area in KS C 5601 */
-
- if (ch < offset || (ch - offset) <= 0x20 || (ch - offset) >= 0x7e
- || (ch - offset) == 0x49)
- return __UNKNOWN_10646_CHAR;
-
-- if (avail < 2)
-- return 0;
--
- ch2 = (*s)[1];
- if (ch2 < offset || (ch2 - offset) <= 0x20 || (ch2 - offset) >= 0x7f)
- return __UNKNOWN_10646_CHAR;
---
-2.27.0
-
diff --git a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0033-Fix-assertion-failure-in-ISO-20220JP-3-module-bug-27256.patch b/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0033-Fix-assertion-failure-in-ISO-20220JP-3-module-bug-27256.patch
deleted file mode 100644
index 68b9fcfdf..000000000
--- a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0033-Fix-assertion-failure-in-ISO-20220JP-3-module-bug-27256.patch
+++ /dev/null
@@ -1,292 +0,0 @@
-From 7d88c6142c6efc160c0ee5e4f85cde382c072888 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <fweimer@redhat.com>
-Date: Wed, 27 Jan 2021 13:36:12 +0100
-Subject: [PATCH] gconv: Fix assertion failure in ISO-2022-JP-3 module (bug
- 27256)
-
-The conversion loop to the internal encoding does not follow
-the interface contract that __GCONV_FULL_OUTPUT is only returned
-after the internal wchar_t buffer has been filled completely. This
-is enforced by the first of the two asserts in iconv/skeleton.c:
-
- /* We must run out of output buffer space in this
- rerun. */
- assert (outbuf == outerr);
- assert (nstatus == __GCONV_FULL_OUTPUT);
-
-This commit solves this issue by queuing a second wide character
-which cannot be written immediately in the state variable, like
-other converters already do (e.g., BIG5-HKSCS or TSCII).
-
-Reported-by: Tavis Ormandy <taviso@gmail.com>
----
- iconvdata/Makefile | 4 +-
- iconvdata/bug-iconv14.c | 127 ++++++++++++++++++++++++++++++++++++++
- iconvdata/iso-2022-jp-3.c | 67 ++++++++++++++------
- 3 files changed, 178 insertions(+), 20 deletions(-)
- create mode 100644 iconvdata/bug-iconv14.c
-
-diff --git a/iconvdata/Makefile b/iconvdata/Makefile
-index c8c532a3e4..55c527a5f7 100644
---- a/iconvdata/Makefile
-+++ b/iconvdata/Makefile
-@@ -74,7 +74,7 @@ ifeq (yes,$(build-shared))
- tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \
- tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \
- bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4 \
-- bug-iconv13
-+ bug-iconv13 bug-iconv14
- ifeq ($(have-thread-library),yes)
- tests += bug-iconv3
- endif
-@@ -322,6 +322,8 @@ $(objpfx)bug-iconv10.out: $(objpfx)gconv-modules \
- $(addprefix $(objpfx),$(modules.so))
- $(objpfx)bug-iconv12.out: $(objpfx)gconv-modules \
- $(addprefix $(objpfx),$(modules.so))
-+$(objpfx)bug-iconv14.out: $(objpfx)gconv-modules \
-+ $(addprefix $(objpfx),$(modules.so))
-
- $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
- $(addprefix $(objpfx),$(modules.so)) \
-diff --git a/iconvdata/bug-iconv14.c b/iconvdata/bug-iconv14.c
-new file mode 100644
-index 0000000000..902f140fa9
---- /dev/null
-+++ b/iconvdata/bug-iconv14.c
-@@ -0,0 +1,127 @@
-+/* Assertion in ISO-2022-JP-3 due to two-character sequence (bug 27256).
-+ Copyright (C) 2021 Free Software Foundation, Inc.
-+ This file is part of the GNU C Library.
-+
-+ The GNU C Library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ The GNU C Library is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with the GNU C Library; if not, see
-+ <https://www.gnu.org/licenses/>. */
-+
-+#include <iconv.h>
-+#include <string.h>
-+#include <errno.h>
-+#include <support/check.h>
-+
-+/* Use an escape sequence to return to the initial state. */
-+static void
-+with_escape_sequence (void)
-+{
-+ iconv_t c = iconv_open ("UTF-8", "ISO-2022-JP-3");
-+ TEST_VERIFY_EXIT (c != (iconv_t) -1);
-+
-+ char in[] = "\e$(O+D\e(B";
-+ char *inbuf = in;
-+ size_t inleft = strlen (in);
-+ char out[3]; /* Space for one output character. */
-+ char *outbuf;
-+ size_t outleft;
-+
-+ outbuf = out;
-+ outleft = sizeof (out);
-+ TEST_COMPARE (iconv (c, &inbuf, &inleft, &outbuf, &outleft), (size_t) -1);
-+ TEST_COMPARE (errno, E2BIG);
-+ TEST_COMPARE (inleft, 3);
-+ TEST_COMPARE (inbuf - in, strlen (in) - 3);
-+ TEST_COMPARE (outleft, sizeof (out) - 2);
-+ TEST_COMPARE (outbuf - out, 2);
-+ TEST_COMPARE (out[0] & 0xff, 0xc3);
-+ TEST_COMPARE (out[1] & 0xff, 0xa6);
-+
-+ /* Return to the initial shift state, producing the pending
-+ character. */
-+ outbuf = out;
-+ outleft = sizeof (out);
-+ TEST_COMPARE (iconv (c, &inbuf, &inleft, &outbuf, &outleft), 0);
-+ TEST_COMPARE (inleft, 0);
-+ TEST_COMPARE (inbuf - in, strlen (in));
-+ TEST_COMPARE (outleft, sizeof (out) - 2);
-+ TEST_COMPARE (outbuf - out, 2);
-+ TEST_COMPARE (out[0] & 0xff, 0xcc);
-+ TEST_COMPARE (out[1] & 0xff, 0x80);
-+
-+ /* Nothing should be flushed the second time. */
-+ outbuf = out;
-+ outleft = sizeof (out);
-+ TEST_COMPARE (iconv (c, NULL, 0, &outbuf, &outleft), 0);
-+ TEST_COMPARE (outleft, sizeof (out));
-+ TEST_COMPARE (outbuf - out, 0);
-+ TEST_COMPARE (out[0] & 0xff, 0xcc);
-+ TEST_COMPARE (out[1] & 0xff, 0x80);
-+
-+ TEST_COMPARE (iconv_close (c), 0);
-+}
-+
-+/* Use an explicit flush to return to the initial state. */
-+static void
-+with_flush (void)
-+{
-+ iconv_t c = iconv_open ("UTF-8", "ISO-2022-JP-3");
-+ TEST_VERIFY_EXIT (c != (iconv_t) -1);
-+
-+ char in[] = "\e$(O+D";
-+ char *inbuf = in;
-+ size_t inleft = strlen (in);
-+ char out[3]; /* Space for one output character. */
-+ char *outbuf;
-+ size_t outleft;
-+
-+ outbuf = out;
-+ outleft = sizeof (out);
-+ TEST_COMPARE (iconv (c, &inbuf, &inleft, &outbuf, &outleft), (size_t) -1);
-+ TEST_COMPARE (errno, E2BIG);
-+ TEST_COMPARE (inleft, 0);
-+ TEST_COMPARE (inbuf - in, strlen (in));
-+ TEST_COMPARE (outleft, sizeof (out) - 2);
-+ TEST_COMPARE (outbuf - out, 2);
-+ TEST_COMPARE (out[0] & 0xff, 0xc3);
-+ TEST_COMPARE (out[1] & 0xff, 0xa6);
-+
-+ /* Flush the pending character. */
-+ outbuf = out;
-+ outleft = sizeof (out);
-+ TEST_COMPARE (iconv (c, NULL, 0, &outbuf, &outleft), 0);
-+ TEST_COMPARE (outleft, sizeof (out) - 2);
-+ TEST_COMPARE (outbuf - out, 2);
-+ TEST_COMPARE (out[0] & 0xff, 0xcc);
-+ TEST_COMPARE (out[1] & 0xff, 0x80);
-+
-+ /* Nothing should be flushed the second time. */
-+ outbuf = out;
-+ outleft = sizeof (out);
-+ TEST_COMPARE (iconv (c, NULL, 0, &outbuf, &outleft), 0);
-+ TEST_COMPARE (outleft, sizeof (out));
-+ TEST_COMPARE (outbuf - out, 0);
-+ TEST_COMPARE (out[0] & 0xff, 0xcc);
-+ TEST_COMPARE (out[1] & 0xff, 0x80);
-+
-+ TEST_COMPARE (iconv_close (c), 0);
-+}
-+
-+static int
-+do_test (void)
-+{
-+ with_escape_sequence ();
-+ with_flush ();
-+ return 0;
-+}
-+
-+#include <support/test-driver.c>
-diff --git a/iconvdata/iso-2022-jp-3.c b/iconvdata/iso-2022-jp-3.c
-index 3eaa847ad9..c8ba88cdc9 100644
---- a/iconvdata/iso-2022-jp-3.c
-+++ b/iconvdata/iso-2022-jp-3.c
-@@ -67,23 +67,34 @@ enum
- CURRENT_SEL_MASK = 7 << 3
- };
-
--/* During UCS-4 to ISO-2022-JP-3 conversion, the COUNT element of the state
-- also contains the last two bytes to be output, shifted by 6 bits, and a
-- one-bit indicator whether they must be preceded by the shift sequence,
-- in bit 22. */
-+/* During UCS-4 to ISO-2022-JP-3 conversion, the COUNT element of the
-+ state also contains the last two bytes to be output, shifted by 6
-+ bits, and a one-bit indicator whether they must be preceded by the
-+ shift sequence, in bit 22. During ISO-2022-JP-3 to UCS-4
-+ conversion, COUNT may also contain a non-zero pending wide
-+ character, shifted by six bits. This happens for certain inputs in
-+ JISX0213_1_2004_set and JISX0213_2_set if the second wide character
-+ in a combining sequence cannot be written because the buffer is
-+ full. */
-
- /* Since this is a stateful encoding we have to provide code which resets
- the output state to the initial state. This has to be done during the
- flushing. */
- #define EMIT_SHIFT_TO_INIT \
-- if ((data->__statep->__count & ~7) != ASCII_set) \
-+ if (data->__statep->__count != ASCII_set) \
- { \
- if (FROM_DIRECTION) \
- { \
-- /* It's easy, we don't have to emit anything, we just reset the \
-- state for the input. */ \
-- data->__statep->__count &= 7; \
-- data->__statep->__count |= ASCII_set; \
-+ if (__glibc_likely (outbuf + 4 <= outend)) \
-+ { \
-+ /* Write out the last character. */ \
-+ *((uint32_t *) outbuf) = data->__statep->__count >> 6; \
-+ outbuf += sizeof (uint32_t); \
-+ data->__statep->__count = ASCII_set; \
-+ } \
-+ else \
-+ /* We don't have enough room in the output buffer. */ \
-+ status = __GCONV_FULL_OUTPUT; \
- } \
- else \
- { \
-@@ -151,7 +162,21 @@ enum
- #define LOOPFCT FROM_LOOP
- #define BODY \
- { \
-- uint32_t ch = *inptr; \
-+ uint32_t ch; \
-+ \
-+ /* Output any pending character. */ \
-+ ch = set >> 6; \
-+ if (__glibc_unlikely (ch != 0)) \
-+ { \
-+ put32 (outptr, ch); \
-+ outptr += 4; \
-+ /* Remove the pending character, but preserve state bits. */ \
-+ set &= (1 << 6) - 1; \
-+ continue; \
-+ } \
-+ \
-+ /* Otherwise read the next input byte. */ \
-+ ch = *inptr; \
- \
- /* Recognize escape sequences. */ \
- if (__glibc_unlikely (ch == ESC)) \
-@@ -297,21 +322,25 @@ enum
- uint32_t u1 = __jisx0213_to_ucs_combining[ch - 1][0]; \
- uint32_t u2 = __jisx0213_to_ucs_combining[ch - 1][1]; \
- \
-+ inptr += 2; \
-+ \
-+ put32 (outptr, u1); \
-+ outptr += 4; \
-+ \
- /* See whether we have room for two characters. */ \
-- if (outptr + 8 <= outend) \
-+ if (outptr + 4 <= outend) \
- { \
-- inptr += 2; \
-- put32 (outptr, u1); \
-- outptr += 4; \
- put32 (outptr, u2); \
- outptr += 4; \
- continue; \
- } \
-- else \
-- { \
-- result = __GCONV_FULL_OUTPUT; \
-- break; \
-- } \
-+ \
-+ /* Otherwise store only the first character now, and \
-+ put the second one into the queue. */ \
-+ set |= u2 << 6; \
-+ /* Tell the caller why we terminate the loop. */ \
-+ result = __GCONV_FULL_OUTPUT; \
-+ break; \
- } \
- \
- inptr += 2; \
---
-2.27.0
-
diff --git a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0035-Fix-build-error.patch b/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0035-Fix-build-error.patch
new file mode 100644
index 000000000..6cf56c64f
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc/0035-Fix-build-error.patch
@@ -0,0 +1,26 @@
+From 2a246ee8129e7cd4660fe76f7ab656191be7bc5e Mon Sep 17 00:00:00 2001
+From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+Date: Thu, 11 Mar 2021 11:23:00 -0800
+Subject: [PATCH] Fix build error
+
+Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+---
+ stdlib/canonicalize.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/stdlib/canonicalize.c b/stdlib/canonicalize.c
+index 698f9ede2557..cac1f73d7471 100644
+--- a/stdlib/canonicalize.c
++++ b/stdlib/canonicalize.c
+@@ -198,7 +198,7 @@ static char *
+ realpath_stk (const char *name, char *resolved,
+ struct scratch_buffer *rname_buf)
+ {
+- char *dest;
++ char *dest = NULL;
+ char const *start;
+ char const *end;
+ int num_links = 0;
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc_%.bbappend b/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc_%.bbappend
index e0f4c3080..6ee6db4fa 100644
--- a/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-core/glibc/glibc_%.bbappend
@@ -1,6 +1,6 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
-SRC_URI += "file://0032-Fix-buffer-overrun-in-EUC-KR-conversion-module-BZ-24973.patch \
- file://0033-Fix-assertion-failure-in-ISO-20220JP-3-module-bug-27256.patch \
- file://0034-Fix-double-free-in-netgroupcache-BZ-27462.patch \
- "
+SRC_URI += " \
+ file://0034-Fix-double-free-in-netgroupcache-BZ-27462.patch \
+ file://0035-Fix-build-error.patch \
+ "
diff --git a/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_%.bbappend b/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_%.bbappend
index a5b5ee429..eec234e96 100644
--- a/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_%.bbappend
@@ -1,4 +1,4 @@
SRC_URI = "git://github.com/openbmc/host-error-monitor"
-SRCREV = "c90570ab1ad57ac824edf7b5d0f8a89afbcf0c09"
+SRCREV = "4a6e45c4c2f38bc64afe5faac05ea82b3adb8d93"
EXTRA_OECMAKE = "-DYOCTO=1"
diff --git a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp_git.bb b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp_git.bb
index f88f9957f..18ab8cb9f 100644
--- a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp_git.bb
@@ -2,7 +2,7 @@ SUMMARY = "libmctp"
DESCRIPTION = "Implementation of MCTP (DTMF DSP0236)"
SRC_URI = "git://github.com/openbmc/libmctp.git"
-SRCREV = "192752301b9d98b8699e88ede61d75e96eaed4bb"
+SRCREV = "e889b19f4b349cd5c4ff186ff3c3b604c8f9c7b6"
PV = "0.1+git${SRCPV}"
diff --git a/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem_%.bbappend b/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem_%.bbappend
index 6c25b3e0e..4650ec29b 100644
--- a/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-core/ipmi/intel-ipmi-oem_%.bbappend
@@ -2,4 +2,4 @@ EXTRA_OECMAKE += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', '-DINTEL_PF
EXTRA_OECMAKE += "${@bb.utils.contains('EXTRA_IMAGE_FEATURES', 'validation-unsecure', '-DBMC_VALIDATION_UNSECURE_FEATURE=ON', '', d)}"
EXTRA_OECMAKE += "-DUSING_ENTITY_MANAGER_DECORATORS=OFF"
SRC_URI = "git://github.com/openbmc/intel-ipmi-oem.git"
-SRCREV = "84efff0c639ed24e3b47394e8c38d3aba75b1a41"
+SRCREV = "06aa21ab75cecce354b2a17e05d053c6f61d6a29"
diff --git a/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_%.bbappend b/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_%.bbappend
index b99d3948b..3e201e799 100644
--- a/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_%.bbappend
@@ -1,3 +1,3 @@
# Enable downstream autobump
SRC_URI = "git://github.com/openbmc/libpeci"
-SRCREV = "adf056af63af67dff75065be810ba286bcea6e3a"
+SRCREV = "8fc53d7cef0dd7ac405b5d7d91a368f376cdb508"
diff --git a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend
index 5ca73f0d8..7e79ac14b 100644
--- a/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-kernel/linux/linux-aspeed_%.bbappend
@@ -4,7 +4,7 @@ KBRANCH = "dev-5.10-intel"
KSRC = "git://github.com/Intel-BMC/linux;protocol=ssh;branch=${KBRANCH}"
# Include this as a comment only for downstream auto-bump
# SRC_URI = "git://github.com/Intel-BMC/linux;protocol=ssh;branch=dev-5.10-intel"
-SRCREV="c306c95688f3e2d9ee9b5270eff4bfb3e6e34b8a"
+SRCREV="e51019aa5cea44aa55b922261df9c7c7a4e5bcbc"
do_compile_prepend(){
# device tree compiler flags
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 4cc641eec..1aa090f54 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,7 +1,7 @@
# Keep this as a comment to enable the auto-bump script without
# stomping on SRC_URI from previous .bbappend files
#SRC_URI = "git://github.com/openbmc/phosphor-dbus-interfaces.git"
-SRCREV = "d01d1f84191894ad605a9ba5b546280bcfc64f7d"
+SRCREV = "ae956ad9efd2be24c5439a4ef6498fb5c8383719"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0017-Fix-build-error.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0017-Fix-build-error.patch
new file mode 100644
index 000000000..d21dbd63c
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/flash/phosphor-software-manager/0017-Fix-build-error.patch
@@ -0,0 +1,34 @@
+From 1f3531eff8a05bb5375dea89c1ca9292f69863b0 Mon Sep 17 00:00:00 2001
+From: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+Date: Thu, 11 Mar 2021 11:42:39 -0800
+Subject: [PATCH] Fix build error
+
+Signed-off-by: Jae Hyun Yoo <jae.hyun.yoo@intel.com>
+---
+ pfr_image_manager.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/pfr_image_manager.cpp b/pfr_image_manager.cpp
+index f844b8e79565..55ad21f8a3d4 100644
+--- a/pfr_image_manager.cpp
++++ b/pfr_image_manager.cpp
+@@ -333,6 +333,7 @@ int Manager::processImage(const std::string& imgFilePath)
+
+ int retry = 3;
+ std::string ver;
++ std::string extVer;
+ std::string purposeString;
+
+ if (0 != verifyImage(imgFilePath, ver, purposeString))
+@@ -398,7 +399,7 @@ int Manager::processImage(const std::string& imgFilePath)
+ std::string objPath = std::string{SOFTWARE_OBJPATH} + '/' + id;
+
+ auto versionPtr = std::make_unique<Version>(
+- bus, objPath, ver, purpose, imageDirPath.string(),
++ bus, objPath, ver, purpose, extVer, imageDirPath.string(),
+ std::bind(&Manager::erase, this, std::placeholders::_1));
+ versionPtr->deleteObject =
+ std::make_unique<phosphor::software::manager::Delete>(bus, objPath,
+--
+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 e1c72d161..c71beebad 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,22 +5,25 @@ SYSTEMD_SERVICE_${PN}-updater += "fwupd@.service"
EXTRA_OEMESON += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', '-Dpfr-update=enabled', '', d)}"
-SRC_URI += "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://0009-Add-ApplyOptions-D-bus-property-under-Software.patch \
- file://0011-Fix-for-RedudancyPriority-in-item_updater.patch \
- file://0013-remove-image-file-on-pre-script-failures.patch \
- "
+SRC_URI += " \
+ 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://0009-Add-ApplyOptions-D-bus-property-under-Software.patch \
+ file://0011-Fix-for-RedudancyPriority-in-item_updater.patch \
+ file://0013-remove-image-file-on-pre-script-failures.patch \
+ "
-SRC_URI_PFR = "file://0007-PFR-images-support.patch \
- file://0008-PFR-image-HASH-verification.patch \
- file://0010-Add-error-reporting-to-pfr_image_manager.patch \
- file://0014-PFR-image-verification.patch \
- file://0016-Process-PLDM-image-type.patch \
- "
+SRC_URI_PFR = " \
+ file://0007-PFR-images-support.patch \
+ file://0008-PFR-image-HASH-verification.patch \
+ file://0010-Add-error-reporting-to-pfr_image_manager.patch \
+ file://0014-PFR-image-verification.patch \
+ file://0016-Process-PLDM-image-type.patch \
+ file://0017-Fix-build-error.patch \
+ "
SRC_URI += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', SRC_URI_PFR, '', d)}"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/host/phosphor-host-postd_git.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/host/phosphor-host-postd_git.bbappend
index 08d867de4..ed48da4c0 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/host/phosphor-host-postd_git.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/host/phosphor-host-postd_git.bbappend
@@ -1 +1,4 @@
DEPENDS += " gtest"
+
+#SRC_URI = "git://github.com/openbmc/phosphor-host-postd.git"
+SRCREV = "ba5258f7158e8a0e61043290aff0873358509158"
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 4c00421a9..9b76a8fa4 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 = "07bb095158b39cedb49dae0972e489a6a2776faf"
+SRCREV = "de7dd5ce3133a0201e149b6fdf3d3458fb7f06a5"
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 61d008c46..de34f59a9 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 = "f5246c429d728ee1b6558692b72ef1960db68a7c"
+SRCREV = "f1532e4b19ff198d20782adf5fb9dcce36eea995"
S = "${WORKDIR}/git"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libpldm-intel_git.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libpldm-intel_git.bb
index d72093b8b..1b4be8136 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libpldm-intel_git.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/libpldm-intel_git.bb
@@ -2,7 +2,7 @@ SUMMARY = "libpldm_intel"
DESCRIPTION = "Provides encode/decode APIs for PLDM specifications"
SRC_URI = "git://github.com/Intel-BMC/pmci.git;protocol=ssh"
-SRCREV = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git/libpldm_intel"
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 291a18375..02921bae6 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 = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git/mctp_emulator"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-wrapper.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-wrapper.bb
index a56db5829..4fdd3b0d6 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-wrapper.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctp-wrapper.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 = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git/mctp_wrapper"
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 226a3a44f..a48a45513 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://${PN}/LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
SRC_URI = "git://github.com/Intel-BMC/pmci.git;protocol=ssh"
-SRCREV = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpwplus.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpwplus.bb
index c9a44d1ad..837560d78 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpwplus.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/mctpwplus.bb
@@ -5,7 +5,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=615045c30a05cde5c0e924854d43c327"
SRC_URI = "git://github.com/Intel-BMC/pmci.git;protocol=ssh"
-SRCREV = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git/mctpwplus"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/nvmemi-daemon.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/nvmemi-daemon.bb
new file mode 100644
index 000000000..510535363
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/nvmemi-daemon.bb
@@ -0,0 +1,17 @@
+SUMMARY = "NVMe MI Daemon"
+DESCRIPTION = "Implementation of NVMe MI daemon"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
+
+SRC_URI = "git://github.com/Intel-BMC/nvme-mi.git;protocol=ssh;nobranch=1"
+SRCREV = "23fad1d6ffd8ccd16b1369b96734a9701fc2802a"
+S = "${WORKDIR}/git"
+PV = "1.0+git${SRCPV}"
+
+inherit meson systemd
+
+SYSTEMD_SERVICE_${PN} += "xyz.openbmc_project.nvme-mi.service"
+DEPENDS = "boost sdbusplus systemd phosphor-logging mctpwplus googletest"
+
+EXTRA_OEMESON = "-Dyocto_dep='enabled' -Dtests='enabled'"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pldmd.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pldmd.bb
index 0167014b7..a561bfa23 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pldmd.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pldmd.bb
@@ -5,7 +5,7 @@ LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
SRC_URI += "git://github.com/Intel-BMC/pmci.git;protocol=ssh"
-SRCREV = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git/pldmd"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pmci-launcher.bb b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pmci-launcher.bb
index 09a3f9284..02e4c5ad8 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pmci-launcher.bb
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/pmci/pmci-launcher.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 = "85f6b517b0c519b88b7533f042159e9a30fd3048"
+SRCREV = "86d4e9d3f2214c825ed76b38865abc47d2c7a11f"
S = "${WORKDIR}/git/pmci_launcher"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-post-code-manager_git.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-post-code-manager_git.bbappend
new file mode 100644
index 000000000..f767cda73
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/state/phosphor-post-code-manager_git.bbappend
@@ -0,0 +1,2 @@
+#SRC_URI = "git://github.com/openbmc/phosphor-post-code-manager.git"
+SRCREV = "84a4c19c48ad28b537cfcce15df39e841e1ed565"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/telemetry/telemetry_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/telemetry/telemetry_%.bbappend
index cadacc235..1c8de604c 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/telemetry/telemetry_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/telemetry/telemetry_%.bbappend
@@ -1,5 +1,5 @@
SRC_URI = "git://github.com/openbmc/telemetry.git"
-SRCREV = "92cfff44d5790b7e59930e8a6acf15751a3cd891"
+SRCREV = "9f9ff90a39219ff3a2f1179f74fc9a6dc857e5ab"
EXTRA_OEMESON += " -Dmax-reports=5"
EXTRA_OEMESON += " -Dmax-reading-parameters=200"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch
index 360ba35f0..d137f6971 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/watchdog/phosphor-watchdog/0001-Customize-phosphor-watchdog-for-Intel-platforms.patch
@@ -1,4 +1,4 @@
-From 82f31d1e6096acd4f223f0b0fe0d814c27450022 Mon Sep 17 00:00:00 2001
+From 0e426ce8bcde3b6fb131405ef265250a96aa7e0a Mon Sep 17 00:00:00 2001
From: James Feist <james.feist@linux.intel.com>
Date: Mon, 17 Jun 2019 12:00:58 -0700
Subject: [PATCH] Customize phosphor-watchdog for Intel platforms
@@ -10,18 +10,20 @@ required for compatibility with Intel platforms.
2. Use dbus properties for power control insted of service files
3. Use host status to enable/disable watchdog
4. Set preTimeoutInterruptOccurFlag
+ 5. Assign watchdog cause for correct reset cause reporting
Signed-off-by: James Feist <james.feist@linux.intel.com>
Signed-off-by: Ren Yu <yux.ren@intel.com>
Signed-off-by: Yong Li <yong.b.li@linux.intel.com>
Signed-off-by: Jason M. Bills <jason.m.bills@linux.intel.com>
+Signed-off-by: Johnathan Mantey <johnathanx.mantey@intel.com>
---
- watchdog.cpp | 213 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
- watchdog.hpp | 23 ++++++-
- 2 files changed, 226 insertions(+), 10 deletions(-)
+ watchdog.cpp | 212 ++++++++++++++++++++++++++++++++++++++++++++++++---
+ watchdog.hpp | 23 +++++-
+ 2 files changed, 224 insertions(+), 11 deletions(-)
diff --git a/watchdog.cpp b/watchdog.cpp
-index 9090760..079d88e 100644
+index 9090760..2685401 100644
--- a/watchdog.cpp
+++ b/watchdog.cpp
@@ -1,11 +1,14 @@
@@ -225,7 +227,7 @@ index 9090760..079d88e 100644
auto target = actionTargetMap.find(action);
if (target == actionTargetMap.end())
-@@ -128,10 +287,23 @@ void Watchdog::timeOutHandler()
+@@ -128,12 +287,45 @@ void Watchdog::timeOutHandler()
try
{
@@ -236,53 +238,46 @@ index 9090760..079d88e 100644
+ sdbusplus::message::message method;
+ if (action == Watchdog::Action::HardReset)
+ {
++ auto method = bus.new_method_call(
++ restart::busName, restart::path,
++ "org.freedesktop.DBus.Properties", "Set");
++ method.append(
++ restart::interface, restart::property,
++ std::variant<std::string>("xyz.openbmc_project.State.Host."
++ "RestartCause.WatchdogTimer"));
++ bus.call_noreply(method);
+
+- bus.call_noreply(method);
+ method = bus.new_method_call(host::busName, host::path,
+ "org.freedesktop.DBus.Properties",
+ "Set");
+ method.append(host::interface, host::request,
+ std::variant<std::string>(target->second));
++ bus.call_noreply(method);
+ }
+ else
+ {
++ if (action == Watchdog::Action::PowerCycle)
++ {
++ auto method = bus.new_method_call(
++ restart::busName, restart::path,
++ "org.freedesktop.DBus.Properties", "Set");
++ method.append(restart::interface, restart::property,
++ std::variant<std::string>(
++ "xyz.openbmc_project.State.Host."
++ "RestartCause.WatchdogTimer"));
++ bus.call_noreply(method);
++ }
+ method = bus.new_method_call(chassis::busName, chassis::path,
+ "org.freedesktop.DBus.Properties",
+ "Set");
+ method.append(chassis::interface, chassis::request,
+ std::variant<std::string>(target->second));
++ bus.call_noreply(method);
+ }
-
- bus.call_noreply(method);
}
-@@ -142,6 +314,29 @@ void Watchdog::timeOutHandler()
- entry("ERROR=%s", e.what()));
- commit<InternalFailure>();
- }
-+
-+ // set restart cause for watchdog HardReset & PowerCycle actions
-+ if ((action == Watchdog::Action::HardReset) ||
-+ (action == Watchdog::Action::PowerCycle))
-+ {
-+ try
-+ {
-+ auto method = bus.new_method_call(
-+ restart::busName, restart::path,
-+ "org.freedesktop.DBus.Properties", "Set");
-+ method.append(
-+ restart::interface, restart::property,
-+ std::variant<std::string>("xyz.openbmc_project.State.Host."
-+ "RestartCause.WatchdogTimer"));
-+ bus.call(method);
-+ }
-+ catch (sdbusplus::exception_t& e)
-+ {
-+ log<level::ERR>("Failed to set HostRestartCause property",
-+ entry("ERROR=%s", e.what()));
-+ commit<InternalFailure>();
-+ }
-+ }
- }
-
- tryFallbackOrDisable();
+ catch (const SdBusError& e)
+ {
diff --git a/watchdog.hpp b/watchdog.hpp
index 7de9bb3..b004b7a 100644
--- a/watchdog.hpp
@@ -332,5 +327,5 @@ index 7de9bb3..b004b7a 100644
void timeOutHandler();
--
-2.7.4
+2.29.2
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 e141cdb46..5ef57447d 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 = "6313c9df615fd85a8617c46444f964b972abdebd"
+SRCREV = "f0e37253951a4a32e4929c660232e17961f97bb8"
diff --git a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/webui-vue_%.bbappend b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/webui-vue_%.bbappend
index 7dfdc5525..87ad21d71 100644
--- a/meta-openbmc-mods/meta-common/recipes-phosphor/webui/webui-vue_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-phosphor/webui/webui-vue_%.bbappend
@@ -1,6 +1,6 @@
# Enable downstream autobump
SRC_URI = "git://github.com/openbmc/webui-vue.git"
-SRCREV = "7006806d21cf8d13666524a8124b8395f2f1e156"
+SRCREV = "b0fadef1f96df99ff5eb0637527f04bc793c8d6e"
do_compile_prepend() {
cp -vf ${S}/.env.intel ${S}/.env
diff --git a/meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++/0001-enable-cross-compilation-and-pkgconfig.patch b/meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++/0001-enable-cross-compilation-and-pkgconfig.patch
new file mode 100644
index 000000000..7355ad5f1
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++/0001-enable-cross-compilation-and-pkgconfig.patch
@@ -0,0 +1,71 @@
+diff --git a/lang/c++/CMakeLists.txt b/lang/c++/CMakeLists.txt
+index 28a272b15..06ec38382 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -25,6 +25,7 @@ if (NOT DEFINED CMAKE_CXX_STANDARD)
+ endif()
+
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
++set(PKGCONFIG_SUPPORT ON)
+
+ cmake_policy (SET CMP0042 NEW)
+
+@@ -107,6 +108,12 @@ set (AVRO_SOURCE_FILES
+ impl/Resolver.cc impl/Validator.cc
+ )
+
++if (PKGCONFIG_SUPPORT)
++ install(FILES "avrocpp.pc"
++ DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig")
++ message("${CMAKE_INSTALL_LIBDIR}/pkgconfig")
++endif()
++
+ add_library (avrocpp SHARED ${AVRO_SOURCE_FILES})
+
+ set_property (TARGET avrocpp
+@@ -141,6 +148,7 @@ macro (gen file ns)
+ add_custom_target (${file}_hh DEPENDS ${file}.hh)
+ endmacro (gen)
+
++if (NOT DEFINED YOCTO_BUILD)
+ gen (empty_record empty)
+ gen (bigrecord testgen)
+ gen (bigrecord_r testgen_r)
+@@ -196,13 +204,16 @@ include (InstallRequiredSystemLibraries)
+ set (CPACK_PACKAGE_FILE_NAME "avrocpp-${AVRO_VERSION_MAJOR}")
+
+ include (CPack)
++endif ()
+
+ install (TARGETS avrocpp avrocpp_s
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ RUNTIME DESTINATION lib)
+
++if (NOT DEFINED YOCTO_BUILD)
+ install (TARGETS avrogencpp RUNTIME DESTINATION bin)
++endif ()
+
+ install (DIRECTORY api/ DESTINATION include/avro
+ FILES_MATCHING PATTERN *.hh)
+@@ -212,3 +223,4 @@ if (NOT CMAKE_BUILD_TYPE)
+ "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel."
+ FORCE)
+ endif (NOT CMAKE_BUILD_TYPE)
++
+diff --git a/lang/c++/avrocpp.pc b/lang/c++/avrocpp.pc
+new file mode 100644
+index 000000000..471f1863c
+--- /dev/null
++++ b/avrocpp.pc
+@@ -0,0 +1,10 @@
++prefix=/usr
++libdir=${prefix}/lib
++includedir=${prefix}/include/avro
++
++Name: avrocpp
++Description: C++ bindings for Apache avro
++Version: 1.0.0
++Libs: -L${libdir} -lavrocpp
++Cflags: -I${includedir}
++
diff --git a/meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++_git.bb b/meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++_git.bb
new file mode 100644
index 000000000..af8aad522
--- /dev/null
+++ b/meta-openbmc-mods/meta-common/recipes-support/avro/avro-c++_git.bb
@@ -0,0 +1,22 @@
+SUMMARY = "Apache Avro data serialization system (C++ bindings)"
+HOMEPAGE = "http://apr.apache.org/"
+SECTION = "libs"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=43abf34d8b9908494f83c55d213a7f89"
+
+DEPENDS = "boost"
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
+
+BRANCH = "master"
+SRCREV = "f4e2ebaadaf6e6d99b59882233f8024243adb55d"
+SRC_URI = "git://github.com/apache/avro;branch=${BRANCH} \
+ file://0001-enable-cross-compilation-and-pkgconfig.patch \
+ "
+
+S = "${WORKDIR}/git/lang/c++"
+
+EXTRA_OECMAKE = "-DSNAPPY_INCLUDE_DIR='' -DYOCTO_BUILD=ON -DCMAKE_BUILD_TYPE=MinSizeRel"
+inherit cmake
+
diff --git a/meta-openbmc-mods/meta-common/recipes-support/boost/boost_%.bbappend b/meta-openbmc-mods/meta-common/recipes-support/boost/boost_%.bbappend
index 780a12e24..c24249bcf 100644
--- a/meta-openbmc-mods/meta-common/recipes-support/boost/boost_%.bbappend
+++ b/meta-openbmc-mods/meta-common/recipes-support/boost/boost_%.bbappend
@@ -2,6 +2,6 @@ FILES_${PN} += "/usr/lib/libboost_chrono.so* \
/usr/lib/libboost_context.so* \
/usr/lib/libboost_thread.so*"
-BOOST_LIBS_intel += "iostreams coroutine"
+BOOST_LIBS_intel += "iostreams coroutine filesystem program_options regex system"
FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Configure-host-error-monitors-for-meta-wht.patch b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Configure-host-error-monitors-for-meta-wht.patch
new file mode 100644
index 000000000..17f16cce5
--- /dev/null
+++ b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Configure-host-error-monitors-for-meta-wht.patch
@@ -0,0 +1,194 @@
+From 1b2df626b20aa14c0de7f46915758d10394d01b4 Mon Sep 17 00:00:00 2001
+From: "Jason M. Bills" <jason.m.bills@intel.com>
+Date: Tue, 15 Dec 2020 10:05:31 -0800
+Subject: [PATCH] Configure host error monitors for meta-wht
+
+The new host error monitor architecture allows the list of error
+monitors to be customized through a platform-specific patch file.
+
+This patch configures the host error monitors for meta-wht.
+
+Change-Id: I7070a3409b1471d7f9c93eca3e36b477f484e5d7
+Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
+---
+ include/error_monitors.hpp | 137 ++++++++++++++++++++++++++++++++++---
+ 1 file changed, 129 insertions(+), 8 deletions(-)
+
+diff --git a/include/error_monitors.hpp b/include/error_monitors.hpp
+index 55b8790d..8d1651d3 100644
+--- a/include/error_monitors.hpp
++++ b/include/error_monitors.hpp
+@@ -14,23 +14,88 @@
+ // limitations under the License.
+ */
+ #pragma once
++#include <error_monitors/cpu_mismatch_monitor.hpp>
++#include <error_monitors/cpu_thermtrip_monitor.hpp>
++#include <error_monitors/err2_monitor.hpp>
++#include <error_monitors/err_pin_monitor.hpp>
++#include <error_monitors/ierr_monitor.hpp>
++#include <error_monitors/mem_thermtrip_monitor.hpp>
++#include <error_monitors/pch_thermtrip_monitor.hpp>
++#include <error_monitors/smi_monitor.hpp>
++#include <error_monitors/vr_hot_monitor.hpp>
+ #include <sdbusplus/asio/object_server.hpp>
+-// #include <error_monitors/smi_monitor.hpp>
+
+ #include <memory>
+
+ namespace host_error_monitor::error_monitors
+ {
+ // Error signals to monitor
+-// static std::unique_ptr<host_error_monitor::smi_monitor::SMIMonitor>
+-// smiMonitor;
++static std::unique_ptr<host_error_monitor::smi_monitor::SMIMonitor> smiMonitor;
++static std::unique_ptr<
++ host_error_monitor::cpu_mismatch_monitor::CPUMismatchMonitor>
++ cpu1MismatchMonitor;
++static std::unique_ptr<
++ host_error_monitor::cpu_mismatch_monitor::CPUMismatchMonitor>
++ cpu2MismatchMonitor;
++static std::unique_ptr<host_error_monitor::err_pin_monitor::ErrPinMonitor>
++ err0Monitor;
++static std::unique_ptr<host_error_monitor::err_pin_monitor::ErrPinMonitor>
++ err1Monitor;
++static std::unique_ptr<host_error_monitor::err2_monitor::Err2Monitor>
++ err2Monitor;
++static std::unique_ptr<host_error_monitor::ierr_monitor::IERRMonitor>
++ ierrMonitor;
++static std::unique_ptr<
++ host_error_monitor::cpu_thermtrip_monitor::CPUThermtripMonitor>
++ cpu1ThermtripMonitor;
++static std::unique_ptr<
++ host_error_monitor::cpu_thermtrip_monitor::CPUThermtripMonitor>
++ cpu2ThermtripMonitor;
++static std::unique_ptr<
++ host_error_monitor::mem_thermtrip_monitor::MemThermtripMonitor>
++ mem1ThermtripMonitor;
++static std::unique_ptr<
++ host_error_monitor::mem_thermtrip_monitor::MemThermtripMonitor>
++ mem2ThermtripMonitor;
++static std::unique_ptr<host_error_monitor::vr_hot_monitor::VRHotMonitor>
++ cpu1VRHotMonitor;
++static std::unique_ptr<host_error_monitor::vr_hot_monitor::VRHotMonitor>
++ cpu1MemABCDVRHotMonitor;
++static std::unique_ptr<host_error_monitor::vr_hot_monitor::VRHotMonitor>
++ cpu1MemEFGHVRHotMonitor;
++static std::unique_ptr<host_error_monitor::vr_hot_monitor::VRHotMonitor>
++ cpu2VRHotMonitor;
++static std::unique_ptr<host_error_monitor::vr_hot_monitor::VRHotMonitor>
++ cpu2MemABCDVRHotMonitor;
++static std::unique_ptr<host_error_monitor::vr_hot_monitor::VRHotMonitor>
++ cpu2MemEFGHVRHotMonitor;
++static std::unique_ptr<
++ host_error_monitor::pch_thermtrip_monitor::PCHThermtripMonitor>
++ pchThermtripMonitor;
+
+ // Check if all the signal monitors started successfully
+ bool checkMonitors()
+ {
+ bool ret = true;
+
+- // ret &= smiMonitor->isValid();
++ ret &= smiMonitor->isValid();
++ ret &= cpu1MismatchMonitor->isValid();
++ ret &= cpu2MismatchMonitor->isValid();
++ ret &= err0Monitor->isValid();
++ ret &= err1Monitor->isValid();
++ ret &= err2Monitor->isValid();
++ ret &= ierrMonitor->isValid();
++ ret &= cpu1ThermtripMonitor->isValid();
++ ret &= cpu2ThermtripMonitor->isValid();
++ ret &= mem1ThermtripMonitor->isValid();
++ ret &= mem2ThermtripMonitor->isValid();
++ ret &= cpu1VRHotMonitor->isValid();
++ ret &= cpu1MemABCDVRHotMonitor->isValid();
++ ret &= cpu1MemEFGHVRHotMonitor->isValid();
++ ret &= cpu2VRHotMonitor->isValid();
++ ret &= cpu2MemABCDVRHotMonitor->isValid();
++ ret &= cpu2MemEFGHVRHotMonitor->isValid();
++ ret &= pchThermtripMonitor->isValid();
+
+ return ret;
+ }
+@@ -39,9 +104,59 @@ bool checkMonitors()
+ bool startMonitors(boost::asio::io_service& io,
+ std::shared_ptr<sdbusplus::asio::connection> conn)
+ {
+- // smiMonitor =
+- // std::make_unique<host_error_monitor::smi_monitor::SMIMonitor>(
+- // io, conn, "SMI");
++ smiMonitor = std::make_unique<host_error_monitor::smi_monitor::SMIMonitor>(
++ io, conn, "SMI");
++ cpu1MismatchMonitor = std::make_unique<
++ host_error_monitor::cpu_mismatch_monitor::CPUMismatchMonitor>(
++ io, conn, "CPU1_MISMATCH", 1);
++ cpu2MismatchMonitor = std::make_unique<
++ host_error_monitor::cpu_mismatch_monitor::CPUMismatchMonitor>(
++ io, conn, "CPU2_MISMATCH", 2);
++ err0Monitor =
++ std::make_unique<host_error_monitor::err_pin_monitor::ErrPinMonitor>(
++ io, conn, "CPU_ERR0", 0);
++ err1Monitor =
++ std::make_unique<host_error_monitor::err_pin_monitor::ErrPinMonitor>(
++ io, conn, "CPU_ERR1", 1);
++ err2Monitor =
++ std::make_unique<host_error_monitor::err2_monitor::Err2Monitor>(
++ io, conn, "CPU_ERR2");
++ ierrMonitor =
++ std::make_unique<host_error_monitor::ierr_monitor::IERRMonitor>(
++ io, conn, "CPU_CATERR");
++ cpu1ThermtripMonitor = std::make_unique<
++ host_error_monitor::cpu_thermtrip_monitor::CPUThermtripMonitor>(
++ io, conn, "CPU1_THERMTRIP", 1, "CPU1_FIVR_FAULT");
++ cpu2ThermtripMonitor = std::make_unique<
++ host_error_monitor::cpu_thermtrip_monitor::CPUThermtripMonitor>(
++ io, conn, "CPU2_THERMTRIP", 2, "CPU2_FIVR_FAULT");
++ mem1ThermtripMonitor = std::make_unique<
++ host_error_monitor::mem_thermtrip_monitor::MemThermtripMonitor>(
++ io, conn, "CPU1_MEM_THERM_EVENT", 1);
++ mem2ThermtripMonitor = std::make_unique<
++ host_error_monitor::mem_thermtrip_monitor::MemThermtripMonitor>(
++ io, conn, "CPU2_MEM_THERM_EVENT", 2);
++ cpu1VRHotMonitor =
++ std::make_unique<host_error_monitor::vr_hot_monitor::VRHotMonitor>(
++ io, conn, "CPU1_VRHOT", "CPU 1");
++ cpu1MemABCDVRHotMonitor =
++ std::make_unique<host_error_monitor::vr_hot_monitor::VRHotMonitor>(
++ io, conn, "CPU1_MEM_ABCD_VRHOT", "CPU 1 Memory ABCD");
++ cpu1MemEFGHVRHotMonitor =
++ std::make_unique<host_error_monitor::vr_hot_monitor::VRHotMonitor>(
++ io, conn, "CPU1_MEM_EFGH_VRHOT", "CPU 1 Memory EFGH");
++ cpu2VRHotMonitor =
++ std::make_unique<host_error_monitor::vr_hot_monitor::VRHotMonitor>(
++ io, conn, "CPU2_VRHOT", "CPU 2");
++ cpu2MemABCDVRHotMonitor =
++ std::make_unique<host_error_monitor::vr_hot_monitor::VRHotMonitor>(
++ io, conn, "CPU2_MEM_ABCD_VRHOT", "CPU 2 Memory ABCD");
++ cpu2MemEFGHVRHotMonitor =
++ std::make_unique<host_error_monitor::vr_hot_monitor::VRHotMonitor>(
++ io, conn, "CPU2_MEM_EFGH_VRHOT", "CPU 2 Memory EFGH");
++ pchThermtripMonitor = std::make_unique<
++ host_error_monitor::pch_thermtrip_monitor::PCHThermtripMonitor>(
++ io, conn, "PCH_BMC_THERMTRIP");
+
+ return checkMonitors();
+ }
+@@ -49,7 +164,13 @@ bool startMonitors(boost::asio::io_service& io,
+ // Notify the signal monitors of host on event
+ void sendHostOn()
+ {
+- // smiMonitor->hostOn();
++ smiMonitor->hostOn();
++ cpu1MismatchMonitor->hostOn();
++ cpu2MismatchMonitor->hostOn();
++ err0Monitor->hostOn();
++ err1Monitor->hostOn();
++ err2Monitor->hostOn();
++ ierrMonitor->hostOn();
+ }
+
+ } // namespace host_error_monitor::error_monitors
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Filter-memory-thermtrip-events-based-on-DIMM-status.patch b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Filter-memory-thermtrip-events-based-on-DIMM-status.patch
deleted file mode 100644
index 140724ca9..000000000
--- a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0001-Filter-memory-thermtrip-events-based-on-DIMM-status.patch
+++ /dev/null
@@ -1,169 +0,0 @@
-From c09e608da2f63eed5b73891d5c032b646d8e81eb Mon Sep 17 00:00:00 2001
-From: "Jason M. Bills" <jason.m.bills@intel.com>
-Date: Wed, 22 Jul 2020 14:30:04 -0700
-Subject: [PATCH 1/2] Filter memory thermtrip events based on DIMM status
-
-There is a race-condition on shutdown that makes it difficult to
-differentiate between a normal shutdown and a memory thermtrip
-shutdown. This race-condition will be resolved in the CPLD for
-future platforms but for now it requires a workaround.
-
-This workaround assumes that a memory thermtrip can only occur
-if a DIMM temperature sensor has already reached a critical
-threshold. When memory thermtrip asserts on shutdown, it only
-logs an error if a DIMM is critical; otherwise it is treated
-as a normal shutdown.
-
-Tested:
-Memory thermtrip errors no longer log on each power-off.
-Manually set a DIMM temperature above critical and verified
-that the memory thermtrip event is logged.
-
-Change-Id: I9c38b41db30046499297ee24cc3a2790920b19d3
-Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
----
- src/host_error_monitor.cpp | 81 ++++++++++++++++++++++++++++++++++++--
- 1 file changed, 77 insertions(+), 4 deletions(-)
-
-diff --git a/src/host_error_monitor.cpp b/src/host_error_monitor.cpp
-index d52a5dc6a..77d065fa3 100644
---- a/src/host_error_monitor.cpp
-+++ b/src/host_error_monitor.cpp
-@@ -19,6 +19,7 @@
- #include <boost/asio/io_service.hpp>
- #include <boost/asio/posix/stream_descriptor.hpp>
- #include <boost/asio/steady_timer.hpp>
-+#include <boost/container/flat_set.hpp>
- #include <gpiod.hpp>
- #include <sdbusplus/asio/object_server.hpp>
-
-@@ -38,6 +39,9 @@ static std::shared_ptr<sdbusplus::asio::dbus_interface> associationCATAssert;
-
- static const constexpr char* rootPath = "/xyz/openbmc_project/CallbackManager";
-
-+static boost::container::flat_set<std::string> cpu1CriticalDIMMs;
-+static boost::container::flat_set<std::string> cpu2CriticalDIMMs;
-+
- static bool hostOff = true;
-
- static size_t caterrTimeoutMs = 2000;
-@@ -274,6 +278,67 @@ static void initializeHostState()
- "xyz.openbmc_project.State.Host", "CurrentHostState");
- }
-
-+static std::shared_ptr<sdbusplus::bus::match::match>
-+ startDIMMThresholdEventMonitor()
-+{
-+ return std::make_shared<sdbusplus::bus::match::match>(
-+ *conn,
-+ "type='signal',interface='org.freedesktop.DBus.Properties',member='"
-+ "PropertiesChanged',arg0namespace='xyz.openbmc_project.Sensor."
-+ "Threshold.Critical'",
-+ [](sdbusplus::message::message& msg) {
-+ std::string interfaceName;
-+ boost::container::flat_map<std::string, std::variant<bool>>
-+ propertiesChanged;
-+ try
-+ {
-+ msg.read(interfaceName, propertiesChanged);
-+ }
-+ catch (std::exception& e)
-+ {
-+ std::cerr << "Unable to read threshold event\n";
-+ return;
-+ }
-+ // We only want to check for CriticalAlarmHigh
-+ if (propertiesChanged.begin()->first != "CriticalAlarmHigh")
-+ {
-+ return;
-+ }
-+ const bool* alarm =
-+ std::get_if<bool>(&(propertiesChanged.begin()->second));
-+ if (alarm == nullptr)
-+ {
-+ std::cerr << propertiesChanged.begin()->first
-+ << " property invalid\n";
-+ return;
-+ }
-+
-+ // Get the sensor path and check if it's a DIMM sensor
-+ std::string sensor = msg.get_path();
-+ if (sensor.find("DIMM") == std::string::npos)
-+ {
-+ // Not a DIMM sensor
-+ return;
-+ }
-+
-+ // Determine which CPU the DIMM belongs to
-+ boost::container::flat_set<std::string>& criticalDIMMs =
-+ (sensor.find("CPU1") != std::string::npos) ? cpu1CriticalDIMMs
-+ : cpu2CriticalDIMMs;
-+
-+ if (*alarm)
-+ {
-+ // DIMM crossed a critical threshold, so store it
-+ criticalDIMMs.insert(sensor);
-+ }
-+ else
-+ {
-+ // DIMM is no longer critical, so remove it
-+ criticalDIMMs.erase(sensor);
-+ }
-+ });
-+}
-+
- static std::shared_ptr<sdbusplus::bus::match::match> startHostStateMonitor()
- {
- return std::make_shared<sdbusplus::bus::match::match>(
-@@ -851,7 +916,9 @@ static void cpu1MemtripHandler()
-
- bool cpu1Memtrip =
- gpioLineEvent.event_type == gpiod::line_event::FALLING_EDGE;
-- if (cpu1Memtrip)
-+
-+ // Only log a memory thermtrip if a DIMM is critical
-+ if (cpu1Memtrip && !cpu1CriticalDIMMs.empty())
- {
- memThermTripLog(1);
- }
-@@ -911,7 +978,9 @@ static void cpu2MemtripHandler()
-
- bool cpu2Memtrip =
- gpioLineEvent.event_type == gpiod::line_event::FALLING_EDGE;
-- if (cpu2Memtrip)
-+
-+ // Only log a memory thermtrip if a DIMM is critical
-+ if (cpu2Memtrip && !cpu2CriticalDIMMs.empty())
- {
- memThermTripLog(2);
- }
-@@ -1521,13 +1590,13 @@ static void initializeErrorState()
- }
-
- // Handle CPU1_MEM_THERM_EVENT (CPU1 DIMM Thermal trip) if it's asserted now
-- if (cpu1MemtripLine.get_value() == 0)
-+ if ((cpu1MemtripLine.get_value() == 0) && !cpu1CriticalDIMMs.empty())
- {
- memThermTripLog(1);
- }
-
- // Handle CPU2_MEM_THERM_EVENT (CPU2 DIMM Thermal trip) if it's asserted now
-- if (cpu2MemtripLine.get_value() == 0)
-+ if ((cpu2MemtripLine.get_value() == 0) && !cpu2CriticalDIMMs.empty())
- {
- memThermTripLog(2);
- }
-@@ -1639,6 +1708,10 @@ int main(int argc, char* argv[])
- std::shared_ptr<sdbusplus::bus::match::match> hostStateMonitor =
- host_error_monitor::startHostStateMonitor();
-
-+ // Start tracking critical DIMM status
-+ std::shared_ptr<sdbusplus::bus::match::match> dimmThresholdEventMonitor =
-+ host_error_monitor::startDIMMThresholdEventMonitor();
-+
- // Request CPU1_MISMATCH GPIO events
- if (!host_error_monitor::requestGPIOInput(
- "CPU1_MISMATCH", host_error_monitor::cpu1MismatchLine))
---
-2.17.1
-
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Add-a-workaround-for-spurious-CPU-errors.patch b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Add-a-workaround-for-spurious-CPU-errors.patch
deleted file mode 100644
index 1f1efea69..000000000
--- a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Add-a-workaround-for-spurious-CPU-errors.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-From d7909c8924cf3619bffd52e5f352f175c1cf5033 Mon Sep 17 00:00:00 2001
-From: "Jason M. Bills" <jason.m.bills@intel.com>
-Date: Mon, 17 Aug 2020 15:52:22 -0700
-Subject: [PATCH 2/2] Add a workaround for spurious CPU errors
-
-There is a possible issue where GPIO event interrupts are getting
-missed causing false errors to be logged.
-
-This adds a check that the host is still on and the error is still
-asserted before logging an error.
-
-Tested:
-Confirmed that a spurious SMI event was ignored correctly after
-this change.
-
-Change-Id: Id83d9d67b15dcf9035e6448086b140e5c7dab4fe
-Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
----
- src/host_error_monitor.cpp | 77 ++++++++++++++++++++++++++++++++++++++
- 1 file changed, 77 insertions(+)
-
-diff --git a/src/host_error_monitor.cpp b/src/host_error_monitor.cpp
-index 77d065fa3..d026ab90d 100644
---- a/src/host_error_monitor.cpp
-+++ b/src/host_error_monitor.cpp
-@@ -806,6 +806,18 @@ static void caterrAssertHandler()
- }
- return;
- }
-+ // Confirm that this is a real failure by checking that the host is on
-+ if (hostOff)
-+ {
-+ return;
-+ }
-+ // And that the signal is still asserted
-+ if (caterrLine.get_value() != 0)
-+ {
-+ std::cerr
-+ << "CPU_CATERR not asserted after timeout. Error ignored.\n";
-+ return;
-+ }
- std::cerr << "CATERR asserted for " << std::to_string(caterrTimeoutMs)
- << " ms\n";
- beep(beepCPUIERR);
-@@ -1288,6 +1300,48 @@ static void errXAssertHandler(const int errPin,
- }
- return;
- }
-+ // Confirm that this is a real failure by checking that the host is on
-+ if (hostOff)
-+ {
-+ return;
-+ }
-+ // And that the signal is still asserted
-+ switch (errPin)
-+ {
-+ case 0:
-+ {
-+ if (err0Line.get_value() != 0)
-+ {
-+ std::cerr << "CPU_ERR0 not asserted after timeout. Error "
-+ "ignored.\n";
-+ return;
-+ }
-+ break;
-+ }
-+ case 1:
-+ {
-+ if (err1Line.get_value() != 0)
-+ {
-+ std::cerr << "CPU_ERR1 not asserted after timeout. Error "
-+ "ignored.\n";
-+ return;
-+ }
-+ break;
-+ }
-+ case 2:
-+ {
-+ if (err2Line.get_value() != 0)
-+ {
-+ std::cerr << "CPU_ERR2 not asserted after timeout. Error "
-+ "ignored.\n";
-+ return;
-+ }
-+ break;
-+ }
-+ default:
-+ std::cerr << "Invalid ERR pin asserted\n";
-+ return;
-+ }
- std::cerr << "ERR" << std::to_string(errPin) << " asserted for "
- << std::to_string(errTimeoutMs) << " ms\n";
- if (errPinCPUs.count())
-@@ -1397,6 +1451,18 @@ static void err2AssertHandler()
- }
- return;
- }
-+ // Confirm that this is a real failure by checking that the host is on
-+ if (hostOff)
-+ {
-+ return;
-+ }
-+ // And that the signal is still asserted
-+ if (err2Line.get_value() != 0)
-+ {
-+ std::cerr
-+ << "CPU_ERR2 not asserted after timeout. Error ignored.\n";
-+ return;
-+ }
- conn->async_method_call(
- [](boost::system::error_code ec,
- const std::variant<bool>& property) {
-@@ -1465,6 +1531,17 @@ static void smiAssertHandler()
- }
- return;
- }
-+ // Confirm that this is a real failure by checking that the host is on
-+ if (hostOff)
-+ {
-+ return;
-+ }
-+ // And that the signal is still asserted
-+ if (smiLine.get_value() != 0)
-+ {
-+ std::cerr << "SMI not asserted after timeout. Error ignored.\n";
-+ return;
-+ }
- std::cerr << "SMI asserted for " << std::to_string(smiTimeoutMs)
- << " ms\n";
- smiTimeoutLog();
---
-2.17.1
-
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Filter-memory-thermtrip-events-based-on-DIMM-status.patch b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Filter-memory-thermtrip-events-based-on-DIMM-status.patch
new file mode 100644
index 000000000..cf74a4925
--- /dev/null
+++ b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor/0002-Filter-memory-thermtrip-events-based-on-DIMM-status.patch
@@ -0,0 +1,143 @@
+From b8b701fde79e7a8ca7bf5aa6ca6832524c011fa5 Mon Sep 17 00:00:00 2001
+From: "Jason M. Bills" <jason.m.bills@intel.com>
+Date: Tue, 15 Dec 2020 16:09:00 -0800
+Subject: [PATCH] Filter memory thermtrip events based on DIMM status
+
+There is a race-condition on shutdown that makes it difficult to
+differentiate between a normal shutdown and a memory thermtrip
+shutdown. This race-condition will be resolved in the CPLD for
+future platforms but for now it requires a workaround.
+
+This workaround assumes that a memory thermtrip can only occur
+if a DIMM temperature sensor has already reached a critical
+threshold. When memory thermtrip asserts on shutdown, it only
+logs an error if a DIMM is critical; otherwise it is treated
+as a normal shutdown.
+
+Tested:
+Memory thermtrip errors no longer log on each power-off.
+Manually set a DIMM temperature above critical and verified
+that the memory thermtrip event is logged.
+
+Change-Id: I9d8cf9b1de688e27babb8004b41f662242c78b3c
+Signed-off-by: Jason M. Bills <jason.m.bills@intel.com>
+---
+ .../error_monitors/mem_thermtrip_monitor.hpp | 81 +++++++++++++++++++
+ 1 file changed, 81 insertions(+)
+
+diff --git a/include/error_monitors/mem_thermtrip_monitor.hpp b/include/error_monitors/mem_thermtrip_monitor.hpp
+index d3dff1d3b..0a3f2fc22 100644
+--- a/include/error_monitors/mem_thermtrip_monitor.hpp
++++ b/include/error_monitors/mem_thermtrip_monitor.hpp
+@@ -14,6 +14,7 @@
+ // limitations under the License.
+ */
+ #pragma once
++#include <boost/container/flat_set.hpp>
+ #include <error_monitors/base_gpio_monitor.hpp>
+ #include <host_error_monitor.hpp>
+ #include <sdbusplus/asio/object_server.hpp>
+@@ -28,6 +29,72 @@ class MemThermtripMonitor :
+ host_error_monitor::base_gpio_monitor::AssertValue::lowAssert;
+ size_t cpuNum;
+
++ std::shared_ptr<sdbusplus::bus::match::match> dimmThresholdEventMonitor;
++ boost::container::flat_set<std::string> criticalDIMMs;
++
++ std::shared_ptr<sdbusplus::bus::match::match>
++ startDIMMThresholdEventMonitor()
++ {
++ return std::make_shared<sdbusplus::bus::match::match>(
++ *conn,
++ "type='signal',interface='org.freedesktop.DBus.Properties',member='"
++ "PropertiesChanged',arg0namespace='xyz.openbmc_project.Sensor."
++ "Threshold.Critical'",
++ [this](sdbusplus::message::message& msg) {
++ std::string interfaceName;
++ boost::container::flat_map<std::string, std::variant<bool>>
++ propertiesChanged;
++ try
++ {
++ msg.read(interfaceName, propertiesChanged);
++ }
++ catch (std::exception& e)
++ {
++ std::cerr << "Unable to read threshold event\n";
++ return;
++ }
++ // We only want to check for CriticalAlarmHigh
++ if (propertiesChanged.begin()->first != "CriticalAlarmHigh")
++ {
++ return;
++ }
++ const bool* alarm =
++ std::get_if<bool>(&(propertiesChanged.begin()->second));
++ if (alarm == nullptr)
++ {
++ std::cerr << propertiesChanged.begin()->first
++ << " property invalid\n";
++ return;
++ }
++
++ // Get the sensor path and check if it's a DIMM sensor
++ std::string sensor = msg.get_path();
++ if (sensor.find("DIMM") == std::string::npos)
++ {
++ // Not a DIMM sensor
++ return;
++ }
++
++ // Check if the DIMM belongs to this CPU
++ if (sensor.find("CPU" + std::to_string(cpuNum)) ==
++ std::string::npos)
++ {
++ return;
++ }
++
++ if (*alarm)
++ {
++ // DIMM crossed a critical threshold, so store it
++ criticalDIMMs.insert(sensor);
++ }
++ else
++ {
++ // DIMM is no longer critical, so remove it
++ criticalDIMMs.erase(sensor);
++ }
++ });
++ }
++
+ void logEvent() override
+ {
+ std::string cpuNumber = "CPU " + std::to_string(cpuNum);
+@@ -39,6 +106,17 @@ class MemThermtripMonitor :
+ "REDFISH_MESSAGE_ARGS=%s", cpuNumber.c_str(), NULL);
+ }
+
++ void assertHandler() override
++ {
++ // Only log a memory thermtrip if a DIMM is critical
++ if (criticalDIMMs.empty())
++ {
++ return;
++ }
++
++ host_error_monitor::base_gpio_monitor::BaseGPIOMonitor::assertHandler();
++ }
++
+ public:
+ MemThermtripMonitor(boost::asio::io_service& io,
+ std::shared_ptr<sdbusplus::asio::connection> conn,
+@@ -46,6 +124,9 @@ class MemThermtripMonitor :
+ BaseGPIOMonitor(io, conn, signalName, assertValue),
+ cpuNum(cpuNum)
+ {
++ // Start tracking critical DIMM status
++ dimmThresholdEventMonitor = startDIMMThresholdEventMonitor();
++
+ if (valid)
+ {
+ startMonitoring();
+--
+2.17.1
+
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor_%.bbappend b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor_%.bbappend
index 0d1fd91d2..638d833a8 100644
--- a/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor_%.bbappend
+++ b/meta-openbmc-mods/meta-wht/recipes-core/host-error-monitor/host-error-monitor_%.bbappend
@@ -1,6 +1,6 @@
FILESEXTRAPATHS_append := "${THISDIR}/${PN}:"
SRC_URI += " \
- file://0001-Filter-memory-thermtrip-events-based-on-DIMM-status.patch \
- file://0002-Add-a-workaround-for-spurious-CPU-errors.patch \
- "
+ file://0001-Configure-host-error-monitors-for-meta-wht.patch \
+ file://0002-Filter-memory-thermtrip-events-based-on-DIMM-status.patch \
+ "
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci/99-peci.rules b/meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci/99-peci.rules
new file mode 100644
index 000000000..b587a3f57
--- /dev/null
+++ b/meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci/99-peci.rules
@@ -0,0 +1,2 @@
+ACTION=="add", SUBSYSTEM=="peci_dev", ATTRS{name}=="*.peci-bus", SYMLINK+="peci-wire" TAG+="peci-wire"
+ACTION=="add", SUBSYSTEM=="peci_dev", TAG=="peci-wire", SYMLINK+="peci-default"
diff --git a/meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci_%.bbappend b/meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci_%.bbappend
new file mode 100644
index 000000000..575cfea24
--- /dev/null
+++ b/meta-openbmc-mods/meta-wht/recipes-core/libpeci/libpeci_%.bbappend
@@ -0,0 +1,8 @@
+FILESEXTRAPATHS_append := ":${THISDIR}/${PN}"
+
+SRC_URI += "file://99-peci.rules"
+
+do_install_append() {
+ install -d ${D}/lib/udev/rules.d
+ install -m 0644 ${WORKDIR}/99-peci.rules ${D}/lib/udev/rules.d
+}