Date: Sunday, October 12, 2014 @ 14:14:37
  Author: thomas
Revision: 224237

upgpkg: intel-ucode 20140913-1 - change upgrade method

Added:
  intel-ucode/trunk/intel-ucode.install
Modified:
  intel-ucode/trunk/PKGBUILD
  intel-ucode/trunk/intel-microcode2ucode.c

-------------------------+
 PKGBUILD                |   18 ++++++++++++------
 intel-microcode2ucode.c |   33 ++++++++++++---------------------
 intel-ucode.install     |   12 ++++++++++++
 3 files changed, 36 insertions(+), 27 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD    2014-10-12 09:45:25 UTC (rev 224236)
+++ PKGBUILD    2014-10-12 12:14:37 UTC (rev 224237)
@@ -2,21 +2,22 @@
 # Maintainer: Thomas Bächler <[email protected]>
 
 pkgname=intel-ucode
-pkgver=20140624
+pkgver=20140913
 pkgrel=1
 pkgdesc="Microcode update files for Intel CPUs"
 arch=('any')
+install=$pkgname.install
 
url="http://downloadcenter.intel.com/SearchResult.aspx?lang=eng&keyword=%22microcode%22";
 replaces=('microcode_ctl')
 license=('custom')
 # Some random "download id" that intel has in their downloadcenter
-_dlid=23984
+_dlid=24290
 source=(http://downloadmirror.intel.com/${_dlid}/eng/microcode-${pkgver}.tgz
         LICENSE
         intel-microcode2ucode.c)
-sha256sums=('b4662ac780438a7b2d87e6d26a7066feb807f37c6e5b6fa147089f4edb02ea37'
+sha256sums=('ea6c0ee21d1fbf261f093176a78089c21411e5fe0e2c35b258cedf2b39987e15'
             '6983e83ec10c6467fb9101ea496e0443f0574c805907155118e2c9f0bbea97b6'
-            'c51b1b1d8b4b28e7d5d007917c1e444af1a2ff04a9408aa9067c0e57d70164de')
+            '03a13a966316a4d3d9c7e1b46007fd4b80911aea5ddd957ddf33ce660efe03de')
 
 build() {
   cd "$srcdir"
@@ -26,7 +27,12 @@
 
 package() {
   cd "$srcdir"
-  install -d -m755 "${pkgdir}"/usr/lib/firmware/intel-ucode/
-  cp intel-ucode/* "${pkgdir}"/usr/lib/firmware/intel-ucode/
+
+  install -d -m755 "${pkgdir}"/boot
+
+  mkdir -p kernel/x86/microcode
+  mv microcode.bin kernel/x86/microcode/GenuineIntel.bin
+  echo kernel/x86/microcode/GenuineIntel.bin | bsdcpio -o -H newc -R 0:0 > 
"${pkgdir}"/boot/intel-ucode.img
+  
   install -D -m644 LICENSE "${pkgdir}"/usr/share/licenses/${pkgname}/LICENSE
 }

Modified: intel-microcode2ucode.c
===================================================================
--- intel-microcode2ucode.c     2014-10-12 09:45:25 UTC (rev 224236)
+++ intel-microcode2ucode.c     2014-10-12 12:14:37 UTC (rev 224237)
@@ -1,13 +1,8 @@
 /*
- * Convert Intel microcode.dat into individual ucode files
- * named: intel-ucode/$family-$model-$stepping
+ * Convert Intel microcode.dat into a single binary microcode.bin file
  *
- * The subdir intel-ucode/ is created in the current working
- * directory. We get multiple ucodes in the same file, so they
- * are appended to an existing file. Make sure the directory
- * is empty before every run of the converter.
- *
- * Kay Sievers <[email protected]>
+ * Based on code by Kay Sievers <[email protected]>
+ * Changed to create a single file by Thomas Bächler <[email protected]>
  */
 
 
@@ -48,7 +43,7 @@
 
 int main(int argc, char *argv[])
 {
-       char *filename = "/lib/firmware/microcode.dat";
+       const char *filename = "/lib/firmware/microcode.dat";
        FILE *f;
        char line[LINE_MAX];
        char buf[4000000];
@@ -89,7 +84,12 @@
        if (bufsize < sizeof(struct microcode_header_intel))
                goto out;
 
-       mkdir("intel-ucode", 0750);
+       f = fopen("microcode.bin", "we");
+       if (f == NULL) {
+               printf("open microcode.bin: %m\n");
+               rc = EXIT_FAILURE;
+               goto out;
+       }
 
        start = 0;
        for (;;) {
@@ -130,9 +130,7 @@
                month = mc->hdr.date >> 24;
                day = (mc->hdr.date >> 16) & 0xff;
 
-               asprintf(&filename, "intel-ucode/%02x-%02x-%02x", family, 
model, stepping);
                printf("\n");
-               printf("%s\n", filename);
                printf("signature: 0x%02x\n", mc->hdr.sig);
                printf("flags:     0x%02x\n", mc->hdr.pf);
                printf("revision:  0x%02x\n", mc->hdr.rev);
@@ -139,24 +137,17 @@
                printf("date:      %04x-%02x-%02x\n", year, month, day);
                printf("size:      %zu\n", size);
 
-               f = fopen(filename, "ae");
-               if (f == NULL) {
-                       printf("open %s: %m\n", filename);
-                       rc = EXIT_FAILURE;
-                       goto out;
-               }
                if (fwrite(mc, size, 1, f) != 1) {
-                       printf("write %s: %m\n", filename);
+                       printf("write microcode.bin: %m\n");
                        rc = EXIT_FAILURE;
                        goto out;
                }
-               fclose(f);
-               free(filename);
 
                start += size;
                if (start >= bufsize)
                        break;
        }
+       fclose(f);
        printf("\n");
 out:
        return rc;

Added: intel-ucode.install
===================================================================
--- intel-ucode.install                         (rev 0)
+++ intel-ucode.install 2014-10-12 12:14:37 UTC (rev 224237)
@@ -0,0 +1,12 @@
+## arg 1:  the new package version
+## arg 2:  the old package version
+post_upgrade() {
+  if [ $(vercmp $2 20140913) -lt 0 ]; then
+    echo "Intel CPU ucode upgrades are no longer performed by the firmware 
loader."
+    echo "If you want to update the Intel CPU ucode on boot, add the file"
+    echo " /boot/intel-ucode.img"
+    echo "as the first initrd to your bootloader."
+    echo
+    echo "For more information, see 
https://wiki.archlinux.org/index.php/Microcode#Enabling_Intel_Microcode_Updates";
+  fi
+}

Reply via email to