cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

kvm-recheck.sh (2748B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0+
      3#
      4# Given the results directories for previous KVM-based torture runs,
      5# check the build and console output for errors.  Given a directory
      6# containing results directories, this recursively checks them all.
      7#
      8# Usage: kvm-recheck.sh resdir ...
      9#
     10# Returns status reflecting the success or not of the last run specified.
     11#
     12# Copyright (C) IBM Corporation, 2011
     13#
     14# Authors: Paul E. McKenney <paulmck@linux.ibm.com>
     15
     16T=/tmp/kvm-recheck.sh.$$
     17trap 'rm -f $T' 0 2
     18
     19PATH=`pwd`/tools/testing/selftests/rcutorture/bin:$PATH; export PATH
     20. functions.sh
     21for rd in "$@"
     22do
     23	firsttime=1
     24	dirs=`find $rd -name Make.defconfig.out -print | sort | sed -e 's,/[^/]*$,,' | sort -u`
     25	for i in $dirs
     26	do
     27		if test -n "$firsttime"
     28		then
     29			firsttime=""
     30			resdir=`echo $i | sed -e 's,/$,,' -e 's,/[^/]*$,,'`
     31			head -1 $resdir/log
     32		fi
     33		TORTURE_SUITE="`cat $i/../torture_suite`"
     34		configfile=`echo $i | sed -e 's,^.*/,,'`
     35		rm -f $i/console.log.*.diags
     36		case "${TORTURE_SUITE}" in
     37		X*)
     38			;;
     39		*)
     40			kvm-recheck-${TORTURE_SUITE}.sh $i
     41		esac
     42		if test -f "$i/qemu-retval" && test "`cat $i/qemu-retval`" -ne 0 && test "`cat $i/qemu-retval`" -ne 137
     43		then
     44			echo QEMU error, output:
     45			cat $i/qemu-output
     46		elif test -f "$i/console.log"
     47		then
     48			if test -f "$i/qemu-retval" && test "`cat $i/qemu-retval`" -eq 137
     49			then
     50				echo QEMU killed
     51			fi
     52			configcheck.sh $i/.config $i/ConfigFragment > $T 2>&1
     53			cat $T
     54			if test -r $i/Make.oldconfig.err
     55			then
     56				cat $i/Make.oldconfig.err
     57			fi
     58			parse-build.sh $i/Make.out $configfile
     59			parse-console.sh $i/console.log $configfile
     60			if test -r $i/Warnings
     61			then
     62				cat $i/Warnings
     63			fi
     64		else
     65			if test -f "$i/buildonly"
     66			then
     67				echo Build-only run, no boot/test
     68				configcheck.sh $i/.config $i/ConfigFragment
     69				parse-build.sh $i/Make.out $configfile
     70			elif test -f "$i/qemu-cmd"
     71			then
     72				print_bug qemu failed
     73				echo "   $i"
     74			else
     75				print_bug Build failed
     76				echo "   $i"
     77			fi
     78		fi
     79	done
     80	if test -f "$rd/kcsan.sum"
     81	then
     82		if ! test -f $T
     83		then
     84			:
     85		elif grep -q CONFIG_KCSAN=y $T
     86		then
     87			echo "Compiler or architecture does not support KCSAN!"
     88			echo Did you forget to switch your compiler with '--kmake-arg CC=<cc-that-supports-kcsan>'?
     89		elif test -s "$rd/kcsan.sum"
     90		then
     91			echo KCSAN summary in $rd/kcsan.sum
     92		else
     93			echo Clean KCSAN run in $rd
     94		fi
     95	fi
     96done
     97EDITOR=echo kvm-find-errors.sh "${@: -1}" > $T 2>&1
     98builderrors="`tr ' ' '\012' < $T | grep -c '/Make.out.diags'`"
     99if test "$builderrors" -gt 0
    100then
    101	echo $builderrors runs with build errors.
    102	ret=1
    103fi
    104runerrors="`tr ' ' '\012' < $T | grep -c '/console.log.diags'`"
    105if test "$runerrors" -gt 0
    106then
    107	echo $runerrors runs with runtime errors.
    108	ret=2
    109fi
    110exit $ret