From bd7f6b448dd1abb90fd196cd80406b1cbeeab935 Mon Sep 17 00:00:00 2001 From: q66 Date: Sat, 25 Jul 2020 17:40:20 +0200 Subject: [PATCH] dracut: fix early microcode stuff on non-x86 + other arch fixes --- .../dracut/patches/better-arch-regex.patch | 32 +++++++++++ .../patches/fix-early-microcode-non-x86.patch | 57 +++++++++++++++++++ srcpkgs/dracut/patches/fix-ia32-uefi.patch | 25 ++++++++ .../patches/ppcmac-respect-dracut-arch.patch | 37 ++++++++++++ srcpkgs/dracut/template | 2 +- 5 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 srcpkgs/dracut/patches/better-arch-regex.patch create mode 100644 srcpkgs/dracut/patches/fix-early-microcode-non-x86.patch create mode 100644 srcpkgs/dracut/patches/fix-ia32-uefi.patch create mode 100644 srcpkgs/dracut/patches/ppcmac-respect-dracut-arch.patch diff --git a/srcpkgs/dracut/patches/better-arch-regex.patch b/srcpkgs/dracut/patches/better-arch-regex.patch new file mode 100644 index 00000000000..75d51034dff --- /dev/null +++ b/srcpkgs/dracut/patches/better-arch-regex.patch @@ -0,0 +1,32 @@ +From 0e6859c98a90a1b44abc6f29ba64628afc1be7cb Mon Sep 17 00:00:00 2001 +From: q66 +Date: Sat, 25 Jul 2020 17:29:23 +0200 +Subject: [PATCH 3/4] mkinitrd-dracut.sh: use vmlinux regex for ppc*, vmlinuz + for i686 + +Previously this would not catch ppc64le, now it does; same with +i686. +--- + mkinitrd-dracut.sh | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git mkinitrd-dracut.sh mkinitrd-dracut.sh +index 82d90684..1ea3e514 100755 +--- mkinitrd-dracut.sh ++++ mkinitrd-dracut.sh +@@ -57,10 +57,10 @@ default_kernel_images() { + s390|s390x) + regex='image' + ;; +- ppc|ppc64) ++ ppc*) + regex='vmlinux' + ;; +- i386|x86_64) ++ i*86|x86_64) + regex='vmlinuz' + ;; + arm*) +-- +2.27.0 + diff --git a/srcpkgs/dracut/patches/fix-early-microcode-non-x86.patch b/srcpkgs/dracut/patches/fix-early-microcode-non-x86.patch new file mode 100644 index 00000000000..406e695f9a2 --- /dev/null +++ b/srcpkgs/dracut/patches/fix-early-microcode-non-x86.patch @@ -0,0 +1,57 @@ +From d690d736a71e18711b94098da24f56b392c7e6f7 Mon Sep 17 00:00:00 2001 +From: q66 +Date: Sat, 25 Jul 2020 17:28:16 +0200 +Subject: [PATCH 2/4] dracut.sh: fix early microcode detection logic + +This fixes two issues: + +1) on non-x86 systems in non-hostonly config this would cause + an annoying warning on every initramfs generation +2) on non-x86 systems in hostonly config this would result in + early microcode not getting disabled +--- + dracut.sh | 23 +++++++++++++++-------- + 1 file changed, 15 insertions(+), 8 deletions(-) + +diff --git dracut.sh dracut.sh +index 58ff24d1..cd3fcbe2 100755 +--- dracut.sh ++++ dracut.sh +@@ -1194,19 +1194,26 @@ fi + + if [[ $early_microcode = yes ]]; then + if [[ $hostonly ]]; then +- [[ $(get_cpu_vendor) == "AMD" ]] \ +- && ! check_kernel_config CONFIG_MICROCODE_AMD \ +- && unset early_microcode +- [[ $(get_cpu_vendor) == "Intel" ]] \ +- && ! check_kernel_config CONFIG_MICROCODE_INTEL \ +- && unset early_microcode ++ if [[ $(get_cpu_vendor) == "AMD" ]]; then ++ check_kernel_config CONFIG_MICROCODE_AMD || unset early_microcode ++ elif [[ $(get_cpu_vendor) == "Intel" ]]; then ++ check_kernel_config CONFIG_MICROCODE_INTEL || unset early_microcode ++ else ++ unset early_microcode ++ fi + else + ! check_kernel_config CONFIG_MICROCODE_AMD \ + && ! check_kernel_config CONFIG_MICROCODE_INTEL \ + && unset early_microcode + fi +- [[ $early_microcode != yes ]] \ +- && dwarn "Disabling early microcode, because kernel does not support it. CONFIG_MICROCODE_[AMD|INTEL]!=y" ++ # Do not complain on non-x86 architectures as it makes no sense ++ case $(uname -m) in ++ x86_64|i*86) ++ [[ $early_microcode != yes ]] \ ++ && dwarn "Disabling early microcode, because kernel does not support it. CONFIG_MICROCODE_[AMD|INTEL]!=y" ++ ;; ++ *) ;; ++ esac + fi + + # Need to be able to have non-root users read stuff (rpcbind etc) +-- +2.27.0 + diff --git a/srcpkgs/dracut/patches/fix-ia32-uefi.patch b/srcpkgs/dracut/patches/fix-ia32-uefi.patch new file mode 100644 index 00000000000..b4a79092d69 --- /dev/null +++ b/srcpkgs/dracut/patches/fix-ia32-uefi.patch @@ -0,0 +1,25 @@ +From e1bce654f1bd739cf1f975ff0a1f766221c3d4ee Mon Sep 17 00:00:00 2001 +From: q66 +Date: Sat, 25 Jul 2020 17:20:40 +0200 +Subject: [PATCH 1/4] dracut.sh: fix ia32 detection for uefi executables + +--- + dracut.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git dracut.sh dracut.sh +index e3195499..58ff24d1 100755 +--- dracut.sh ++++ dracut.sh +@@ -1153,7 +1153,7 @@ if [[ ! $print_cmdline ]]; then + case $(uname -m) in + x86_64) + EFI_MACHINE_TYPE_NAME=x64;; +- ia32) ++ i*86) + EFI_MACHINE_TYPE_NAME=ia32;; + *) + dfatal "Architecture '$(uname -m)' not supported to create a UEFI executable" +-- +2.27.0 + diff --git a/srcpkgs/dracut/patches/ppcmac-respect-dracut-arch.patch b/srcpkgs/dracut/patches/ppcmac-respect-dracut-arch.patch new file mode 100644 index 00000000000..b569572a6bc --- /dev/null +++ b/srcpkgs/dracut/patches/ppcmac-respect-dracut-arch.patch @@ -0,0 +1,37 @@ +From c26b5c7559c297aaa6c78787fa8de18bbf090205 Mon Sep 17 00:00:00 2001 +From: q66 +Date: Sat, 25 Jul 2020 17:47:00 +0200 +Subject: [PATCH 4/4] 90ppcmac: respect DRACUT_ARCH, don't exclude ppcle + +--- + modules.d/90ppcmac/module-setup.sh | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git modules.d/90ppcmac/module-setup.sh modules.d/90ppcmac/module-setup.sh +index 59221ec4..7199dd9b 100644 +--- modules.d/90ppcmac/module-setup.sh ++++ modules.d/90ppcmac/module-setup.sh +@@ -17,9 +17,9 @@ + + # called by dracut + check() { +- local _arch="$(uname -m)" ++ local _arch=${DRACUT_ARCH:-$(uname -m)} + # only for PowerPC Macs +- [[ "$_arch" == ppc* && "$_arch" != ppc*le ]] || return 1 ++ [[ "$_arch" == ppc* && "$_arch" != ppc64le ]] || return 1 + return 0 + } + +@@ -36,7 +36,7 @@ installkernel() { + } + + # only PowerMac3,6 has a module, special case +- if [[ "$(uname -m)" == ppc ]]; then ++ if [[ "${DRACUT_ARCH:-$(uname -m)}" != ppc64* ]]; then + if ! [[ $hostonly ]] || [[ "$(pmac_model)" == "PowerMac3,6" ]]; then + instmods therm_windtunnel + fi +-- +2.27.0 + diff --git a/srcpkgs/dracut/template b/srcpkgs/dracut/template index 3c6aca0ada6..b11335d06e3 100644 --- a/srcpkgs/dracut/template +++ b/srcpkgs/dracut/template @@ -1,7 +1,7 @@ # Template file for 'dracut' pkgname=dracut version=050 -revision=2 +revision=3 build_style=configure configure_args="--prefix=/usr --sysconfdir=/etc" conf_files="/etc/dracut.conf"