sys-firmware/intel-microcode: Sync with Gentoo

It's from Gentoo commit 6c9f7fbbca0f76a1459ceb28d3b6fe1c55dde7c4.
This commit is contained in:
Flatcar Buildbot 2023-06-19 07:16:19 +00:00
parent d0ab30031f
commit 71ba8b5254
7 changed files with 39 additions and 1086 deletions

View File

@ -1,17 +1,9 @@
DIST intel-microcode-collection-20210830.tar.xz 8681768 BLAKE2B 84f098285ed0b79b953e1f54b9ca077e42e7a2b6b28e862dddcb23a546ebebdd5afb9e54215b6c6493b72bf82121ace4b06f759413d3745571ff8156db52d6b1 SHA512 8a6a7376524888b0e89f9fd9a592d52a3859f4ddf1d961484b60d77098faa6984c5e8efc9cf4258a943cfc2c3503dbb87989868962a7ad8028c391d897e212b6
DIST intel-microcode-collection-20220207.tar.xz 9362888 BLAKE2B 9efb2a943bffc1d702675c4ca5d17b6bc7f5bf5688fb1979caadbf96c516c31c3e1894823aaa16dbdb8c778c933eaf49dec6f2d416483d11e58ed1e75823cef8 SHA512 72458aa64c05ceb8bb21b296da5ad15230af3e6ac63240a10370fadec09523cf7ebefaaddce2b31e2c16570c2700a875cccf86fd1770046ff36cc30eb594f041
DIST intel-microcode-collection-20220421.tar.xz 9442704 BLAKE2B 9c0d682d4ae07c6c40b7638cd53e559f0d5b672f40676a3fc478d07ac5772f350da777c20f821ed5a0907ba31800874cd15553fcdbdae319e77e17961cf49f9f SHA512 a7b5ef78618a27c6065a78d5302d19f846feb71bc09cc0359342d1f31f1f793242982bc384227b0e59a4b7f246cb9f4aaa2350ad0a4fe1a23ce3504e59b0d2c2
DIST intel-microcode-collection-20220508.tar.xz 9444060 BLAKE2B 1737143f5227d95590f325f7205c04816d7791bebb27573dc30774fe5f40f74c1e0506d41774474a8b2495b0dc210528fac1362545d670a085c5c502aa903b24 SHA512 b9d7f2d5db0f625a219959f52822c8d6fba2e0bc682257a204c9b33cd19ed2101f5f661e7f2e2b98a8ad8d105fcb3309699d193469ee4d67d99ae188dc7034d9
DIST intel-microcode-collection-20220809.tar.xz 9863700 BLAKE2B 266deba0890cc68de72dab28cb76b9aedd81258c2da1c1c00a19f927c73e9856c9dc6a18c08a768d1df2d5c5c3b21aab13446cdb4f84e13078ff2124859cdb00 SHA512 4c35e26d5887e9182dce5cf4cce46d4cfe8cab926e833396a645561adab775b8a5eac9a27f50a4c83887c50e56384917680a596eb02d50f1a14a56e8c163f4c2
DIST intel-microcode-collection-20221102.tar.xz 11125112 BLAKE2B 6054a3278b694ee4b1d1a92ad586ce37cbbfbead1fc7100541f7b71fb0b9e0eb9fd9560a459f8ba861eb95595a89b79e8dbb8ef2e70ef6513245e206fecd3667 SHA512 76426f6f491a17302bc312cfd1d58849d42ffa8d454c05ab086f493de20cd24d328a7b05689493e1fa70c025097c61fd09fd765bc02485ba6efe81d0fac014cd
DIST intel-microcode-collection-20230212.tar.xz 13213352 BLAKE2B b2548908632cc65e997186e7af60a35ba4a44edb88263f5018c1cc9619299816c6184352653076413b95fb914f799b765e4fa6a5c46513d1425bde353e4dcde2 SHA512 27f2aacbf409acb005f83f0f486b59128ebac4c8d6b1b329cff7e33b237a8d47e579c6afb064d7a9ff634ad652ae0c2b9bc9302e6269007e12bd4aa391075430
DIST intel-microcode-collection-20230512.tar.xz 12924124 BLAKE2B 3593d9dd9d46281471e1ef335bb8e3fccee99cf484256b9f3b1f2fd0af1d1266c0237bf7cf97314e229f0e3ae622de68bdbe2cf3d9ed4b74ca9189f2aa7bf226 SHA512 9d65406898a8e82e66ab9ff684166eaf61a2b42c765d6f55603985176cdf7600b1f95626da0f1fc25d781212ce2c80ac108d0174371390e0e2c2ab7dd48c7b0d
DIST intel-microcode-collection-20230520.tar.xz 12720520 BLAKE2B 804579eb05c5b8835565dec3560d059f909d13da853d37c79ddbaa049b94f96e811a2240ab043dfdbf59074e683383f5c17e76ceb0e7f6cccffdaad330bf7de1 SHA512 6302866edf5a5209f8dfc80817fe306fc11376ac7d70450f32e38483902c428365fb553c57e989a6ca6e1cf07573352c9b500764250a815c4aff6b9f6b6d47fb
DIST intel-ucode-sig_0x406e3-rev_0xd6.bin 101376 BLAKE2B 66d55867954d69dda1425febd93bb8c89f7aa836d504f8b5fee127f8505bcf2246f4fcc55cc245bc5e532528d60cca2eee278de7ab5174dc2862db7982a2b36f SHA512 248066b521bf512b5d8e4a8c7e921464ce52169c954d6e4ca580d8c172cd789519e22b4cf56c212e452b4191741f0202019f7061d322c9433b5af9ce5413b567
DIST microcode-20210608.tar.gz 4782451 BLAKE2B 2eac43aaa7832365e428bf2de20797ef42293a53087545920d205bd3b11a3d8ca2afb33931af5d36b8f3a224b9c22ed89ff828acc8afdcfa1b8220884c55ae89 SHA512 61acd2e76aa019fa0002fbf56c503791080a937ff93d81e020f8f0cc089dc08928b4c7e9884f713b886e2f9d4a8409fea59e39f628ef534a588515e1c3fc861d
DIST microcode-20220207.tar.gz 4590237 BLAKE2B 8c47a330794615b6684084976b6bb9e8800cd2869f81ecc33b28b54441b220a645502c0ade0cbd58e91879a652ff6bca181800004de477fc74033413ea4b1c8f SHA512 efa9f80815947cf2be371e7da7185634cbacefe779d1d6dfef0c15b78ccae7d2740ea6681b967a19dfbcc3014edce5bcdcdba87c9dea1f19d0415a03fca9e936
DIST microcode-20220419.tar.gz 4590171 BLAKE2B 69d296efad5329324a47640eace5d1a10e38b85cb8b7ac5baa9f14c40391ff809ae17cb7814f99f2e43910fe4c4b02dc77ffea7bb5f2b58069b2c17029e9f76a SHA512 abfe3942c204e42ed121bcea47c366469013a6751ef5d28d9c0d59a3a660bd1ad7010441e000367c052ee1ead00285a252d2b3c3ca86314eaea9f7d0de3f05c6
DIST microcode-20220510.tar.gz 5912115 BLAKE2B 5f8c238b00970ddda132dbcf9059df759bb768e1eb2fe0b9912ffe69cf9a6104b32ea816e7574660ea74e3d08af1aa45cc46b5f38d0b315e6e466d8ca466f37d SHA512 00329ce62a6d9cc66fb8594d132ef67951086ab1250ceaf908d5a357753ed62557275f55c5eb7b3ad55d1fdd312b5d1a436b214cdcbf6e3e1a840c8bf6f4795d
DIST microcode-20220809.tar.gz 5929894 BLAKE2B 3765995c88b67aff78fe8c4280b3293c60a2013f2b8c9ec155a2ef187af55a7e562c73a000e45828cf5309e2c1b644dac5849347130b1a98c831bdad117df437 SHA512 1c91df1cbba33953f4ad19cc53215cad843c61a08509596fad32a84b4f0012d9d29bce64b58eb405c345af7f646d5982e45227570ce3605780be6e8bf31a63e1
DIST microcode-20221108.tar.gz 6436305 BLAKE2B e149e001656f45e8da9a83817a6f83fc6663edbfc8a98b27ab4f9d326f0999921aea03f1ea3628d35978ad5534e017f2d394d1d00d0c992aee54a539a582abf2 SHA512 d86bee1269d31d3028f0d2b7d4886795b96d8f1f9d5dbd5149c2dd4cec3b0319fd869f8138f283e2135ecb0bb6387cfd3c2ef1f597b4194a250ac4f2df7f15a4
DIST microcode-20230214.tar.gz 12088391 BLAKE2B d98d054a8cfd66e3d0549d1e8f4a4745cad342d45f36a82d2f2f51fedc29635125fdad95ee4970069e134facc1ab3092b97837c6f8744ffedf220a5d3d022dd5 SHA512 6456cd6719923eeacb1f9d6d7372efd2bcd0de9e04350c722543ff41e45c7715ba52a2d330ad5818fbf44ea9df6b2ac482d6f8bd420b191427881dcfe3bd81e2
DIST microcode-20230512.tar.gz 12654272 BLAKE2B 302aedf0b57719d1009be0dea513da7290b41842117951a0081f866024d5380c65850638ee3d2e87c8d9efcac4da58650463b0c31373d661fe74b8a3a380e099 SHA512 e21c82846f7f5e2c8d9559931e90389a7d21f8a59fbdec4c5b11fe43f010a21d3e9f27d67be12fe98b3dbdf26558a8ed74dc149bedd93f4b7728795dc6e86d48
DIST microcode-20230613.tar.gz 12338446 BLAKE2B 56bffb26687fd3a20b79b4540ae10c98b2875e3edb84583b679ddc75e339193db4bddece25c7e5cb26b79f5e6ce2d10fcc318c55e13c05d8611198e4c571354b SHA512 460e46d20f71df1247affa2ca397b961ce3d77e3456144c6b7358e48c3239e9c077ff4c512b0c4b7d9a86f33fed094db8b3ac65b1a4047bb853212848d929639

View File

@ -1,262 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
inherit linux-info toolchain-funcs mount-boot
# Find updates by searching and clicking the first link (hopefully it's the one):
# https://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File
COLLECTION_SNAPSHOT="${PV##*_p}"
INTEL_SNAPSHOT="${PV/_p*}"
#NUM="28087"
#https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}
#https://downloadmirror.intel.com/${NUM}/eng/microcode-${INTEL_SNAPSHOT}.tgz
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files http://inertiawar.com/microcode/"
SRC_URI="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${INTEL_SNAPSHOT}.tar.gz
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/raw/437f382b1be4412b9d03e2bbdcda46d83d581242/intel-ucode/06-4e-03 -> intel-ucode-sig_0x406e3-rev_0xd6.bin
https://dev.gentoo.org/~whissi/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz"
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* amd64 x86"
IUSE="hostonly initramfs +split-ucode vanilla"
REQUIRED_USE="|| ( initramfs split-ucode )"
BDEPEND=">=sys-apps/iucode_tool-2.3"
# !<sys-apps/microcode-ctl-1.17-r2 due to bug #268586
RDEPEND="hostonly? ( sys-apps/iucode_tool )"
RESTRICT="binchecks strip"
S=${WORKDIR}
# Blacklist bad microcode here.
# 0x000406f1 aka 06-4f-01 aka CPUID 406F1 require newer microcode loader
MICROCODE_BLACKLIST_DEFAULT="-s !0x000406f1"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00dc"
# https://bugs.gentoo.org/722768
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00da"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/commit/49bb67f32a2e3e631ba1a9a73da1c52e1cac7fd9
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000806c1,0x80,eq:0x0068"
# In case we want to set some defaults ...
MICROCODE_SIGNATURES_DEFAULT=""
# Advanced users only!
# Set MIRCOCODE_SIGNATURES to merge with:
# only current CPU: MICROCODE_SIGNATURES="-S"
# only specific CPU: MICROCODE_SIGNATURES="-s 0x00000f4a -s 0x00010676"
# exclude specific CPU: MICROCODE_SIGNATURES="-s !0x00000686"
pkg_pretend() {
use initramfs && mount-boot_pkg_pretend
}
src_prepare() {
default
if cd Intel-Linux-Processor-Microcode-Data* &>/dev/null; then
# new tarball format from GitHub
mv * ../ || die "Failed to move Intel-Linux-Processor-Microcode-Data*"
cd .. || die
rm -r Intel-Linux-Processor-Microcode-Data* || die
fi
mkdir intel-ucode-old || die
cp "${DISTDIR}"/intel-ucode-sig_0x406e3-rev_0xd6.bin "${S}"/intel-ucode-old/ || die
# Prevent "invalid file format" errors from iucode_tool
rm -f "${S}"/intel-ucod*/list || die
}
src_install() {
# This will take ALL of the upstream microcode sources:
# - microcode.dat
# - intel-ucode/
# In some cases, they have not contained the same content (eg the directory has newer stuff).
MICROCODE_SRC=(
"${S}"/intel-ucode/
"${S}"/intel-ucode-with-caveats/
"${S}"/intel-ucode-old/
)
# Allow users who are scared about microcode updates not included in Intel's official
# microcode tarball to opt-out and comply with Intel marketing
if ! use vanilla; then
MICROCODE_SRC+=( "${S}"/intel-microcode-collection-${COLLECTION_SNAPSHOT} )
fi
# These will carry into pkg_preinst via env saving.
: ${MICROCODE_BLACKLIST=${MICROCODE_BLACKLIST_DEFAULT}}
: ${MICROCODE_SIGNATURES=${MICROCODE_SIGNATUES_DEFAULT}}
opts=(
${MICROCODE_BLACKLIST}
${MICROCODE_SIGNATURES}
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && dodir /boot && opts+=( --write-earlyfw="${ED}/boot/intel-uc.img" )
keepdir /lib/firmware/intel-ucode
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
iucode_tool \
"${opts[@]}" \
"${MICROCODE_SRC[@]}" \
|| die "iucode_tool ${opts[@]} ${MICROCODE_SRC[@]}"
dodoc releasenote.md
}
pkg_preinst() {
if [[ ${MICROCODE_BLACKLIST} != ${MICROCODE_BLACKLIST_DEFAULT} ]]; then
ewarn "MICROCODE_BLACKLIST is set to \"${MICROCODE_BLACKLIST}\" instead of default \"${MICROCODE_BLACKLIST_DEFAULT}\". You are on your own!"
fi
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "Package was created using advanced options:"
ewarn "MICROCODE_SIGNATURES is set to \"${MICROCODE_SIGNATURES}\" instead of default \"${MICROCODE_SIGNATURES_DEFAULT}\"!"
fi
# Make sure /boot is available if needed.
use initramfs && mount-boot_pkg_preinst
local _initramfs_file="${ED}/boot/intel-uc.img"
if use hostonly; then
# While this output looks redundant we do this check to detect
# rare cases where iucode_tool was unable to detect system's processor(s).
local _detected_processors=$(iucode_tool --scan-system 2>&1)
if [[ -z "${_detected_processors}" ]]; then
ewarn "Looks like iucode_tool was unable to detect any processor!"
else
einfo "Only installing ucode(s) for ${_detected_processors#iucode_tool: system has } due to USE=hostonly ..."
fi
opts=(
--scan-system
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && opts+=( --write-earlyfw=${_initramfs_file} )
if use split-ucode; then
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
fi
opts+=( "${ED}/lib/firmware/intel-ucode-temp" )
mv "${ED}"/lib/firmware/intel-ucode{,-temp} || die
keepdir /lib/firmware/intel-ucode
iucode_tool "${opts[@]}" || die "iucode_tool ${opts[@]}"
rm -r "${ED}"/lib/firmware/intel-ucode-temp || die
elif ! use split-ucode; then # hostonly disabled
rm -r "${ED}"/lib/firmware/intel-ucode || die
fi
# Because it is possible that this package will install not one single file
# due to user selection which is still somehow unexpected we add the following
# check to inform user so that the user has at least a chance to detect
# a problem/invalid select.
local _has_installed_something=
if use initramfs && [[ -s "${_initramfs_file}" ]]; then
_has_installed_something="yes"
elif use split-ucode; then
_has_installed_something=$(find "${ED}/lib/firmware/intel-ucode" -maxdepth 0 -not -empty -exec echo yes \;)
fi
if use hostonly && [[ -n "${_has_installed_something}" ]]; then
elog "You only installed ucode(s) for all currently available (=online)"
elog "processor(s). Remember to re-emerge this package whenever you"
elog "change the system's processor model."
elog ""
elif [[ -z "${_has_installed_something}" ]]; then
ewarn "WARNING:"
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "No ucode was installed! Because you have created this package"
ewarn "using MICROCODE_SIGNATURES variable please double check if you"
ewarn "have an invalid select."
ewarn "It's rare but it is also possible that just no ucode update"
ewarn "is available for your processor(s). In this case it is safe"
ewarn "to ignore this warning."
else
ewarn "No ucode was installed! It's rare but it is also possible"
ewarn "that just no ucode update is available for your processor(s)."
ewarn "In this case it is safe to ignore this warning."
fi
ewarn ""
if use hostonly; then
ewarn "Unset \"hostonly\" USE flag to install all available ucodes."
ewarn ""
fi
fi
}
pkg_prerm() {
# Make sure /boot is mounted so that we can remove /boot/intel-uc.img!
use initramfs && mount-boot_pkg_prerm
}
pkg_postrm() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postrm
}
pkg_postinst() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postinst
# We cannot give detailed information if user is affected or not:
# If MICROCODE_BLACKLIST wasn't modified, user can still use MICROCODE_SIGNATURES
# to to force a specific, otherwise blacklisted, microcode. So we
# only show a generic warning based on running kernel version:
if kernel_is -lt 4 14 34; then
ewarn "${P} contains microcode updates which require"
ewarn "additional kernel patches which aren't yet included in kernel <4.14.34."
ewarn "Loading such a microcode through kernel interface from an unpatched kernel"
ewarn "can crash your system!"
ewarn ""
ewarn "Those microcodes are blacklisted per default. However, if you have altered"
ewarn "MICROCODE_BLACKLIST or MICROCODE_SIGNATURES, you maybe have unintentionally"
ewarn "re-enabled those microcodes...!"
ewarn ""
ewarn "Check \"${EROOT}/usr/share/doc/${PN}-*/releasenot*\" if your microcode update"
ewarn "requires additional kernel patches or not."
fi
}

View File

@ -1,262 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
inherit linux-info toolchain-funcs mount-boot
# Find updates by searching and clicking the first link (hopefully it's the one):
# https://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File
COLLECTION_SNAPSHOT="${PV##*_p}"
INTEL_SNAPSHOT="${PV/_p*}"
#NUM="28087"
#https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}
#https://downloadmirror.intel.com/${NUM}/eng/microcode-${INTEL_SNAPSHOT}.tgz
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files http://inertiawar.com/microcode/"
SRC_URI="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${INTEL_SNAPSHOT}.tar.gz
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/raw/437f382b1be4412b9d03e2bbdcda46d83d581242/intel-ucode/06-4e-03 -> intel-ucode-sig_0x406e3-rev_0xd6.bin
https://dev.gentoo.org/~whissi/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz"
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* amd64 x86"
IUSE="hostonly initramfs +split-ucode vanilla"
REQUIRED_USE="|| ( initramfs split-ucode )"
BDEPEND=">=sys-apps/iucode_tool-2.3"
# !<sys-apps/microcode-ctl-1.17-r2 due to bug #268586
RDEPEND="hostonly? ( sys-apps/iucode_tool )"
RESTRICT="binchecks strip"
S=${WORKDIR}
# Blacklist bad microcode here.
# 0x000406f1 aka 06-4f-01 aka CPUID 406F1 require newer microcode loader
MICROCODE_BLACKLIST_DEFAULT="-s !0x000406f1"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00dc"
# https://bugs.gentoo.org/722768
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00da"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/commit/49bb67f32a2e3e631ba1a9a73da1c52e1cac7fd9
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000806c1,0x80,eq:0x0068"
# In case we want to set some defaults ...
MICROCODE_SIGNATURES_DEFAULT=""
# Advanced users only!
# Set MIRCOCODE_SIGNATURES to merge with:
# only current CPU: MICROCODE_SIGNATURES="-S"
# only specific CPU: MICROCODE_SIGNATURES="-s 0x00000f4a -s 0x00010676"
# exclude specific CPU: MICROCODE_SIGNATURES="-s !0x00000686"
pkg_pretend() {
use initramfs && mount-boot_pkg_pretend
}
src_prepare() {
default
if cd Intel-Linux-Processor-Microcode-Data* &>/dev/null; then
# new tarball format from GitHub
mv * ../ || die "Failed to move Intel-Linux-Processor-Microcode-Data*"
cd .. || die
rm -r Intel-Linux-Processor-Microcode-Data* || die
fi
mkdir intel-ucode-old || die
cp "${DISTDIR}"/intel-ucode-sig_0x406e3-rev_0xd6.bin "${S}"/intel-ucode-old/ || die
# Prevent "invalid file format" errors from iucode_tool
rm -f "${S}"/intel-ucod*/list || die
}
src_install() {
# This will take ALL of the upstream microcode sources:
# - microcode.dat
# - intel-ucode/
# In some cases, they have not contained the same content (eg the directory has newer stuff).
MICROCODE_SRC=(
"${S}"/intel-ucode/
"${S}"/intel-ucode-with-caveats/
"${S}"/intel-ucode-old/
)
# Allow users who are scared about microcode updates not included in Intel's official
# microcode tarball to opt-out and comply with Intel marketing
if ! use vanilla; then
MICROCODE_SRC+=( "${S}"/intel-microcode-collection-${COLLECTION_SNAPSHOT} )
fi
# These will carry into pkg_preinst via env saving.
: ${MICROCODE_BLACKLIST=${MICROCODE_BLACKLIST_DEFAULT}}
: ${MICROCODE_SIGNATURES=${MICROCODE_SIGNATUES_DEFAULT}}
opts=(
${MICROCODE_BLACKLIST}
${MICROCODE_SIGNATURES}
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && dodir /boot && opts+=( --write-earlyfw="${ED}/boot/intel-uc.img" )
keepdir /lib/firmware/intel-ucode
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
iucode_tool \
"${opts[@]}" \
"${MICROCODE_SRC[@]}" \
|| die "iucode_tool ${opts[@]} ${MICROCODE_SRC[@]}"
dodoc releasenote.md
}
pkg_preinst() {
if [[ ${MICROCODE_BLACKLIST} != ${MICROCODE_BLACKLIST_DEFAULT} ]]; then
ewarn "MICROCODE_BLACKLIST is set to \"${MICROCODE_BLACKLIST}\" instead of default \"${MICROCODE_BLACKLIST_DEFAULT}\". You are on your own!"
fi
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "Package was created using advanced options:"
ewarn "MICROCODE_SIGNATURES is set to \"${MICROCODE_SIGNATURES}\" instead of default \"${MICROCODE_SIGNATURES_DEFAULT}\"!"
fi
# Make sure /boot is available if needed.
use initramfs && mount-boot_pkg_preinst
local _initramfs_file="${ED}/boot/intel-uc.img"
if use hostonly; then
# While this output looks redundant we do this check to detect
# rare cases where iucode_tool was unable to detect system's processor(s).
local _detected_processors=$(iucode_tool --scan-system 2>&1)
if [[ -z "${_detected_processors}" ]]; then
ewarn "Looks like iucode_tool was unable to detect any processor!"
else
einfo "Only installing ucode(s) for ${_detected_processors#iucode_tool: system has } due to USE=hostonly ..."
fi
opts=(
--scan-system
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && opts+=( --write-earlyfw=${_initramfs_file} )
if use split-ucode; then
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
fi
opts+=( "${ED}/lib/firmware/intel-ucode-temp" )
mv "${ED}"/lib/firmware/intel-ucode{,-temp} || die
keepdir /lib/firmware/intel-ucode
iucode_tool "${opts[@]}" || die "iucode_tool ${opts[@]}"
rm -r "${ED}"/lib/firmware/intel-ucode-temp || die
elif ! use split-ucode; then # hostonly disabled
rm -r "${ED}"/lib/firmware/intel-ucode || die
fi
# Because it is possible that this package will install not one single file
# due to user selection which is still somehow unexpected we add the following
# check to inform user so that the user has at least a chance to detect
# a problem/invalid select.
local _has_installed_something=
if use initramfs && [[ -s "${_initramfs_file}" ]]; then
_has_installed_something="yes"
elif use split-ucode; then
_has_installed_something=$(find "${ED}/lib/firmware/intel-ucode" -maxdepth 0 -not -empty -exec echo yes \;)
fi
if use hostonly && [[ -n "${_has_installed_something}" ]]; then
elog "You only installed ucode(s) for all currently available (=online)"
elog "processor(s). Remember to re-emerge this package whenever you"
elog "change the system's processor model."
elog ""
elif [[ -z "${_has_installed_something}" ]]; then
ewarn "WARNING:"
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "No ucode was installed! Because you have created this package"
ewarn "using MICROCODE_SIGNATURES variable please double check if you"
ewarn "have an invalid select."
ewarn "It's rare but it is also possible that just no ucode update"
ewarn "is available for your processor(s). In this case it is safe"
ewarn "to ignore this warning."
else
ewarn "No ucode was installed! It's rare but it is also possible"
ewarn "that just no ucode update is available for your processor(s)."
ewarn "In this case it is safe to ignore this warning."
fi
ewarn ""
if use hostonly; then
ewarn "Unset \"hostonly\" USE flag to install all available ucodes."
ewarn ""
fi
fi
}
pkg_prerm() {
# Make sure /boot is mounted so that we can remove /boot/intel-uc.img!
use initramfs && mount-boot_pkg_prerm
}
pkg_postrm() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postrm
}
pkg_postinst() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postinst
# We cannot give detailed information if user is affected or not:
# If MICROCODE_BLACKLIST wasn't modified, user can still use MICROCODE_SIGNATURES
# to to force a specific, otherwise blacklisted, microcode. So we
# only show a generic warning based on running kernel version:
if kernel_is -lt 4 14 34; then
ewarn "${P} contains microcode updates which require"
ewarn "additional kernel patches which aren't yet included in kernel <4.14.34."
ewarn "Loading such a microcode through kernel interface from an unpatched kernel"
ewarn "can crash your system!"
ewarn ""
ewarn "Those microcodes are blacklisted per default. However, if you have altered"
ewarn "MICROCODE_BLACKLIST or MICROCODE_SIGNATURES, you maybe have unintentionally"
ewarn "re-enabled those microcodes...!"
ewarn ""
ewarn "Check \"${EROOT}/usr/share/doc/${PN}-*/releasenot*\" if your microcode update"
ewarn "requires additional kernel patches or not."
fi
}

View File

@ -1,263 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
inherit linux-info mount-boot
# Find updates by searching and clicking the first link (hopefully it's the one):
# https://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File
COLLECTION_SNAPSHOT="${PV##*_p}"
INTEL_SNAPSHOT="${PV/_p*}"
#NUM="28087"
#https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}
#https://downloadmirror.intel.com/${NUM}/eng/microcode-${INTEL_SNAPSHOT}.tgz
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files http://inertiawar.com/microcode/"
SRC_URI="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${INTEL_SNAPSHOT}.tar.gz
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/raw/437f382b1be4412b9d03e2bbdcda46d83d581242/intel-ucode/06-4e-03 -> intel-ucode-sig_0x406e3-rev_0xd6.bin
https://dev.gentoo.org/~mpagano/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz"
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* amd64 x86"
IUSE="hostonly initramfs +split-ucode vanilla"
REQUIRED_USE="|| ( initramfs split-ucode )"
BDEPEND=">=sys-apps/iucode_tool-2.3"
# !<sys-apps/microcode-ctl-1.17-r2 due to bug #268586
RDEPEND="hostonly? ( sys-apps/iucode_tool )"
RESTRICT="binchecks strip"
S=${WORKDIR}
# Blacklist bad microcode here.
# 0x000406f1 aka 06-4f-01 aka CPUID 406F1 require newer microcode loader
MICROCODE_BLACKLIST_DEFAULT="-s !0x000406f1"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00dc"
# https://bugs.gentoo.org/722768
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00da"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/commit/49bb67f32a2e3e631ba1a9a73da1c52e1cac7fd9
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000806c1,0x80,eq:0x0068"
# In case we want to set some defaults ...
MICROCODE_SIGNATURES_DEFAULT=""
# Advanced users only!
# Set MIRCOCODE_SIGNATURES to merge with:
# only current CPU: MICROCODE_SIGNATURES="-S"
# only specific CPU: MICROCODE_SIGNATURES="-s 0x00000f4a -s 0x00010676"
# exclude specific CPU: MICROCODE_SIGNATURES="-s !0x00000686"
pkg_pretend() {
use initramfs && mount-boot_pkg_pretend
}
src_prepare() {
default
if cd Intel-Linux-Processor-Microcode-Data* &>/dev/null; then
# new tarball format from GitHub
mv * ../ || die "Failed to move Intel-Linux-Processor-Microcode-Data*"
cd .. || die
rm -r Intel-Linux-Processor-Microcode-Data* || die
fi
mkdir intel-ucode-old || die
cp "${DISTDIR}"/intel-ucode-sig_0x406e3-rev_0xd6.bin "${S}"/intel-ucode-old/ || die
# Prevent "invalid file format" errors from iucode_tool
rm -f "${S}"/intel-ucod*/list || die
}
src_install() {
# This will take ALL of the upstream microcode sources:
# - microcode.dat
# - intel-ucode/
# In some cases, they have not contained the same content (eg the directory has newer stuff).
MICROCODE_SRC=(
"${S}"/intel-ucode/
"${S}"/intel-ucode-with-caveats/
"${S}"/intel-ucode-old/
)
# Allow users who are scared about microcode updates not included in Intel's official
# microcode tarball to opt-out and comply with Intel marketing
if ! use vanilla; then
MICROCODE_SRC+=( "${S}"/intel-microcode-collection-${COLLECTION_SNAPSHOT} )
fi
# These will carry into pkg_preinst via env saving.
: ${MICROCODE_BLACKLIST=${MICROCODE_BLACKLIST_DEFAULT}}
: ${MICROCODE_SIGNATURES=${MICROCODE_SIGNATUES_DEFAULT}}
opts=(
${MICROCODE_BLACKLIST}
${MICROCODE_SIGNATURES}
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && dodir /boot && opts+=( --write-earlyfw="${ED}/boot/intel-uc.img" )
keepdir /lib/firmware/intel-ucode
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
iucode_tool \
"${opts[@]}" \
"${MICROCODE_SRC[@]}" \
|| die "iucode_tool ${opts[@]} ${MICROCODE_SRC[@]}"
dodoc releasenote.md
}
pkg_preinst() {
if [[ ${MICROCODE_BLACKLIST} != ${MICROCODE_BLACKLIST_DEFAULT} ]]; then
ewarn "MICROCODE_BLACKLIST is set to \"${MICROCODE_BLACKLIST}\" instead of default \"${MICROCODE_BLACKLIST_DEFAULT}\". You are on your own!"
fi
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "Package was created using advanced options:"
ewarn "MICROCODE_SIGNATURES is set to \"${MICROCODE_SIGNATURES}\" instead of default \"${MICROCODE_SIGNATURES_DEFAULT}\"!"
fi
# Make sure /boot is available if needed.
use initramfs && mount-boot_pkg_preinst
local _initramfs_file="${ED}/boot/intel-uc.img"
if use hostonly; then
# While this output looks redundant we do this check to detect
# rare cases where iucode_tool was unable to detect system's processor(s).
local _detected_processors=$(iucode_tool --scan-system 2>&1)
if [[ -z "${_detected_processors}" ]]; then
ewarn "Looks like iucode_tool was unable to detect any processor!"
else
einfo "Only installing ucode(s) for ${_detected_processors#iucode_tool: system has } due to USE=hostonly ..."
fi
opts=(
--scan-system
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && opts+=( --write-earlyfw=${_initramfs_file} )
if use split-ucode; then
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
fi
opts+=( "${ED}/lib/firmware/intel-ucode-temp" )
mv "${ED}"/lib/firmware/intel-ucode{,-temp} || die
keepdir /lib/firmware/intel-ucode
iucode_tool "${opts[@]}" || die "iucode_tool ${opts[@]}"
rm -r "${ED}"/lib/firmware/intel-ucode-temp || die
elif ! use split-ucode; then # hostonly disabled
rm -r "${ED}"/lib/firmware/intel-ucode || die
fi
# Because it is possible that this package will install not one single file
# due to user selection which is still somehow unexpected we add the following
# check to inform user so that the user has at least a chance to detect
# a problem/invalid select.
local _has_installed_something=
if use initramfs && [[ -s "${_initramfs_file}" ]]; then
_has_installed_something="yes"
elif use split-ucode; then
_has_installed_something=$(find "${ED}/lib/firmware/intel-ucode" -maxdepth 0 -not -empty -exec echo yes \;)
fi
if use hostonly && [[ -n "${_has_installed_something}" ]]; then
elog "You only installed ucode(s) for all currently available (=online)"
elog "processor(s). Remember to re-emerge this package whenever you"
elog "change the system's processor model."
elog ""
elif [[ -z "${_has_installed_something}" ]]; then
ewarn "WARNING:"
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "No ucode was installed! Because you have created this package"
ewarn "using MICROCODE_SIGNATURES variable please double check if you"
ewarn "have an invalid select."
ewarn "It's rare but it is also possible that just no ucode update"
ewarn "is available for your processor(s). In this case it is safe"
ewarn "to ignore this warning."
else
ewarn "No ucode was installed! It's rare but it is also possible"
ewarn "that just no ucode update is available for your processor(s)."
ewarn "In this case it is safe to ignore this warning."
fi
ewarn ""
if use hostonly; then
ewarn "Unset \"hostonly\" USE flag to install all available ucodes."
ewarn ""
fi
fi
}
pkg_prerm() {
# Make sure /boot is mounted so that we can remove /boot/intel-uc.img!
use initramfs && mount-boot_pkg_prerm
}
pkg_postrm() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postrm
}
pkg_postinst() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postinst
# We cannot give detailed information if user is affected or not:
# If MICROCODE_BLACKLIST wasn't modified, user can still use MICROCODE_SIGNATURES
# to to force a specific, otherwise blacklisted, microcode. So we
# only show a generic warning based on running kernel version:
if kernel_is -lt 4 14 34; then
ewarn "${P} contains microcode updates which require"
ewarn "additional kernel patches which aren't yet included in kernel <4.14.34."
ewarn "Loading such a microcode through kernel interface from an unpatched kernel"
ewarn "can crash your system!"
ewarn ""
ewarn "Those microcodes are blacklisted per default. However, if you have altered"
ewarn "MICROCODE_BLACKLIST or MICROCODE_SIGNATURES, you maybe have unintentionally"
ewarn "re-enabled those microcodes...!"
ewarn ""
ewarn "Check \"${EROOT}/usr/share/doc/${PN}-*/releasenot*\" if your microcode update"
ewarn "requires additional kernel patches or not."
fi
}

View File

@ -1,263 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
inherit linux-info mount-boot
# Find updates by searching and clicking the first link (hopefully it's the one):
# https://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File
COLLECTION_SNAPSHOT="${PV##*_p}"
INTEL_SNAPSHOT="${PV/_p*}"
#NUM="28087"
#https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}
#https://downloadmirror.intel.com/${NUM}/eng/microcode-${INTEL_SNAPSHOT}.tgz
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files http://inertiawar.com/microcode/"
SRC_URI="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${INTEL_SNAPSHOT}.tar.gz
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/raw/437f382b1be4412b9d03e2bbdcda46d83d581242/intel-ucode/06-4e-03 -> intel-ucode-sig_0x406e3-rev_0xd6.bin
https://dev.gentoo.org/~mpagano/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz"
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* amd64 x86"
IUSE="hostonly initramfs +split-ucode vanilla"
REQUIRED_USE="|| ( initramfs split-ucode )"
BDEPEND=">=sys-apps/iucode_tool-2.3"
# !<sys-apps/microcode-ctl-1.17-r2 due to bug #268586
RDEPEND="hostonly? ( sys-apps/iucode_tool )"
RESTRICT="binchecks strip"
S=${WORKDIR}
# Blacklist bad microcode here.
# 0x000406f1 aka 06-4f-01 aka CPUID 406F1 require newer microcode loader
MICROCODE_BLACKLIST_DEFAULT="-s !0x000406f1"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/issues/31
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00dc"
# https://bugs.gentoo.org/722768
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000406e3,0xc0,eq:0x00da"
# https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/commit/49bb67f32a2e3e631ba1a9a73da1c52e1cac7fd9
MICROCODE_BLACKLIST_DEFAULT+=" -s !0x000806c1,0x80,eq:0x0068"
# In case we want to set some defaults ...
MICROCODE_SIGNATURES_DEFAULT=""
# Advanced users only!
# Set MIRCOCODE_SIGNATURES to merge with:
# only current CPU: MICROCODE_SIGNATURES="-S"
# only specific CPU: MICROCODE_SIGNATURES="-s 0x00000f4a -s 0x00010676"
# exclude specific CPU: MICROCODE_SIGNATURES="-s !0x00000686"
pkg_pretend() {
use initramfs && mount-boot_pkg_pretend
}
src_prepare() {
default
if cd Intel-Linux-Processor-Microcode-Data* &>/dev/null; then
# new tarball format from GitHub
mv * ../ || die "Failed to move Intel-Linux-Processor-Microcode-Data*"
cd .. || die
rm -r Intel-Linux-Processor-Microcode-Data* || die
fi
mkdir intel-ucode-old || die
cp "${DISTDIR}"/intel-ucode-sig_0x406e3-rev_0xd6.bin "${S}"/intel-ucode-old/ || die
# Prevent "invalid file format" errors from iucode_tool
rm -f "${S}"/intel-ucod*/list || die
}
src_install() {
# This will take ALL of the upstream microcode sources:
# - microcode.dat
# - intel-ucode/
# In some cases, they have not contained the same content (eg the directory has newer stuff).
MICROCODE_SRC=(
"${S}"/intel-ucode/
"${S}"/intel-ucode-with-caveats/
"${S}"/intel-ucode-old/
)
# Allow users who are scared about microcode updates not included in Intel's official
# microcode tarball to opt-out and comply with Intel marketing
if ! use vanilla; then
MICROCODE_SRC+=( "${S}"/intel-microcode-collection-${COLLECTION_SNAPSHOT} )
fi
# These will carry into pkg_preinst via env saving.
: ${MICROCODE_BLACKLIST=${MICROCODE_BLACKLIST_DEFAULT}}
: ${MICROCODE_SIGNATURES=${MICROCODE_SIGNATUES_DEFAULT}}
opts=(
${MICROCODE_BLACKLIST}
${MICROCODE_SIGNATURES}
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && dodir /boot && opts+=( --write-earlyfw="${ED}/boot/intel-uc.img" )
keepdir /lib/firmware/intel-ucode
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
iucode_tool \
"${opts[@]}" \
"${MICROCODE_SRC[@]}" \
|| die "iucode_tool ${opts[@]} ${MICROCODE_SRC[@]}"
dodoc releasenote.md
}
pkg_preinst() {
if [[ ${MICROCODE_BLACKLIST} != ${MICROCODE_BLACKLIST_DEFAULT} ]]; then
ewarn "MICROCODE_BLACKLIST is set to \"${MICROCODE_BLACKLIST}\" instead of default \"${MICROCODE_BLACKLIST_DEFAULT}\". You are on your own!"
fi
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "Package was created using advanced options:"
ewarn "MICROCODE_SIGNATURES is set to \"${MICROCODE_SIGNATURES}\" instead of default \"${MICROCODE_SIGNATURES_DEFAULT}\"!"
fi
# Make sure /boot is available if needed.
use initramfs && mount-boot_pkg_preinst
local _initramfs_file="${ED}/boot/intel-uc.img"
if use hostonly; then
# While this output looks redundant we do this check to detect
# rare cases where iucode_tool was unable to detect system's processor(s).
local _detected_processors=$(iucode_tool --scan-system 2>&1)
if [[ -z "${_detected_processors}" ]]; then
ewarn "Looks like iucode_tool was unable to detect any processor!"
else
einfo "Only installing ucode(s) for ${_detected_processors#iucode_tool: system has } due to USE=hostonly ..."
fi
opts=(
--scan-system
# be strict about what we are doing
--overwrite
--strict-checks
--no-ignore-broken
# we want to install latest version
--no-downgrade
# show everything we find
--list-all
# show what we selected
--list
)
# The earlyfw cpio needs to be in /boot because it must be loaded before
# rootfs is mounted.
use initramfs && opts+=( --write-earlyfw=${_initramfs_file} )
if use split-ucode; then
opts+=( --write-firmware="${ED}/lib/firmware/intel-ucode" )
fi
opts+=( "${ED}/lib/firmware/intel-ucode-temp" )
mv "${ED}"/lib/firmware/intel-ucode{,-temp} || die
keepdir /lib/firmware/intel-ucode
iucode_tool "${opts[@]}" || die "iucode_tool ${opts[@]}"
rm -r "${ED}"/lib/firmware/intel-ucode-temp || die
elif ! use split-ucode; then # hostonly disabled
rm -r "${ED}"/lib/firmware/intel-ucode || die
fi
# Because it is possible that this package will install not one single file
# due to user selection which is still somehow unexpected we add the following
# check to inform user so that the user has at least a chance to detect
# a problem/invalid select.
local _has_installed_something=
if use initramfs && [[ -s "${_initramfs_file}" ]]; then
_has_installed_something="yes"
elif use split-ucode; then
_has_installed_something=$(find "${ED}/lib/firmware/intel-ucode" -maxdepth 0 -not -empty -exec echo yes \;)
fi
if use hostonly && [[ -n "${_has_installed_something}" ]]; then
elog "You only installed ucode(s) for all currently available (=online)"
elog "processor(s). Remember to re-emerge this package whenever you"
elog "change the system's processor model."
elog ""
elif [[ -z "${_has_installed_something}" ]]; then
ewarn "WARNING:"
if [[ ${MICROCODE_SIGNATURES} != ${MICROCODE_SIGNATURES_DEFAULT} ]]; then
ewarn "No ucode was installed! Because you have created this package"
ewarn "using MICROCODE_SIGNATURES variable please double check if you"
ewarn "have an invalid select."
ewarn "It's rare but it is also possible that just no ucode update"
ewarn "is available for your processor(s). In this case it is safe"
ewarn "to ignore this warning."
else
ewarn "No ucode was installed! It's rare but it is also possible"
ewarn "that just no ucode update is available for your processor(s)."
ewarn "In this case it is safe to ignore this warning."
fi
ewarn ""
if use hostonly; then
ewarn "Unset \"hostonly\" USE flag to install all available ucodes."
ewarn ""
fi
fi
}
pkg_prerm() {
# Make sure /boot is mounted so that we can remove /boot/intel-uc.img!
use initramfs && mount-boot_pkg_prerm
}
pkg_postrm() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postrm
}
pkg_postinst() {
# Don't forget to umount /boot if it was previously mounted by us.
use initramfs && mount-boot_pkg_postinst
# We cannot give detailed information if user is affected or not:
# If MICROCODE_BLACKLIST wasn't modified, user can still use MICROCODE_SIGNATURES
# to to force a specific, otherwise blacklisted, microcode. So we
# only show a generic warning based on running kernel version:
if kernel_is -lt 4 14 34; then
ewarn "${P} contains microcode updates which require"
ewarn "additional kernel patches which aren't yet included in kernel <4.14.34."
ewarn "Loading such a microcode through kernel interface from an unpatched kernel"
ewarn "can crash your system!"
ewarn ""
ewarn "Those microcodes are blacklisted per default. However, if you have altered"
ewarn "MICROCODE_BLACKLIST or MICROCODE_SIGNATURES, you maybe have unintentionally"
ewarn "re-enabled those microcodes...!"
ewarn ""
ewarn "Check \"${EROOT}/usr/share/doc/${PN}-*/releasenot*\" if your microcode update"
ewarn "requires additional kernel patches or not."
fi
}

View File

@ -22,7 +22,7 @@ SRC_URI="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/arc
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* ~amd64 ~x86"
KEYWORDS="-* amd64 x86"
IUSE="hostonly initramfs +split-ucode vanilla"
REQUIRED_USE="|| ( initramfs split-ucode )"

View File

@ -1,38 +1,56 @@
# Copyright 1999-2022 Gentoo Authors
# Copyright 1999-2023 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="7"
EAPI=8
inherit linux-info mount-boot
# Find updates by searching and clicking the first link (hopefully it's the one):
# https://www.intel.com/content/www/us/en/search.html?keyword=Processor+Microcode+Data+File
#
#
# Package Maintenance instructions:
# 1. The ebuild is in the form of intel-microcode-<INTEL_SNAPSHOT>_p<COLLECTION_SNAPSHOT>.ebuild
# 2. The INTEL_SNAPSHOT upstream is located at: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files
# 3. The COLLECTION_SNAPSHOT is created manually using the following steps:
# a. Clone the repository https://github.com/platomav/CPUMicrocodes
# b. Rename the Intel directory to intel-microcode-collection-<YYYYMMDD>
# c. From the CPUMicrocodes directory tar and xz compress the contents of intel-microcode-collection-<YYYYMMDD>:
# tar -cJf intel-microcode-collection-<YYYYMMDD>.tar.xz intel-microcode-collection-<YYYYMMDD>/
# d. This file can go in your devspace, add the URL to SRC_URI if it's not there
# https://dev.gentoo.org/~<dev nick>/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz
#
# PV:
# * the first date is upstream
# * the second date is snapshot (use last commit date in repo) from intel-microcode-collection
COLLECTION_SNAPSHOT="${PV##*_p}"
INTEL_SNAPSHOT="${PV/_p*}"
#NUM="28087"
#https://downloadcenter.intel.com/Detail_Desc.aspx?DwnldID=${NUM}
#https://downloadmirror.intel.com/${NUM}/eng/microcode-${INTEL_SNAPSHOT}.tgz
DESCRIPTION="Intel IA32/IA64 microcode update data"
HOMEPAGE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files http://inertiawar.com/microcode/"
SRC_URI="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${INTEL_SNAPSHOT}.tar.gz
HOMEPAGE="https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files https://github.com/platomav/CPUMicrocodes http://inertiawar.com/microcode/"
SRC_URI="
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/archive/microcode-${INTEL_SNAPSHOT}.tar.gz
https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files/raw/437f382b1be4412b9d03e2bbdcda46d83d581242/intel-ucode/06-4e-03 -> intel-ucode-sig_0x406e3-rev_0xd6.bin
https://dev.gentoo.org/~mpagano/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz"
https://dev.gentoo.org/~mpagano/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz
https://dev.gentoo.org/~sam/distfiles/${CATEGORY}/${PN}/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz
"
S="${WORKDIR}"
LICENSE="intel-ucode"
SLOT="0"
KEYWORDS="-* amd64 x86"
KEYWORDS="-* ~amd64 ~x86"
IUSE="hostonly initramfs +split-ucode vanilla"
REQUIRED_USE="|| ( initramfs split-ucode )"
BDEPEND=">=sys-apps/iucode_tool-2.3"
# !<sys-apps/microcode-ctl-1.17-r2 due to bug #268586
RDEPEND="hostonly? ( sys-apps/iucode_tool )"
RESTRICT="binchecks strip"
S=${WORKDIR}
BDEPEND=">=sys-apps/iucode_tool-2.3"
# !<sys-apps/microcode-ctl-1.17-r2 due to bug #268586
RDEPEND="hostonly? ( sys-apps/iucode_tool )"
# Blacklist bad microcode here.
# 0x000406f1 aka 06-4f-01 aka CPUID 406F1 require newer microcode loader
@ -56,17 +74,6 @@ MICROCODE_SIGNATURES_DEFAULT=""
# only specific CPU: MICROCODE_SIGNATURES="-s 0x00000f4a -s 0x00010676"
# exclude specific CPU: MICROCODE_SIGNATURES="-s !0x00000686"
# Package Maintenance instructions :
# 1. The ebuild is in the form of intel-microcode-<INTEL_SNAPSHOT>_p<COLLECTION_SNAPSHOT>.ebuild
# 2. The INTEL_SNAPSHOT upstream is located at: https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files\
# 3. The COLLECTION_SNAPSHOT is created manually using the following steps:
# a. Clone the repository https://github.com/platomav/CPUMicrocodes
# b. Rename the Intel directory to intel-microcode-collection-<YYYYMMDD>
# c. From the CPUMicrocodes directory tar and xz compress the contents of intel-microcode-collection-<YYYYMMDD>:
# tar -cJf intel-microcode-collection-<YYYYMMDD>.tar.xz intel-microcode-collection-<YYYYMMDD>/
# d. This file can go in your devspace, add the URL to SRC_URI if it's not there
# https://dev.gentoo.org/~<dev nick>/dist/intel-microcode/intel-microcode-collection-${COLLECTION_SNAPSHOT}.tar.xz
pkg_pretend() {
use initramfs && mount-boot_pkg_pretend
}
@ -87,8 +94,12 @@ src_prepare() {
# Prevent "invalid file format" errors from iucode_tool
rm -f "${S}"/intel-ucod*/list || die
# https://gitlab.com/iucode-tool/iucode-tool/-/issues/4
rm "${S}"/intel-microcode-collection-${COLLECTION_SNAPSHOT}/cpu106C0_plat01_ver00000007_2007-08-24_PRD_923CDFA3.bin || die
# Remove non-microcode file from list
rm -f "${S}"/intel-ucode/LICENSE
rm -f "${S}"/intel-microcode-collection-${COLLECTION_SNAPSHOT}/LICENSE || die
rm -f "${S}"/intel-ucode*/LICENSE || die
}
src_install() {