diff options
Diffstat (limited to 'meta-openbmc-mods/meta-common/recipes-core')
13 files changed, 354 insertions, 291 deletions
diff --git a/meta-openbmc-mods/meta-common/recipes-core/at-scale-debug/files/com.intel.AtScaleDebug.service b/meta-openbmc-mods/meta-common/recipes-core/at-scale-debug/files/com.intel.AtScaleDebug.service index a7c238ffe..4411de11c 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/at-scale-debug/files/com.intel.AtScaleDebug.service +++ b/meta-openbmc-mods/meta-common/recipes-core/at-scale-debug/files/com.intel.AtScaleDebug.service @@ -9,5 +9,4 @@ ExecStart={bindir}/asd Type=simple SyslogIdentifier=asd -[Install] -WantedBy=multi-user.target + diff --git a/meta-openbmc-mods/meta-common/recipes-core/crashdump/crashdump_git.bb b/meta-openbmc-mods/meta-common/recipes-core/crashdump/crashdump_git.bb index 9d3883d3a..6d2bfa88e 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/crashdump/crashdump_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-core/crashdump/crashdump_git.bb @@ -13,7 +13,7 @@ LICENSE = "Proprietary" LIC_FILES_CHKSUM = "file://LICENSE;md5=26bb6d0733830e7bab774914a8f8f20a" SRC_URI = "git://github.com/Intel-BMC/crashdump;protocol=git" -SRCREV = "0.4" +SRCREV = "0.5" S = "${WORKDIR}/git" diff --git a/meta-openbmc-mods/meta-common/recipes-core/fw-update/files/fwupd.sh b/meta-openbmc-mods/meta-common/recipes-core/fw-update/files/fwupd.sh index 03dac7582..17923b84d 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/fw-update/files/fwupd.sh +++ b/meta-openbmc-mods/meta-common/recipes-core/fw-update/files/fwupd.sh @@ -1,263 +1,355 @@ #!/bin/sh -SSH_ID=$HOME/.ssh/id_rsa.db -[ -e $HOME/.fwupd.defaults ] && source $HOME/.fwupd.defaults +log() { + echo "$@" +} -usage() { - echo "usage: $(basename $0) uri" - echo " uri is something like: file:///path/to/fw" - echo " tftp://tftp.server.ip.addr/path/to/fw" - echo " scp://[user@]scp.server.ip.addr:/path/to/fw" - echo " http[s]://web.server.ip.addr/path/to/fw" - echo " ftp://[user@]ftp.server.ip.addr/path/to/fw" - exit 1 +FWTYPE="" +FWVER="" +redfish_log_fw_evt() { + local evt=$1 + local sev="" + local msg="" + [ -z "$FWTYPE" ] && return + [ -z "$FWVER" ] && return + case "$evt" in + start) + evt=OpenBMC.0.1.FirmwareUpdateStarted + msg="${FWTYPE} firmware update to version ${FWVER} started." + sev=OK + ;; + success) + evt=OpenBMC.0.1.FirmwareUpdateCompleted + msg="${FWTYPE} firmware update to version ${FWVER} completed successfully." + sev=OK + ;; + abort) + evt=OpenBMC.0.1.FirmwareUpdateFailed + msg="${FWTYPE} firmware update to version ${FWVER} failed." + sev=Warning + ;; + *) return ;; + esac + logger-systemd --journald <<-EOF + MESSAGE=$msg + PRIORITY=2 + SEVERITY=${sev} + REDFISH_MESSAGE_ID=${evt} + REDFISH_MESSAGE_ARGS=${FWTYPE},${FWVER} + EOF } -logevent_update_started() { -echo -cat <<EOF | logger-systemd --journald -REDFISH_MESSAGE_ID=OpenBMC.0.1.FirmwareUpdateStarted -PRIORITY=2 -MESSAGE=$1 firmware update to version $2 started. -REDFISH_MESSAGE_ARGS=$1,$2 -EOF +wait_for_log_sync() +{ + sync + sleep 5 } -logevent_update_completed() { -echo -cat <<EOF | logger-systemd --journald -REDFISH_MESSAGE_ID=OpenBMC.0.1.FirmwareUpdateCompleted -PRIORITY=2 -MESSAGE=$1 firmware update to version $2 completed. -REDFISH_MESSAGE_ARGS=$1,$2 -EOF +PFR_BUS=4 +PFR_ADDR=0x38 +PFR_ID_REG=0x00 +PFR_STATE_REG=0x03 +PFR_PROV_REG=0x0a +PFR_INTENT_REG=0x13 +pfr_read() { + [ $# -ne 1 ] && return 1 + local reg=$1 + i2cget -y $PFR_BUS $PFR_ADDR $reg 2>/dev/null } -logevent_update_failed() { -echo -cat <<EOF | logger-systemd --journald -REDFISH_MESSAGE_ID=OpenBMC.0.1.FirmwareUpdateFailed -PRIORITY=4 -MESSAGE=$1 firmware update to version $2 failed. -REDFISH_MESSAGE_ARGS=$1,$2 -EOF +pfr_write() { + [ $# -ne 2 ] && return 1 + local reg=$1 + local val=$2 + i2cset -y $PFR_BUS $PFR_ADDR $reg $val >&/dev/null } -if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then usage; fi -if [ $# -eq 0 ]; then - # set DEFURI in $HOME/.fwupd.defaults - URI="$DEFURI" -else - if [[ "$1" == *"/"* ]]; then - URI=$1 # local file - local_file=1 ; +pfr_active_update() { + local factory_reset="" + systemctl stop nv-sync.service || \ + log "BMC NV sync failed to stop" + # transition from non-PFR to PFR image requires factory reset + [ ! -e /usr/share/pfr ] && factory_reset="-r" + mtd-util $factory_reset pfr write $LOCAL_PATH + redfish_log_fw_evt success + # only wait for logging if not transitioning from non-PFR to PFR + if [ -e /usr/share/pfr ]; then + # exit bmc no nv mode + systemctl start nv-sync.service || log "failed to start nv-sync" + wait_for_log_sync + fi + reboot +} + +pfr_staging_update() { + log "Updating $(basename $TGT)" + flash_erase $TGT $erase_offset $blk_cnt + log "Writing $(stat -c "%s" "$LOCAL_PATH") bytes" + # cat "$LOCAL_PATH" > "$TGT" + dd bs=4k seek=$(($erase_offset / 0x1000)) if=$LOCAL_PATH of=$TGT 2>/dev/null + + # remove the updated image from /tmp + rm -f $LOCAL_PATH + redfish_log_fw_evt success + log "Setting update intent in PFR CPLD" + wait_for_log_sync + + # write to PFRCPLD about BMC update intent. + pfr_write 0x13 $upd_intent_val +} + +pfr_active_mode() { + # check for 0xde in register file 0 + local id=$(pfr_read $PFR_ID_REG) || return 1 + [ "$id" == "0xde" ] || return 1 + local state=$(pfr_read $PFR_STATE_REG) || return 1 + local prov=$(pfr_read $PFR_PROV_REG) || return 1 + prov=$((prov & 0x20)) + [ "$prov" == "32" ] && return 0 + return 1 +} + +blk0blk1_update() { + # PFR-style image update section + # read the image type from the uploaded image + # Byte at location 0x8 gives image type + TGT="/dev/mtd/image-stg" + img_type=$(hexdump -s 8 -n 1 -e '/1 "%02x\n"' $LOCAL_PATH) + log "image-type=$img_type" + + if [ $local_file -eq 0 ]; then + img_type_str=$(busctl get-property xyz.openbmc_project.Software.BMC.Updater /xyz/openbmc_project/software/$img_obj xyz.openbmc_project.Software.Version Purpose | cut -d " " -f 2 | cut -d "." -f 6 | sed 's/.\{1\}$//') + img_target=$(busctl get-property xyz.openbmc_project.Software.BMC.Updater /xyz/openbmc_project/software/$img_obj xyz.openbmc_project.Software.Activation RequestedActivation | cut -d " " -f 2| cut -d "." -f 6 | sed 's/.\{1\}$//') else - URI="file:////tmp/images/$1/image-runtime" - local_file=0 ; + img_type_str='BMC' + img_target='Active' fi -fi -PROTO=$(echo "$URI" | sed 's,\([a-z]*\)://.*$,\1,') -REMOTE=$(echo "$URI" | sed 's,.*://\(.*\)$,\1,') -REMOTE_HOST=$(echo "$REMOTE" | sed 's,\([^/]*\)/.*$,\1,') -if [ "$PROTO" = 'scp' ]; then - REMOTE_PATH=$(echo "$REMOTE" | cut -d':' -f2) -else - REMOTE_PATH=$(echo "$REMOTE" | sed 's,[^/]*/\(.*\)$,\1,') -fi -LOCAL_PATH="/tmp/$(basename $REMOTE_PATH)" -echo "URI=$URI" -echo "PROTO=$PROTO" -echo "REMOTE=$REMOTE" -echo "REMOTE_HOST=$REMOTE_HOST" -echo "REMOTE_PATH=$REMOTE_PATH" -echo "LOCAL_PATH=$LOCAL_PATH" -if [ ! -e $LOCAL_PATH ] || [ $(stat -c %s $LOCAL_PATH) -eq 0 ]; then - echo "Download '$REMOTE_PATH' from $PROTO $REMOTE_HOST $REMOTE_PATH" - case "$PROTO" in - scp) - mkdir -p $HOME/.ssh - if [ -e "$SSH_ID" ]; then - ARG_ID="-i $SSH_ID" - fi - scp $ARG_ID $REMOTE_HOST$REMOTE_PATH $LOCAL_PATH - if [ $? -ne 0 ]; then - echo "scp $REMOTE $LOCAL_PATH failed!" - exit 255 + apply_time=$(busctl get-property xyz.openbmc_project.Settings /xyz/openbmc_project/software/apply_time xyz.openbmc_project.Software.ApplyTime RequestedApplyTime | cut -d " " -f 2 | cut -d "." -f 6 | sed 's/.\{1\}$//') + log "image-name=$img_type_str" + log "image-target=$img_target" + log "apply_time=$apply_time" + + case "$img_type" in + 04) + if [ "$img_type_str" == 'BMC' ]; then + # BMC image - max size 32MB + log "BMC firmware image" + img_size=33554432 + if [ "$img_target" == 'StandbySpare' ]; then + upd_intent_val=0x10 + else + upd_intent_val=0x08 fi - ;; - tftp) - cd /tmp - tftp -g -r "$REMOTE_PATH" "$REMOTE_HOST" - if [ $? -ne 0 ]; then - echo "tftp -g -r \"$REMOTE_PATH\" \"$REMOTE_HOST\" failed!" - exit 255 + erase_offset=0 + FWTYPE="BMC" + FWVER="${RANDOM}-fixme" + else + # log error the image selected for update is not same as downloaded. + log "Mismatch: image selected for update and image parsed are different" + redfish_log_fw_evt abort + return 1 + fi + ;; + 00) + if [ "$img_type_str" == 'Other' ]; then + log "CPLD firmware image" + # CPLD image- max size 1MB + img_size=1048576 + if [ "$img_target" == 'StandbySpare' ]; then + upd_intent_val=0x20 + else + upd_intent_val=0x04 fi - ;; - http|https|ftp) - wget --no-check-certificate "$URI" -O "$LOCAL_PATH" - if [ $? -ne 0 ]; then - echo "wget $URI failed!" - exit 255 + erase_offset=0x3000000 + FWTYPE="CPLD" + FWVER="${RANDOM}-fixme" + else + # log error the image selected for update is not same as downloaded. + log "Mismatch: image selected for update and image parsed are different" + redfish_log_fw_evt abort + return 1 + fi + ;; + 02) + if [ "$img_type_str" = 'Host' ]; then + # BIOS image- max size 16MB + log "BIOS firmware image" + img_size=16777216 + if [ "$img_target" == 'StandbySpare' ]; then + upd_intent_val=0x02 + else + upd_intent_val=0x41 fi - ;; - file) - cp "$REMOTE_PATH" "$LOCAL_PATH" - ;; - *) - echo "Invalid URI $URI" - exit 1; - ;; + erase_offset=0x2000000 + # TODO: parse out the fwtype and fwver once that is specified + FWTYPE="BIOS" + FWVER="${RANDOM}-fixme" + else + # log error the image selected for update is not same as downloaded. + log "Mismatch: image selected for update and image parsed are different" + redfish_log_fw_evt abort + return 1 + fi + ;; + *) + log "Unknown image type ${img_type}" + return 1 + ;; esac -fi -# PFR image update section -# this file being created at build time for PFR images -if [ -e /usr/share/pfr ] && [ $local_file -eq 0 ]; then - if [ -e /tmp/fwupd_progress ]; then - echo "Firmware update already in progress" - exit 1 + # For deferred updates + if [ "$apply_time" == 'OnReset' ]; then + upd_intent_val=$(( "$upd_intent_val"|0x80 )) fi -touch /tmp/fwupd_progress - -# read the image type from the uploaded image -# Byte at location 0x8 gives image type -img_type=$(busctl get-property xyz.openbmc_project.Software.BMC.Updater /xyz/openbmc_project/software/$1 xyz.openbmc_project.Software.Version Purpose | cut -d " " -f 2 | cut -d "." -f 6 | sed 's/.\{1\}$//') -img_target=$(busctl get-property xyz.openbmc_project.Software.BMC.Updater /xyz/openbmc_project/software/$1 xyz.openbmc_project.Software.Activation RequestedActivation | cut -d " " -f 2| cut -d "." -f 6 | sed 's/.\{1\}$//') -apply_time=$(busctl get-property xyz.openbmc_project.Settings /xyz/openbmc_project/software/apply_time xyz.openbmc_project.Software.ApplyTime RequestedApplyTime | cut -d " " -f 2 | cut -d "." -f 6 | sed 's/.\{1\}$//') -echo "image-type=$img_type" -echo "image-target=$img_target" -echo "apply_time=$apply_time" -# BMC image - max size 32MB -if [ "$img_type" = 'BMC' ]; then - echo "BMC firmware image" - # 32MB - 33554432 - img_size=33554432 - if [ "$img_target" = 'StandbySpare' ]; then - upd_intent_val=0x10 - else - upd_intent_val=0x08 + # do a quick sanity check on the image + if [ $(stat -c "%s" "$LOCAL_PATH") -gt $img_size ]; then + log "Update file "$LOCAL_PATH" is bigger than the supported image size" + redfish_log_fw_evt abort + return 1 fi - # page is at 4KB boundary - img_page_offset=0 - erase_offset=0 - blk_cnt=0x200 -# CPLD image- max size 4MB -elif [ "$img_type" = 'Other' ]; then - echo "CPLD firmware image" - # 4MB - 4194304 - img_size=4194304 - upd_intent_val=0x04 - # dd command accepts the offset in decimal - # below is the page offset in 4KB boundary - img_page_offset=12288 - erase_offset=0x3000000 - blk_cnt=0x40 -# BIOS image- max size 16MB -elif [ "$img_type" = 'Host' ]; then - echo "BIOS firmware image" - # 16MB- 16777216 - img_size=16777216 - if [ "$img_target" = 'StandbySpare' ]; then - upd_intent_val=0x02 + blk_cnt=$((img_size / 0x10000)) + + if pfr_active_mode; then + # pfr enforcing mode; any b0b1 image type + pfr_staging_update + elif [ "$img_type" == '04' ]; then + # legacy mode; pfr is not present but we got a pfr image + log "Updating BMC active firmware- PFR unprovisioned mode" + pfr_active_update else - upd_intent_val=0x01 + # error; pfr is not present but we got a pfr image, + # an invalid image, or nonBMC image + log "PFR inactive or invalid image type:${img_type}, cowardly refusing to process image" + redfish_log_fw_evt abort + return 1 fi - # dd command accepts the offset in decimal - # below is the page offset in 4KB boundary - img_page_offset=8192 - erase_offset=0x2000000 - blk_cnt=0x100 -else - echo "${img_type}:Unknown image type, exiting the firmware update script" - rm -rf /tmp/fwupd_progress - exit 1 -fi - -if [ "$apply_time" == 'OnReset' ]; then - upd_intent_val=$(( "$upd_intent_val"|0x80 )) -fi - -# do a size check on the image -if [ $(stat -c "%s" "$LOCAL_PATH") -gt $img_size ]; then - echo "Update file "$LOCAL_PATH" is bigger than the supported image size" - rm -rf /tmp/fwupd_progress - exit 1 -fi - -TGT="/dev/mtd/image-stg" -echo "Update $(basename $TGT)" -flash_erase $TGT $erase_offset $blk_cnt -sync -echo "Writing $(stat -c "%s" "$LOCAL_PATH") bytes" -# cat "$LOCAL_PATH" > "$TGT" -dd bs=4k seek=$img_page_offset if=$LOCAL_PATH of=$TGT -sync -echo "Written $(stat -c "%s" "$LOCAL_PATH") bytes" -# remove the updated image from /tmp -rm -f $LOCAL_PATH -echo "Writing $upd_intent_val to update intent register in PFR RoT" -sleep 5 # delay for sync and to get the above echo messages - -# remove the file which used as lock -rm -rf /tmp/fwupd_progress - -# write to PFRCPLD about BMC update intent. -i2cset -y 4 0x38 0x13 $upd_intent_val - -else # Non-PFR image update section -version="unknown" -component="BMC" -manifest_file=$(dirname "${REMOTE_PATH}")"/MANIFEST" -if [ -e $manifest_file ]; then - version=`awk -F= -v key="version" '$1==key {print $2}' $manifest_file` -fi - -logevent_update_started $component $version - -# do a quick sanity check on the image -if [ $(stat -c "%s" "$LOCAL_PATH") -lt 10000000 ]; then - echo "Update file "$LOCAL_PATH" seems to be too small" - logevent_update_failed $component $version - exit 1 -fi -dtc -I dtb -O dtb "$LOCAL_PATH" > /dev/null 2>&1 -if [ $? -ne 0 ]; then - echo "Update file $LOCAL_PATH doesn't seem to be in the proper format" - logevent_update_failed $component $version - exit 1 -fi +} -# guess based on fw_env which partition we booted from -BOOTADDR=$(fw_printenv bootcmd | awk '{print $2}') +ping_pong_update() { + # do a quick sanity check on the image + if [ $(stat -c "%s" "$LOCAL_PATH") -lt 10000000 ]; then + log "Update file "$LOCAL_PATH" seems to be too small" + redfish_log_fw_evt abort + return 1 + fi + dtc -I dtb -O dtb "$LOCAL_PATH" > /dev/null 2>&1 + if [ $? -ne 0 ]; then + log "Update file $LOCAL_PATH doesn't seem to be in the proper format" + redfish_log_fw_evt abort + return 1 + fi -TGT="/dev/mtd/image-a" -if [ ! -e /usr/share/pfr ]; then + # guess based on fw_env which partition we booted from + local BOOTADDR=$(fw_printenv bootcmd | awk '{print $2}') + local TGT="/dev/mtd/image-a" case "$BOOTADDR" in 20080000) TGT="/dev/mtd/image-b"; BOOTADDR="22480000" ;; 22480000) TGT="/dev/mtd/image-a"; BOOTADDR="20080000" ;; *) TGT="/dev/mtd/image-a"; BOOTADDR="20080000" ;; esac -fi -echo "Updating $(basename $TGT) (use bootm $BOOTADDR)" -flash_erase $TGT 0 0 -if [ $? -ne 0 ]; then - echo "Erasing the flash failed" - logevent_update_failed $component $version - exit 1 -fi -echo "Writing $(stat -c "%s" "$LOCAL_PATH") bytes" -cat "$LOCAL_PATH" > "$TGT" -if [ $? -ne 0 ]; then - echo "Writing to flash failed" - logevent_update_failed $component $version - exit 1 -fi -fw_setenv "bootcmd" "bootm ${BOOTADDR}" + log "Updating $(basename $TGT) (use bootm $BOOTADDR)" + flash_erase $TGT 0 0 + log "Writing $(stat -c "%s" "$LOCAL_PATH") bytes" + cat "$LOCAL_PATH" > "$TGT" + fw_setenv "bootcmd" "bootm ${BOOTADDR}" + redfish_log_fw_evt success + wait_for_log_sync + # reboot + reboot +} -logevent_update_completed $component $version +fetch_fw() { + PROTO=$(echo "$URI" | sed 's,\([a-z]*\)://.*$,\1,') + REMOTE=$(echo "$URI" | sed 's,.*://\(.*\)$,\1,') + REMOTE_HOST=$(echo "$REMOTE" | sed 's,\([^/]*\)/.*$,\1,') + if [ "$PROTO" = 'scp' ]; then + REMOTE_PATH=$(echo "$REMOTE" | cut -d':' -f2) + else + REMOTE_PATH=$(echo "$REMOTE" | sed 's,[^/]*/\(.*\)$,\1,') + fi + LOCAL_PATH="/tmp/$(basename $REMOTE_PATH)" + log "PROTO=$PROTO" + log "REMOTE=$REMOTE" + log "REMOTE_HOST=$REMOTE_HOST" + log "REMOTE_PATH=$REMOTE_PATH" + if [ ! -e $LOCAL_PATH ] || [ $(stat -c %s $LOCAL_PATH) -eq 0 ]; then + log "Download '$REMOTE_PATH' from $PROTO $REMOTE_HOST $REMOTE_PATH" + case "$PROTO" in + scp) + mkdir -p $HOME/.ssh + if [ -e "$SSH_ID" ]; then + ARG_ID="-i $SSH_ID" + fi + scp $ARG_ID $REMOTE_HOST$REMOTE_PATH $LOCAL_PATH + if [ $? -ne 0 ]; then + log "scp $REMOTE $LOCAL_PATH failed!" + return 1 + fi + ;; + tftp) + cd /tmp + tftp -g -r "$REMOTE_PATH" "$REMOTE_HOST" + if [ $? -ne 0 ]; then + log "tftp -g -r \"$REMOTE_PATH\" \"$REMOTE_HOST\" failed!" + return 1 + fi + ;; + http|https|ftp) + wget --no-check-certificate "$URI" -O "$LOCAL_PATH" + if [ $? -ne 0 ]; then + log "wget $URI failed!" + return 1 + fi + ;; + file) + LOCAL_PATH=$(echo $URI | sed 's,^file://,,') + ;; + *) + log "Invalid URI $URI" + return 1 + ;; + esac + fi +} -# reboot -reboot +update_fw() { + redfish_log_fw_evt start + # determine firmware file type + local magic=$(hexdump -n 4 -v -e '/1 "%02x"' "$LOCAL_PATH") + case "$magic" in + d00dfeed) ping_pong_update ;; + 19fdeab6) blk0blk1_update ;; + *) log "Uknown file type ${magic}" + esac +} + +# if this script was sourced, just return without executing anything +[ "$_" != "$0" ] && return 0 >&/dev/null + +usage() { + echo "usage: $(basename $0) uri" + echo " uri is something like: file:///path/to/fw" + echo " tftp://tftp.server.ip.addr/path/to/fw" + echo " scp://[user@]scp.server.ip.addr:/path/to/fw" + echo " http[s]://web.server.ip.addr/path/to/fw" + echo " ftp://[user@]ftp.server.ip.addr/path/to/fw" + exit 1 +} + +if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then usage; fi +if [ $# -eq 0 ]; then + # set DEFURI in $HOME/.fwupd.defaults + URI="$DEFURI" +else + if [[ "$1" == *"/"* ]]; then + URI=$1 # local file + local_file=1 ; + else + URI="file:////tmp/images/$1/image-runtime" + img_obj=$1 + local_file=0 ; + fi fi +fetch_fw && update_fw 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 7c994053e..007a4aece 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 @@ -7,7 +7,7 @@ RDEPENDS_intel-fw-update += "mtd-utils" # wget tftp scp RDEPENDS_intel-fw-update += "busybox dropbear" # mkfs.vfat, parted -RDEPENDS_intel-fw-update += "dosfstools" +RDEPENDS_intel-fw-update += "dosfstools dtc" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://${INTELBASE}/COPYING.apache-2.0;md5=34400b68072d710fecd0a2940a0d1658" diff --git a/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_git.bb b/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_git.bb index faa08a58c..6b6d58bfc 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-core/host-error-monitor/host-error-monitor_git.bb @@ -7,7 +7,7 @@ SRC_URI = "git://github.com/Intel-BMC/host-error-monitor.git;protocol=ssh" DEPENDS = "boost sdbusplus libgpiod libpeci" PV = "0.1+git${SRCPV}" -SRCREV = "ba7c4e08b423dc71bb8dcb963942cba860cdf7d4" +SRCREV = "4215c9de1b5fc3f86f2a2538f04675fc0ee12086" S = "${WORKDIR}/git" diff --git a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/0001-Smbus-changes-for-libmctp.patch b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/0001-Smbus-changes-for-libmctp.patch index 88da437fc..7bba22ede 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/0001-Smbus-changes-for-libmctp.patch +++ b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/0001-Smbus-changes-for-libmctp.patch @@ -1,31 +1,29 @@ -From 40303196d9f07b71042cd7ba87dcab6fdad29422 Mon Sep 17 00:00:00 2001 +From ab1634441f4dd218486f6bb3b94e90e2110ccc2a Mon Sep 17 00:00:00 2001 From: Nikhil Potade <nikhil.potade@linux.intel.com> Date: Tue, 19 Feb 2019 14:16:20 +0800 Subject: [PATCH 1/1] Smbus changes for libmctp Signed-off-by: James Feist <james.feist@linux.intel.com> --- - CMakeLists.txt | 6 ++++-- + CMakeLists.txt | 5 +++-- core.c | 2 ++ libmctp.h | 40 ++++++++++++++++++++++++++++++++++++++++ - 3 files changed, 46 insertions(+), 2 deletions(-) + 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt -index a5b1042..249b12b 100644 +index f3f05bd..7991b11 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -2,8 +2,9 @@ cmake_minimum_required (VERSION 3.5 FATAL_ERROR) - - add_definitions (-DMCTP_LOG_STDERR) - add_definitions (-DMCTP_HAVE_FILEIO) -+add_definitions (-DMCTP_DEFAULT_ALLOC) +@@ -5,7 +5,7 @@ add_definitions (-DMCTP_HAVE_FILEIO) + add_definitions (-DMCTP_HAVE_STDIO) + add_definitions (-DMCTP_DEFAULT_ALLOC) -add_library (libmctp STATIC alloc.c core.c log.c libmctp.h serial.c) +add_library (libmctp STATIC alloc.c core.c log.c libmctp.h serial.c smbus.c crc32c.c) target_include_directories (libmctp PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> -@@ -18,5 +19,6 @@ add_executable (test_seq tests/test_seq.c tests/test-utils.c) +@@ -20,5 +20,6 @@ add_executable (test_seq tests/test_seq.c tests/test-utils.c) target_link_libraries (test_seq libmctp) install (TARGETS libmctp DESTINATION lib) @@ -34,7 +32,7 @@ index a5b1042..249b12b 100644 + include) diff --git a/core.c b/core.c -index 61356e9..622bc5e 100644 +index f8abbb1..79a681c 100644 --- a/core.c +++ b/core.c @@ -17,6 +17,7 @@ @@ -54,7 +52,7 @@ index 61356e9..622bc5e 100644 #ifndef BUILD_ASSERT #define BUILD_ASSERT(x) \ diff --git a/libmctp.h b/libmctp.h -index b36a943..4f211f9 100644 +index 69ec46a..b7212be 100644 --- a/libmctp.h +++ b/libmctp.h @@ -15,6 +15,7 @@ extern "C" { @@ -71,9 +69,9 @@ index b36a943..4f211f9 100644 #define MCTP_HDR_TAG_MASK (0x7) +/* clang-format on */ - /* Baseline maximum size of a MCTP packet */ - #define MCTP_BMTU_PAYLOAD 64 - #define MCTP_BMTU (MCTP_BMTU_PAYLOAD + sizeof(struct mctp_hdr)) + /* Baseline Transmission Unit and packet size */ + #define MCTP_BTU 64 + #define MCTP_PACKET_SIZE(unit) ((unit) + sizeof(struct mctp_hdr)) +#define MCTP_CONTROL_MESSAGE_TYPE 0x00 + diff --git a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/libmctp-smbus.h b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/libmctp-smbus.h index 5ecaa6b74..67690bcb3 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/libmctp-smbus.h +++ b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/libmctp-smbus.h @@ -20,6 +20,10 @@ int mctp_smbus_read(struct mctp_binding_smbus *smbus); int mctp_smbus_open_bus(struct mctp_binding_smbus *smbus, int out_bus_num, int root_bus_num); void mctp_smbus_free(struct mctp_binding_smbus *smbus); +int mctp_smbus_open_in_bus(struct mctp_binding_smbus *smbus, int in_bus); +int mctp_smbus_open_out_bus(struct mctp_binding_smbus *smbus, int out_bus); +int mctp_smbus_set_in_fd(struct mctp_binding_smbus *smbus, int fd); +int mctp_smbus_set_out_fd(struct mctp_binding_smbus *smbus, int fd); #ifdef __cplusplus } diff --git a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/smbus.c b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/smbus.c index bbdfe2aa4..2f099a7e5 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/smbus.c +++ b/meta-openbmc-mods/meta-common/recipes-core/interfaces/libmctp/smbus.c @@ -52,6 +52,7 @@ struct mctp_binding_smbus { #define SMBUS_PEC_BYTE_SIZE 1 #define SMBUS_COMMAND_CODE_SIZE 1 #define SMBUS_LENGTH_FIELD_SIZE 1 +#define SMBUS_ADDR_OFFSET_SLAVE 0x1000 struct mctp_smbus_header_tx { uint8_t source_slave_address; @@ -312,7 +313,7 @@ int mctp_smbus_open_in_bus(struct mctp_binding_smbus *smbus, int in_bus) snprintf(filename, size, "/sys/bus/i2c/devices/i2c-%d/%d-%04x/slave-mqueue", in_bus, - in_bus, (address_7_bit << 8) + address_7_bit); + in_bus, SMBUS_ADDR_OFFSET_SLAVE | address_7_bit); ret = open(filename, O_RDONLY | O_NONBLOCK | O_CLOEXEC); if (ret >= 0) { @@ -333,7 +334,7 @@ int mctp_smbus_open_in_bus(struct mctp_binding_smbus *smbus, int in_bus) mqueue_size = sizeof(slave_mqueue); snprintf(slave_mqueue, mqueue_size, "slave-mqueue %#04x", - (address_7_bit << 8) + address_7_bit); + SMBUS_ADDR_OFFSET_SLAVE | address_7_bit); size = write(fd, slave_mqueue, mqueue_size); close(fd); @@ -345,7 +346,7 @@ int mctp_smbus_open_in_bus(struct mctp_binding_smbus *smbus, int in_bus) size = sizeof(filename); snprintf(filename, size, "/sys/bus/i2c/devices/i2c-%d/%d-%04x/slave-mqueue", in_bus, - in_bus, (address_7_bit << 8) + address_7_bit); + in_bus, SMBUS_ADDR_OFFSET_SLAVE | address_7_bit); return open(filename, O_RDONLY | O_NONBLOCK | O_CLOEXEC); } @@ -375,7 +376,7 @@ int mctp_smbus_open_bus(struct mctp_binding_smbus *smbus, int out_bus_num, snprintf(filename, size, "/sys/bus/i2c/devices/i2c-%d/%d-%04x/slave-mqueue", root_bus_num, root_bus_num, - (address_7_bit << 8) + address_7_bit); + SMBUS_ADDR_OFFSET_SLAVE | address_7_bit); smbus->in_fd = open(filename, O_RDONLY | O_NONBLOCK | O_CLOEXEC); if (smbus->in_fd < 0) { @@ -394,7 +395,7 @@ int mctp_smbus_open_bus(struct mctp_binding_smbus *smbus, int out_bus_num, mqueue_size = sizeof(slave_mqueue); snprintf(slave_mqueue, mqueue_size, "slave-mqueue %#04x", - (address_7_bit << 8) + address_7_bit); + SMBUS_ADDR_OFFSET_SLAVE | address_7_bit); size = write(fd, slave_mqueue, mqueue_size); close(fd); @@ -408,7 +409,7 @@ int mctp_smbus_open_bus(struct mctp_binding_smbus *smbus, int out_bus_num, snprintf(filename, size, "/sys/bus/i2c/devices/i2c-%d/%d-%04x/slave-mqueue", root_bus_num, root_bus_num, - (address_7_bit << 8) + address_7_bit); + SMBUS_ADDR_OFFSET_SLAVE | address_7_bit); smbus->in_fd = open(filename, O_RDONLY | O_NONBLOCK | O_CLOEXEC); 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 132db31c7..97ce1179f 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 = "34b9b3d82b049610775aea4460ff0f3bb9f02b1d" +SRCREV = "b6516a083c622a76e3e485f56b743b2a63171881" 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 0cb5bd52e..eeafa0222 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 @@ -1,4 +1,5 @@ EXTRA_OECMAKE += "${@bb.utils.contains('IMAGE_FSTYPES', 'intel-pfr', '-DINTEL_PFR_ENABLED=ON', '', d)}" 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 = "38b58f5866602906833f7afc864dd2729516dd7f" +SRCREV = "849c319f95bfc5b76b1731cadbf95c24093aa53c" diff --git a/meta-openbmc-mods/meta-common/recipes-core/ipmi/ipmi-providers.bb b/meta-openbmc-mods/meta-common/recipes-core/ipmi/ipmi-providers.bb deleted file mode 100644 index 939efa75f..000000000 --- a/meta-openbmc-mods/meta-common/recipes-core/ipmi/ipmi-providers.bb +++ /dev/null @@ -1,32 +0,0 @@ -SUMMARY = "Intel IPMI Providers" -DESCRIPTION = "IPMI Provider Libraries" - -SRC_URI = "git://github.com/Intel-BMC/intel-ipmi-providers;protocol=ssh" -SRCREV = "b2c6184269e3bdf601c38f716ac7ee73379af71b" - -S = "${WORKDIR}/git" -PV = "0.1+git${SRCPV}" - -DEPENDS = "boost phosphor-ipmi-host intel-ipmi-oem systemd microsoft-gsl" - -inherit cmake obmc-phosphor-ipmiprovider-symlink - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://LICENSE;md5=2ee41112a44fe7014dce33e26468ba93" - -EXTRA_OECMAKE="-DENABLE_TEST=0 -DYOCTO=1" - -LIBRARY_NAMES += "libmtmcmds.so" -LIBRARY_NAMES += "libsmbioshandler.so" -LIBRARY_NAMES += "libzbridgecmd.so" -LIBRARY_NAMES += "libsmbiosmdrv2.so" -LIBRARY_NAMES += "libfwupdcmds.so" - -HOSTIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}" -NETIPMI_PROVIDER_LIBRARY += "${LIBRARY_NAMES}" - -FILES_${PN}_append = " ${libdir}/ipmid-providers/lib*${SOLIBS}" -FILES_${PN}_append = " ${libdir}/host-ipmid/lib*${SOLIBS}" -FILES_${PN}_append = " ${libdir}/net-ipmid/lib*${SOLIBS}" -FILES_${PN}-dev_append = " ${libdir}/ipmid-providers/lib*${SOLIBSDEV}" - diff --git a/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_git.bb b/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_git.bb index 5ec8669e6..5a49156da 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_git.bb +++ b/meta-openbmc-mods/meta-common/recipes-core/libpeci/libpeci_git.bb @@ -5,7 +5,7 @@ inherit cmake SRC_URI = "git://github.com/Intel-BMC/provingground.git;protocol=ssh" PV = "0.1+git${SRCPV}" -SRCREV = "5a03fdc6a119b65ecf320622ce2809e340749fa9" +SRCREV = "bee56d62b209088454d166d1efae4825a2b175df" S = "${WORKDIR}/git/libpeci" diff --git a/meta-openbmc-mods/meta-common/recipes-core/safec/safec_3.4.bb b/meta-openbmc-mods/meta-common/recipes-core/safec/safec_3.4.bb index a09c8ac2d..449dcf04d 100644 --- a/meta-openbmc-mods/meta-common/recipes-core/safec/safec_3.4.bb +++ b/meta-openbmc-mods/meta-common/recipes-core/safec/safec_3.4.bb @@ -7,7 +7,7 @@ SECTION = "lib" inherit autotools pkgconfig S = "${WORKDIR}/git" -SRCREV = "60786283fd61cd621a5d1df00e083a1c1e3cf52a" +SRCREV = "a7da29dadadde04feec174f595b59d67a64f3956" SRC_URI = "git://github.com/rurban/safeclib.git" COMPATIBLE_HOST = '(x86_64|i.86|powerpc|powerpc64|arm|aarch64).*-linux' |