A question. How is one supposed to make use of this script? As part of my effort to re-enable L2 cache on SECC Pentium 2/3s I'd also split off model_63x, model_65x and model_67x (patch submitted earlier and fell into limbo) and introduce all available microcode to the family. Actually I would like to see one folder and one microcode update file for one family of CPUs. Less overhead on so many fronts - number of files, compiler processing and license headers.
Regards Keith > ------------------------------ > > Message: 3 > Date: Wed, 26 May 2010 19:08:14 +0200 > From: repository service <s...@coreboot.org> > To: coreboot@coreboot.org > Subject: [coreboot] [commit] r5593 - trunk/src/cpu/intel/microcode > Message-ID: <e1ohk5w-0002j4...@ra.coresystems.de> > Content-Type: text/plain; charset=UTF-8 > > Author: stepan > Date: Wed May 26 19:08:13 2010 > New Revision: 5593 > URL: https://tracker.coreboot.org/trac/coreboot/changeset/5593 > > Log: > 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 <ste...@coresystems.de> > Acked-by: Myles Watson <myle...@gmail.com> > > Added: > trunk/src/cpu/intel/microcode/update-microcodes.sh > > Added: trunk/src/cpu/intel/microcode/update-microcodes.sh > ============================================================================== > --- /dev/null 00:00:00 1970 (empty, because file is newly added) > +++ trunk/src/cpu/intel/microcode/update-microcodes.sh Wed May 26 19:08:13 > 2010 (r5593) > @@ -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 > + -- coreboot mailing list: coreboot@coreboot.org http://www.coreboot.org/mailman/listinfo/coreboot