The /boot/amd-ucode is useless when we use a dist-kernel since dracut is responsible for generating the initramfs, and it (by default) includes the microcode.
Instead add USE=dist-kernel and enable USE=initramfs by default. The initramfs flag toggles the early_microcode setting of dracut, and if both flags are enabled we trigger initramfs re-installation. This ensures that when we update this package, we also get the latest microcode in our dist-kernel initramfs or UKI. Signed-off-by: Andrew Ammerlaan <andrewammerl...@gentoo.org> --- .../linux-firmware-20240220-r2.ebuild | 32 +++++++++++++++---- .../linux-firmware-20240312.ebuild | 32 +++++++++++++++---- .../linux-firmware-20240410.ebuild | 32 +++++++++++++++---- .../linux-firmware-99999999.ebuild | 32 +++++++++++++++---- 4 files changed, 100 insertions(+), 28 deletions(-) diff --git a/sys-kernel/linux-firmware/linux-firmware-20240220-r2.ebuild b/sys-kernel/linux-firmware/linux-firmware-20240220-r2.ebuild index 8ea7565f00ce..0ecca9dae446 100644 --- a/sys-kernel/linux-firmware/linux-firmware-20240220-r2.ebuild +++ b/sys-kernel/linux-firmware/linux-firmware-20240220-r2.ebuild @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -inherit linux-info mount-boot savedconfig multiprocessing +inherit dist-kernel-utils linux-info mount-boot savedconfig multiprocessing # In case this is a real snapshot, fill in commit below. # For normal, tagged releases, leave blank @@ -29,7 +29,7 @@ LICENSE="GPL-2 GPL-2+ GPL-3 BSD MIT || ( MPL-1.1 GPL-2 ) redistributable? ( linux-fw-redistributable BSD-2 BSD BSD-4 ISC MIT ) unknown-license? ( all-rights-reserved )" SLOT="0" -IUSE="bindist compress-xz compress-zstd deduplicate initramfs +redistributable savedconfig unknown-license" +IUSE="bindist compress-xz compress-zstd deduplicate dist-kernel +initramfs +redistributable savedconfig unknown-license" REQUIRED_USE="initramfs? ( redistributable ) ?? ( compress-xz compress-zstd ) savedconfig? ( !deduplicate )" @@ -62,7 +62,14 @@ RDEPEND="!savedconfig? ( !sys-firmware/alsa-firmware[alsa_cards_sb16] !sys-firmware/alsa-firmware[alsa_cards_ymfpci] ) - )" + ) + dist-kernel? ( virtual/dist-kernel ) +" +IDEPEND=" + dist-kernel? ( + initramfs? ( sys-kernel/installkernel ) + ) +" QA_PREBUILT="*" PATCHES=( "${FILESDIR}"/${PN}-copy-firmware-r4.patch ) @@ -84,8 +91,8 @@ pkg_setup() { eerror "Kernels <5.19 do not support ZSTD-compressed firmware files" fi fi - linux-info_pkg_setup fi + linux-info_pkg_setup } src_unpack() { @@ -110,7 +117,7 @@ src_prepare() { chmod +x copy-firmware.sh || die - if use initramfs; then + if use initramfs && ! use dist-kernel; then if [[ -d "${S}/amd-ucode" ]]; then local UCODETMP="${T}/ucode_tmp" local UCODEDIR="${UCODETMP}/kernel/x86/microcode" @@ -351,7 +358,13 @@ src_install() { popd &>/dev/null || die - if use initramfs ; then + # Instruct Dracut on whether or not we want the microcode in initramfs + ( + insinto /usr/lib/dracut/dracut.conf.d + newins - 10-${PN}.conf <<<"early_microcode=$(usex initramfs)" + ) + + if use initramfs && ! use dist-kernel; then insinto /boot doins "${S}"/amd-uc.img fi @@ -391,7 +404,12 @@ pkg_postinst() { done # Don't forget to umount /boot if it was previously mounted by us. - use initramfs && mount-boot_pkg_postinst + if use initramfs; then + if [[ -z ${ROOT} ]] && use dist-kernel; then + dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}" + fi + mount-boot_pkg_postinst + fi } pkg_prerm() { diff --git a/sys-kernel/linux-firmware/linux-firmware-20240312.ebuild b/sys-kernel/linux-firmware/linux-firmware-20240312.ebuild index 8795fc72fda3..2481f3a517f0 100644 --- a/sys-kernel/linux-firmware/linux-firmware-20240312.ebuild +++ b/sys-kernel/linux-firmware/linux-firmware-20240312.ebuild @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -inherit linux-info mount-boot savedconfig multiprocessing +inherit dist-kernel-utils linux-info mount-boot savedconfig multiprocessing # In case this is a real snapshot, fill in commit below. # For normal, tagged releases, leave blank @@ -29,7 +29,7 @@ LICENSE="GPL-2 GPL-2+ GPL-3 BSD MIT || ( MPL-1.1 GPL-2 ) redistributable? ( linux-fw-redistributable BSD-2 BSD BSD-4 ISC MIT ) unknown-license? ( all-rights-reserved )" SLOT="0" -IUSE="bindist compress-xz compress-zstd deduplicate initramfs +redistributable savedconfig unknown-license" +IUSE="bindist compress-xz compress-zstd deduplicate dist-kernel +initramfs +redistributable savedconfig unknown-license" REQUIRED_USE="initramfs? ( redistributable ) ?? ( compress-xz compress-zstd ) savedconfig? ( !deduplicate )" @@ -62,7 +62,14 @@ RDEPEND="!savedconfig? ( !sys-firmware/alsa-firmware[alsa_cards_sb16] !sys-firmware/alsa-firmware[alsa_cards_ymfpci] ) - )" + ) + dist-kernel? ( virtual/dist-kernel ) +" +IDEPEND=" + dist-kernel? ( + initramfs? ( sys-kernel/installkernel ) + ) +" QA_PREBUILT="*" PATCHES=( "${FILESDIR}"/${PN}-copy-firmware-r4.patch ) @@ -84,8 +91,8 @@ pkg_setup() { eerror "Kernels <5.19 do not support ZSTD-compressed firmware files" fi fi - linux-info_pkg_setup fi + linux-info_pkg_setup } src_unpack() { @@ -110,7 +117,7 @@ src_prepare() { chmod +x copy-firmware.sh || die - if use initramfs; then + if use initramfs && ! use dist-kernel; then if [[ -d "${S}/amd-ucode" ]]; then local UCODETMP="${T}/ucode_tmp" local UCODEDIR="${UCODETMP}/kernel/x86/microcode" @@ -351,7 +358,13 @@ src_install() { popd &>/dev/null || die - if use initramfs ; then + # Instruct Dracut on whether or not we want the microcode in initramfs + ( + insinto /usr/lib/dracut/dracut.conf.d + newins - 10-${PN}.conf <<<"early_microcode=$(usex initramfs)" + ) + + if use initramfs && ! use dist-kernel; then insinto /boot doins "${S}"/amd-uc.img fi @@ -391,7 +404,12 @@ pkg_postinst() { done # Don't forget to umount /boot if it was previously mounted by us. - use initramfs && mount-boot_pkg_postinst + if use initramfs; then + if [[ -z ${ROOT} ]] && use dist-kernel; then + dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}" + fi + mount-boot_pkg_postinst + fi } pkg_prerm() { diff --git a/sys-kernel/linux-firmware/linux-firmware-20240410.ebuild b/sys-kernel/linux-firmware/linux-firmware-20240410.ebuild index 8795fc72fda3..2481f3a517f0 100644 --- a/sys-kernel/linux-firmware/linux-firmware-20240410.ebuild +++ b/sys-kernel/linux-firmware/linux-firmware-20240410.ebuild @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -inherit linux-info mount-boot savedconfig multiprocessing +inherit dist-kernel-utils linux-info mount-boot savedconfig multiprocessing # In case this is a real snapshot, fill in commit below. # For normal, tagged releases, leave blank @@ -29,7 +29,7 @@ LICENSE="GPL-2 GPL-2+ GPL-3 BSD MIT || ( MPL-1.1 GPL-2 ) redistributable? ( linux-fw-redistributable BSD-2 BSD BSD-4 ISC MIT ) unknown-license? ( all-rights-reserved )" SLOT="0" -IUSE="bindist compress-xz compress-zstd deduplicate initramfs +redistributable savedconfig unknown-license" +IUSE="bindist compress-xz compress-zstd deduplicate dist-kernel +initramfs +redistributable savedconfig unknown-license" REQUIRED_USE="initramfs? ( redistributable ) ?? ( compress-xz compress-zstd ) savedconfig? ( !deduplicate )" @@ -62,7 +62,14 @@ RDEPEND="!savedconfig? ( !sys-firmware/alsa-firmware[alsa_cards_sb16] !sys-firmware/alsa-firmware[alsa_cards_ymfpci] ) - )" + ) + dist-kernel? ( virtual/dist-kernel ) +" +IDEPEND=" + dist-kernel? ( + initramfs? ( sys-kernel/installkernel ) + ) +" QA_PREBUILT="*" PATCHES=( "${FILESDIR}"/${PN}-copy-firmware-r4.patch ) @@ -84,8 +91,8 @@ pkg_setup() { eerror "Kernels <5.19 do not support ZSTD-compressed firmware files" fi fi - linux-info_pkg_setup fi + linux-info_pkg_setup } src_unpack() { @@ -110,7 +117,7 @@ src_prepare() { chmod +x copy-firmware.sh || die - if use initramfs; then + if use initramfs && ! use dist-kernel; then if [[ -d "${S}/amd-ucode" ]]; then local UCODETMP="${T}/ucode_tmp" local UCODEDIR="${UCODETMP}/kernel/x86/microcode" @@ -351,7 +358,13 @@ src_install() { popd &>/dev/null || die - if use initramfs ; then + # Instruct Dracut on whether or not we want the microcode in initramfs + ( + insinto /usr/lib/dracut/dracut.conf.d + newins - 10-${PN}.conf <<<"early_microcode=$(usex initramfs)" + ) + + if use initramfs && ! use dist-kernel; then insinto /boot doins "${S}"/amd-uc.img fi @@ -391,7 +404,12 @@ pkg_postinst() { done # Don't forget to umount /boot if it was previously mounted by us. - use initramfs && mount-boot_pkg_postinst + if use initramfs; then + if [[ -z ${ROOT} ]] && use dist-kernel; then + dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}" + fi + mount-boot_pkg_postinst + fi } pkg_prerm() { diff --git a/sys-kernel/linux-firmware/linux-firmware-99999999.ebuild b/sys-kernel/linux-firmware/linux-firmware-99999999.ebuild index e3f5246a89a3..01ae250624ed 100644 --- a/sys-kernel/linux-firmware/linux-firmware-99999999.ebuild +++ b/sys-kernel/linux-firmware/linux-firmware-99999999.ebuild @@ -2,7 +2,7 @@ # Distributed under the terms of the GNU General Public License v2 EAPI=8 -inherit linux-info mount-boot savedconfig multiprocessing +inherit dist-kernel-utils linux-info mount-boot savedconfig multiprocessing # In case this is a real snapshot, fill in commit below. # For normal, tagged releases, leave blank @@ -29,7 +29,7 @@ LICENSE="GPL-2 GPL-2+ GPL-3 BSD MIT || ( MPL-1.1 GPL-2 ) redistributable? ( linux-fw-redistributable BSD-2 BSD BSD-4 ISC MIT ) unknown-license? ( all-rights-reserved )" SLOT="0" -IUSE="compress-xz compress-zstd deduplicate initramfs +redistributable savedconfig unknown-license" +IUSE="compress-xz compress-zstd deduplicate dist-kernel +initramfs +redistributable savedconfig unknown-license" REQUIRED_USE="initramfs? ( redistributable ) ?? ( compress-xz compress-zstd ) savedconfig? ( !deduplicate )" @@ -61,7 +61,14 @@ RDEPEND="!savedconfig? ( !sys-firmware/alsa-firmware[alsa_cards_sb16] !sys-firmware/alsa-firmware[alsa_cards_ymfpci] ) - )" + ) + dist-kernel? ( virtual/dist-kernel ) +" +IDEPEND=" + dist-kernel? ( + initramfs? ( sys-kernel/installkernel ) + ) +" QA_PREBUILT="*" @@ -78,8 +85,8 @@ pkg_setup() { eerror "Kernels <5.19 do not support ZSTD-compressed firmware files" fi fi - linux-info_pkg_setup fi + linux-info_pkg_setup } pkg_pretend() { @@ -107,7 +114,7 @@ src_prepare() { chmod +x copy-firmware.sh || die - if use initramfs; then + if use initramfs && ! use dist-kernel; then if [[ -d "${S}/amd-ucode" ]]; then local UCODETMP="${T}/ucode_tmp" local UCODEDIR="${UCODETMP}/kernel/x86/microcode" @@ -355,7 +362,13 @@ src_install() { popd &>/dev/null || die - if use initramfs ; then + # Instruct Dracut on whether or not we want the microcode in initramfs + ( + insinto /usr/lib/dracut/dracut.conf.d + newins - 10-${PN}.conf <<<"early_microcode=$(usex initramfs)" + ) + + if use initramfs && ! use dist-kernel; then insinto /boot doins "${S}"/amd-uc.img fi @@ -391,7 +404,12 @@ pkg_postinst() { done # Don't forget to umount /boot if it was previously mounted by us. - use initramfs && mount-boot_pkg_postinst + if use initramfs; then + if [[ -z ${ROOT} ]] && use dist-kernel; then + dist-kernel_reinstall_initramfs "${KV_DIR}" "${KV_FULL}" + fi + mount-boot_pkg_postinst + fi } pkg_prerm() { -- 2.45.0