1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
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
|