Merge pull request #167 from mdmillerii/enable-vuart-driver
linux: turn on vuart driver
diff --git a/meta-phosphor/common/recipes-phosphor/dbus/obmc-mapper.bb b/meta-phosphor/common/recipes-phosphor/dbus/obmc-mapper.bb
index b9df28a..ab6dc98 100644
--- a/meta-phosphor/common/recipes-phosphor/dbus/obmc-mapper.bb
+++ b/meta-phosphor/common/recipes-phosphor/dbus/obmc-mapper.bb
@@ -18,6 +18,6 @@
"
SRC_URI += "git://github.com/openbmc/phosphor-objmgr"
-SRCREV = "3f7aa329568d8f191baeeefa4a63dbb19cf26338"
+SRCREV = "956dd44fe5c8377ec90cef393f65033d59e082b0"
S = "${WORKDIR}/git"
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-event.bb b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-event.bb
index 6cdf398..4f59e99 100644
--- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-event.bb
+++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-event/obmc-phosphor-event.bb
@@ -9,10 +9,11 @@
inherit obmc-phosphor-sdbus-service
inherit obmc-phosphor-c-daemon
+TARGET_CPPFLAGS += "-std=c++11 -fpic"
SRC_URI += "git://github.com/openbmc/phosphor-event"
-SRCREV = "aa9ec3aa2cc59fc7e2437041d89b19f4a8f1d7f0"
+SRCREV = "01ac3503dc97fb99bee9c25c23fe73a5f4ea0475"
RDEPENDS_${PN} += "libsystemd"
DEPENDS += "systemd"
@@ -22,6 +23,7 @@
INSTALL_NAME = "event_messaged"
do_install() {
+ install -d ${D}/var/lib/obmc/events/
install -m 0755 -d ${D}${sbindir}
install -m 0755 ${S}/${INSTALL_NAME} ${D}/${sbindir}/obmc-phosphor-eventd
}
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
index 0dc4c35..6750de3 100644
--- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
+++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-init.sh
@@ -1,12 +1,13 @@
#!/bin/sh
+fslist="proc sys dev run"
rodir=run/initramfs/ro
rwdir=run/initramfs/rw
upper=$rwdir/cow
work=$rwdir/work
cd /
-mkdir -p sys proc dev run
+mkdir -p $fslist
mount dev dev -tdevtmpfs
mount sys sys -tsysfs
mount proc proc -tproc
@@ -29,6 +30,34 @@
echo $m
}
+debug_takeover() {
+ echo "$@"
+ test -n "$@" && echo Enter password to try to manually fix.
+ cat << HERE
+After fixing run exit to continue this script, or reboot -f to retry, or
+touch /takeover and exit to become PID 1 allowing editing of this script.
+HERE
+
+ while ! sulogin && ! test -f /takeover
+ do
+ echo getty failed, retrying
+ done
+
+ # Touch /takeover in the above getty to become pid 1
+ if test -e /takeover
+ then
+ cat << HERE
+
+Takeover of init requested. Executing /bin/sh as PID 1.
+When finished exec new init or cleanup and run reboot -f.
+
+Warning: No job control! Shell exit will panic the system!
+HERE
+ export PS1=init#\
+ exec /bin/sh
+ fi
+}
+
env=$(findmtd u-boot-env)
if test -n $env
then
@@ -39,47 +68,80 @@
rofs=$(findmtd rofs)
rwfs=$(findmtd rwfs)
+rodev=/dev/mtdblock${rofs#mtd}
+rwdev=/dev/mtdblock${rwfs#mtd}
+
rofst=squashfs
rwfst=ext4
+roopts=ro
+rwopts=rw
+
+init=/sbin/init
+fsck=/sbin/fsck.$rwfst
+fsckopts=-a
echo rofs = $rofs $rofst rwfs = $rwfs $rwfst
-if grep -w debug-init-sh /proc/cmdline ||
- ! mount -o rw /dev/mtdblock${rwfs#mtd} $rwdir -t $rwfst
+if grep -w debug-init-sh /proc/cmdline
then
- echo Please mount the rw file system on $rwdir from this shell
- while ! sulogin && ! test -f /takeover
+ debug_takeover "Debug initial shell requested by command line."
+fi
+
+mount $rodev $rodir -t $rofst -o $roopts
+
+if test -x $rodir$fsck
+then
+ for fs in $fslist
do
- echo getty failed, retrying
+ mount --bind $fs $rodir/$fs
done
+ chroot $rodir $fsck $fsckopts $rwdev
+ rc=$?
+ for fs in $fslist
+ do
+ umount $rodir/$fs
+ done
+ if test $rc -gt 1
+ then
+ debug_takeover "fsck of read-write fs on $rwdev failed (rc=$rc)"
+ fi
+else
+ echo "No '$fsck' in read only fs, skipping fsck."
fi
-# Touch /takeover in the above getty to become pid 1
-if test -e /takeover
+if ! mount $rwdev $rwdir -t $rwfst -o $rwopts
then
- export PS1=init#\
- exec /bin/sh
-fi
+ msg="$(cat)" << HERE
-mount -o ro /dev/mtdblock${rofs#mtd} $rodir -t $rofst
+Mounting read-write $rwdev filesystem failed. Please fix and run
+ mount $rwdev $rwdir -t $rwfs -o $rwopts
+to to continue, or do change nothing to run from RAM for this boot.
+HERE
+ debug_takeover "$msg"
+fi
rm -rf $work
-mkdir -p $upper
-mkdir -p $work
+mkdir -p $upper $work
mount -t overlay -o lowerdir=$rodir,upperdir=$upper,workdir=$work cow /root
-if ! chroot /root /bin/sh -c exit
-then
- echo 'chroot test failed; invoking emergency shell.'
- PS1=rescue#\ sulogin
-fi
+while ! chroot /root /bin/sh -c "test -x '$init' -a -s '$init'"
+do
+ msg="$(cat)" << HERE
-for f in sys dev proc run
+Unable to confirm /sbin/init is an executable non-empty file
+in merged file system mounted at /root.
+
+Change Root test failed! Invoking emergency shell.
+HERE
+ debug_takeover "$msg"
+done
+
+for f in $fslist
do
mount --move $f root/$f
done
-# switch_root /root /sbin/init
-exec chroot /root /sbin/init
+# switch_root /root $init
+exec chroot /root $init
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh
index cc076fd..3eff1ea 100644
--- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh
+++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-shutdown.sh
@@ -5,34 +5,41 @@
export PS1=shutdown-sh#\
# exec bin/sh
+cd /
if [ ! -e /proc/mounts ]
then
mkdir -p /proc
- mount proc proc -tproc
+ mount proc /proc -tproc
umount_proc=1
else
umount_proc=
fi
-# remove an empty oldroot, that means we are not invoked from systemd-shutdown
+# Remove an empty oldroot, that means we are not invoked from systemd-shutdown
rmdir /oldroot 2>/dev/null
+# Move /oldroot/run to /mnt in case it has the underlying rofs loop mounted.
+# Ordered before /oldroot the overlay is unmounted before the loop mount
+mkdir -p /mnt
+mount --move /oldroot/run /mnt
+
set -x
-for f in $( awk '/oldroot/ { print $2 }' < /proc/mounts | sort -r )
+for f in $( awk '/oldroot|mnt/ { print $2 }' < /proc/mounts | sort -r )
do
umount $f
done
set +x
-if test -s /run/fw_env -a -c /run/mtd:u-boot-env -a ! -e /image-u-boot-env &&
+image=/run/initramfs/image-
+if test -s /run/fw_env -a -c /run/mtd:u-boot-env -a ! -e ${image}u-boot-env &&
! cmp /run/mtd:u-boot-env /run/fw_env
then
- ln -s /run/fw_env /image-u-boot-env
+ ln -sn /run/fw_env ${image}u-boot-env
fi
-if test -x /update && ls image-* > /dev/null 2>&1
+if test -x /update && ls $image* > /dev/null 2>&1
then
- exec /update ${1+"$@"}
+ /update ${1+"$@"}
fi
echo Remaining mounts:
@@ -41,7 +48,6 @@
test "umount_proc" && umount /proc && rmdir /proc
-
# Execute the command systemd told us to ...
if test -d /oldroot && test "$1"
then
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-update.sh b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-update.sh
index 1122e83..face06d 100755
--- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-update.sh
+++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/obmc-update.sh
@@ -35,72 +35,69 @@
echo $m
}
-rofs=$(findmtd rofs)
rwfs=$(findmtd rwfs)
-rofst=squahsfs
+rwdev=/dev/mtdblock${rwfs#mtd}
rwfst=ext4
+rwopts=rw
+rorwopts=ro${rwopts#rw}
+
+rwdir=rw
+upper=$rwdir/cow
+save=save/${upper##*/}
if test -n "$rwfs" && test -s whitelist
then
- mkdir -p rw
- mount /dev/mtdblock${rwfs#mtd} rw -oro -t $rwfst
+ mkdir -p $rwdir
+ mount $rwdev $rwdir -t $rwfst -o $rorwopts
while read f
do
- if ! test -e rw/cow/$f
+ if ! test -e $upper/$f
then
continue
fi
- d="save/cow/$f"
+ d="$save/$f"
mkdir -p "${d%/*}"
- cp -rp rw/cow/$f "${d%/*}/"
+ cp -rp $upper/$f "${d%/*}/"
done < whitelist
- umount rw
+ umount $rwdir
fi
-
-for f in image-*
+image=/run/initramfs/image-
+for f in $image*
do
- m=$(findmtd ${f#image-})
+ m=$(findmtd ${f#$image})
if test -z "$m"
then
- echo 1>&2 "Unable to find mtd partiton for $f"
+ echo 1>&2 "Unable to find mtd partiton for ${f##*/}."
exec /bin/sh
fi
done
-for f in image-*
+for f in $image*
do
- m=$(findmtd ${f#image-})
- echo "Updating ${f#image-}"
+ m=$(findmtd ${f#$image})
+ echo "Updating ${f#$image}..."
# flasheraseall /dev/$m && dd if=$f of=/dev/$m
flashcp -v $f /dev/$m
done
-
-if test -d save/cow
+if test -d $save
then
- mount /dev/mtdblock${rwfs#mtd} rw -o rw -t $rwfst
- cp -rp save/cow/. rw/cow/
- umount rw
+ mount $rwdev $rwdir -t $rwfst -o $rwopts
+ cp -rp $save/. $upper/
+ umount $rwdir
fi
-# Execute the command systemd told us to ...
-if test -d /oldroot && test -x "/sbin/$1" && test -f "/sbin/$1"
-then
- if test "$1" == kexec
- then
- /sbin/$1 -f -e
- else
- /sbin/$1 -f
- fi
-fi
+exit
+# NOT REACHED without edit
+# NOT REACHED without edit
-echo "Execute ${1-reboot} -f if all is ok"
+echo "Flash completed. Inspect, cleanup and reboot -f to continue."
export PS1=update-sh#\
exec /bin/sh
diff --git a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/whitelist b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/whitelist
index 80f9c81..603cec7 100644
--- a/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/whitelist
+++ b/meta-phosphor/common/recipes-phosphor/obmc-phosphor-initfs/files/whitelist
@@ -6,3 +6,4 @@
/etc/group
/etc/shadow
/etc/gshadow
+/var/lib/obmc/events/