Hi, > >> +prlog -n "Checking pstore backend is registered ... " > >> +be_msg=`dmesg | grep "pstore: Registered [a-zA-Z0-9]\+ as persistent store backend$"` > >> +if [ $? -eq 0 ]; then > >> + backend=`echo ${be_msg} | sed -e 's/^.*Registered\ \([a-zA-z0-9-]\+\)\ as.*$/\1/g'` > >> + prlog "ok" > >> +else > >> + prlog "FAIL" > >> + exit 1 It may be good if you can log "/sys/module/pstore/parameters/backend/" or /proc/cmdline in failure case. It makes debug easy. Seiji > >> +fi > -----Original Message----- > From: 豊岡拓 / Toyooka,Hiraku > Sent: Tuesday, September 15, 2015 11:31 AM > To: Kees Cook > Cc: LKML; Tony Luck; Linux API; Anton Vorontsov; Shuah Khan; Mark Salyzyn; Colin Cross; 阿口誠司 / AGUCHI,SEIJI > Subject: Re: [PATCH 1/2] selftests/pstore: add pstore test script for pre-reboot > > Hello, Kees, > > Thank you for your advise. > > >> +be_msg=`dmesg | grep "pstore: Registered [a-zA-Z0-9]\+ as > persistent store backend$"` > ... > > This seems unstable if the system hasn't booted recently or if stuff > > is spamming dmesg. What about examining /sys/module/pstore instead? > > OK, I'll update in that way. > > Best regards, > Hiraku Toyooka > > Kees Cook wrote: > > On Tue, Sep 8, 2015 at 4:06 AM, Hiraku Toyooka > > <hiraku.toyooka.gu@xxxxxxxxxxx> wrote: > >> The pstore_tests script includes test cases which check pstore's > >> behavior before crash (and reboot). > >> > >> The test cases are currently following. > >> > >> - Check pstore backend is registered > >> - Check pstore console is registered > >> - Check /dev/pmsg0 exists > >> - Write string to /dev/pmsg0 > >> > >> Example usage is following. > >> > >> make: Entering directory '/home/root/selftests/pstore' > >> === Pstore unit tests (pstore_tests)=== > >> Checking pstore backend is registered ... ok > >> Checking pstore console is registered ... ok > >> Checking /dev/pmsg0 exists ... ok > >> Writing TEST_STRING to /dev/pmsg0 ... ok > >> selftests: pstore_tests [PASS] > >> === Pstore unit tests (pstore_post_reboot_tests)=== > >> Checking pstore backend is registered ... ok > >> pstore_crash_test has not been executed yet. we skip further tests. > >> selftests: pstore_post_reboot_tests [PASS] > >> make: Leaving directory '/home/root/selftests/pstore' > >> > >> We can also see test logs later. > >> > >> Signed-off-by: Hiraku Toyooka <hiraku.toyooka.gu@xxxxxxxxxxx> > >> Cc: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx> > >> Cc: Tony Luck <tony.luck@xxxxxxxxx> > >> Cc: Anton Vorontsov <anton@xxxxxxxxxx> > >> Cc: Colin Cross <ccross@xxxxxxxxxxx> > >> Cc: Kees Cook <keescook@xxxxxxxxxxxx> > >> Cc: Mark Salyzyn <salyzyn@xxxxxxxxxxx> > >> Cc: Seiji Aguchi <seiji.aguchi@xxxxxxx> > >> Cc: linux-kernel@xxxxxxxxxxxxxxx > >> Cc: linux-api@xxxxxxxxxxxxxxx > >> --- > >> tools/testing/selftests/Makefile | 1 + > >> tools/testing/selftests/pstore/Makefile | 12 +++++++ > >> tools/testing/selftests/pstore/common_tests | 45 +++++++++++++++++++++++++++ > >> tools/testing/selftests/pstore/pstore_tests | 42 +++++++++++++++++++++++++ > >> 4 files changed, 100 insertions(+) > >> create mode 100644 tools/testing/selftests/pstore/Makefile > >> create mode 100755 tools/testing/selftests/pstore/common_tests > >> create mode 100755 tools/testing/selftests/pstore/pstore_tests > >> > >> diff --git a/tools/testing/selftests/Makefile b/tools/testing/selftests/Makefile > >> index 24ae9e8..b58c72e 100644 > >> --- a/tools/testing/selftests/Makefile > >> +++ b/tools/testing/selftests/Makefile > >> @@ -12,6 +12,7 @@ TARGETS += mount > >> TARGETS += mqueue > >> TARGETS += net > >> TARGETS += powerpc > >> +TARGETS += pstore > >> TARGETS += ptrace > >> TARGETS += seccomp > >> TARGETS += size > >> diff --git a/tools/testing/selftests/pstore/Makefile b/tools/testing/selftests/pstore/Makefile > >> new file mode 100644 > >> index 0000000..40b887d > >> --- /dev/null > >> +++ b/tools/testing/selftests/pstore/Makefile > >> @@ -0,0 +1,12 @@ > >> +# Makefile for pstore selftests. > >> +# Expects pstore backend is registered. > >> + > >> +all: > >> + > >> +TEST_PROGS := pstore_tests > >> +TEST_FILES := common_tests > >> + > >> +include ../lib.mk > >> + > >> +clean: > >> + rm -rf logs/* > >> diff --git a/tools/testing/selftests/pstore/common_tests b/tools/testing/selftests/pstore/common_tests > >> new file mode 100755 > >> index 0000000..98611c5 > >> --- /dev/null > >> +++ b/tools/testing/selftests/pstore/common_tests > >> @@ -0,0 +1,45 @@ > >> +#!/bin/sh > >> + > >> +# common_tests - Shell script commonly used by pstore test scripts > >> +# > >> +# Copyright (C) Hitachi Ltd., 2015 > >> +# Written by Hiraku Toyooka <hiraku.toyooka.gu@xxxxxxxxxxx> > >> +# > >> +# Released under the terms of the GPL v2. > >> + > >> +# Utilities > >> +errexit() { # message > >> + echo "Error: $1" 1>&2 > >> + exit 1 > >> +} > >> + > >> +absdir() { # file_path > >> + (cd `dirname $1`; pwd) > >> +} > >> + > >> +# Parameters > >> +TOP_DIR=`absdir $0` > >> +LOG_DIR=$TOP_DIR/logs/`date +%Y%m%d-%H%M%S`/ > >> +TEST_STRING="Testing pstore" > >> + > >> +# Preparing logs > >> +LOG_FILE=$LOG_DIR/`basename $0`.log > >> +mkdir -p $LOG_DIR || errexit "Failed to make a log directory: $LOG_DIR" > >> +date > $LOG_FILE > >> +prlog() { # messages > >> + /bin/echo "$@" | tee -a $LOG_FILE > >> +} > >> +prlog "=== Pstore unit tests (`basename $0`)===" > >> + > >> +# Starting tests > >> +rc=0 > >> + > >> +prlog -n "Checking pstore backend is registered ... " > >> +be_msg=`dmesg | grep "pstore: Registered [a-zA-Z0-9]\+ as persistent store backend$"` > >> +if [ $? -eq 0 ]; then > >> + backend=`echo ${be_msg} | sed -e 's/^.*Registered\ \([a-zA-z0-9-]\+\)\ as.*$/\1/g'` > >> + prlog "ok" > >> +else > >> + prlog "FAIL" > >> + exit 1 > >> +fi > > > > This seems unstable if the system hasn't booted recently or if stuff > > is spamming dmesg. What about examining /sys/module/pstore instead? > > > >> diff --git a/tools/testing/selftests/pstore/pstore_tests b/tools/testing/selftests/pstore/pstore_tests > >> new file mode 100755 > >> index 0000000..cbf613c > >> --- /dev/null > >> +++ b/tools/testing/selftests/pstore/pstore_tests > >> @@ -0,0 +1,42 @@ > >> +#!/bin/sh > >> + > >> +# pstore_tests - Check pstore's behavior before crash/reboot > >> +# > >> +# Copyright (C) Hitachi Ltd., 2015 > >> +# Written by Hiraku Toyooka <hiraku.toyooka.gu@xxxxxxxxxxx> > >> +# > >> +# Released under the terms of the GPL v2. > >> + > >> +. ./common_tests > >> + > >> +prlog -n "Checking pstore console is registered ... " > >> +dmesg | grep -q "console \[pstore" > >> +if [ $? -eq 0 ]; then > >> + prlog "ok" > >> +else > >> + prlog "FAIL" > >> +fi > >> + > >> +prlog -n "Checking /dev/pmsg0 exists ... " > >> +if [ -e "/dev/pmsg0" ]; then > >> + prlog "ok" > >> +else > >> + prlog "FAIL" > >> + rc=1 > >> +fi > >> + > >> +prlog -n "Writing TEST_STRING to /dev/pmsg0 ... " > >> +if [ -e "/dev/pmsg0" ]; then > >> + echo "${TEST_STRING}" > /dev/pmsg0 > >> + if [ $? -eq 0 ]; then > >> + prlog "ok" > >> + else > >> + prlog "FAIL" > >> + rc=1 > >> + fi > >> +else > >> + prlog "FAIL" > >> + rc=1 > >> +fi > >> + > >> +exit $rc > >> > > > > -Kees > > > > -- > Hiraku Toyooka > Systems Productivity Research Dept. / Linux Technology Center > Center for Technology Innovation - Systems Engineering, Hitachi Ltd. ��.n��������+%������w��{.n�����{����*jg��������ݢj����G�������j:+v���w�m������w�������h�����٥