99 lines
2.8 KiB
Diff
99 lines
2.8 KiB
Diff
make init script be able to automatically load EDAC module.
|
|
|
|
Upstream-Status: Inappropriate [embedded specific]
|
|
|
|
Signed-off-by: Roy.Li <rongqing.li@windriver.com>
|
|
---
|
|
src/etc/edac.init.in | 49 +++++++++++++++++++++++++++++++++++++++++++++++--
|
|
1 file changed, 47 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/src/etc/edac.init.in b/src/etc/edac.init.in
|
|
index 7a51da9..5b568c4 100644
|
|
--- a/src/etc/edac.init.in
|
|
+++ b/src/etc/edac.init.in
|
|
@@ -42,7 +42,6 @@ for dir in "$sysconfdir/default" "$sysconfdir/sysconfig"; do
|
|
[ -f "$dir/$SERVICE" ] && . "$dir/$SERVICE"
|
|
done
|
|
|
|
-
|
|
###############################################################################
|
|
|
|
service_start ()
|
|
@@ -52,6 +51,46 @@ service_start ()
|
|
# Assume that if EDAC_DRIVER is not set, then EDAC is configured
|
|
# automatically, thus return successfully, but don't do anything.
|
|
#
|
|
+ if [ ! -f /etc/edac/edac-driver ]; then
|
|
+ [ -d /sys/bus/edac/devices/mc/mc0 ] && \
|
|
+ echo `lsmod | grep _edac | cut -d" " -f1` > /etc/edac/edac-driver
|
|
+ fi
|
|
+
|
|
+ [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver`
|
|
+
|
|
+ if [ -z "$EDAC_DRIVER" ]; then
|
|
+
|
|
+ DRIVER_PATH=/lib/modules/`uname -r`/kernel/drivers/edac
|
|
+ oldpath=`pwd`
|
|
+ if [ -d $DRIVER_PATH ]; then
|
|
+
|
|
+ cd $DRIVER_PATH
|
|
+
|
|
+ for i in $(/bin/ls | /usr/bin/cut -d. -f1) ; do
|
|
+ /sbin/modprobe $i 2>/dev/null
|
|
+ if [ -d /sys/bus/edac/devices/mc/mc0 ]; then
|
|
+ echo $i> /etc/edac/edac-driver
|
|
+ EDAC_DRIVER=$i
|
|
+ break
|
|
+ fi
|
|
+ /sbin/modprobe -r $i 2>/dev/null
|
|
+ done
|
|
+
|
|
+ cd "$oldpath"
|
|
+
|
|
+
|
|
+ if [ -z "$EDAC_DRIVER" ]; then
|
|
+ echo "This board may not support EDAC, or EDAC module may not be compiled in"
|
|
+ exit
|
|
+ fi
|
|
+
|
|
+ else
|
|
+ echo "This board may not support EDAC, or EDAC module may not be compiled in"
|
|
+ exit
|
|
+ fi
|
|
+
|
|
+ fi
|
|
+
|
|
if [ -n "$EDAC_DRIVER" ]; then
|
|
echo -n "Starting ${SERVICE}: "
|
|
modprobe $EDAC_DRIVER
|
|
@@ -76,12 +115,15 @@ service_start ()
|
|
service_stop ()
|
|
{
|
|
echo -n "Disabling ${SERVICE}: "
|
|
+
|
|
+ [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver`
|
|
+
|
|
if [ -n "$EDAC_DRIVER" ]; then
|
|
modprobe -r $EDAC_DRIVER
|
|
STATUS=$?
|
|
[ $STATUS -eq 0 ] && echo success || echo failure
|
|
else
|
|
- echo "Not supported for this configuration."
|
|
+ echo "Not supported for this configuration, or EDAC Module is not loaded."
|
|
STATUS=6
|
|
fi
|
|
}
|
|
@@ -92,6 +134,9 @@ service_status ()
|
|
{
|
|
# Print the current status of the service. Required by LSB.
|
|
#
|
|
+ [ -f /etc/edac/edac-driver ] && EDAC_DRIVER=`cat /etc/edac/edac-driver`
|
|
+ [ -z "$EDAC_DRIVER" ] && STATUS=1 && exit
|
|
+
|
|
edac-ctl --status
|
|
STATUS=0
|
|
}
|
|
--
|
|
1.7.10.4
|
|
|