Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock

Please unblock package amd64-microcode


This is a freeze policy exception request, for which I apologise.
The package is in non-free, it is a leaf package, and it is system firmware.

This is a pre-approval request, I have not uploaded the updated package to
non-free unstable yet.


The changes look a bit more extensive than one would like, however they:

1. Have been tested in the sister "intel-microcode" package that is in
   jessie already.  In fact, the maintainer scripts are now nearly identical
   between the two packages.  The code that runs inside the initramfs *was
   not changed* (so it is also known good and there is no chance of
   regressions).  The code that runs when building the initramfs is simple,
   and tested.
   
   I have piped all shell scripts in the package through the ShellCheck
   static checker, and fixed a few issues that existed in the *previous*
   package (currently in jessie) as well, so it is actually safer now.
   This includes the maintainer scripts, as well as all the initramfs
   scripts.

2. Reduced complexity, as code to update the microcode during package
   upgrade was removed.  This made the package much safer, by fixing
   the issue described in (3) below for all users, and not just by those
   running a Debian-built kernel.

3. Reduce the chances of system lockup on package upgrade, as the code that
   would trigger a microcode update in postinst was removed.  This code was
   buggy, and wouldn't trigger on Debian-built kernels (which is a *good*
   thing) but it would properly trigger on custom kernels, and cause rare,
   hard-to-debug interruptible hangs due to an elusive microcode kernel
   driver bug.

4. Add the new upstream microcode.  AMD pulled an "Intel" on us, so I don't
   have the usual hard facts with AMD errata numbers.  However, there are
   new, severe errata listed both in the family 15h and family 16h processor
   revision guides for which the fix listed is "Contact your AMD
   representative for information on a BIOS update request".  This is AMD
   speak for "fixed/worked around either by new microcode, or by disabling
   something via a MSR".

Unfortunately, it took a lot of time for the linux-firmware guys to pull the
microcode update from AMD, it was added to the linux-firmware tree only on
"Sun Nov 30 21:20:05 2014 -0500".  There was not enough time to send this
before the 5th of December deadline, so I took some extra time to do it
properly.

Here's the debdiff diffstat:
 amd64-microcode-2.20141028.1/microcode_amd_fam15h.bin     |binary
 amd64-microcode-2.20141028.1/microcode_amd_fam16h.bin     |binary
 amd64-microcode-2.20141028.1/LICENSE.amd-ucode            |    2 
 amd64-microcode-2.20141028.1/README                       |   74 +++-----
 amd64-microcode-2.20141028.1/debian/NEWS                  |   20 ++
 amd64-microcode-2.20141028.1/debian/changelog             |   40 ++++
 amd64-microcode-2.20141028.1/debian/control               |    2 
 amd64-microcode-2.20141028.1/debian/copyright             |    8 
 amd64-microcode-2.20141028.1/debian/default               |   16 +
 amd64-microcode-2.20141028.1/debian/dirs                  |    2 
 amd64-microcode-2.20141028.1/debian/docs                  |    2 
 amd64-microcode-2.20141028.1/debian/initramfs.hook        |   84 ++++++----
 amd64-microcode-2.20141028.1/debian/install               |    4 
 amd64-microcode-2.20141028.1/debian/kpreinst              |   16 -
 amd64-microcode-2.20141028.1/debian/modprobe-blacklist    |    3 
 amd64-microcode-2.20141028.1/debian/postinst              |   46 -----
 amd64-microcode-2.20141028.1/debian/rules                 |   11 -
 amd64-microcode-2.20141028.1/microcode_amd_fam15h.bin.asc |   16 -
 amd64-microcode-2.20141028.1/microcode_amd_fam16h.bin.asc |   11 +
 19 files changed, 206 insertions(+), 151 deletions(-)

Half the changes in the initramfs.hook are noise because a large block of
code was unindented (it was inside an if clause that was removed), which
doesn't play well with debdiff's non-whitespace-ignoring use of diff/wdiff.

I have attached a separate "git diff -w" output for initramfs.hook (which
ignores white-space changes) for your convenience: it is MUCH more readable,
and half the size.

Thank you.

unblock amd64-microcode/2.20141028.1

-- System Information:
Debian Release: 7.7
  APT prefers proposed-updates
  APT policy: (990, 'proposed-updates'), (990, 'stable'), (500, 
'stable-updates')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.10.63+ (SMP w/8 CPU cores)
Locale: LANG=pt_BR.UTF-8, LC_CTYPE=pt_BR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

-- 
  "One disk to rule them all, One disk to find them. One disk to bring
  them all and in the darkness grind them. In the Land of Redmond
  where the shadows lie." -- The Silicon Valley Tarot
  Henrique Holschuh
diff --git a/debian/initramfs.hook b/debian/initramfs.hook
index 513a161..269f701 100755
--- a/debian/initramfs.hook
+++ b/debian/initramfs.hook
@@ -1,6 +1,6 @@
 #!/bin/sh
 # amd64-microcode initramfs-tools hook script
-# Copyright (C) 2012,2013 Henrique de Moraes Holschuh <h...@debian.org>
+# Copyright (C) 2012-2014 Henrique de Moraes Holschuh <h...@debian.org>
 # Released under the GPL v2 or later license
 #
 # Generates a copy of the minimal microcode for the current system if
@@ -8,6 +8,7 @@
 #
 
 PREREQ=""
+AMD64UCODE_CONFIG=/etc/default/amd64-microcode
 
 prereqs()
 {
@@ -26,19 +27,45 @@ esac
 verbose()
 {
        if [ "${verbose}" = "y" ] ; then
-               echo "amd64-microcode: $@"
+               echo "amd64-microcode: $*"
        fi
        :
 }
 
 AUCODE_FW_DIR=/lib/firmware/amd-ucode
+AMD64UCODE_INITRAMFS=auto
+[ -r ${AMD64UCODE_CONFIG} ] && . ${AMD64UCODE_CONFIG}
+
+[ -z "${AMD64UCODE_INITRAMFS}" ] && AMD64UCODE_INITRAMFS=no
 
 if [ ! -d "${AUCODE_FW_DIR}" ] ; then
        verbose "no AMD64 processor microcode datafiles to install"
        exit 0;
 fi
 
-if grep -q "^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" /proc/cpuinfo; 
then
+case "${AMD64UCODE_INITRAMFS}" in
+    no|0)
+        verbose "disabled by ${AMD64UCODE_CONFIG}"
+        exit 0
+        ;;
+    early)
+       echo "W: amd64-microcode: early mode not supported, forcing late 
initramfs mode" >&2
+        AMD64UCODE_INITRAMFS=yes
+        ;;
+    yes|1|auto)
+        ;;
+    *)
+        echo "E: amd64-microcode: invalid AMD64UCODE_INITRAMFS, using 
automatic mode" >&2
+        AMD64UCODE_INITRAMFS=auto
+esac
+
+if [ "${AMD64UCODE_INITRAMFS}" = "auto" ] ; then
+        grep -q "^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" 
/proc/cpuinfo || {
+                verbose "no AMD processors detected, nothing to do"
+                exit 0
+        }
+fi
+
 # See Debian bug #716917.  Blacklist all non-LTS/non-Debian kernel versions
 # before kernel 3.4  Only known-bad kernel is 2.6.38.
 #
@@ -46,11 +73,11 @@ if grep -q 
"^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" /proc/cpuinfo; th
 # information at the initramfs-tools layer, due to the way Debian and Ubuntu 
version
 # kernel packages.
 
-       if dpkg --compare-versions ${version} le 3.4 && \
-            { dpkg --compare-versions ${version} lt 2.6.32 || \
-             { dpkg --compare-versions ${version} ge 2.6.33 && dpkg 
--compare-versions ${version} lt 3.0 ; } || \
-             { dpkg --compare-versions ${version} ge 3.1 && dpkg 
--compare-versions ${version} lt 3.2 ; } || \
-             dpkg --compare-versions ${version} ge 3.3 ; \
+if dpkg --compare-versions "${version}" le 3.4 && \
+     { dpkg --compare-versions "${version}" lt 2.6.32 || \
+      { dpkg --compare-versions "${version}" ge 2.6.33 && dpkg 
--compare-versions "${version}" lt 3.0 ; } || \
+      { dpkg --compare-versions "${version}" ge 3.1 && dpkg --compare-versions 
"${version}" lt 3.2 ; } || \
+      dpkg --compare-versions "${version}" ge 3.3 ; \
      }; then
        echo "E: amd64-microcode: unsupported kernel version!" >&2
        exit 0
@@ -67,6 +94,5 @@ if grep -q 
"^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" /proc/cpuinfo; th
        verbose "installing AMD64 processor microcode update support into 
initramfs..."
        force_load microcode
 fi
-fi
 
 :
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/changelog amd64-microcode-2.20141028.1/debian/changelog
--- amd64-microcode-2.20131007.1+really20130710.1/debian/changelog	2013-09-07 22:42:46.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/changelog	2014-12-18 13:36:29.000000000 -0200
@@ -1,3 +1,43 @@
+amd64-microcode (2.20141028.1) unstable; urgency=medium
+
+  * Upstream release 20141028 built from linux-firmware:
+    + Updated microcode patches for family 0x15 processors
+    + Added microcode patches for family 0x16 processors
+  * AMD did not update the relevant microcode documentation (errata fixed,
+    microcode patch levels, etc), so there is no documentation for the
+    family 0x16 microcode patches, and the documentation for family 0x15 is
+    stale.
+  * postinst: do not update microcode on upgrades:
+    Remove code that triggers a microcode update on package upgrade.  The
+    resulting postinst script is now identical to the one in Debian jessie's
+    intel-microcode, and thus known-good.
+    NOTE: this code was already disabled for the majority of the users due
+    to Debian bug #723975 (closes: #723975, #723081)
+  * kpreinst: remove, we don't update microcode on postinst anymore
+  * blacklist automated loading of the microcode module:
+    This is in line with the desired behavior of only updating microcode
+    *automatically* during system boot, when it is safer to do so.  The
+    local admin can still load the microcode module and update the microcode
+    manually at any time, of course.  This is in sync with the intel-microcode
+    packages in Debian jessie, which will also blacklist the microcode module.
+    Note that the initramfs will force-load the microcode module in a safe
+    condition, the blacklist avoids module autoloading outside the initramfs
+  * control: bump standards version (no changes required)
+  * copyright: update upstream URL and upstream copyright date
+    (closes: #753593)
+  * docs: future-proof by using a glob pattern for per-family README files
+  * initramfs hook: support forced installation of amd64-microcode:
+    Add a config file (/etc/default/amd64-microcode) to select the mode of
+    operation: do nothing, force install to initramfs, install only when
+    running on an amd64 processor (closes: #726854)
+  * initramfs hook: fix (likely unexploitable) issues found by shellcheck
+  * Add a NEWS.Debian file to warn users we will no longer update the
+    microcode on package upgrade (note that we were not doing it on any
+    Debian kernels anyway).  Also document the existence of the new
+    /etc/default/amd64-microcode file
+
+ -- Henrique de Moraes Holschuh <h...@debian.org>  Thu, 18 Dec 2014 13:36:27 -0200
+
 amd64-microcode (2.20131007.1+really20130710.1) unstable; urgency=low
 
   * Fix M-D-Y issue that leaked to the package version number
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/control amd64-microcode-2.20141028.1/debian/control
--- amd64-microcode-2.20131007.1+really20130710.1/debian/control	2013-09-07 21:28:49.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/control	2014-12-18 13:29:09.000000000 -0200
@@ -4,7 +4,7 @@
 Maintainer: Henrique de Moraes Holschuh <h...@debian.org>
 Uploaders: Giacomo Catenazzi <c...@debian.org>
 Build-Depends: debhelper (>= 7)
-Standards-Version: 3.9.4
+Standards-Version: 3.9.6
 Vcs-Git: git://git.debian.org/users/hmh/amd64-microcode.git
 Vcs-Browser: http://git.debian.org/?p=users/hmh/amd64-microcode.git
 XS-Autobuild: yes
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/copyright amd64-microcode-2.20141028.1/debian/copyright
--- amd64-microcode-2.20131007.1+really20130710.1/debian/copyright	2013-09-07 17:21:48.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/copyright	2014-12-18 13:29:09.000000000 -0200
@@ -1,9 +1,9 @@
 This package was debianized by Henrique de Moraes Holschuh <h...@debian.org> on
 Sun Jun 10 10:54:36 BRT 2012
 
-It was downloaded from http://www.amd64.org/support/microcode.html up to version
-20120910.  It was built from the linux-firmware git tree for version 20131007
-onwards.
+It was downloaded from http://www.amd64.org/support/microcode.html up to
+version 20120910 (now: http://www.amd64.org/microcode.html).  It was built from
+the linux-firmware git tree at  for version 20131007 onwards.
 
 Debian only distributes the AMD64 microcode file in its unaltered form.
 
@@ -13,7 +13,7 @@
 
 Upstream Copyright: 
 
-    Copyright (C) 2010-2013 Advanced Micro Devices, Inc.,
+    Copyright (C) 2010-2014 Advanced Micro Devices, Inc.,
     All rights reserved.
 
 Upstream License:
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/default amd64-microcode-2.20141028.1/debian/default
--- amd64-microcode-2.20131007.1+really20130710.1/debian/default	1969-12-31 21:00:00.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/default	2014-12-18 13:17:22.000000000 -0200
@@ -0,0 +1,16 @@
+# Configuration script for amd64-microcode version 2
+
+#
+# initramfs helper
+#
+
+# Set this to "no" to disable automatic microcode updates on boot;
+# Set this to "yes" to always install microcode updates to the initramfs;
+# Set this to "auto" to use initramfs mode automatically (default);
+#
+# Note: "early" mode is not yet supported in amd64-microcode version 2.
+# It will be implemented in version 3, at which point "yes" will alias
+# to "early", and only "early microcode updates" will be supported.
+#
+#AMD64UCODE_INITRAMFS=auto
+
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/dirs amd64-microcode-2.20141028.1/debian/dirs
--- amd64-microcode-2.20131007.1+really20130710.1/debian/dirs	2013-09-07 15:20:18.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/dirs	2014-12-18 13:17:22.000000000 -0200
@@ -1 +1,3 @@
+etc/default
+etc/modprobe.d
 lib/firmware/amd-ucode
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/docs amd64-microcode-2.20141028.1/debian/docs
--- amd64-microcode-2.20131007.1+really20130710.1/debian/docs	2013-09-07 15:20:18.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/docs	2014-12-18 13:29:09.000000000 -0200
@@ -1,3 +1,3 @@
 README
 microcode_amd.bin.README
-microcode_amd_fam15h.bin.README
+microcode_amd_fam*.README
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/initramfs.hook amd64-microcode-2.20141028.1/debian/initramfs.hook
--- amd64-microcode-2.20131007.1+really20130710.1/debian/initramfs.hook	2013-09-07 21:28:49.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/initramfs.hook	2014-12-18 13:30:03.000000000 -0200
@@ -1,6 +1,6 @@
 #!/bin/sh
 # amd64-microcode initramfs-tools hook script
-# Copyright (C) 2012,2013 Henrique de Moraes Holschuh <h...@debian.org>
+# Copyright (C) 2012-2014 Henrique de Moraes Holschuh <h...@debian.org>
 # Released under the GPL v2 or later license
 #
 # Generates a copy of the minimal microcode for the current system if
@@ -8,6 +8,7 @@
 #
 
 PREREQ=""
+AMD64UCODE_CONFIG=/etc/default/amd64-microcode
 
 prereqs()
 {
@@ -26,47 +27,72 @@
 verbose()
 {
 	if [ "${verbose}" = "y" ] ; then
-		echo "amd64-microcode: $@"
+		echo "amd64-microcode: $*"
 	fi
 	:
 }
 
 AUCODE_FW_DIR=/lib/firmware/amd-ucode
+AMD64UCODE_INITRAMFS=auto
+[ -r ${AMD64UCODE_CONFIG} ] && . ${AMD64UCODE_CONFIG}
+
+[ -z "${AMD64UCODE_INITRAMFS}" ] && AMD64UCODE_INITRAMFS=no
 
 if [ ! -d "${AUCODE_FW_DIR}" ] ; then
 	verbose "no AMD64 processor microcode datafiles to install"
 	exit 0;
 fi
 
-if grep -q "^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" /proc/cpuinfo; then
-	# See Debian bug #716917.  Blacklist all non-LTS/non-Debian kernel versions
-	# before kernel 3.4  Only known-bad kernel is 2.6.38.
-	#
-	# This doesn't blacklist early kernels in the LTS branches, we don't have enough
-	# information at the initramfs-tools layer, due to the way Debian and Ubuntu version
-	# kernel packages.
-
-	if dpkg --compare-versions ${version} le 3.4 && \
-	     { dpkg --compare-versions ${version} lt 2.6.32 || \
-	      { dpkg --compare-versions ${version} ge 2.6.33 && dpkg --compare-versions ${version} lt 3.0 ; } || \
-	      { dpkg --compare-versions ${version} ge 3.1 && dpkg --compare-versions ${version} lt 3.2 ; } || \
-	      dpkg --compare-versions ${version} ge 3.3 ; \
-	     }; then
-		echo "E: amd64-microcode: unsupported kernel version!" >&2
-		exit 0
-	fi
+case "${AMD64UCODE_INITRAMFS}" in
+    no|0)
+        verbose "disabled by ${AMD64UCODE_CONFIG}"
+        exit 0
+        ;;
+    early)
+	echo "W: amd64-microcode: early mode not supported, forcing late initramfs mode" >&2
+        AMD64UCODE_INITRAMFS=yes
+        ;;
+    yes|1|auto)
+        ;;
+    *)
+        echo "E: amd64-microcode: invalid AMD64UCODE_INITRAMFS, using automatic mode" >&2
+        AMD64UCODE_INITRAMFS=auto
+esac
 
-	verbose "installing all microcode datafiles for AMD64 processors"
+if [ "${AMD64UCODE_INITRAMFS}" = "auto" ] ; then
+        grep -q "^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" /proc/cpuinfo || {
+                verbose "no AMD processors detected, nothing to do"
+                exit 0
+        }
+fi
 
-	# Generate firmware dir
-	mkdir -m 755 -p "${DESTDIR}${AUCODE_FW_DIR}" || true
-	cp -fr "${AUCODE_FW_DIR}/." "${DESTDIR}${AUCODE_FW_DIR}/."
-
-	if ! rmdir "${DESTDIR}${AUCODE_FW_DIR}" 2>/dev/null ; then
-		# The directory was not empty, so we have work to do
-		verbose "installing AMD64 processor microcode update support into initramfs..."
-		force_load microcode
-	fi
+# See Debian bug #716917.  Blacklist all non-LTS/non-Debian kernel versions
+# before kernel 3.4  Only known-bad kernel is 2.6.38.
+#
+# This doesn't blacklist early kernels in the LTS branches, we don't have enough
+# information at the initramfs-tools layer, due to the way Debian and Ubuntu version
+# kernel packages.
+
+if dpkg --compare-versions "${version}" le 3.4 && \
+     { dpkg --compare-versions "${version}" lt 2.6.32 || \
+      { dpkg --compare-versions "${version}" ge 2.6.33 && dpkg --compare-versions "${version}" lt 3.0 ; } || \
+      { dpkg --compare-versions "${version}" ge 3.1 && dpkg --compare-versions "${version}" lt 3.2 ; } || \
+      dpkg --compare-versions "${version}" ge 3.3 ; \
+     }; then
+	echo "E: amd64-microcode: unsupported kernel version!" >&2
+	exit 0
+fi
+
+verbose "installing all microcode datafiles for AMD64 processors"
+
+# Generate firmware dir
+mkdir -m 755 -p "${DESTDIR}${AUCODE_FW_DIR}" || true
+cp -fr "${AUCODE_FW_DIR}/." "${DESTDIR}${AUCODE_FW_DIR}/."
+
+if ! rmdir "${DESTDIR}${AUCODE_FW_DIR}" 2>/dev/null ; then
+	# The directory was not empty, so we have work to do
+	verbose "installing AMD64 processor microcode update support into initramfs..."
+	force_load microcode
 fi
 
 :
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/install amd64-microcode-2.20141028.1/debian/install
--- amd64-microcode-2.20131007.1+really20130710.1/debian/install	2013-09-07 15:20:18.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/install	2014-12-17 18:33:44.000000000 -0200
@@ -1,2 +1,2 @@
-microcode_amd.bin		/lib/firmware/amd-ucode
-microcode_amd_fam15h.bin	/lib/firmware/amd-ucode
+microcode_amd.bin	/lib/firmware/amd-ucode
+microcode_amd_fam*.bin	/lib/firmware/amd-ucode
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/kpreinst amd64-microcode-2.20141028.1/debian/kpreinst
--- amd64-microcode-2.20131007.1+really20130710.1/debian/kpreinst	2013-09-07 21:28:49.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/kpreinst	1969-12-31 21:00:00.000000000 -0300
@@ -1,16 +0,0 @@
-#!/bin/sh
-#
-# /etc/kernel/preinst.d amd64-microcode script
-# Copyright (C) 2013 Henrique de Moraes Holschuh <h...@hmh.eng.br>
-# Released under the GPL v2 or later license
-#
-# This script makes sure the microcode module is loaded, before the
-# kernel image has a chance to replace it with a new one that might not
-# be compatible with the current kernel.
-#
-# We need the microcode module to update microcode on postinst.
-#
-
-modprobe -q microcode || true
-
-:
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/modprobe-blacklist amd64-microcode-2.20141028.1/debian/modprobe-blacklist
--- amd64-microcode-2.20131007.1+really20130710.1/debian/modprobe-blacklist	1969-12-31 21:00:00.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/modprobe-blacklist	2014-12-18 13:17:22.000000000 -0200
@@ -0,0 +1,3 @@
+# The microcode module attempts to apply a microcode update when
+# it autoloads.  This is not always safe, so we block it by default.
+blacklist microcode
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/NEWS amd64-microcode-2.20141028.1/debian/NEWS
--- amd64-microcode-2.20131007.1+really20130710.1/debian/NEWS	1969-12-31 21:00:00.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/NEWS	2014-12-18 13:30:11.000000000 -0200
@@ -0,0 +1,20 @@
+amd64-microcode (2.20141028.1) unstable; urgency=medium
+
+    This release drops support for automatically applying microcode updates
+    without a reboot.  The microcode updates can still be applied without a
+    reboot through manual action of the system administrator.
+
+    This is a defensive measure.  At this time, there are no reported
+    issues caused by the AMD microcode update itself when done outside of
+    the boot process.
+
+    However, updating only on boot works around a very elusive issue in the
+    the Linux kernel microcode update driver for AMD processors, which may
+    or may not have been fixed in the latest stable/long-term kernels.
+
+    It is now possible to configure how the amd64-microcode package should
+    behave through the /etc/default/amd64-microcode file.  By default, it
+    will install microcode update support to the initramfs only when
+    running in a system with an AMD processor.
+
+ -- Henrique de Moraes Holschuh <h...@debian.org>  Wed, 17 Dec 2014 19:17:30 -0200
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/postinst amd64-microcode-2.20141028.1/debian/postinst
--- amd64-microcode-2.20131007.1+really20130710.1/debian/postinst	2013-09-07 21:28:49.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/postinst	2014-12-18 13:17:22.000000000 -0200
@@ -19,47 +19,13 @@
 
 case "$1" in
     configure)
-	# See Debian bug #716917.  Blacklist all non-LTS/non-Debian kernel versions
-	# before kernel 3.4 that don't have all microcode fixes as of 2013-07-17.
-	# Only known-bad kernel is 2.6.38.  2.6.32.37 presumed good based on lack of
-	# reports by Debian squeeze backport users.
-	kversion=$(uname -r)
-	if dpkg --compare-versions ${kversion} le 3.4.21 && \
-	     { dpkg --compare-versions ${kversion} lt 2.6.32.58 || \
-	      { dpkg --compare-versions ${kversion} ge 2.6.33 && dpkg --compare-versions ${kversion} lt 3.0.54 ; } || \
-	      { dpkg --compare-versions ${kversion} ge 3.1 && dpkg --compare-versions ${kversion} lt 3.2.35 ; } || \
-	      dpkg --compare-versions ${kversion} ge 3.3 ; \
-	     }; then
-		echo "W: amd64-microcode: unsupported kernel version ${kversion}" >&2
-	else
-	    grep -q "^vendor_id[[:blank:]]*:[[:blank:]]*.*AuthenticAMD" /proc/cpuinfo && {
-		# try to load the microcode module just in case.  If we succeed,
-		# it will trigger a microcode update by itself
-		if modprobe -q --first-time microcode ; then
-		    echo "Updating microcode on all online processors..." >&2
-		else
-		    # we have to trigger the microcode update manually
-		    if [ -e /sys/devices/system/cpu/microcode/reload ] ; then
-			echo "Updating microcode on all online processors..." >&2
-			echo 1 > /sys/devices/system/cpu/microcode/reload || {
-			    echo "Kernel reported failure while updating microcode!" >&2
-			}
-		    else
-			# Try all online processors, broken kernels need this,
-			# fixed kernels will accept it only on the BSP and update
-			# all processors anyway, and -EINVAL all others... but we
-			# don't know which one is the BSP, so we try all of them
-			# and hide errors, the kernel will log any real problem.
-			echo "Using per-core interface to update microcode on online processors..." >&2
-			find /sys/devices/system/cpu -noleaf -type f -path '/sys/devices/system/cpu/cpu*/microcode/reload' | \
-			    while read i ; do echo -n 1 2>/dev/null >"$i" || true ; done
-		    fi
-		fi
+	# do it like udev and firmware-linux-*
+	if [ -x /usr/sbin/update-initramfs ] && [ -e /etc/initramfs-tools/initramfs.conf ] ; then
+	    update-initramfs -u && {
+		echo "amd64-microcode: microcode will be updated at next boot" >&2
 	    }
-	    # do it like udev and firmware-linux-*
-	    if [ -x /usr/sbin/update-initramfs -a -e /etc/initramfs-tools/initramfs.conf ] ; then
-		    update-initramfs -u
-	    fi
+	else
+	    echo "amd64-microcode: initramfs support missing" >&2
 	fi
     ;;
 
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/debian/rules amd64-microcode-2.20141028.1/debian/rules
--- amd64-microcode-2.20131007.1+really20130710.1/debian/rules	2013-09-07 21:28:49.000000000 -0300
+++ amd64-microcode-2.20141028.1/debian/rules	2014-12-18 13:17:22.000000000 -0200
@@ -1,6 +1,6 @@
 #!/usr/bin/make -f
 # debian/rules for amd64-microcode
-# Copyright (C) 2012 by Henrique de Moraes Holschuh
+# Copyright (C) 2012-2014 by Henrique de Moraes Holschuh
 # Published under the GNU GPL license version 2 or any later versions
 
 PACKAGE := amd64-microcode
@@ -37,9 +37,12 @@
 	mkdir -p "$(PKGDIR)/usr/share/initramfs-tools/scripts/init-premount"
 	install -m 755 "$(DEBDIR)/initramfs.init-premount" \
 		"$(PKGDIR)/usr/share/initramfs-tools/scripts/init-premount/$(INITRAMFS_NAME)"
-	mkdir -p "$(PKGDIR)/etc/kernel/preinst.d"
-	install -m 755 "$(DEBDIR)/kpreinst" \
-		"$(PKGDIR)/etc/kernel/preinst.d/$(PACKAGE)"
+
+	# We have a /etc/default file, but no initscript
+	install -m 644 "$(DEBDIR)/default" "$(PKGDIR)/etc/default/$(PACKAGE)"
+
+	# modprobe.d blacklist
+	install -m 644 "$(DEBDIR)/modprobe-blacklist" "$(PKGDIR)/etc/modprobe.d/$(PACKAGE)-blacklist.conf"
 
 binary: install
 	dh_testdir
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/LICENSE.amd-ucode amd64-microcode-2.20141028.1/LICENSE.amd-ucode
--- amd64-microcode-2.20131007.1+really20130710.1/LICENSE.amd-ucode	2013-09-07 17:21:48.000000000 -0300
+++ amd64-microcode-2.20141028.1/LICENSE.amd-ucode	2014-12-17 18:30:04.000000000 -0200
@@ -1,4 +1,4 @@
-Copyright (C) 2010-2013 Advanced Micro Devices, Inc., All rights reserved.
+Copyright (C) 2010-2014 Advanced Micro Devices, Inc., All rights reserved.
 
 Permission is hereby granted by Advanced Micro Devices, Inc. ("AMD"),
 free of any license fees, to any person obtaining a copy of this
Binary files /tmp/ynTKfGhpWp/amd64-microcode-2.20131007.1+really20130710.1/microcode_amd_fam15h.bin and /tmp/9Fxgjddxjr/amd64-microcode-2.20141028.1/microcode_amd_fam15h.bin differ
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/microcode_amd_fam15h.bin.asc amd64-microcode-2.20141028.1/microcode_amd_fam15h.bin.asc
--- amd64-microcode-2.20131007.1+really20130710.1/microcode_amd_fam15h.bin.asc	2013-09-07 17:21:48.000000000 -0300
+++ amd64-microcode-2.20141028.1/microcode_amd_fam15h.bin.asc	2014-12-17 18:30:04.000000000 -0200
@@ -1,11 +1,11 @@
 -----BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.11 (GNU/Linux)
+Version: GnuPG v1
 
-iQEcBAABAgAGBQJR3dkfAAoJEKXo28mMAQi0iTsIAJ5nCgz/+jFYag2W/OH+kOQe
-BDXYSC5diXQR5wF/HUkXWh0sl+jNK/OrRVxT7sFaEgAUhEXhK6Df/h7qnJAYQGFr
-5+CKhfSr/0Qbk1ziWYAXVKMOXbuLWSSIov1SCcwLsps7A7puITK6xDemLby7KDGC
-xCUfKIM/BO6DyFpNhKQ+xJdDi+yVxUKQhbdk/8gY94VdUnVZq3CTK9UStpBuaXu0
-qJNfhbaU+OzgZmnmLq5+xGsCML1xfbgF6sexVRx7oT/Jv30tm97YQJWR0h4DU7jU
-zjID8kGtYRVV7+i8jC+jVpFo21yDVUkHUcqtNXXRB/lbOYFAm+UJviAEc4NEdSw=
-=JaWY
+iQEcBAABAgAGBQJUTqLvAAoJEOS+UznzKK5zyaIIAKZcXmU+sBO4YGH5Aq2SdRYe
+rlwE5oeYNh+AdzzLm9EqHwSC+MciFI7HqQz8PvKAsfaoD17mQjonIXga8l2/w3OW
+/vIJjJnu9QB2C9XpjAiQCxS5QaMtIfEEjVld+MeHs6Ld3PwGuAXCkxKcJ2sHLZd3
+UcwwHxcm98KYouogjVZoJeb226cjz6fzUVJK9t9yi2S+SWmIvkjSZEI6W0WFoFCL
+x0jM7lFNcusGtg5K6UsyAdwPwvfbBN5FoV29/DaP+/HA4GP/W/cgbQxS72skDJg5
+c/icP0ntAND2iprtTQXF9//mWdX2FLYD55eu+pShZmO8t4Qvq4tJgiVz3hJiK+U=
+=KBP3
 -----END PGP SIGNATURE-----
Binary files /tmp/ynTKfGhpWp/amd64-microcode-2.20131007.1+really20130710.1/microcode_amd_fam16h.bin and /tmp/9Fxgjddxjr/amd64-microcode-2.20141028.1/microcode_amd_fam16h.bin differ
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/microcode_amd_fam16h.bin.asc amd64-microcode-2.20141028.1/microcode_amd_fam16h.bin.asc
--- amd64-microcode-2.20131007.1+really20130710.1/microcode_amd_fam16h.bin.asc	1969-12-31 21:00:00.000000000 -0300
+++ amd64-microcode-2.20141028.1/microcode_amd_fam16h.bin.asc	2014-12-17 18:30:04.000000000 -0200
@@ -0,0 +1,11 @@
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1
+
+iQEcBAABAgAGBQJUTtyFAAoJEOS+UznzKK5z4mwIAKEoRVZfNlqlsD2SR6Sfy3Cw
+8SgsmUk0Wtdt4AmIMn3O4cZ+ONN9knMrJyLcDk+dH2dGsWPutNCE73diC7jP+P2W
+hPy++6o9EBgCVBGxa/9ltuIAsS6N7HXPX2StZHcSaZEy+QWFX9rLmX9YF2lHzhwr
+mbgK9/LLL2mV9BzBeuLAWBpzijIIrYgBfxDQS5gLwyveJMrWFO4WqupXd6XyrFur
+ixe4paWNqHf82Llz7Yy55H8TAlES4eCg/wpxKVFAMDrs25MEXLoIGlAwLoTZBRkQ
+bX+HsHfN3IcOi67UxwbRzTkb+hBvT13yJN4TymKhXstx4A/a3jF2sMlUD4aRs88=
+=YwHU
+-----END PGP SIGNATURE-----
diff -Nru amd64-microcode-2.20131007.1+really20130710.1/README amd64-microcode-2.20141028.1/README
--- amd64-microcode-2.20131007.1+really20130710.1/README	2013-09-07 17:21:48.000000000 -0300
+++ amd64-microcode-2.20141028.1/README	2014-12-17 18:30:04.000000000 -0200
@@ -1,46 +1,30 @@
-This package provides latest microcode patches
-for AMD processor families >= 0x10.
-
-See http://www.amd64.org/support/microcode.html
-for details.
-
-Microcode patches are included in container files:
-- 'microcode_amd.bin' (for AMD CPU families 10h - 14h)
-- 'microcode_amd_fam15h.bin' (for AMD CPU family 15h)
-
-Please read the file INSTALL for install instructions.
-Please read the file LICENSE for licensing information.
-
-The container files include following microcode patches:
-
-    mc_patch_01000083_PUB-v4/mc_patch_01000083.asm
-    mc_patch_01000084_PUB-v4/mc_patch_01000084.asm
-    mc_patch_010000C7_PUB-v1/mc_patch_010000C7.asm
-    mc_patch_010000C8_PUB-v1/mc_patch_010000C8.asm
-    mc_patch_010000D9_PUB-v1/mc_patch_010000D9.asm
-    mc_patch_010000DA_PUB-v1/mc_patch_010000DA.asm
-    mc_patch_010000DB_PUB-v1/mc_patch_010000DB.asm
-    mc_patch_010000DC_PUB-v1/mc_patch_010000DC.asm
-    mc_patch_02000032_PUB-v3/mc_patch_02000032.asm
-    mc_patch_03000027_PUB-v1/mc_patch_03000027.asm
-    mc_patch_05000029_PUB-v1/mc_patch_05000029.asm
-    mc_patch_05000119_PUB-v1/mc_patch_05000119.asm
-    mc_patch_0600063D_PUB-v1/mc_patch_0600063D.asm
-    mc_patch_06000822_PUB-v1/mc_patch_06000822.asm
-    mc_patch_06001119_PUB-v2/mc_patch_06001119.asm
-
-***********************************************************************
-Copyright 2008-2013 ADVANCED MICRO DEVICES, INC.  All Rights Reserved.
-
-AMD is granting you permission to use this software and documentation
-(if any) (collectively, the “Materials”) pursuant to the terms and
-conditions of the Software License Agreement included with the
-Materials.  This header does NOT give you permission to use the
-Materials or any rights under AMD’s intellectual property.  Your use
-of any portion of these Materials shall constitute your acceptance of
-those terms and conditions.  If you do not agree to the terms and
-conditions of the Software License Agreement, you do not have
-permission to use any portion of these Materials.  If you do not have
-a copy of the Software License Agreement, contact your AMD
-representative for a copy.
+This amd64-microcode release was based on the linux-firmware tree.
 
+commit 8ac569dd3ca3ca685bd47ee86c1eeb6050864db3
+Author: Sherry Hurwitz <sherry.hurw...@amd.com>
+Date:   Thu Nov 6 19:38:26 2014 -0600
+
+    linux-firmware: Update AMD microcode patch firmware files
+
+    For AMD Family 15h Processors
+    file:   amd-ucode/microcode_amd_family15h.bin
+    md5sum: ee3f0f46936aa1788dc31ca3487e0ff3
+
+    For AMD Family 16h Processors
+    file:   amd-ucode/microcode_amd_family16h.bin
+    md5sum: 6a47a6393c52ddfc0b5b044efc076a77
+
+    Version: 2014_10_28
+    Signed-off-by: Sherry Hurwitz <sherry.hurw...@amd.com>
+    Signed-off-by: Kyle McMartin <k...@kernel.org>
+
+LICENSE.amd-ucode                      |    2 +-
+amd-ucode/microcode_amd_fam15h.bin     |binary
+amd-ucode/microcode_amd_fam15h.bin.asc |   16 ++++++++--------
+amd-ucode/microcode_amd_fam16h.bin     |binary
+amd-ucode/microcode_amd_fam16h.bin.asc |   11 +++++++++++
+6 files changed, 23 insertions(+), 10 deletions(-)
+
+AMD did not update the relevant microcode documentation (errata fixed,
+microcode patch levels, etc), so there is no documentation for the family 0x16
+microcode patches, and the documentation for family 0x15 might be stale.

Reply via email to