diff options
-rw-r--r-- | system/intel-microcode/README | 63 | ||||
-rw-r--r-- | system/intel-microcode/intel-microcode.SlackBuild | 39 | ||||
-rw-r--r-- | system/intel-microcode/intel-microcode.info | 8 | ||||
-rw-r--r-- | system/intel-microcode/slack-desc | 12 |
4 files changed, 71 insertions, 51 deletions
diff --git a/system/intel-microcode/README b/system/intel-microcode/README index 9eb300f9c0..549d53c700 100644 --- a/system/intel-microcode/README +++ b/system/intel-microcode/README @@ -1,36 +1,45 @@ -Linux Processor Microcode Data File - -The microcode data file contains the latest microcode definitions for all Intel -processors. Intel releases microcode updates to correct processor behavior as -documented in the respective processor specification updates. While the regular -approach to getting this microcode update is via a BIOS upgrade, Intel realizes -that this can be an administrative hassle. The Linux operating system and VMware -ESX products have a mechanism to update the microcode after booting. +CPU microcode is a mechanism to correct certain errata in existing +systems. The normal preferred method to apply microcode updates is +using the system BIOS, but for a subset of Intel processors this +can be done at runtime using the operating system. This package +contains those processors that support OS loading of microcode +updates. + +Linux can update processor microcode very early in the kernel boot +sequence. In situations when the BIOS update isn't available, early +loading is the next best alternative to updating processor microcode. +Microcode states are reset on a power reset, hence it is required to +be updated every time during the boot process. + +Loading microcode using the initrd method is recommended so that +the microcode is loaded at the earliest time for best coverage. +Systems that cannot tolerate downtime may use the late reload +method to update a running system without a reboot. This SlackBuild repackages the official Intel microcode archive. -The "microcode.dat" file is placed under /lib/firmware/microcode.dat and can be -later uploaded using microcode_ctl utility (available from SlackBuilds.org). -This approach (microcode.dat + microcode_ctl) is kept for compatibility reasons -and should be avoided whenever possible. * Use the solution described below. * +NOTES: +1. microcode_ctl utility is no longer supported. + +2. Microcodes with the file names as expected by the Linux kernel + firmware loader are placed under /lib/firmware/intel-ucode + directory. The correct microcode is uploaded when the Intel + microcode driver kernel's module is loaded. -If the iucode_tool (available from SlackBuilds.org) is installed on the system, -this SlackBuild will: +3. An early initramfs archive: /boot/intel-ucode.cpio is created. + This archive can be prepended to the regular initramfs to allow + the kernel to update the processor microcode early during boot. -1) write the microcodes with the file names as expected by the Linux kernel - firmware loader and place them under /lib/firmware/intel-ucode directory. - The correct microcode is uploaded when the Intel microcode kernel's module - is loaded. + For example, on systems using syslinux, this can be done with + a config line that reads something like that: -2) write the microcodes to an early initramfs archive: /boot/intel-ucode.cpio - This archive should be prepended to the regular initramfs to allow - the kernel to update processor microcode very early during system boot. + INITRD /boot/intel-ucode.cpio,/boot/initrd-generic.gz -To get started with early microcode loading, please have a look at: -1) https://www.kernel.org/doc/Documentation/x86/early-microcode.txt -2) iucode_tool man page, especially about --write-earlyfw option. +4. Microcodes for some processors require special attention. To find + out if you're affected, read the release notes for the particular + microcode release. The release notes file (releasenote) can be + found in the microcode tarball file. -For example, on my system that uses syslinux, to load the microcode early -during the boot process, the configuration file reads something like that: + To include these special microcodes files, run the script like that: - INITRD /boot/intel-ucode.cpio,/boot/initrd-generic-4.4.x.gz + $ INCLUDE_UCODE_WITH_CAVEATS=yes ./intel-microcode.SlackBuild diff --git a/system/intel-microcode/intel-microcode.SlackBuild b/system/intel-microcode/intel-microcode.SlackBuild index 327292b862..8311ed2cd3 100644 --- a/system/intel-microcode/intel-microcode.SlackBuild +++ b/system/intel-microcode/intel-microcode.SlackBuild @@ -2,7 +2,7 @@ # Slackware build script for intel-microcode -# Copyright 2018 Andrzej Telszewski, Banie +# Copyright 2018 Andrzej Telszewski, Szczecin # All rights reserved. # # Redistribution and use of this script, with or without modification, is @@ -24,7 +24,7 @@ PRGNAM=intel-microcode SRCNAM=microcode -VERSION=${VERSION:-20180312} +VERSION=${VERSION:-20180703} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} ARCH=noarch @@ -39,24 +39,35 @@ set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP -rm -rf $SRCNAM-$VERSION +rm -rf $PRGNAM-$VERSION -mkdir $SRCNAM-$VERSION -tar xvf $CWD/$SRCNAM-$VERSION.tgz -C $SRCNAM-$VERSION -cd $SRCNAM-$VERSION -chown root:root microcode.dat -chmod 0644 microcode.dat +mkdir $PRGNAM-$VERSION +tar xvf $CWD/$SRCNAM-$VERSION.tgz -C $PRGNAM-$VERSION +cd $PRGNAM-$VERSION +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \; mkdir -p $PKG/lib/firmware -cp -a microcode.dat $PKG/lib/firmware +cp -a intel-ucode $PKG/lib/firmware -if [ -x /usr/sbin/iucode_tool ]; then - mkdir -p $PKG/lib/firmware/intel-ucode - /usr/sbin/iucode_tool -v --list-all -K$PKG/lib/firmware/intel-ucode microcode.dat - mkdir -p $PKG/boot - /usr/sbin/iucode_tool -v --write-earlyfw=$PKG/boot/intel-ucode.cpio microcode.dat +if [ ${INCLUDE_UCODE_WITH_CAVEATS:-no} = yes ]; then + if [ -d intel-ucode-with-caveats ]; then + cp -a intel-ucode-with-caveats/* $PKG/lib/firmware/intel-ucode + fi fi +# The "list" file is not always present in the upstream tarball. +# For consistency, let's ensure it's never present in the package. +rm -rf $PKG/lib/firmware/intel-ucode/list + +mkdir -p $PKG/boot +iucode_tool -v --write-earlyfw=$PKG/boot/intel-ucode.cpio \ + $PKG/lib/firmware/intel-ucode + mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild cat releasenote > $PKG/usr/doc/$PRGNAM-$VERSION/RELEASE_NOTE diff --git a/system/intel-microcode/intel-microcode.info b/system/intel-microcode/intel-microcode.info index abfef991e8..bb8ec88c67 100644 --- a/system/intel-microcode/intel-microcode.info +++ b/system/intel-microcode/intel-microcode.info @@ -1,10 +1,10 @@ PRGNAM="intel-microcode" -VERSION="20180312" +VERSION="20180703" HOMEPAGE="https://downloadcenter.intel.com/" -DOWNLOAD="https://downloadmirror.intel.com/27591/eng/microcode-20180312.tgz" -MD5SUM="be315cd99a7ca392a2f917ceacbe14f2" +DOWNLOAD="https://downloadmirror.intel.com/27945/eng/microcode-20180703.tgz" +MD5SUM="873f2bdd7c0edf317f416f54fee74b42" DOWNLOAD_x86_64="" MD5SUM_x86_64="" -REQUIRES="" +REQUIRES="iucode_tool" MAINTAINER="Andrzej Telszewski" EMAIL="atelszewski@gmail.com" diff --git a/system/intel-microcode/slack-desc b/system/intel-microcode/slack-desc index ec16178973..114ff829fe 100644 --- a/system/intel-microcode/slack-desc +++ b/system/intel-microcode/slack-desc @@ -8,12 +8,12 @@ |-----handy-ruler------------------------------------------------------| intel-microcode: intel-microcode (Linux Processor Microcode Data File) intel-microcode: -intel-microcode: The microcode data file contains the latest microcode definitions -intel-microcode: for all Intel processors. Intel releases microcode updates to -intel-microcode: correct processor behavior as documented in the respective processor -intel-microcode: specification updates. +intel-microcode: CPU microcode is a mechanism to correct certain errata in existing +intel-microcode: systems. The normal preferred method to apply microcode updates is +intel-microcode: using the system BIOS, but for a subset of Intel processors this +intel-microcode: can be done at runtime using the operating system. This package +intel-microcode: contains those processors that support OS loading of microcode +intel-microcode: updates. intel-microcode: intel-microcode: Homepage: https://downloadcenter.intel.com/ intel-microcode: -intel-microcode: -intel-microcode: |