From 69d0250bdcfaec04f35c08542074aaf2169c2286 Mon Sep 17 00:00:00 2001 From: Nikita Kosenkov Date: Thu, 2 Jun 2022 10:13:08 +0300 Subject: x86-power-control: changed starting condition for power policy controller --- ...ontrol-removed-the-conditions-for-startin.patch | 41 ++++++++++++++++++++++ .../chassis/x86-power-control_%.bbappend | 1 + 2 files changed, 42 insertions(+) create mode 100644 meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch diff --git a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch new file mode 100644 index 0000000000..636f922227 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch @@ -0,0 +1,41 @@ +From cf1bd45c8f33c0fb22113708e076f34784552d1f Mon Sep 17 00:00:00 2001 +From: "Nikita Kosenkov (IBS Group)" +Date: Tue, 31 May 2022 06:51:46 +0300 +Subject: [PATCH] x86-power-control: removed the conditions for starting the + power restore policy + +--- + src/power_control.cpp | 8 +++----- + 1 file changed, 3 insertions(+), 5 deletions(-) + +diff --git a/src/power_control.cpp b/src/power_control.cpp +index 05aa45c..56346ed 100644 +--- a/src/power_control.cpp ++++ b/src/power_control.cpp +@@ -2754,8 +2754,8 @@ int main(int argc, char* argv[]) + + // Initialize the power state + powerState = PowerState::off; ++ + // Check power good +- + if (powerOkConfig.type == ConfigType::GPIO) + { + if (psPowerOKLine.get_value() > 0 || +@@ -2772,11 +2772,9 @@ int main(int argc, char* argv[]) + powerState = PowerState::on; + } + } ++ + // Check if we need to start the Power Restore policy +- if (powerState != PowerState::on) +- { +- powerRestore.run(); +- } ++ powerRestore.run(); + + if (nmiOutLine) + nmiSourcePropertyMonitor(); +-- +2.35.1 + diff --git a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend index d8a4104b65..15e8a72f79 100644 --- a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend @@ -1,6 +1,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI:append = " \ file://power-config-host0.json \ + file://0001-x86-power-control-removed-the-conditions-for-startin.patch \ " RDEPENDS:${PN}:append = " bash" -- cgit v1.2.3 From 5c3f71d93e5b1c2358cd8ecea0a75e20a299c6f3 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Fri, 3 Jun 2022 00:30:26 +0300 Subject: firmware-watchdog, detect virtualization --- .../firmware-watchdog/firmware-watchdog.bb | 59 +++++ .../firmware-watchdog/firmware-watchdog | 80 ++++++ .../firmware-watchdog/firmware-watchdog.service | 9 + .../firmware-watchdog/firmware-watchdog.timer | 12 + .../firmware-watchdog/firmware-watchdog/logrotate | 5 + .../obmc/firmware-watchdog/firmware-watchdog.conf | 10 + .../firmware-watchdog/post-install | 5 + .../firmware-watchdog/post-upgrade | 5 + .../images/obmc-phosphor-image.bbappend | 3 +- .../initrdscripts/obmc-phosphor-initfs.bbappend | 8 +- .../obmc-phosphor-initfs/obmc-shutdown.sh | 2 +- .../obmc-phosphor-initfs/obmc-update.sh | 290 +++++++++++++++++++++ .../interfaces/bmcweb-init-certs/bmcweb-init-certs | 9 +- 13 files changed, 490 insertions(+), 7 deletions(-) create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.service create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.timer create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/logrotate create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/obmc/firmware-watchdog/firmware-watchdog.conf create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade create mode 100644 meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-update.sh diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb new file mode 100644 index 0000000000..1d17ee02e2 --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb @@ -0,0 +1,59 @@ +SUMMARY = "Firmware watchdog" +DESCRIPTION = "BMC firmware watchdog service that is used to detect BMC status \ + after image install or update \ + " + +inherit allarch +inherit obmc-phosphor-systemd + +RDEPENDS:${PN} = "bash" + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://${IBSBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" + + +SYSTEMD_SERVICE:${PN} += "firmware-watchdog.service" +SYSTEMD_ENVIRONMENT_FILE:${PN} += "obmc/firmware-watchdog/firmware-watchdog.conf" + +SYSTEMD_SERVICE:${PN} += "firmware-watchdog.service" +SYSTEMD_SERVICE:${PN} += "firmware-watchdog.timer" +SRC_URI += "file://firmware-watchdog \ + file://logrotate \ + file://post-install \ + file://post-upgrade \ + " + +do_install:append(){ + install -d ${D}${sbindir} + install -m 0755 ${WORKDIR}/firmware-watchdog ${D}${sbindir} + install -m 0755 ${WORKDIR}/post-install ${D}${sbindir} + install -m 0755 ${WORKDIR}/post-upgrade ${D}${sbindir} + + install -d ${D}${sysconfdir}/logrotate.d + install -m 0644 ${WORKDIR}/logrotate ${D}${sysconfdir}/logrotate.d/firmware-watchdog +} + + +# +#S = "${WORKDIR}" +#SRC_URI = "file://kernel-panic-check.sh \ +# file://kernel-panic-check.service \ +#" +# +#LICENSE = "Apache-2.0" +#LIC_FILES_CHKSUM = "file://${IBSBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" +#RDEPENDS:${PN} += "bash logger-systemd" +# +#inherit systemd +# +#FILES:${PN} += "${systemd_system_unitdir}/kernel-panic-check.service" +# +#do_install() { +# install -d ${D}${systemd_system_unitdir} +# install -m 0644 ${WORKDIR}/kernel-panic-check.service ${D}${systemd_system_unitdir} +# install -d ${D}${bindir} +# install -m 0755 ${S}/kernel-panic-check.sh ${D}/${bindir}/kernel-panic-check.sh +#} +# +#SYSTEMD_SERVICE:${PN} += " kernel-panic-check.service" +# \ No newline at end of file diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog new file mode 100644 index 0000000000..9e5d6b5e3b --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog @@ -0,0 +1,80 @@ +#!/bin/bash + +CONFIG_FILE=/etc/default/obmc/firmware-watchdog/firmware-watchdog.conf +LOG_FILE=/var/log/firmware-watchdog.log + +. ${CONFIG_FILE} + +set_status() { + sed -i "s,\(^[ \t]*SYSTEM_STATUS=\).*,\1$1," ${CONFIG_FILE} +} + +set_counter() { + sed -i "s,\(^[ \t]*REQUEST_COUNTER=\).*,\1$1," ${CONFIG_FILE} +} + +increment_counter() { + counter=${REQUEST_COUNTER} + let 'counter +=1' + sed -i "s,\(^[ \t]*REQUEST_COUNTER=\).*,\1${counter}," ${CONFIG_FILE} +} + +push_log() { + message=$1 + echo -n "[`LANG=en LANGUAGE=en date +'%d-%b-%Y %H:%M:%S'`] system status: " >> ${LOG_FILE} + echo "${message}" >> ${LOG_FILE} +} + + +if [ "${REQUEST_COUNTER}" -ge "0" -a "${REQUEST_COUNTER}" -lt "9" ] ; then + if `systemctl is-active --quiet bmcweb` ; then + # + # bmcweb service is active: + # ------------------------ + + # + # Run post-{install|upgrade} script: + # + if [ "${SYSTEM_STATUS}" = "pristine" ] ; then + # Firstly installed clean system: + push_log "${SYSTEM_STATUS}: Attempt to run post-install routine" + if [ -x "/usr/sbin/post-install" ] ; then + /usr/sbin/post-install & 2>/dev/null 1>/dev/null + fi + fi + if [ "${SYSTEM_STATUS}" = "upgraded" ] ; then + # The clean system after upgrade: + push_log "${SYSTEM_STATUS}: Attempt to run post-upgrade routine" + if [ -x "/usr/sbin/post-upgrade" ] ; then + /usr/sbin/post-upgrade & 2>/dev/null 1>/dev/null + fi + fi + + set_status operative + push_log "operative" + + # Detect Virtualization (testing): + if `dmesg | grep -q "aspeed-smc 1e620000.spi: mx25l25635e"` ; then + /usr/bin/busctl set-property xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice/CP2_5422 xyz.openbmc_project.FruDevice PRODUCT_ASSET_TAG s "Virtual BMC" + fi + + set_counter 9 + exit 0 + fi +fi + +if [ "${REQUEST_COUNTER}" -gt "8" ] ; then + if [ "${SYSTEM_STATUS}" = "pristine" -o "${SYSTEM_STATUS}" = "upgraded" ] ; then + # + # bmcweb service is dead: + # ---------------------- + set_status dirty + push_log "dirty: because bmcweb.serice is dead" + fi +fi + +if [ "${REQUEST_COUNTER}" -lt "9" ] ; then + increment_counter +fi + +exit 0 diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.service b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.service new file mode 100644 index 0000000000..709fcdcce7 --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.service @@ -0,0 +1,9 @@ + +[Unit] +Description=Firmware OpenBMC Watchdog Service + +[Service] +EnvironmentFile=/etc/default/obmc/firmware-watchdog/firmware-watchdog.conf +Type=oneshot +ExecStart=/usr/sbin/firmware-watchdog +RemainAfterExit=true diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.timer b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.timer new file mode 100644 index 0000000000..3fe47cd911 --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog.timer @@ -0,0 +1,12 @@ + +[Unit] +Description=Firmware OpenBMC Watchdog Timer (every first minute) + +[Timer] +Unit=firmware-watchdog.service +OnBootSec=60sec +OnUnitActiveSec=60sec +AccuracySec=5sec + +[Install] +WantedBy=timers.target diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/logrotate b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/logrotate new file mode 100644 index 0000000000..428477c6bf --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/logrotate @@ -0,0 +1,5 @@ +/var/log/firmware-watchdog.log { + missingok + notifempty + size 30k +} diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/obmc/firmware-watchdog/firmware-watchdog.conf b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/obmc/firmware-watchdog/firmware-watchdog.conf new file mode 100644 index 0000000000..c1563091b3 --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/obmc/firmware-watchdog/firmware-watchdog.conf @@ -0,0 +1,10 @@ +# +# Available values of SYSTEM_STATUS: +# ================================= +# +# pristine - firstly installed clean system; +# upgraded - the clean system after upgrade; +# operative - normal . +# +SYSTEM_STATUS=pristine +REQUEST_COUNTER=0 diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install new file mode 100644 index 0000000000..55dc4951cf --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install @@ -0,0 +1,5 @@ +#!/bin/bash + +/usr/bin/bmcweb-init-certs & 2>/dev/null 1>/dev/null + +exit 0 diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade new file mode 100644 index 0000000000..55dc4951cf --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade @@ -0,0 +1,5 @@ +#!/bin/bash + +/usr/bin/bmcweb-init-certs & 2>/dev/null 1>/dev/null + +exit 0 diff --git a/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend b/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend index 0e0a77c4c8..5dad389c66 100644 --- a/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend +++ b/meta-ibs/meta-common/recipes-ibs/images/obmc-phosphor-image.bbappend @@ -7,7 +7,8 @@ IMAGE_INSTALL += " openssl-bin \ phosphor-post-code-manager \ beepcode-mgr \ biosconfig-manager \ - bmcweb-init-certs" + bmcweb-init-certs \ + firmware-watchdog" OBMC_IMAGE_EXTRA_INSTALL += " strace" diff --git a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend index 61fefda887..339740dfbd 100644 --- a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend +++ b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs.bbappend @@ -2,4 +2,10 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" DESCRIPTION = "Pinging system watchdog before BMC update" -SRC_URI += "file://obmc-shutdown.sh" +SRC_URI += "file://obmc-shutdown.sh \ + file://obmc-update.sh \ + " + +do_install:append() { + echo "/etc/default/obmc/firmware-watchdog/firmware-watchdog.conf" >> ${D}/whitelist +} diff --git a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-shutdown.sh b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-shutdown.sh index 204665de7e..e5eadaca2b 100644 --- a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-shutdown.sh +++ b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-shutdown.sh @@ -55,7 +55,7 @@ then wd= fi $update --clean-saved-files - remaining=$(ls $image*) + remaining=$(ls $image* 2>/dev/null) if test -n "$remaining" then echo 1>&2 "Flash update failed to flash these images:" diff --git a/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-update.sh b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-update.sh new file mode 100644 index 0000000000..bd4cfb14d4 --- /dev/null +++ b/meta-ibs/meta-common/recipes-phosphor/initrdscripts/obmc-phosphor-initfs/obmc-update.sh @@ -0,0 +1,290 @@ +#!/bin/sh + +echo update: "$@" + +echoerr() { + echo 1>&2 "ERROR: $@" +} + +cd / +if ! test -r /proc/mounts || ! test -f /proc/mounts +then + mkdir -p /proc + mount -t proc proc proc +fi +if ! test -d /sys/class +then + mkdir -p /sys + mount -t sysfs sys sys +fi +if ! test -c /dev/null +then + mkdir -p /dev + mount -t devtmpfs dev dev +fi + +# mtd number N with mtd name Name can be mounted via mtdN, or mtd:Name +# (with a mtd aware fs) or by /dev/mtdblockN (with a mtd or block fs). +mtdismounted() { + m=${1##mtd} + if grep -s "mtdblock$m " /proc/mounts || grep -s "mtd$m " /proc/mounts + then + return 0 + fi + n=$(cat /sys/class/mtd/mtd$m/name) + if test -n "$n" && grep -s "mtd:$n " /proc/mounts + then + return 0 + fi + return 1 +} + +# Detect child partitions when the whole flash is to be updated. +# Ignore mtdNro and mtdblockN names in the class subsystem directory. +childmtds() { + for m in /sys/class/mtd/$1/mtd* + do + m=${m##*/} + if test "${m%ro}" = "${m#mtdblock}" + then + echo $m + fi + done +} + +toobig() { + if test $(stat -L -c "%s" "$1") -gt $(cat /sys/class/mtd/"$2"/size) + then + return 0 + fi + return 1 +} + +findmtd() { + m=$(grep -xl "$1" /sys/class/mtd/*/name) + m=${m%/name} + m=${m##*/} + echo $m +} + +blkid_fs_type() { + # Emulate util-linux's `blkid -s TYPE -o value $1` + # Example busybox blkid output: + # # blkid /dev/mtdblock5 + # /dev/mtdblock5: TYPE="squashfs" + # Process output to extract TYPE value "squashfs". + blkid $1 | sed -e 's/^.*TYPE="//' -e 's/".*$//' +} + +probe_fs_type() { + fst=$(blkid_fs_type $1) + echo ${fst:=jffs2} +} + +rwfs=$(findmtd rwfs) + +rwdev=/dev/mtdblock${rwfs#mtd} +rwopts=rw +rorwopts=ro${rwopts#rw} + +rwdir=/run/initramfs/rw +upper=$rwdir/cow +save=/run/save/${upper##*/} + +mounted= +doflash=y +doclean= +dosave=y +dorestore=y +toram= +checksize=y +checkmount=y + +whitelist=/run/initramfs/whitelist +image=/run/initramfs/image- +imglist= + +firmware_watchdog_config=$upper/etc/default/obmc/firmware-watchdog/firmware-watchdog.conf + +set_fw_watchdog_status() { + sed -i "s,\(^[ \t]*SYSTEM_STATUS=\).*,\1$1," ${firmware_watchdog_config} +} + +set_fw_watchdog_counter() { + sed -i "s,\(^[ \t]*REQUEST_COUNTER=\).*,\1$1," ${firmware_watchdog_config} +} + +while test "$1" != "${1#-}" +do + case "$1" in + --help) + cat <&2 "WARNING: Skipping bad whitelist entry $f." + continue + fi + if ! test -e "$upper/$f" + then + continue + fi + d="$save/$f" + while test "${d%/}" != "${d%/.}" + do + d="${d%/.}" + d="${d%/}" + done + mkdir -p "${d%/*}" + cp -rp "$upper/$f" "${d%/*}/" + done < $whitelist + + if test -n "$mounted" + then + umount $mounted + fi +fi + +imglist=$(echo $image*) +if test "$imglist" = "$image*" -a ! -e "$imglist" +then + # shell didn't expand the wildcard, so no files exist + echo "No images found to update." + imglist= +fi + +for f in $imglist +do + m=$(findmtd ${f#$image}) + if test -z "$m" + then + echoerr "Unable to find mtd partition for ${f##*/}." + exit 1 + fi + if test -n "$checksize" && toobig "$f" "$m" + then + echoerr "Image ${f##*/} too big for $m." + exit 1 + fi + for s in $m $(childmtds $m) + do + if test -n "$checkmount" && mtdismounted $s + then + echoerr "Device $s is mounted, ${f##*/} is busy." + exit 1 + fi + done +done + +if test -n "$doflash" +then + for f in $imglist + do + if test ! -s $f + then + echo "Skipping empty update of ${f#$image}." + rm $f + continue + fi + m=$(findmtd ${f#$image}) + echo "Updating ${f#$image}..." + flashcp -v $f /dev/$m && rm $f + done +fi + +if test -d $save -a "x$toram" = xy +then + mkdir -p $upper + cp -rp $save/. $upper/ +fi + +if test -d $save -a "x$dorestore" = xy +then + odir=$rwdir + rwdir=/run/rw + upper=$rwdir${upper#$odir} + + mkdir -p $rwdir + mount $rwdev $rwdir -t $(probe_fs_type $rwdev) -o $rwopts + mkdir -p $upper + cp -rp $save/. $upper/ + umount $rwdir + rmdir $rwdir +fi + +if test "x$doclean" = xy +then + rm -rf $save +fi + +exit diff --git a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb-init-certs/bmcweb-init-certs b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb-init-certs/bmcweb-init-certs index ea0d796f7d..d376f9a5d1 100644 --- a/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb-init-certs/bmcweb-init-certs +++ b/meta-ibs/meta-common/recipes-phosphor/interfaces/bmcweb-init-certs/bmcweb-init-certs @@ -23,13 +23,14 @@ rm -f ${PRIV_KEY_NAME} ${SERV_KEY_NAME} # # Create new private PEM-key: # -systemctl restart phosphor-certificate-manager@bmcweb.service +systemctl stop phosphor-certificate-manager@bmcweb.service +systemctl start phosphor-certificate-manager@bmcweb.service count=0 # wait for 5 minutes until the certificate manager creates the private PEM-key while [ ! -f ${PRIV_KEY_NAME} ] && [ ${count} -lt 300 ] do - count=$[ $count + 1] + count=$[ $count + 1 ] sleep 1 done @@ -40,9 +41,9 @@ systemctl restart bmcweb.service count=0 # wait for 5 minutes until the bmcweb creates the server PEM-key -while [ ! -f ${PRIV_KEY_NAME} ] && [ ${count} -lt 300 ] +while [ ! -f ${SERV_KEY_NAME} ] && [ ${count} -lt 300 ] do - count=$[ $count + 1] + count=$[ $count + 1 ] sleep 1 done -- cgit v1.2.3 From fa4f08443f25886708c4ab1c081f935321a96e11 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Fri, 3 Jun 2022 10:12:51 +0300 Subject: U-Boot: Use hardware MAC by default --- ...ers-ftgmac100-use-hardware-MAC-by-default.patch | 74 ++++++++++++++++++++++ .../recipes-bsp/u-boot/files/mii_enable.cfg | 1 + .../recipes-bsp/u-boot/u-boot-aspeed_%.bbappend | 6 ++ .../u-boot/u-boot-fw-utils-aspeed_%.bbappend | 1 + 4 files changed, 82 insertions(+) create mode 100644 meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0001-drivers-ftgmac100-use-hardware-MAC-by-default.patch create mode 100644 meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/mii_enable.cfg create mode 100644 meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend create mode 120000 meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-fw-utils-aspeed_%.bbappend diff --git a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0001-drivers-ftgmac100-use-hardware-MAC-by-default.patch b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0001-drivers-ftgmac100-use-hardware-MAC-by-default.patch new file mode 100644 index 0000000000..2cac891644 --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0001-drivers-ftgmac100-use-hardware-MAC-by-default.patch @@ -0,0 +1,74 @@ +From eaa2edca99f7f416541c49d936b76db9799ee9c0 Mon Sep 17 00:00:00 2001 +From: Alexander Filippov +Date: Fri, 7 Aug 2020 13:32:27 +0300 +Subject: [PATCH] drivers: ftgmac100: use hardware MAC by default + +During the network interface initialization in ast_g5_phy based +configurations the original hardware MAC address is ignored and the +actual value is filled with zeros until the appropriate environment +variable is set. +Probably, others PHY-based configurations are also affected. +For example: The MAC addresses specified in command line arguments for +qemu are ignored and all ethernet interfaces have randomly generated MAC +addresses. + +This commit makes ftg100 driver to read the hardware MAC address during +device initialization and do not fill it with zeros if the environment +has no definitions for this interface. + +Signed-off-by: Alexander Filippov +Signed-off-by: Andrey V.Kosteltsev +--- + drivers/net/ftgmac100.c | 22 +++++++++++++++++++++- + 1 file changed, 21 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/ftgmac100.c b/drivers/net/ftgmac100.c +index 5779057ba8..5aaad533e5 100644 +--- a/drivers/net/ftgmac100.c ++++ b/drivers/net/ftgmac100.c +@@ -481,6 +481,23 @@ static void ftgmac100_set_mac(struct eth_device *dev, + __raw_writel(laddr, &ftgmac100->mac_ladr); + } + ++/* ++ * Get actual MAC address ++ */ ++static void ftgmac100_get_hw_mac(struct eth_device *dev) ++{ ++ struct ftgmac100 *ftgmac100 = (struct ftgmac100 *)dev->iobase; ++ unsigned int maddr = __raw_readl(&ftgmac100->mac_madr); ++ unsigned int laddr = __raw_readl(&ftgmac100->mac_ladr); ++ ++ dev->enetaddr[0] = (maddr >> 8) & 0xFF; ++ dev->enetaddr[1] = (maddr >> 0) & 0xFF; ++ dev->enetaddr[2] = (laddr >> 24) & 0xFF; ++ dev->enetaddr[3] = (laddr >> 16) & 0xFF; ++ dev->enetaddr[4] = (laddr >> 8) & 0xFF; ++ dev->enetaddr[5] = (laddr >> 0) & 0xFF; ++} ++ + static void ftgmac100_set_mac_from_env(struct eth_device *dev) + { + #ifdef CONFIG_SYS_I2C_MAC_OFFSET +@@ -513,7 +530,9 @@ static void ftgmac100_set_mac_from_env(struct eth_device *dev) + + ftgmac100_set_mac(dev, dev->enetaddr); + #else +- eth_getenv_enetaddr_by_index("eth", dev->index, dev->enetaddr); ++ unsigned char enetaddr[6]; ++ if (eth_getenv_enetaddr_by_index("eth", dev->index, enetaddr)) ++ memcpy(dev->enetaddr, enetaddr, sizeof(enetaddr)); + // eth_getenv_enetaddr("ethaddr", dev->enetaddr); + ftgmac100_set_mac(dev, dev->enetaddr); + #endif +@@ -794,6 +813,7 @@ int ftgmac100_initialize(bd_t *bd) + ftgmac100_reset(dev); + + /* set the ethernet address */ ++ ftgmac100_get_hw_mac(dev); + ftgmac100_set_mac_from_env(dev); + + card_number++; +-- +2.35.1 + diff --git a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/mii_enable.cfg b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/mii_enable.cfg new file mode 100644 index 0000000000..5ef5626689 --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/mii_enable.cfg @@ -0,0 +1 @@ +CONFIG_CMD_MII=y diff --git a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend new file mode 100644 index 0000000000..b053ea2c55 --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend @@ -0,0 +1,6 @@ +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI:append = " \ + file://mii_enable.cfg \ + file://0001-drivers-ftgmac100-use-hardware-MAC-by-default.patch \ + " diff --git a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-fw-utils-aspeed_%.bbappend b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-fw-utils-aspeed_%.bbappend new file mode 120000 index 0000000000..f725cd47a3 --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-fw-utils-aspeed_%.bbappend @@ -0,0 +1 @@ +./u-boot-aspeed_%.bbappend \ No newline at end of file -- cgit v1.2.3 From 053100f500868b44bc4c869bf160ed07ec851e84 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Fri, 3 Jun 2022 14:01:05 +0300 Subject: FW Watchdog: overwrite PRODUCT_ASSET_TAG when we are on QEMU --- .../firmware-watchdog/firmware-watchdog.bb | 28 ++++------------------ .../firmware-watchdog/firmware-watchdog | 6 ----- .../firmware-watchdog/post-install | 1 + .../firmware-watchdog/post-upgrade | 1 + .../firmware-watchdog/virtual-asset-tag | 27 +++++++++++++++++++++ 5 files changed, 33 insertions(+), 30 deletions(-) create mode 100644 meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb index 1d17ee02e2..330508956b 100644 --- a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog.bb @@ -21,9 +21,13 @@ SRC_URI += "file://firmware-watchdog \ file://logrotate \ file://post-install \ file://post-upgrade \ + file://virtual-asset-tag \ " do_install:append(){ + install -d ${D}${bindir} + install -m 0755 ${WORKDIR}/virtual-asset-tag ${D}${bindir} + install -d ${D}${sbindir} install -m 0755 ${WORKDIR}/firmware-watchdog ${D}${sbindir} install -m 0755 ${WORKDIR}/post-install ${D}${sbindir} @@ -33,27 +37,3 @@ do_install:append(){ install -m 0644 ${WORKDIR}/logrotate ${D}${sysconfdir}/logrotate.d/firmware-watchdog } - -# -#S = "${WORKDIR}" -#SRC_URI = "file://kernel-panic-check.sh \ -# file://kernel-panic-check.service \ -#" -# -#LICENSE = "Apache-2.0" -#LIC_FILES_CHKSUM = "file://${IBSBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" -#RDEPENDS:${PN} += "bash logger-systemd" -# -#inherit systemd -# -#FILES:${PN} += "${systemd_system_unitdir}/kernel-panic-check.service" -# -#do_install() { -# install -d ${D}${systemd_system_unitdir} -# install -m 0644 ${WORKDIR}/kernel-panic-check.service ${D}${systemd_system_unitdir} -# install -d ${D}${bindir} -# install -m 0755 ${S}/kernel-panic-check.sh ${D}/${bindir}/kernel-panic-check.sh -#} -# -#SYSTEMD_SERVICE:${PN} += " kernel-panic-check.service" -# \ No newline at end of file diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog index 9e5d6b5e3b..8e31e8ba58 100644 --- a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/firmware-watchdog @@ -52,12 +52,6 @@ if [ "${REQUEST_COUNTER}" -ge "0" -a "${REQUEST_COUNTER}" -lt "9" ] ; then set_status operative push_log "operative" - - # Detect Virtualization (testing): - if `dmesg | grep -q "aspeed-smc 1e620000.spi: mx25l25635e"` ; then - /usr/bin/busctl set-property xyz.openbmc_project.FruDevice /xyz/openbmc_project/FruDevice/CP2_5422 xyz.openbmc_project.FruDevice PRODUCT_ASSET_TAG s "Virtual BMC" - fi - set_counter 9 exit 0 fi diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install index 55dc4951cf..ea59f03cbd 100644 --- a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-install @@ -1,5 +1,6 @@ #!/bin/bash +/usr/bin/virtual-asset-tag & 2>/dev/null 1>/dev/null /usr/bin/bmcweb-init-certs & 2>/dev/null 1>/dev/null exit 0 diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade index 55dc4951cf..ea59f03cbd 100644 --- a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/post-upgrade @@ -1,5 +1,6 @@ #!/bin/bash +/usr/bin/virtual-asset-tag & 2>/dev/null 1>/dev/null /usr/bin/bmcweb-init-certs & 2>/dev/null 1>/dev/null exit 0 diff --git a/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag new file mode 100644 index 0000000000..590425f9ef --- /dev/null +++ b/meta-ibs/meta-common/recipes-ibs/firmware-watchdog/firmware-watchdog/virtual-asset-tag @@ -0,0 +1,27 @@ +#!/bin/bash +# +# Detect Virtualization: +# + +model="CP2.*" +spi_flash_model="mx25l25635e" +interface=xyz.openbmc_project.FruDevice +asset_tag_var=PRODUCT_ASSET_TAG + +# no more than 20 chars: +# --------------------- +asset_tag_val='"Virtual BMC"' + +run_cmd() { + local cmd="${*}"; + eval $cmd +} + +get_model_path() { + local path=$(/usr/bin/busctl tree ${interface} | grep "/FruDevice/${model}" | sed 's,^[ \t`-]*,,' | sed 's,[ \t]*$,,') + echo "${path}" +} + +if `dmesg | grep -q "aspeed-smc 1e620000.spi: ${spi_flash_model}"` ; then + run_cmd /usr/bin/busctl set-property ${interface} $(get_model_path) ${interface} ${asset_tag_var} s ${asset_tag_val} +fi -- cgit v1.2.3 From cb01445f1802e13a3c0177a92150a683bc5b3d07 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Sat, 4 Jun 2022 07:45:52 +0300 Subject: Changed root password to default SILA passwd --- meta-ibs/meta-cp2-5422/conf/local.conf.sample | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/meta-ibs/meta-cp2-5422/conf/local.conf.sample b/meta-ibs/meta-cp2-5422/conf/local.conf.sample index 0c721a8938..2898dfa1dc 100644 --- a/meta-ibs/meta-cp2-5422/conf/local.conf.sample +++ b/meta-ibs/meta-cp2-5422/conf/local.conf.sample @@ -270,10 +270,12 @@ INHERIT += "extrausers" # # -# Add default administrative account (login: admin, password: '0penBmc'): +# Change root password to '5uperS!L@'. +# Add default administrative account (login: admin, password: '5uperS!L@'): # -DEFAULT_ADMIN_PASSWORD = "'\$6\$IBS\$3umMGtoW.bu0HC9HOGQZLgBKumD/XVW4Kg0l8l5tvnX1vEnqX/fCOoiUv4tzWotVQXKeE6.j92AqZEXr3JRTc.'" +DEFAULT_ADMIN_PASSWORD = "'\$6\$HfRiw6D0RquGDC66\$eByadkZLvizTI6iOlMdgjqo/JFYKbes8kqwDIOtuGanqRswqk2RefvRbhQIzLzRDsNpMm2Ex4MSywPlb7V80E0'" EXTRA_USERS_PARAMS:append:pn-obmc-phosphor-image = " \ + usermod -p ${DEFAULT_ADMIN_PASSWORD} root; \ useradd -p ${DEFAULT_ADMIN_PASSWORD} -g users -G priv-admin,web,redfish,ipmi -N admin; \ " -- cgit v1.2.3 From b05f4049cbbfbe8fc69b8d8f97674760fbca36fe Mon Sep 17 00:00:00 2001 From: Nikita Kosenkov Date: Wed, 8 Jun 2022 06:05:53 +0300 Subject: x86-power-control: undo all changes --- ...ontrol-removed-the-conditions-for-startin.patch | 41 ---------------------- .../chassis/x86-power-control_%.bbappend | 1 - 2 files changed, 42 deletions(-) delete mode 100644 meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch diff --git a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch deleted file mode 100644 index 636f922227..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-removed-the-conditions-for-startin.patch +++ /dev/null @@ -1,41 +0,0 @@ -From cf1bd45c8f33c0fb22113708e076f34784552d1f Mon Sep 17 00:00:00 2001 -From: "Nikita Kosenkov (IBS Group)" -Date: Tue, 31 May 2022 06:51:46 +0300 -Subject: [PATCH] x86-power-control: removed the conditions for starting the - power restore policy - ---- - src/power_control.cpp | 8 +++----- - 1 file changed, 3 insertions(+), 5 deletions(-) - -diff --git a/src/power_control.cpp b/src/power_control.cpp -index 05aa45c..56346ed 100644 ---- a/src/power_control.cpp -+++ b/src/power_control.cpp -@@ -2754,8 +2754,8 @@ int main(int argc, char* argv[]) - - // Initialize the power state - powerState = PowerState::off; -+ - // Check power good -- - if (powerOkConfig.type == ConfigType::GPIO) - { - if (psPowerOKLine.get_value() > 0 || -@@ -2772,11 +2772,9 @@ int main(int argc, char* argv[]) - powerState = PowerState::on; - } - } -+ - // Check if we need to start the Power Restore policy -- if (powerState != PowerState::on) -- { -- powerRestore.run(); -- } -+ powerRestore.run(); - - if (nmiOutLine) - nmiSourcePropertyMonitor(); --- -2.35.1 - diff --git a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend index 15e8a72f79..d8a4104b65 100644 --- a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend @@ -1,7 +1,6 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI:append = " \ file://power-config-host0.json \ - file://0001-x86-power-control-removed-the-conditions-for-startin.patch \ " RDEPENDS:${PN}:append = " bash" -- cgit v1.2.3 From 158d12bb8eee6d5befddd49993e03ab82aaa37d5 Mon Sep 17 00:00:00 2001 From: Nikita Kosenkov Date: Tue, 14 Jun 2022 13:28:26 +0300 Subject: x86-power-control: added check BMC restart cause for AlwaysOn policy --- .../0002-Add-system-reset-status-support.patch | 210 +++++++++++++++++++++ .../recipes-bsp/u-boot/u-boot-aspeed_%.bbappend | 1 + ...ontrol-added-check-BMC-restart-cause-for-.patch | 118 ++++++++++++ .../chassis/x86-power-control_%.bbappend | 1 + 4 files changed, 330 insertions(+) create mode 100644 meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0002-Add-system-reset-status-support.patch create mode 100644 meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-added-check-BMC-restart-cause-for-.patch diff --git a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0002-Add-system-reset-status-support.patch b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0002-Add-system-reset-status-support.patch new file mode 100644 index 0000000000..d1cc9d9a67 --- /dev/null +++ b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/files/0002-Add-system-reset-status-support.patch @@ -0,0 +1,210 @@ +From 1c5b450a068583f2407767451ef636d0661071da Mon Sep 17 00:00:00 2001 +From: Alexander Filippov +Date: Tue, 7 Apr 2020 16:45:41 +0300 +Subject: [PATCH] Add system reset status support + +This is backport of patch file from intel-bmc/openbmc repository. + https://github.com/Intel-BMC/openbmc/blob/intel/meta-openbmc-mods/meta-common/recipes-bsp/u-boot/files/0020-Add-system-reset-status-support.patch + +Will display the reset reasons in u-boot, +and save the reset reasons into kernel command line, +for applications to query. + +Signed-off-by: Alexander Filippov +--- + arch/arm/include/asm/arch-aspeed/ast_scu.h | 2 +- + arch/arm/include/asm/arch-aspeed/platform.h | 2 + + arch/arm/mach-aspeed/Makefile | 1 + + arch/arm/mach-aspeed/ast-late-init.c | 114 ++++++++++++++++++++ + arch/arm/mach-aspeed/ast-scu.c | 6 +- + 5 files changed, 123 insertions(+), 2 deletions(-) + create mode 100644 arch/arm/mach-aspeed/ast-late-init.c + +diff --git a/arch/arm/include/asm/arch-aspeed/ast_scu.h b/arch/arm/include/asm/arch-aspeed/ast_scu.h +index dcbc6730d4..b428f386d6 100644 +--- a/arch/arm/include/asm/arch-aspeed/ast_scu.h ++++ b/arch/arm/include/asm/arch-aspeed/ast_scu.h +@@ -29,7 +29,7 @@ + #define __AST_SCU_H + + extern void ast_scu_show_system_info (void); +-extern void ast_scu_sys_rest_info(void); ++extern u32 ast_scu_sys_rest_info(void); + extern void ast_scu_security_info(void); + extern u32 ast_scu_revision_id(void); + extern u32 ast_scu_get_vga_memsize(void); +diff --git a/arch/arm/include/asm/arch-aspeed/platform.h b/arch/arm/include/asm/arch-aspeed/platform.h +index 1c02914fcb..b9207c492f 100644 +--- a/arch/arm/include/asm/arch-aspeed/platform.h ++++ b/arch/arm/include/asm/arch-aspeed/platform.h +@@ -31,4 +31,6 @@ + #err "No define for platform.h" + #endif + ++#define CONFIG_BOARD_LATE_INIT 1 /* Call board_late_init */ ++ + #endif +diff --git a/arch/arm/mach-aspeed/Makefile b/arch/arm/mach-aspeed/Makefile +index 7d8930beb9..4af2a7c96a 100644 +--- a/arch/arm/mach-aspeed/Makefile ++++ b/arch/arm/mach-aspeed/Makefile +@@ -15,3 +15,4 @@ obj-y += timer.o reset.o cpuinfo.o ast-scu.o ast-ahbc.o ast-sdmc.o + obj-$(CONFIG_AST_SPI_NOR) += flash.o + obj-$(CONFIG_ARCH_AST2500) += platform_g5.o + obj-$(CONFIG_ARCH_AST2400) += platform_g4.o ++obj-$(CONFIG_BOARD_LATE_INIT) += ast-late-init.o +diff --git a/arch/arm/mach-aspeed/ast-late-init.c b/arch/arm/mach-aspeed/ast-late-init.c +new file mode 100644 +index 0000000000..5646c0e882 +--- /dev/null ++++ b/arch/arm/mach-aspeed/ast-late-init.c +@@ -0,0 +1,114 @@ ++/* ++ * SPDX-License-Identifier: Apache-2.0 ++ * Copyright (C) 2020 YADRO. ++ */ ++ ++#include ++ ++#include ++#include ++#include ++ ++static void update_bootargs_cmd(const char *key, const char *value) ++{ ++ int buf_len; ++ char *buf; ++ char *cmdline; ++ char *end = NULL; ++ ++ if (!key || (key[0] == '\0')) ++ { ++ printf("%s: Empty key not allowed\n", __func__); ++ return; ++ } ++ ++ cmdline = getenv("bootargs"); ++ ++ /* Allocate space for maximum possible new command line */ ++ buf_len = (cmdline ? strlen(cmdline) : 0) ++ + 1 /* spacebar as delimiter */ ++ + strlen(key) ++ + (value ? 1 /* equal sign */ + strlen(value) : 0) ++ + 1 /* terminating null */; ++ ++ buf = calloc(buf_len, sizeof(char)); ++ if (!buf) ++ { ++ printf("%s: out of memory\n", __func__); ++ return; ++ } ++ ++ if (cmdline) ++ { ++ char *start = strstr(cmdline, key); ++ ++ /* Check for full word match. Match should be start of cmdline ++ * or there should be space before match */ ++ if (start && ((start == cmdline) || (*(start - 1) == ' '))) ++ { ++ strncat(buf, cmdline, (start - cmdline)); ++ ++ /* Find the end of the keyword[=value] pair, ++ * including a single training space character, if any. ++ * Skip the found substring, mark the tail of cmdline. ++ */ ++ end = strchr(start, ' '); ++ if (end) ++ { ++ end++; ++ } ++ } ++ else ++ { ++ strcat(buf, cmdline); ++ strcat(buf, " "); ++ } ++ } ++ ++ strcat(buf, key); ++ if (value) ++ { ++ strcat(buf, "="); ++ strcat(buf, value); ++ } ++ ++ if (end) ++ { ++ strcat(buf, " "); ++ strcat(buf, end); ++ } ++ ++ setenv("bootargs", buf); ++ free(buf); ++} ++ ++static void set_reset_reason(void) ++{ ++ u32 reset_reason = ast_scu_sys_rest_info(); ++ ++ if (reset_reason & SCU_SYS_EXT_RESET_FLAG) ++ { ++ update_bootargs_cmd("resetreason", "external"); ++ } ++ else if (reset_reason & SCU_SYS_WDT_RESET_FLAG) ++ { ++ update_bootargs_cmd("resetreason", "watchdog"); ++ } ++ else if (reset_reason & SCU_SYS_PWR_RESET_FLAG) ++ { ++ update_bootargs_cmd("resetreason", "power"); ++ } ++ else ++ { ++ char value[32]; ++ snprintf(value, sizeof(value) - 1, "0x%x", reset_reason); ++ update_bootargs_cmd("resetreason", value); ++ } ++} ++ ++int board_late_init(void) ++{ ++ set_reset_reason(); ++ ++ return 0; ++} +diff --git a/arch/arm/mach-aspeed/ast-scu.c b/arch/arm/mach-aspeed/ast-scu.c +index 12de9b8036..5afd3793e3 100644 +--- a/arch/arm/mach-aspeed/ast-scu.c ++++ b/arch/arm/mach-aspeed/ast-scu.c +@@ -482,22 +482,26 @@ void ast_scu_security_info(void) + } + } + +-void ast_scu_sys_rest_info(void) ++u32 ast_scu_sys_rest_info(void) + { + u32 rest = ast_scu_read(AST_SCU_SYS_CTRL); + + if (rest & SCU_SYS_EXT_RESET_FLAG) { + printf("RST : External\n"); + ast_scu_write(SCU_SYS_EXT_RESET_FLAG, AST_SCU_SYS_CTRL); ++ rest = SCU_SYS_EXT_RESET_FLAG; + } else if (rest & SCU_SYS_WDT_RESET_FLAG) { + printf("RST : Watchdog\n"); + ast_scu_write(SCU_SYS_WDT_RESET_FLAG, AST_SCU_SYS_CTRL); ++ rest = SCU_SYS_WDT_RESET_FLAG; + } else if (rest & SCU_SYS_PWR_RESET_FLAG) { + printf("RST : Power On\n"); + ast_scu_write(SCU_SYS_PWR_RESET_FLAG, AST_SCU_SYS_CTRL); ++ rest = SCU_SYS_PWR_RESET_FLAG; + } else { + printf("RST : CLK en\n"); + } ++ return rest; + } + + u32 ast_scu_get_vga_memsize(void) +-- +2.25.4 + diff --git a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend index b053ea2c55..65f41c15a6 100644 --- a/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend +++ b/meta-ibs/meta-ast2500/recipes-bsp/u-boot/u-boot-aspeed_%.bbappend @@ -3,4 +3,5 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/files:" SRC_URI:append = " \ file://mii_enable.cfg \ file://0001-drivers-ftgmac100-use-hardware-MAC-by-default.patch \ + file://0002-Add-system-reset-status-support.patch \ " diff --git a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-added-check-BMC-restart-cause-for-.patch b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-added-check-BMC-restart-cause-for-.patch new file mode 100644 index 0000000000..92a0da1675 --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control/0001-x86-power-control-added-check-BMC-restart-cause-for-.patch @@ -0,0 +1,118 @@ +From f49794106c6993b0a53b3b6634b44ae3d2f5cd82 Mon Sep 17 00:00:00 2001 +From: Nikita Kosenkov +Date: Thu, 9 Jun 2022 14:26:30 +0300 +Subject: [PATCH] x86-power-control: added check BMC restart cause for AlwaysOn + policy + +--- + src/power_control.cpp | 80 +++++++++++++++++++++++++++++++++++++++++-- + 1 file changed, 78 insertions(+), 2 deletions(-) + +diff --git a/src/power_control.cpp b/src/power_control.cpp +index 05aa45c..380ba7e 100644 +--- a/src/power_control.cpp ++++ b/src/power_control.cpp +@@ -31,6 +31,7 @@ + #include + #include + #include ++#include + + namespace power_control + { +@@ -857,6 +858,74 @@ void PersistentState::saveState() + appStateStream << stateData.dump(indentationSize); + } + ++enum class BMCRestartCause ++{ ++ power = 1, // After cold BMC boot ++ watchdog, // After warm BMC reboot ++ unknown // Unknown reboot cause ++}; ++ ++BMCRestartCause getBmcRestartCause() ++{ ++ // U-boot write restart cause to bootargs ++ std::string cmdlineFilePath{"/proc/cmdline"}; ++ std::ifstream cmdlineFile{cmdlineFilePath}; ++ if(!cmdlineFile.is_open()) ++ { ++ lg2::error("BMCRestartCause: cannot open {FILE}", "FILE", ++ cmdlineFilePath); ++ ++ return BMCRestartCause::unknown; ++ } ++ ++ // Read cmd line from file ++ std::stringstream cmdlineBuffer; ++ cmdlineBuffer << cmdlineFile.rdbuf(); ++ cmdlineFile.close(); ++ ++ std::string cmdline{cmdlineBuffer.str()}; ++ if(cmdline.size() == 0) ++ { ++ lg2::error("BMCRestartCause: file {FILE} is empty", "FILE", ++ cmdlineFilePath); ++ ++ return BMCRestartCause::unknown; ++ } ++ ++ // Parse cmdline with regex ++ std::smatch regexResult; ++ std::regex regexExpr("resetreason=((?:power|watchdog))"); ++ if (!std::regex_search(cmdline, regexResult, regexExpr)) ++ { ++ lg2::error("BMCRestartCause: error parse file {FILE}", "FILE", ++ cmdlineFilePath); ++ ++ return BMCRestartCause::unknown; ++ } ++ ++ // Initialize restart cause ++ BMCRestartCause bmcRestartCause = BMCRestartCause::unknown; ++ ++ if(regexResult.ready()) ++ { ++ // The second element is needed ++ // as it contains the result of the second capturing group ++ if(regexResult.str(1) == "power") ++ { ++ bmcRestartCause = BMCRestartCause::power; ++ } ++ else if (regexResult.str(1) == "watchdog") ++ { ++ bmcRestartCause = BMCRestartCause::watchdog; ++ } ++ ++ lg2::info("BmcRestartCause: current BMC restart cause={CAUSE}", "CAUSE", ++ regexResult.str(1)); ++ } ++ ++ return bmcRestartCause; ++} ++ + static constexpr char const* setingsService = "xyz.openbmc_project.Settings"; + static constexpr char const* powerRestorePolicyObject = + "/xyz/openbmc_project/control/host0/power_restore_policy"; +@@ -1083,8 +1152,15 @@ void PowerRestoreController::invoke() + if (powerRestorePolicy == + "xyz.openbmc_project.Control.Power.RestorePolicy.Policy.AlwaysOn") + { +- sendPowerControlEvent(Event::powerOnRequest); +- setRestartCauseProperty(getRestartCause(RestartCause::powerPolicyOn)); ++ // We check the reason for the BMC restart and ++ // if the BMC is after a cold boot, ++ // then start the "AlwaysOn" policy ++ if (getBmcRestartCause() == BMCRestartCause::power) ++ { ++ sendPowerControlEvent(Event::powerOnRequest); ++ setRestartCauseProperty( ++ getRestartCause(RestartCause::powerPolicyOn)); ++ } + } + else if (powerRestorePolicy == + "xyz.openbmc_project.Control.Power.RestorePolicy.Policy.Restore") +-- +2.35.1 + diff --git a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend index d8a4104b65..cbda0f130a 100644 --- a/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-x86/chassis/x86-power-control_%.bbappend @@ -1,6 +1,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" SRC_URI:append = " \ file://power-config-host0.json \ + file://0001-x86-power-control-added-check-BMC-restart-cause-for-.patch \ " RDEPENDS:${PN}:append = " bash" -- cgit v1.2.3 From 29d3a6ba526f193e57ca81724b5729b64ecd7552 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Thu, 9 Jun 2022 18:18:24 +0300 Subject: webui-vue: IBS environment and fonts --- meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila | 1 + meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila index 52a1cc7b76..31898019b1 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila @@ -1,4 +1,5 @@ NODE_ENV=production +VUE_APP_ENV_NAME="ibs" VUE_APP_COMPANY_NAME="IBS" VUE_APP_GUI_NAME="BMC System Management" VUE_APP_SUBSCRIBE_SOCKET_DISABLED="true" diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend index 7e37525055..b1c8817491 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend @@ -7,7 +7,7 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" SRC_URI = "git://git@git.sila.ru/srv/pub/scm/git/openbmc/webui-vue.git;branch=sila;protocol=ssh" -SRCREV = "35be8fba7201cd69218415fb453e39c13994b0c9" +SRCREV = "8e28cb0767505074daabf772344f50f251b821d8" SRC_URI += "\ file://.env.sila \ -- cgit v1.2.3 From aea4b508a1d45c02288fb18556ccba84fa40a541 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Thu, 9 Jun 2022 19:23:37 +0300 Subject: IBS: .env.ibs --- .../meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila | 12 ------------ .../recipes-phosphor/webui/webui-vue_%.bbappend | 5 ++--- 2 files changed, 2 insertions(+), 15 deletions(-) delete mode 100644 meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila deleted file mode 100644 index 31898019b1..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/.env.sila +++ /dev/null @@ -1,12 +0,0 @@ -NODE_ENV=production -VUE_APP_ENV_NAME="ibs" -VUE_APP_COMPANY_NAME="IBS" -VUE_APP_GUI_NAME="BMC System Management" -VUE_APP_SUBSCRIBE_SOCKET_DISABLED="true" -VUE_APP_SWITCH_TO_BACKUP_IMAGE_DISABLED="true" -VUE_APP_MODIFY_SSH_POLICY_DISABLED="true" -VUE_APP_VIRTUAL_MEDIA_LIST_ENABLED="true" -CUSTOM_STYLES="true" -CUSTOM_APP_NAV="true" -CUSTOM_STORE="true" -CUSTOM_ROUTER="true" diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend index b1c8817491..e7345a0bae 100644 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue_%.bbappend @@ -7,10 +7,9 @@ LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e" SRC_URI = "git://git@git.sila.ru/srv/pub/scm/git/openbmc/webui-vue.git;branch=sila;protocol=ssh" -SRCREV = "8e28cb0767505074daabf772344f50f251b821d8" +SRCREV = "11cc9ce2957d85b6f716dee68888a232cd57391f" SRC_URI += "\ - file://.env.sila \ file://favicon.ico \ file://login-company-logo.svg \ file://logo-header.svg \ @@ -19,7 +18,7 @@ SRC_URI += "\ " do_update_logo () { - cp ${WORKDIR}/.env.sila ${S}/.env + mv ${S}/.env.ibs ${S}/.env cp ${WORKDIR}/favicon.ico \ ${S}/public/. -- cgit v1.2.3 From 630da0c035acc3cd5ca0c93392a03f89fb87c408 Mon Sep 17 00:00:00 2001 From: "Andrey V.Kosteltsev" Date: Fri, 10 Jun 2022 08:14:11 +0300 Subject: webui-vue: Brand Logo --- .../webui-vue/0001-Set-login-brand-width.patch | 36 ---------- .../webui/webui-vue/0001-Set-login-brand.patch | 82 ++++++++++++++++++++++ .../webui-vue/0002-Login-languages-list.patch | 6 +- .../webui/webui-vue/login-aside-vector.svg | 8 +++ .../webui/webui-vue/login-main-vector.svg | 8 +++ .../recipes-phosphor/webui/webui-vue_%.bbappend | 10 ++- 6 files changed, 108 insertions(+), 42 deletions(-) delete mode 100644 meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand-width.patch create mode 100644 meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand.patch create mode 100644 meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/login-aside-vector.svg create mode 100644 meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/login-main-vector.svg diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand-width.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand-width.patch deleted file mode 100644 index bdcb8ddc7f..0000000000 --- a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand-width.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 4d8254ef05b5dba035940f3194ef09f1a8770dc9 Mon Sep 17 00:00:00 2001 -From: "Andrey V.Kosteltsev" -Date: Wed, 16 Mar 2022 03:55:19 +0300 -Subject: [PATCH] Set login brand width - ---- - src/layouts/LoginLayout.vue | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/src/layouts/LoginLayout.vue b/src/layouts/LoginLayout.vue -index cdff204..46939e1 100644 ---- a/src/layouts/LoginLayout.vue -+++ b/src/layouts/LoginLayout.vue -@@ -5,7 +5,7 @@ -
- - --- -2.33.0 - diff --git a/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand.patch b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand.patch new file mode 100644 index 0000000000..25c894531b --- /dev/null +++ b/meta-ibs/meta-cp2-5422/recipes-phosphor/webui/webui-vue/0001-Set-login-brand.patch @@ -0,0 +1,82 @@ +From 244844b723c7e3f11dd5ec217c60ae48231c273c Mon Sep 17 00:00:00 2001 +From: "Andrey V.Kosteltsev" +Date: Fri, 10 Jun 2022 07:51:39 +0300 +Subject: [PATCH 1/2] Set login brand + +--- + src/layouts/LoginLayout.vue | 25 +++++++++++++++++++------ + 1 file changed, 19 insertions(+), 6 deletions(-) + +diff --git a/src/layouts/LoginLayout.vue b/src/layouts/LoginLayout.vue +index cdff204..a26a819 100644 +--- a/src/layouts/LoginLayout.vue ++++ b/src/layouts/LoginLayout.vue +@@ -2,10 +2,17 @@ +
+