1*4882a593Smuzhiyunmake init script be able to automatically load EDAC module. 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunUpstream-Status: Inappropriate [embedded specific] 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunSigned-off-by: Roy.Li <rongqing.li@windriver.com> 6*4882a593Smuzhiyun--- 7*4882a593Smuzhiyun src/etc/edac.init.in | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 8*4882a593Smuzhiyun 1 file changed, 47 insertions(+), 2 deletions(-) 9*4882a593Smuzhiyun 10*4882a593Smuzhiyundiff --git a/src/etc/edac.init.in b/src/etc/edac.init.in 11*4882a593Smuzhiyunindex 7a51da9..5b568c4 100644 12*4882a593Smuzhiyun--- a/src/etc/edac.init.in 13*4882a593Smuzhiyun+++ b/src/etc/edac.init.in 14*4882a593Smuzhiyun@@ -42,7 +42,6 @@ for dir in "$sysconfdir/default" "$sysconfdir/sysconfig"; do 15*4882a593Smuzhiyun [ -f "$dir/$SERVICE" ] && . "$dir/$SERVICE" 16*4882a593Smuzhiyun done 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun- 19*4882a593Smuzhiyun ############################################################################### 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun service_start () 22*4882a593Smuzhiyun@@ -52,6 +51,46 @@ service_start () 23*4882a593Smuzhiyun # Assume that if EDAC_DRIVER is not set, then EDAC is configured 24*4882a593Smuzhiyun # automatically, thus return successfully, but don't do anything. 25*4882a593Smuzhiyun # 26*4882a593Smuzhiyun+ if [ ! -f /etc/edac/edac-driver ]; then 27*4882a593Smuzhiyun+ [ -d /sys/bus/edac/devices/mc/mc0 ] && \ 28*4882a593Smuzhiyun+ echo `lsmod | grep _edac | cut -d" " -f1` > /etc/edac/edac-driver 29*4882a593Smuzhiyun+ fi 30*4882a593Smuzhiyun+ 31*4882a593Smuzhiyun+ [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver` 32*4882a593Smuzhiyun+ 33*4882a593Smuzhiyun+ if [ -z "$EDAC_DRIVER" ]; then 34*4882a593Smuzhiyun+ 35*4882a593Smuzhiyun+ DRIVER_PATH=/lib/modules/`uname -r`/kernel/drivers/edac 36*4882a593Smuzhiyun+ oldpath=`pwd` 37*4882a593Smuzhiyun+ if [ -d $DRIVER_PATH ]; then 38*4882a593Smuzhiyun+ 39*4882a593Smuzhiyun+ cd $DRIVER_PATH 40*4882a593Smuzhiyun+ 41*4882a593Smuzhiyun+ for i in $(/bin/ls | /usr/bin/cut -d. -f1) ; do 42*4882a593Smuzhiyun+ /sbin/modprobe $i 2>/dev/null 43*4882a593Smuzhiyun+ if [ -d /sys/bus/edac/devices/mc/mc0 ]; then 44*4882a593Smuzhiyun+ echo $i> /etc/edac/edac-driver 45*4882a593Smuzhiyun+ EDAC_DRIVER=$i 46*4882a593Smuzhiyun+ break 47*4882a593Smuzhiyun+ fi 48*4882a593Smuzhiyun+ /sbin/modprobe -r $i 2>/dev/null 49*4882a593Smuzhiyun+ done 50*4882a593Smuzhiyun+ 51*4882a593Smuzhiyun+ cd "$oldpath" 52*4882a593Smuzhiyun+ 53*4882a593Smuzhiyun+ 54*4882a593Smuzhiyun+ if [ -z "$EDAC_DRIVER" ]; then 55*4882a593Smuzhiyun+ echo "This board may not support EDAC, or EDAC module may not be compiled in" 56*4882a593Smuzhiyun+ exit 57*4882a593Smuzhiyun+ fi 58*4882a593Smuzhiyun+ 59*4882a593Smuzhiyun+ else 60*4882a593Smuzhiyun+ echo "This board may not support EDAC, or EDAC module may not be compiled in" 61*4882a593Smuzhiyun+ exit 62*4882a593Smuzhiyun+ fi 63*4882a593Smuzhiyun+ 64*4882a593Smuzhiyun+ fi 65*4882a593Smuzhiyun+ 66*4882a593Smuzhiyun if [ -n "$EDAC_DRIVER" ]; then 67*4882a593Smuzhiyun echo -n "Starting ${SERVICE}: " 68*4882a593Smuzhiyun modprobe $EDAC_DRIVER 69*4882a593Smuzhiyun@@ -76,12 +115,15 @@ service_start () 70*4882a593Smuzhiyun service_stop () 71*4882a593Smuzhiyun { 72*4882a593Smuzhiyun echo -n "Disabling ${SERVICE}: " 73*4882a593Smuzhiyun+ 74*4882a593Smuzhiyun+ [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver` 75*4882a593Smuzhiyun+ 76*4882a593Smuzhiyun if [ -n "$EDAC_DRIVER" ]; then 77*4882a593Smuzhiyun modprobe -r $EDAC_DRIVER 78*4882a593Smuzhiyun STATUS=$? 79*4882a593Smuzhiyun [ $STATUS -eq 0 ] && echo success || echo failure 80*4882a593Smuzhiyun else 81*4882a593Smuzhiyun- echo "Not supported for this configuration." 82*4882a593Smuzhiyun+ echo "Not supported for this configuration, or EDAC Module is not loaded." 83*4882a593Smuzhiyun STATUS=6 84*4882a593Smuzhiyun fi 85*4882a593Smuzhiyun } 86*4882a593Smuzhiyun@@ -92,6 +134,9 @@ service_status () 87*4882a593Smuzhiyun { 88*4882a593Smuzhiyun # Print the current status of the service. Required by LSB. 89*4882a593Smuzhiyun # 90*4882a593Smuzhiyun+ [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver` 91*4882a593Smuzhiyun+ [ -z "$EDAC_DRIVER" ] && STATUS=1 && exit 92*4882a593Smuzhiyun+ 93*4882a593Smuzhiyun edac-ctl --status 94*4882a593Smuzhiyun STATUS=0 95*4882a593Smuzhiyun } 96*4882a593Smuzhiyun-- 97*4882a593Smuzhiyun1.7.10.4 98*4882a593Smuzhiyun 99