From bb51848e23465846f5823d1bacbed808a4469fcd Mon Sep 17 00:00:00 2001 From: Ratchanan Srirattanamet Date: Fri, 26 Jan 2024 21:31:44 +0700 Subject: [PATCH] linux_rpi3: fix build failure due to wrong Kconfig Because of NixOS's generate-config.pl tries to answer 'M' to as much configs as possible, this exposes the wrong Kconfig in the RPi-specific code which is added in the new kernel tree intended to support RPi 5. Add kernel patches to fix the Kconfig, which results in the relavant part being disabled on the RPi 3 build of the kernel. --- pkgs/os-specific/linux/kernel/linux-rpi.nix | 28 ++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/pkgs/os-specific/linux/kernel/linux-rpi.nix b/pkgs/os-specific/linux/kernel/linux-rpi.nix index ee6516045470..f1449998984b 100644 --- a/pkgs/os-specific/linux/kernel/linux-rpi.nix +++ b/pkgs/os-specific/linux/kernel/linux-rpi.nix @@ -1,4 +1,4 @@ -{ stdenv, lib, buildPackages, fetchFromGitHub, perl, buildLinux, rpiVersion, ... } @ args: +{ stdenv, lib, buildPackages, fetchFromGitHub, fetchpatch, perl, buildLinux, rpiVersion, ... } @ args: let # NOTE: raspberrypifw & raspberryPiWirelessFirmware should be updated with this @@ -27,6 +27,32 @@ lib.overrideDerivation (buildLinux (args // { efiBootStub = false; } // (args.features or {}); + kernelPatches = (args.kernelPatches or []) ++ [ + # Fix "WARNING: unmet direct dependencies detected for MFD_RP1", and + # subsequent build failure. + # https://github.com/NixOS/nixpkgs/pull/268280#issuecomment-1911839809 + # https://github.com/raspberrypi/linux/pull/5900 + { + name = "drm-rp1-depends-on-instead-of-select-MFD_RP1.patch"; + patch = fetchpatch { + url = "https://github.com/peat-psuwit/rpi-linux/commit/6de0bb51929cd3ad4fa27b2a421a2af12e6468f5.patch"; + hash = "sha256-9pHcbgWTiztu48SBaLPVroUnxnXMKeCGt5vEo9V8WGw="; + }; + } + + # Fix `ERROR: modpost: missing MODULE_LICENSE() in <...>/bcm2712-iommu.o` + # by preventing such code from being built as module. + # https://github.com/NixOS/nixpkgs/pull/284035#issuecomment-1913015802 + # https://github.com/raspberrypi/linux/pull/5910 + { + name = "iommu-bcm2712-don-t-allow-building-as-module.patch"; + patch = fetchpatch { + url = "https://github.com/peat-psuwit/rpi-linux/commit/693a5e69bddbcbe1d1b796ebc7581c3597685b1b.patch"; + hash = "sha256-8BYYQDM5By8cTk48ASYKJhGVQnZBIK4PXtV70UtfS+A="; + }; + } + ]; + extraMeta = if (rpiVersion < 3) then { platforms = with lib.platforms; arm; hydraPlatforms = [];