microcode_ctl/microcode_ctl.init

74 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
# chkconfig: 2345 0 99
# description: script to apply cpu microcode
# Check that we're a priviledged user
[ `id -u` = 0 ] || exit 0
DATAFILE=/lib/firmware/microcode.dat
. /etc/init.d/functions
RETVAL=0
# perform the update
function start ()
{
RETVAL=1
# Make sure we are on an Intel machine
vendor=`grep "^vendor_id" /proc/cpuinfo | head -n1 | awk -F ": " '{ print $2 }'`
[ "$vendor" != "GenuineIntel" ] && return
# Microcode wasn't available until 686's.
family=`grep "^cpu family" /proc/cpuinfo | head -n1 | awk -F ": " '{ print $2 }'`
[ $family -lt 6 ] && return
echo -n $"Applying Intel CPU microcode update: "
if [ ! -e $DATAFILE ]; then
echo $"$0: CPU microcode data file not present ($DATAFILE)"
exit 1
fi
/sbin/modprobe microcode
lt=0
while [ ! -c /dev/cpu/microcode ]; do
lt=$[lt+1];
[ $lt -gt 5 ] && break;
sleep 0.1;
done
/sbin/microcode_ctl -Qu
RETVAL=$?
/sbin/rmmod microcode
return $RETVAL
}
stop()
{
}
case "$1" in
start)
start
exit 0
;;
stop)
stop
;;
restart|reload|force-reload)
stop
start
;;
status)
;;
*)
echo $"Usage: $0 {start|stop|restart}"
exit 1
esac
exit $?