From d80f9d223a1a6d617d153bef3dc939525a3106bc Mon Sep 17 00:00:00 2001 From: Benjamin Gilbert Date: Tue, 24 Apr 2018 13:35:28 -0400 Subject: [PATCH] sys-firmware/intel-microcode: move from overlay --- .../sys-firmware/intel-microcode/Manifest | 15 ++ .../files/intel-microcode2ucode.c | 163 +++++++++++++++++ .../files/intel-microcode2ucode.c-r1 | 166 ++++++++++++++++++ .../intel-microcode-20140430.ebuild | 44 +++++ .../intel-microcode-20140624.ebuild | 44 +++++ .../intel-microcode-20140913.ebuild | 44 +++++ .../intel-microcode-20150121-r1.ebuild | 48 +++++ .../intel-microcode-20150121.ebuild | 44 +++++ .../intel-microcode-20151106.ebuild | 48 +++++ .../intel-microcode-20160607.ebuild | 48 +++++ .../intel-microcode-20160714.ebuild | 48 +++++ .../intel-microcode-20161104.ebuild | 48 +++++ .../intel-microcode-20170511.ebuild | 48 +++++ .../intel-microcode-20170707.ebuild | 48 +++++ .../intel-microcode-20171117-r1.ebuild | 95 ++++++++++ .../intel-microcode-20171117.ebuild | 48 +++++ ...tel-microcode-20171117_p20171215-r1.ebuild | 39 ++++ .../intel-microcode-20171117_p20171215.ebuild | 39 ++++ .../intel-microcode-20180108-r1.ebuild | 95 ++++++++++ .../intel-microcode-20180108.ebuild | 48 +++++ .../intel-microcode-20180312.ebuild | 95 ++++++++++ .../sys-firmware/intel-microcode/metadata.xml | 13 ++ 22 files changed, 1328 insertions(+) create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/Manifest create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c-r1 create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20140430.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20140624.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20140913.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20150121-r1.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20150121.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20151106.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20160607.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20160714.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20161104.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20170511.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20170707.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20171117-r1.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20171117.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20171117_p20171215-r1.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20171117_p20171215.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20180108-r1.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20180108.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20180312.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/metadata.xml diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/Manifest b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/Manifest new file mode 100644 index 0000000000..c6a73a9810 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/Manifest @@ -0,0 +1,15 @@ +DIST microcode-20140430.tgz 785594 BLAKE2B e51a187ca99ad496804f117871b50693b03b50759c9dd23002149ff7fa4b74888c83e8e1fcf078a973dea82e6a9439de8415c56c902ed0163e55ceaaff0eaf23 SHA512 12954522629ce15c4b95c158b6288b3877a3d1f87bea838f8138e53987ef1b6c0edc7a8cbb802a981ccca178b70b4323907aafa7479c0c2fed4497f6fb7bbc1c +DIST microcode-20140624.tgz 787237 BLAKE2B 1c2d8f39bf142570283e80f370f41c502ef04d24b4348ca4b44c881e3b1e54df72a88e09350d45a33d47d9955d84a80ae8a11e44561b1a8944a59f9326d4d81a SHA512 c774006aae639e7fae90bc1f5d8308b407e7cd3b7d0da6e35577560bf6201c2b15f7d7b6b0cd727c50be1e9d508b484b067856631fa2598498982109bff0e44c +DIST microcode-20140913.tgz 830537 BLAKE2B 665c72fc3a3e1e13d9e58eba0ed202b30856532eee590006c02112df926b879985a97ba9a96b58a6aad0285bff95a3fbb27b22d533f958fe170887f0ab37eef1 SHA512 e179fe0001b1157cc95aee39185f51fd182d53c1bdb30bfc95bc3a70795c32012050f3a4adf06735a77d8ef9c703a330c6a2610b73b70f09f5760e31d39cb89c +DIST microcode-20150121.tgz 850761 BLAKE2B d5859b98de645ed255ac4244640979b4c197a1d1d9c2b562c052405f487ccd0f0e570c5054cd55870b4eb4d51237b9c2627547e30b7245174f887605cf049b1b SHA512 f62edd1b666cf381605613766d7e123f0c6debee4448c0ff0882d33c144ad2174656d2501a449f24eb3e4708259e7ec0ff42810739b7d1f34a6a1d9950d17bc4 +DIST microcode-20151106.tgz 892805 BLAKE2B e384a445ea645510dbef1e564963509893ec5beefe90f04490aa7d1b91fd036ae928bbb7a68e291b1633e2d671ce8995518967fffddcc3edc336bc06c3f60251 SHA512 606ce97f0fe76f6a34a857923d3432d8e2368e8a5c504ffa0313f9f016d61b0a5dea26e67662ce1283c1f772ace7318e96a34ebeeeff50b25deb3005ccc6978e +DIST microcode-20160607.tgz 1236385 BLAKE2B 477b8c8df915d8800f1d5836f2882ba63b152d5e67f6c7eecb71539176d77454b2482fe10308fc3b352a03563582f9626296a3eae48496351b54e81435d4e09b SHA512 17f62ebf3e9f262d21ffa00546da4d711a9a810ad0a9bf4b2805c33090d75e9a07df1f3449baf6009ec5ef1f9af470fd32285b6100f0819e0b9989f5c55dc5bd +DIST microcode-20160714.tgz 1239344 BLAKE2B 9af6d4d7db21d7316a4e331c5e70a81b9a5d0d95c3476b56d2281a2c7e652e800bcdcec9ad8857563abf378512ecf48c06b3112604fe2602d50b71558d608428 SHA512 f9e09b6669a86aafcc77642d6e33acf9326109c3a2bc3e0d62b45a062b9ecbde6605b5a0ae31d4a3ad2b0ed3c6d3aadbd18088431fb72216bfc31fc452b0e342 +DIST microcode-20161104.tgz 1290125 BLAKE2B 9274bebe3f9104f0afc6378ae40810b2a634c85e5d26f8250666a45c6dd0d75e35d051e8702a6ca26c70d8cdfea0144614bca9c5568294817ea8f522e474b8a3 SHA512 73a7310c1da5bec7ce82bce5cf7c2aafa3d0189e7524bdebd20e1ea3568cf8242be39d9041fa055fe06e759f98703c5d0a631e57ff185aae3ba3c91dbe83cf7a +DIST microcode-20170511.tgz 2143617 BLAKE2B a2185b44cfca9832d2a80f12a189c49365ed323692b8fd94e99a0f4e8d3f0102a21cfce806ad9e53f172c3ae038f4ffafbafc8421bea6668bfbfdd1262bbd8e9 SHA512 4e2066096d56430c2df73631f15cf16f2317c1d8ff745d7b7cdd784ebccc2b797565eb52703cce9b4238774dbfdcaecacd892d729b7869fdfd7644008ce74a60 +DIST microcode-20170707.tgz 2908882 BLAKE2B 545d94ee9292d1ba730932f11660d0e0378b4a6f2a5232cdcc26333a8d707ec13b040d41617fb28c17e4b81f1df5bc4180f1979925d2fa5198f2edfb3623967c SHA512 2f0643c332318e9c818b9a23a996b59086e86e80e649589e43dbab19f13083d6d9505b8557f67b45ce56de0da043c753a14bb146e597b6669f24fe543656c65f +DIST microcode-20171117.tgz 3594762 BLAKE2B 7a02c28ec6b9b22a367f8fd7d59f244d0195fef3b256fa2542bca734026e869fdefc7b368a230e94ac0554473d18d1b80aa00511ad4ab6580279f512a106c17d SHA512 b1f09dd7bb04c00e456e34bf42bf786c780aba6d2ef3231a45769216a093876e9bb15123c82ddb7d8ef5426fe10b946509f363770af3b4eba16ba76043a064b4 +DIST microcode-20171117_p20171215-r1.tgz 1477015 BLAKE2B 3911aed3bbbd350be69a99bc855cdec6e8dc2a77f64c4d3a6c1aa24455d5c97eb1c03917eddb4cac2018f6da20a1751cc819a5f27f866f64fc56c7279b5ca40f SHA512 05466e16f9778a3ab148fa5485cd605bca7990067040aa9133ec4c3c1b007519cb260fe8811b44df1192ca0e84237f00d7afccfa11103f3dd4a99c08c692ecb0 +DIST microcode-20171117_p20171215.tgz 1468587 BLAKE2B 58777a39f843ae880f7dd8971a9570dbfc176d69541bb9d3cdc948d7be71a7df2559265fb1c8a199bc7567bb5a60176ade1d2c36624d0193dbac98d82401d0dd SHA512 25db94dbf18b1fea9497ec1e61bb5349d7bc78b0578d8869546bc3ec579b96bee7cd62657e66ebd3d4616805e85d790ac7ee7c0fed70b5db30236ffd12b33293 +DIST microcode-20180108.tgz 3676678 BLAKE2B 197e0188e516a3071be9e2e7a6261d78208613db8b746c7df533ce37884197dbd06a4e6ab027cbddba38903f590130f2d974e46da8fbab0613561523653460ab SHA512 f4010d83353948df27beeb804ef11e4f019f63397a4936f9d139e2842f7944d1ae864b9376987eaffc7db5b97201d5de2f4c1d7cc6b0f545ae15ec53a61fce2b +DIST microcode-20180312.tgz 3789662 BLAKE2B e948d74833fe75b9bbdff1e4676f5d49a13bdd06aa6525c39be3448b822203947a5f55515484401ee0c96e8ade19ea580718949bed65883d983509661a16e637 SHA512 cc2cabf6d12c83b65eeb30fca7eb0b503e037dbee3d7ce9cb307b02ed8ac9426b2bafc2c1f1281dddff0945f8308f0d3cd320edea4596551354188d64760b854 diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c new file mode 100644 index 0000000000..caad0323e8 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c @@ -0,0 +1,163 @@ +/* + * Convert Intel microcode.dat into individual ucode files + * named: intel-ucode/$family-$model-$stepping + * + * 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 + */ + + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct microcode_header_intel { + unsigned int hdrver; + unsigned int rev; + unsigned int date; + unsigned int sig; + unsigned int cksum; + unsigned int ldrver; + unsigned int pf; + unsigned int datasize; + unsigned int totalsize; + unsigned int reserved[3]; +}; + +union mcbuf { + struct microcode_header_intel hdr; + unsigned int i[0]; + char c[0]; +}; + +int main(int argc, char *argv[]) +{ + char *filename = "/lib/firmware/microcode.dat"; + FILE *f; + char line[LINE_MAX]; + char buf[4000000]; + union mcbuf *mc; + size_t bufsize, count, start; + int rc = EXIT_SUCCESS; + + if (argv[1] != NULL) + filename = argv[1]; + + count = 0; + mc = (union mcbuf *) buf; + f = fopen(filename, "re"); + if (f == NULL) { + printf("open %s: %m\n", filename); + rc = EXIT_FAILURE; + goto out; + } + + while (fgets(line, sizeof(line), f) != NULL) { + if (sscanf(line, "%x, %x, %x, %x", + &mc->i[count], + &mc->i[count + 1], + &mc->i[count + 2], + &mc->i[count + 3]) != 4) + continue; + count += 4; + } + fclose(f); + + bufsize = count * sizeof(int); + printf("%s: %lu(%luk) bytes, %zu integers\n", + filename, + bufsize, + bufsize / 1024, + count); + + if (bufsize < sizeof(struct microcode_header_intel)) + goto out; + + mkdir("intel-ucode", 0750); + + start = 0; + for (;;) { + size_t size; + unsigned int family, model, stepping; + unsigned int year, month, day; + + mc = (union mcbuf *) &buf[start]; + + if (mc->hdr.totalsize) + size = mc->hdr.totalsize; + else + size = 2000 + sizeof(struct microcode_header_intel); + + if (mc->hdr.ldrver != 1 || mc->hdr.hdrver != 1) { + printf("unknown version/format:\n"); + rc = EXIT_FAILURE; + break; + } + + /* + * 0- 3 stepping + * 4- 7 model + * 8-11 family + * 12-13 type + * 16-19 extended model + * 20-27 extended family + */ + family = (mc->hdr.sig >> 8) & 0xf; + if (family == 0xf) + family += (mc->hdr.sig >> 20) & 0xff; + model = (mc->hdr.sig >> 4) & 0x0f; + if (family == 0x06) + model += ((mc->hdr.sig >> 16) & 0x0f) << 4; + stepping = mc->hdr.sig & 0x0f; + + year = mc->hdr.date & 0xffff; + 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); + 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); + rc = EXIT_FAILURE; + goto out; + } + fclose(f); + free(filename); + + start += size; + if (start >= bufsize) + break; + } + printf("\n"); +out: + return rc; +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c-r1 b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c-r1 new file mode 100644 index 0000000000..4b3ba4b48e --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/files/intel-microcode2ucode.c-r1 @@ -0,0 +1,166 @@ +/* + * Convert Intel microcode.dat into individual ucode files + * named: intel-ucode/$family-$model-$stepping + * + * 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 + */ + + +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +struct microcode_header_intel { + unsigned int hdrver; + unsigned int rev; + unsigned int date; + unsigned int sig; + unsigned int cksum; + unsigned int ldrver; + unsigned int pf; + unsigned int datasize; + unsigned int totalsize; + unsigned int reserved[3]; +}; + +union mcbuf { + struct microcode_header_intel hdr; + unsigned int i[0]; + char c[0]; +}; + +int main(int argc, char *argv[]) +{ + char *filename = "/lib/firmware/microcode.dat"; + FILE *f; + char line[LINE_MAX]; + char buf[4000000]; + union mcbuf *mc; + size_t bufsize, count, start; + int rc = EXIT_SUCCESS; + + if (argv[1] != NULL) + filename = argv[1]; + + count = 0; + mc = (union mcbuf *) buf; + f = fopen(filename, "re"); + if (f == NULL) { + printf("open %s: %m\n", filename); + rc = EXIT_FAILURE; + goto out; + } + + while (fgets(line, sizeof(line), f) != NULL) { + if (sscanf(line, "%x, %x, %x, %x", + &mc->i[count], + &mc->i[count + 1], + &mc->i[count + 2], + &mc->i[count + 3]) != 4) + continue; + count += 4; + } + fclose(f); + + bufsize = count * sizeof(int); + printf("%s: %lu(%luk) bytes, %zu integers\n", + filename, + bufsize, + bufsize / 1024, + count); + + if (bufsize < sizeof(struct microcode_header_intel)) + goto out; + + mkdir("intel-ucode", 0750); + + start = 0; + for (;;) { + size_t size; + unsigned int family, model, stepping; + unsigned int year, month, day; + + mc = (union mcbuf *) &buf[start]; + + if (mc->hdr.totalsize) + size = mc->hdr.totalsize; + else + size = 2000 + sizeof(struct microcode_header_intel); + + if (mc->hdr.ldrver != 1 || mc->hdr.hdrver != 1) { + printf("unknown version/format:\n"); + rc = EXIT_FAILURE; + break; + } + + /* + * 0- 3 stepping + * 4- 7 model + * 8-11 family + * 12-13 type + * 16-19 extended model + * 20-27 extended family + */ + family = (mc->hdr.sig >> 8) & 0xf; + if (family == 0xf) + family += (mc->hdr.sig >> 20) & 0xff; + model = (mc->hdr.sig >> 4) & 0x0f; + if (family == 0x06) + model += ((mc->hdr.sig >> 16) & 0x0f) << 4; + stepping = mc->hdr.sig & 0x0f; + + year = mc->hdr.date & 0xffff; + month = mc->hdr.date >> 24; + day = (mc->hdr.date >> 16) & 0xff; + + if (asprintf(&filename, "intel-ucode/%02x-%02x-%02x", family, model, stepping) < 0) { + rc = EXIT_FAILURE; + goto out; + } + 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); + 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); + rc = EXIT_FAILURE; + goto out; + } + fclose(f); + free(filename); + + start += size; + if (start >= bufsize) + break; + } + printf("\n"); +out: + return rc; +} diff --git a/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20140430.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20140430.ebuild new file mode 100644 index 0000000000..4cfb5a9697 --- /dev/null +++ b/sdk_container/src/third_party/coreos-overlay/sys-firmware/intel-microcode/intel-microcode-20140430.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2014 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +EAPI="4" + +inherit toolchain-funcs + +# Find updates by searching and clicking the first link (hopefully it's the one): +# http://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File + +NUM="23829" +DESCRIPTION="Intel IA32 microcode update data" +HOMEPAGE="http://inertiawar.com/microcode/ https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}" +SRC_URI="http://downloadmirror.intel.com/${NUM}/eng/microcode-${PV}.tgz" + +LICENSE="intel-ucode" +SLOT="0" +KEYWORDS="-* amd64 x86" +IUSE="" + +RDEPEND="! + + + + base-system@gentoo.org + Gentoo Base System + + + install a small initramfs for use with CONFIG_MICROCODE_EARLY + install the large text microcode.dat (used by older kernels via microcode_ctl) + install the split binary ucode files (used by the kernel directly) + +