diff options
Diffstat (limited to 'meta-openpower/recipes-phosphor/flash')
14 files changed, 1 insertions, 511 deletions
diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios deleted file mode 100644 index ff8818518..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios +++ /dev/null @@ -1,362 +0,0 @@ -#!/bin/sh - -# Get the mtd device number (mtdX) -findmtd() { - m="$(grep -xl "$1" /sys/class/mtd/*/name)" - m="${m%/name}" - m="${m##*/}" - echo "${m}" -} - -# Get the ubi device number (ubiX_Y) -findubi() { - u="$(grep -xl "$1" /sys/class/ubi/ubi?/subsystem/ubi*/name)" - u="${u%/name}" - u="${u##*/}" - echo "${u}" -} - -# Get the mount information -is_mounted() { - grep -q "$1" /proc/mounts - return $? -} - -# Attach the pnor mtd device to ubi. -attach_ubi() { - pnormtd="$(findmtd pnor)" - pnor="${pnormtd#mtd}" - pnordev="/dev/mtd${pnor}" - - if [ -d "/sys/class/ubi/ubi${pnor}" ]; then - # Already attached - return 0 - fi - - ubiattach /dev/ubi_ctrl -m "${pnor}" -d "${pnor}" - rc=$? - if [ ${rc} -ne 0 ]; then - # Check the pnor mtd device is formatted as ubi by reading the first 3 byes, - # which should be the ascii chars 'UBI' - magic="$(hexdump -C -n 3 ${pnordev})" - if [[ "${magic}" =~ "UBI" ]]; then - # Device already formatted as ubi, ubiattach failed for some other reason - return ${rc} - else - # Format device as ubi - echo "Starting ubiformat ${pnordev}" - ubiformat "${pnordev}" -y -q - # Retry the ubiattach - ubiattach /dev/ubi_ctrl -m "${pnor}" -d "${pnor}" - fi - fi -} - -mount_squashfs() { - pnormtd="$(findmtd pnor)" - ubidev="/dev/ubi${pnormtd#mtd}" - mountdir="/media/${name}" - vol="$(findubi "${name}")" - img="/tmp/images/${version}/pnor.xz.squashfs" - filesize="$(ls -sh $img | awk -F " " {'print $1'})" - - if is_mounted "${name}"; then - echo "${name} is already mounted." - return 0 - fi - - if [ ! -z "${vol}" ]; then - ubirmvol "${ubidev}" -N "${name}" - fi - - if [ ! -d "${mountdir}" ]; then - mkdir "${mountdir}" - fi - - # Set size of read-only partition equal to pnor.xz.squashfs - ubimkvol "${ubidev}" -N "${name}" -s "${filesize}"KiB --type=static - vol="$(findubi "${name}")" - - if [ $? != 0 ]; then - echo "Unable to create RO volume!" - return 1 - fi - - ubidevid="${vol#ubi}" - ubiupdatevol "/dev/ubi${ubidevid}" "${img}" - - if [ $? != 0 ]; then - echo "Unable to update RO volume!" - return 1 - fi - - ubiblock --create "/dev/ubi${ubidevid}" - - if [ $? != 0 ]; then - echo "Unable to create UBI block for RO volume!" - return 1 - fi - - mount -t squashfs -o ro "/dev/ubiblock${ubidevid}" "${mountdir}" - - if [ $? != 0 ]; then - echo "Unable to mount RO volume!" - return 1 - fi -} - -mount_ubi() { - pnormtd="$(findmtd pnor)" - pnor="${pnormtd#mtd}" - ubidev="/dev/ubi${pnor}" - pnordev="/dev/mtd${pnor}" - - if [[ "${name}" == "pnor-patch" ]]; then - if [[ "$(fw_printenv fieldmode 2>/dev/null)" == "fieldmode=true" ]]; then - return 0 - fi - if [[ ! "$(hexdump -C -n 3 ${pnordev})" =~ "UBI" ]]; then - return 0 - fi - mountdir="/usr/local/share/pnor" - else - mountdir="/media/${name}" - fi - - if [[ "${name}" == "pnor-prsv" ]]; then - size="2MiB" - else - size="16MiB" - fi - - if [ ! -d "${mountdir}" ]; then - mkdir -p "${mountdir}" - fi - - vol="$(findubi "${name}")" - if [ -z "${vol}" ]; then - ubimkvol "${ubidev}" -N "${name}" -s "${size}" - fi - - if ! is_mounted "${name}"; then - mountdev="ubi${pnor}:${name}" - mount -t ubifs "${mountdev}" "${mountdir}" - fi -} - -umount_ubi() { - pnormtd="$(findmtd pnor)" - pnor="${pnormtd#mtd}" - ubidev="/dev/ubi${pnor}" - mountdir="/media/${name}" - - if is_mounted "${name}"; then - umount "${mountdir}" - fi - - vol="$(findubi "${name}")" - id="${vol##*_}" - if [ -n "${id}" ]; then - ubirmvol "${ubidev}" -n "${id}" - fi - - if [ -d "${mountdir}" ]; then - rm -r "${mountdir}" - fi -} - -remount_ubi() { - pnormtd="$(findmtd pnor)" - pnor="${pnormtd#mtd}" - pnordev="/dev/mtd${pnor}" - - # Re-Attach the pnor mtd device to ubi - if [[ $(hexdump -C -n 3 ${pnordev}) =~ "UBI" ]]; then - ubiattach /dev/ubi_ctrl -m "${pnor}" -d "${pnor}" - else - # Device not formatted as ubi. - return 0 - fi - - # Get information on all ubi volumes - ubinfo=$(ubinfo -d ${pnor}) - presentVolumes=${ubinfo##*:} - IFS=', ' read -r -a array <<< "$presentVolumes" - for element in ${array[@]}; - do - elementProperties=$(ubinfo -d $pnor -n $element) - # Get ubi volume name by getting rid of additional properties - name=${elementProperties#*Name:} - name="${name%Character*}" - name="$(echo -e "${name}" | tr -d '[:space:]')" - - if [[ ${name} == pnor-prsv ]] || [[ ${name} == pnor-rw* ]] || [[ ${name} == pnor-ro* ]]; then - mountdir="/media/${name}" - if [ ! -d "${mountdir}" ]; then - mkdir -p "${mountdir}" - fi - - if [[ ${name} == pnor-ro* ]] - then - ubiblock --create /dev/ubi${pnor}_${element} - mount -t squashfs -o ro "/dev/ubiblock${pnor}_${element}" "${mountdir}" - else - mount -t ubifs "ubi${pnor}:${name}" "${mountdir}" - fi - fi - done -} - -update_symlinks() { - PNOR_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/" - PNOR_RO_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/ro" - PNOR_RO_PREFIX="/media/pnor-ro-" - PNOR_RW_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/rw" - PNOR_RW_PREFIX="/media/pnor-rw-" - PNOR_PRSV_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/prsv" - PNOR_PRSV="/media/pnor-prsv" - PERSISTENCE_PATH="/var/lib/obmc/openpower-pnor-code-mgmt/" - PNOR_PATCH_LOCATION="/usr/local/share/pnor/" - - # Get a list of all active PNOR versions - data="$(ls -d ${PNOR_RO_PREFIX}*)" - IFS=$'\n' array=(${data}) - - currentVersion="" - lowestPriority=255 - for element in ${array[@]}; do - #Remove the PNOR_RO_PREFIX from the path to get version ID. - versionId="${element#${PNOR_RO_PREFIX}}" - - # Get the priority of active versions from persistence files. - if [[ -f "${PERSISTENCE_PATH}${versionId}" ]]; then - data="$(grep -r "priority" ${PERSISTENCE_PATH}${versionId})" - priority="${data: -1}" - if [[ priority -le lowestPriority ]]; then - lowestPriority=${priority} - currentVersion=${versionId} - fi - fi - done - - # Return if no active version found - if [ -z $currentVersion ]; then - return 0; - fi - - if [ ! -d "${PNOR_ACTIVE_PATH}" ]; then - mkdir -p "${PNOR_ACTIVE_PATH}" - fi - - # If the RW or RO active links doesn't point to the version with - # lowest priority, then remove the symlink and create new ones. - if [[ $(readlink -f "${PNOR_RO_ACTIVE_PATH}") != ${PNOR_RO_PREFIX}${currentVersion} ]]; then - rm -f ${PNOR_RO_ACTIVE_PATH} - rm -rf ${PNOR_PATCH_LOCATION}* - ln -sfv ${PNOR_RO_PREFIX}${currentVersion} ${PNOR_RO_ACTIVE_PATH} - fi - - if [[ $(readlink -f "${PNOR_RW_ACTIVE_PATH}") != ${PNOR_RW_PREFIX}${currentVersion} ]]; then - rm -f ${PNOR_RW_ACTIVE_PATH} - ln -sfv ${PNOR_RW_PREFIX}${currentVersion} ${PNOR_RW_ACTIVE_PATH} - fi - - if [[ ! -h ${PNOR_PRSV_ACTIVE_PATH} ]]; then - ln -sfv ${PNOR_PRSV} ${PNOR_PRSV_ACTIVE_PATH} - fi -} - -ubi_cleanup() { - # When ubi_cleanup is run, it expects one or no active version. - activeVersion=$(busctl --list --no-pager tree \ - org.open_power.Software.Host.Updater | \ - grep /xyz/openbmc_project/software/ | tail -c 9) - - if [[ -z "$activeVersion" ]]; then - vols=$(ubinfo -a | grep -e "pnor-ro-" -e "pnor-rw-" | cut -c 14-) - vols=(${vols}) - else - vols=$(ubinfo -a | grep -e "pnor-ro-" -e "pnor-rw-" | \ - grep -v "$activeVersion" | cut -c 14-) - vols=(${vols}) - fi - - for (( index=0; index<${#vols[@]}; index++ )); do - name=${vols[index]} - umount_ubi - done -} - -clear_volatile() { - service=$(mapper get-service /org/open_power/control/volatile) - clearVolatileEnabled=$(busctl get-property $service /org/open_power/control/volatile xyz.openbmc_project.Object.Enable Enabled) - if [[ "$clearVolatileEnabled" != "b true" ]]; then - return 0 - fi - - PNOR_TOC_FILE="pnor.toc" - PNOR_RO_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/ro/" - PNOR_RW_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/rw/" - PNOR_PRSV_ACTIVE_PATH="/var/lib/phosphor-software-manager/pnor/prsv/" - - # toc partition string format: - # partition27=HB_VOLATILE,0x02ba9000,0x02bae000,00,ECC,VOLATILE,READWRITE - tocFilePath="${PNOR_RO_ACTIVE_PATH}${PNOR_TOC_FILE}" - volatiles=($(grep VOLATILE "${tocFilePath}" | grep -Eo '^partition([0-9]+)=([A-Za-z0-9_]+)')) - for (( index=0; index<${#volatiles[@]}; index++ )); do - volatileName="$(echo ${volatiles[${index}]} | awk -F '=' '{print $2}')" - - rwVolatile="${PNOR_RW_ACTIVE_PATH}${volatileName}" - if [ -f "${rwVolatile}" ]; then - echo "Clear $rwVolatile" - rm "${rwVolatile}" - fi - prsvVolatile="${PNOR_PRSV_ACTIVE_PATH}${volatileName}" - if [ -f "${prsvVolatile}" ]; then - echo "Clear $prsvVolatile" - rm "${prsvVolatile}" - fi - done - # Always reset the sensor after clearing - busctl set-property $service /org/open_power/control/volatile xyz.openbmc_project.Object.Enable Enabled b false -} - -case "$1" in - ubiattach) - attach_ubi - ;; - squashfsmount) - name="$2" - version="$3" - mount_squashfs - ;; - ubimount) - name="$2" - mount_ubi - ;; - ubiumount) - name="$2" - umount_ubi - ;; - ubiremount) - remount_ubi - ;; - updatesymlinks) - update_symlinks - ;; - ubicleanup) - ubi_cleanup - ;; - clearvolatile) - clear_volatile - ;; - *) - echo "Invalid argument" - exit 1 - ;; -esac -rc=$? -if [ ${rc} -ne 0 ]; then - echo "$0: error ${rc}" - exit ${rc} -fi diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-check-clearvolatile@.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-check-clearvolatile@.service deleted file mode 100644 index af66b4db9..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-check-clearvolatile@.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Clear the Volatile PNOR partitions in host%i if Enabled -After=obmc-flash-bios-enable-clearvolatile@%i.service -Before=obmc-host-start-pre@%i.target -ConditionPathExists=!/run/openbmc/host@%i-on - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios clearvolatile -SyslogIdentifier=obmc-flash-bios-check-clearvolatile - -[Install] -RequiredBy=obmc-host-startmin@%i.target diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-cleanup.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-cleanup.service deleted file mode 100644 index 07642a0e0..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-cleanup.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Clean up UBI volumes unattached to a Host version - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios ubicleanup -SyslogIdentifier=obmc-flash-bios diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-enable-clearvolatile@.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-enable-clearvolatile@.service deleted file mode 100644 index e040738c7..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-enable-clearvolatile@.service +++ /dev/null @@ -1,14 +0,0 @@ -[Unit] -Description=Enable the clearing of the Volatile PNOR partitions in host%i -After=mapper-wait@-org-open_power-control-volatile.service -Before=obmc-flash-bios-check-clearvolatile@%i.service -ConditionPathExists=!/run/openbmc/host@%i-on - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/bin/sh -c "busctl set-property `mapper get-service /org/open_power/control/volatile` /org/open_power/control/volatile xyz.openbmc_project.Object.Enable Enabled b true" -SyslogIdentifier=obmc-flash-bios-enable-clearvolatile - -[Install] -RequiredBy=obmc-host-start@%i.target diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiattach.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiattach.service deleted file mode 100644 index d0785c9b0..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiattach.service +++ /dev/null @@ -1,8 +0,0 @@ -[Unit] -Description=Attach the PNOR mtd device to UBI - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/bin/env obmc-flash-bios ubiattach -SyslogIdentifier=obmc-flash-bios diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubimount@.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubimount@.service deleted file mode 100644 index d03041dad..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubimount@.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Mount UBIFS volumes pnor-ro-%I, pnor-rw-%I and pnor-prsv -Requires=obmc-flash-bios-ubiattach.service -After=obmc-flash-bios-ubiattach.service -OnFailure=obmc-flash-bios-ubiumount-ro@%i.service obmc-flash-bios-ubiumount-rw@%i.service - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios squashfsmount pnor-ro-%i %i -ExecStart=/usr/bin/env obmc-flash-bios ubimount pnor-rw-%i -ExecStart=/usr/bin/env obmc-flash-bios ubimount pnor-prsv -SyslogIdentifier=obmc-flash-bios diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubipatch.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubipatch.service deleted file mode 100644 index 206d31448..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubipatch.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Create a ubi volume for pnor patches -Before=mboxd.service -Wants=usr-local.mount -After=usr-local.mount - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios ubimount pnor-patch -SyslogIdentifier=obmc-flash-bios diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiremount.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiremount.service deleted file mode 100644 index b66834580..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiremount.service +++ /dev/null @@ -1,13 +0,0 @@ -[Unit] -Description=Remount the squashfs and ubi volumes after a reboot -Wants=org.open_power.Software.Host.Updater.service -Before=org.open_power.Software.Host.Updater.service - -[Service] -Type=oneshot -RemainAfterExit=yes -ExecStart=/usr/bin/env obmc-flash-bios ubiremount -SyslogIdentifier=obmc-flash-bios - -[Install] -WantedBy=multi-user.target diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-ro@.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-ro@.service deleted file mode 100644 index c6dc553f4..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-ro@.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Remove UBIFS volume pnor-ro-%I -Wants=obmc-flash-bios-ubiattach.service -After=obmc-flash-bios-ubiattach.service - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios ubiumount pnor-ro-%i -SyslogIdentifier=obmc-flash-bios diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service deleted file mode 100644 index c0ea8e628..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-ubiumount-rw@.service +++ /dev/null @@ -1,10 +0,0 @@ -[Unit] -Description=Remove UBIFS volume pnor-rw-%I -Wants=obmc-flash-bios-ubiattach.service -After=obmc-flash-bios-ubiattach.service - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios ubiumount pnor-rw-%i -SyslogIdentifier=obmc-flash-bios diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-updatesymlinks.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-updatesymlinks.service deleted file mode 100644 index 8323ccf29..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/obmc-flash-bios-updatesymlinks.service +++ /dev/null @@ -1,16 +0,0 @@ -[Unit] -Description=Updates symlinks for active PNOR version -Before=mboxd.service -Before=mboxd-reload@0.service -After=org.open_power.Software.Host.Updater.service -After=op-reset-chassis-running@0.service -ConditionPathExists=!/run/openbmc/chassis@0-on - -[Service] -Type=oneshot -RemainAfterExit=no -ExecStart=/usr/bin/env obmc-flash-bios updatesymlinks -SyslogIdentifier=obmc-flash-bios - -[Install] -WantedBy=mboxd.service mboxd-reload@.service diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/op-pnor-msl.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/op-pnor-msl.service deleted file mode 100644 index 92c599e93..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/op-pnor-msl.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=OpenPOWER PNOR Minimum Ship Level Verification -After=obmc-flash-bios-updatesymlinks.service - -[Service] -Type=oneshot -ExecStart=/usr/bin/env openpower-pnor-msl -SyslogIdentifier=openpower-pnor-msl -RemainAfterExit=yes - -[Install] -WantedBy=obmc-flash-bios-updatesymlinks.service diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/org.open_power.Software.Host.Updater.service b/meta-openpower/recipes-phosphor/flash/openpower-software-manager/org.open_power.Software.Host.Updater.service deleted file mode 100644 index 493df5618..000000000 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager/org.open_power.Software.Host.Updater.service +++ /dev/null @@ -1,19 +0,0 @@ -[Unit] -Description=OpenPower Software Update Manager -Wants=xyz.openbmc_project.Software.Version.service -Before=xyz.openbmc_project.Software.Version.service -Before=mboxd.service -Wants=obmc-flash-bios-ubipatch.service -Before=obmc-flash-bios-ubipatch.service -Wants=obmc-mapper.target -After=obmc-mapper.target - -[Service] -ExecStart=/usr/bin/env openpower-update-manager -SyslogIdentifier=openpower-update-manager -Restart=always -Type=dbus -BusName={BUSNAME} - -[Install] -WantedBy=multi-user.target diff --git a/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb b/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb index 84647bc38..f753b1298 100644 --- a/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb +++ b/meta-openpower/recipes-phosphor/flash/openpower-software-manager_git.bb @@ -39,7 +39,7 @@ S = "${WORKDIR}/git" SRC_URI += "git://github.com/openbmc/openpower-pnor-code-mgmt" -SRCREV = "b8cb0cc9d9b3253df47bf019a8f028f01110f9ab" +SRCREV = "adf91f58dac9f177a061d9b206d853a9db3db70a" DBUS_SERVICE_${PN} += "org.open_power.Software.Host.Updater.service" |