Update Intel microcode include files from their web page.
This still requires someone to adjust the #includes in the model_XXX_init.c files but with a script we're getting closer to automate the update of 3rd party files. Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Myles Watson <mylesgw@gmail.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5593 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
f71fca0a7f
commit
89ef0a9f41
|
@ -0,0 +1,107 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# This file is part of the coreboot project.
|
||||
#
|
||||
# Copyright (C) 2007-2010 coresystems GmbH
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
MICROCODE_VERSION=20100209
|
||||
MICROCODE_ARCHIVE=microcode-$MICROCODE_VERSION.tgz
|
||||
MICROCODE_FILE=microcode-$MICROCODE_VERSION.dat
|
||||
INTEL_MICROCODE=http://downloadmirror.intel.com/18683/eng/$MICROCODE_ARCHIVE
|
||||
|
||||
#
|
||||
# Getting Intel(R) Microcode
|
||||
#
|
||||
|
||||
get_microcode() {
|
||||
printf "Getting microcode...\n"
|
||||
wget -nv $INTEL_MICROCODE
|
||||
tar xzf $MICROCODE_ARCHIVE
|
||||
}
|
||||
|
||||
#
|
||||
# Creating separate files per microcode
|
||||
#
|
||||
|
||||
separate_microcode() {
|
||||
printf "Separating microcode...\n"
|
||||
csplit -s -n4 -k microcode-20100209.dat '/^\/\*.*\.inc.*\*\//' '{500}' 2> /dev/null
|
||||
mv xx0000 header.inc
|
||||
perl -pi -e 's,\ \ \ \ \ \ \ ,\ ,' header.inc
|
||||
perl -pi -e 's,^,/,g' header.inc
|
||||
perl -pi -e 's,^//\*,/\*,' header.inc
|
||||
for i in xx????; do
|
||||
name="`head -1 $i`"
|
||||
name=${name%??}
|
||||
name=${name:2}
|
||||
name=$( echo $name )
|
||||
name=microcode-${name%.inc}.h
|
||||
cat header.inc $i > $name
|
||||
done
|
||||
rm -f xx???? header.inc
|
||||
}
|
||||
|
||||
#
|
||||
# Dump CPUIDs from all separated files
|
||||
#
|
||||
|
||||
dump_cpuids() {
|
||||
ls -1 microcode-*.h | while read F; do
|
||||
CPUID="$( echo $( head -36 $F |tail -1|cut -d, -f4|sed s,0x,, ) | sed 's/0*//')"
|
||||
echo "$CPUID:$F"
|
||||
done
|
||||
}
|
||||
|
||||
#
|
||||
# Move microcode to target positions
|
||||
#
|
||||
|
||||
move_microcode() {
|
||||
printf "Moving microcode...\n"
|
||||
dump_cpuids | sort | while read N; do
|
||||
ID=$( echo $N | cut -d: -f1 )
|
||||
F=$( echo $N | cut -d: -f2 )
|
||||
|
||||
if [ -d ../model_$ID ]; then
|
||||
echo "Model: $ID Microcode: $F"
|
||||
mv $F ../model_$ID/$F
|
||||
else
|
||||
ID2=${ID%?}x
|
||||
if [ -d ../model_$ID2 ]; then
|
||||
echo "Model: $ID($ID2) Microcode: $F (copied)"
|
||||
mv $F ../model_$ID2/$F
|
||||
else
|
||||
ID1=${ID%??}xx
|
||||
if [ -d ../model_$ID1 ]; then
|
||||
echo "Model: $ID($ID1) Microcode: $F (copied)"
|
||||
mv $F ../model_$ID1/$F
|
||||
else
|
||||
echo "Model: $ID Microcode: $F (erased)"
|
||||
rm -f $F
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
get_microcode
|
||||
separate_microcode
|
||||
move_microcode
|
||||
|
||||
rm -f $MICROCODE_ARCHIVE
|
||||
rm -f $MICROCODE_FILE
|
||||
|
Loading…
Reference in New Issue