Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) #! /bin/sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) # Randy Dunlap <rdunlap@infradead.org>, 2018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) # Thorsten Leemhuis <linux@leemhuis.info>, 2018
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) usage()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) 	cat <<EOF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) usage: ${0##*/}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11)        ${0##*/} <int>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) Call without parameters to decode /proc/sys/kernel/tainted.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) Call with a positive integer as parameter to decode a value you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) retrieved from /proc/sys/kernel/tainted on another system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) EOF
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) if [ "$1"x != "x" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) 	if  [ "$1"x == "--helpx" ] || [ "$1"x == "-hx" ] ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) 		usage
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 		exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) 	elif  [ $1 -ge 0 ] 2>/dev/null ; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) 		taint=$1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) 	else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 		echo "Error: Parameter '$1' not a positive interger. Aborting." >&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) 		exit 1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) 	fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) 	TAINTFILE="/proc/sys/kernel/tainted"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33) 	if [ ! -r $TAINTFILE ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 		echo "No file: $TAINTFILE"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 		exit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	taint=`cat $TAINTFILE`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) if [ $taint -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	echo "Kernel not Tainted"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 	exit
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) 	echo "Kernel is \"tainted\" for the following reasons:"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) T=$taint
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) out=
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) addout() {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) 	out=$out$1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 	addout "G"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) 	addout "P"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 	echo " * proprietary module was loaded (#0)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 	addout "F"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) 	echo " * module was force loaded (#1)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) 	addout "S"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75) 	echo " * SMP kernel oops on an officially SMP incapable processor (#2)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 	addout "R"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) 	echo " * module was force unloaded (#3)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 	addout "M"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) 	echo " * processor reported a Machine Check Exception (MCE) (#4)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98) 	addout "B"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 	echo " * bad page referenced or some unexpected page flags (#5)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) 	addout "U"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) 	echo " * taint requested by userspace application (#6)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	addout "D"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	echo " * kernel died recently, i.e. there was an OOPS or BUG (#7)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	addout "A"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	echo " * an ACPI table was overridden by user (#8)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	addout "W"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	echo " * kernel issued warning (#9)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) 	addout "C"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 	echo " * staging driver was loaded (#10)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) 	addout "I"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) 	echo " * workaround for bug in platform firmware applied (#11)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	addout "O"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	echo " * externally-built ('out-of-tree') module was loaded  (#12)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) 	addout "E"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) 	echo " * unsigned module was loaded (#13)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) 	addout "L"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) 	echo " * soft lockup occurred (#14)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) 	addout "K"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) 	echo " * kernel has been live patched (#15)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) 	addout "X"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) 	echo " * auxiliary taint, defined for and used by distros (#16)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) T=`expr $T / 2`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) if [ `expr $T % 2` -eq 0 ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192) 	addout " "
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193) else
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) 	addout "T"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) 	echo " * kernel was built with the struct randomization plugin (#17)"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) echo "For a more detailed explanation of the various taint flags see"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) echo " Documentation/admin-guide/tainted-kernels.rst in the the Linux kernel sources"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) echo " or https://kernel.org/doc/html/latest/admin-guide/tainted-kernels.html"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) echo "Raw taint value as int/string: $taint/'$out'"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) #EOF#