diff options
-rw-r--r-- | pkgs/os-specific/linux/kernel/common-config.nix | 39 | ||||
-rw-r--r-- | pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.4.patch | 407 | ||||
-rw-r--r-- | pkgs/os-specific/linux/kernel/linux-4.4.nix | 12 | ||||
-rw-r--r-- | pkgs/top-level/linux-kernels.nix | 11 |
4 files changed, 19 insertions, 450 deletions
diff --git a/pkgs/os-specific/linux/kernel/common-config.nix b/pkgs/os-specific/linux/kernel/common-config.nix index 34e1b10b32a..671fdef2f5d 100644 --- a/pkgs/os-specific/linux/kernel/common-config.nix +++ b/pkgs/os-specific/linux/kernel/common-config.nix @@ -65,7 +65,7 @@ let X86_INTEL_PSTATE = yes; INTEL_IDLE = yes; CPU_FREQ_DEFAULT_GOV_PERFORMANCE = yes; - CPU_FREQ_GOV_SCHEDUTIL = whenAtLeast "4.9" yes; + CPU_FREQ_GOV_SCHEDUTIL = yes; PM_WAKELOCKS = yes; # Power-capping framework and support for INTEL RAPL POWERCAP = yes; @@ -148,12 +148,12 @@ let IPV6_MROUTE = yes; IPV6_MROUTE_MULTIPLE_TABLES = yes; IPV6_PIMSM_V2 = yes; - IPV6_FOU_TUNNEL = whenAtLeast "4.7" module; + IPV6_FOU_TUNNEL = module; IPV6_SEG6_LWTUNNEL = whenAtLeast "4.10" yes; IPV6_SEG6_HMAC = whenAtLeast "4.10" yes; IPV6_SEG6_BPF = whenAtLeast "4.18" yes; - NET_CLS_BPF = whenAtLeast "4.4" module; - NET_ACT_BPF = whenAtLeast "4.4" module; + NET_CLS_BPF = module; + NET_ACT_BPF = module; NET_SCHED = yes; L2TP_V3 = yes; L2TP_IP = module; @@ -168,7 +168,7 @@ let PPP_FILTER = yes; # needed for iwd WPS support (wpa_supplicant replacement) - KEY_DH_OPERATIONS = whenAtLeast "4.7" yes; + KEY_DH_OPERATIONS = yes; # needed for nftables # Networking Options @@ -208,7 +208,7 @@ let INET_TCP_DIAG = mkDefault module; INET_UDP_DIAG = mkDefault module; INET_RAW_DIAG = whenAtLeast "4.14" (mkDefault module); - INET_DIAG_DESTROY = whenAtLeast "4.9" (mkDefault yes); + INET_DIAG_DESTROY = mkDefault yes; # enable multipath-tcp MPTCP = whenAtLeast "5.6" yes; @@ -267,11 +267,11 @@ let # necessary for amdgpu polaris support DRM_AMD_POWERPLAY = whenBetween "4.5" "4.9" yes; # (experimental) amdgpu support for verde and newer chipsets - DRM_AMDGPU_SI = whenAtLeast "4.9" yes; + DRM_AMDGPU_SI = yes; # (stable) amdgpu support for bonaire and newer chipsets - DRM_AMDGPU_CIK = whenAtLeast "4.9" yes; + DRM_AMDGPU_CIK = yes; # Allow device firmware updates - DRM_DP_AUX_CHARDEV = whenAtLeast "4.6" yes; + DRM_DP_AUX_CHARDEV = yes; # amdgpu display core (DC) support DRM_AMD_DC_DCN1_0 = whenBetween "4.15" "5.6" yes; DRM_AMD_DC_PRE_VEGA = whenBetween "4.15" "4.18" yes; @@ -403,7 +403,6 @@ let F2FS_FS_COMPRESSION = whenAtLeast "5.6" yes; UDF_FS = module; - NFSD_PNFS = whenBetween "4.0" "4.6" yes; NFSD_V2_ACL = yes; NFSD_V3 = yes; NFSD_V3_ACL = yes; @@ -460,7 +459,7 @@ let DEBUG_SET_MODULE_RONX = { optional = true; tristate = whenOlder "4.11" "y"; }; RANDOMIZE_BASE = option yes; STRICT_DEVMEM = mkDefault yes; # Filter access to /dev/mem - IO_STRICT_DEVMEM = whenAtLeast "4.5" (mkDefault yes); + IO_STRICT_DEVMEM = mkDefault yes; SECURITY_SELINUX_BOOTPARAM_VALUE = whenOlder "5.1" (freeform "0"); # Disable SELinux by default # Prevent processes from ptracing non-children processes SECURITY_YAMA = option yes; @@ -515,10 +514,9 @@ let MEMCG = yes; MEMCG_SWAP = yes; - DEVPTS_MULTIPLE_INSTANCES = whenOlder "4.7" yes; BLK_DEV_THROTTLING = yes; CFQ_GROUP_IOSCHED = whenOlder "5.0" yes; # Removed in 5.0-RC1 - CGROUP_PIDS = whenAtLeast "4.3" yes; + CGROUP_PIDS = yes; }; staging = { @@ -543,9 +541,9 @@ let STACK_TRACER = yes; UPROBE_EVENT = { optional = true; tristate = whenOlder "4.11" "y";}; UPROBE_EVENTS = { optional = true; tristate = whenAtLeast "4.11" "y";}; - BPF_SYSCALL = whenAtLeast "4.4" yes; + BPF_SYSCALL = yes; BPF_UNPRIV_DEFAULT_OFF = whenBetween "5.10" "5.15" yes; - BPF_EVENTS = whenAtLeast "4.4" yes; + BPF_EVENTS = yes; FUNCTION_PROFILER = yes; RING_BUFFER_BENCHMARK = no; }; @@ -556,11 +554,10 @@ let HYPERVISOR_GUEST = yes; PARAVIRT_SPINLOCKS = option yes; - KVM_APIC_ARCHITECTURE = whenOlder "4.8" yes; KVM_ASYNC_PF = yes; KVM_COMPAT = { optional = true; tristate = whenBetween "4.0" "4.12" "y"; }; KVM_DEVICE_ASSIGNMENT = { optional = true; tristate = whenBetween "3.10" "4.12" "y"; }; - KVM_GENERIC_DIRTYLOG_READ_PROTECT = whenAtLeast "4.0" yes; + KVM_GENERIC_DIRTYLOG_READ_PROTECT = yes; KVM_GUEST = yes; KVM_MMIO = yes; KVM_VFIO = yes; @@ -774,14 +771,14 @@ let SERIAL_DEV_CTRL_TTYPORT = whenAtLeast "4.11" yes; # enables support for TTY serial devices BT_HCIBTUSB_MTK = whenAtLeast "5.3" yes; # MediaTek protocol support - BT_HCIUART_QCA = whenAtLeast "4.3" yes; # Qualcomm Atheros protocol support + BT_HCIUART_QCA = yes; # Qualcomm Atheros protocol support BT_HCIUART_SERDEV = whenAtLeast "4.12" yes; # required by BT_HCIUART_QCA - BT_HCIUART = whenAtLeast "2.5.45" module; # required for BT devices with serial port interface (QCA6390) + BT_HCIUART = module; # required for BT devices with serial port interface (QCA6390) BT_HCIUART_BCSP = option yes; BT_HCIUART_H4 = option yes; # UART (H4) protocol support BT_HCIUART_LL = option yes; BT_RFCOMM_TTY = option yes; # RFCOMM TTY support - BT_QCA = whenAtLeast "4.3" module; # enables QCA6390 bluetooth + BT_QCA = module; # enables QCA6390 bluetooth CLEANCACHE = option yes; CRASH_DUMP = option no; @@ -820,14 +817,12 @@ let MEDIA_ATTACH = yes; MEGARAID_NEWGEN = yes; - MLX4_EN_VXLAN = whenOlder "4.8" yes; MLX5_CORE_EN = option yes; NVME_MULTIPATH = whenAtLeast "4.15" yes; PSI = whenAtLeast "4.20" yes; - MODVERSIONS = whenOlder "4.9" yes; MOUSE_ELAN_I2C_SMBUS = yes; MOUSE_PS2_ELANTECH = yes; # Elantech PS/2 protocol extension MOUSE_PS2_VMMOUSE = yes; diff --git a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.4.patch b/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.4.patch deleted file mode 100644 index 8f2418c9efc..00000000000 --- a/pkgs/os-specific/linux/kernel/cpu-cgroup-v2-patches/4.4.patch +++ /dev/null @@ -1,407 +0,0 @@ -commit e7cae741f6d645ac68fe8823ca6ef45dbbf6891b -Author: Tejun Heo <tj@kernel.org> -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Misc preps for cgroup unified hierarchy interface - - Make the following changes in preparation for the cpu controller - interface implementation for the unified hierarchy. This patch - doesn't cause any functional differences. - - * s/cpu_stats_show()/cpu_cfs_stats_show()/ - - * s/cpu_files/cpu_legacy_files/ - - * Separate out cpuacct_stats_read() from cpuacct_stats_show(). While - at it, remove pointless cpuacct_stat_desc[] array. - - Signed-off-by: Tejun Heo <tj@kernel.org> - Cc: Ingo Molnar <mingo@redhat.com> - Cc: Peter Zijlstra <peterz@infradead.org> - Cc: Li Zefan <lizefan@huawei.com> - Cc: Johannes Weiner <hannes@cmpxchg.org> - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 732e993..77f3ddd 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -8512,7 +8512,7 @@ static int __cfs_schedulable(struct task_group *tg, u64 period, u64 quota) - return ret; - } - --static int cpu_stats_show(struct seq_file *sf, void *v) -+static int cpu_cfs_stats_show(struct seq_file *sf, void *v) - { - struct task_group *tg = css_tg(seq_css(sf)); - struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -@@ -8552,7 +8552,7 @@ static u64 cpu_rt_period_read_uint(struct cgroup_subsys_state *css, - } - #endif /* CONFIG_RT_GROUP_SCHED */ - --static struct cftype cpu_files[] = { -+static struct cftype cpu_legacy_files[] = { - #ifdef CONFIG_FAIR_GROUP_SCHED - { - .name = "shares", -@@ -8573,7 +8573,7 @@ static struct cftype cpu_files[] = { - }, - { - .name = "stat", -- .seq_show = cpu_stats_show, -+ .seq_show = cpu_cfs_stats_show, - }, - #endif - #ifdef CONFIG_RT_GROUP_SCHED -@@ -8599,7 +8599,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .fork = cpu_cgroup_fork, - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, -- .legacy_cftypes = cpu_files, -+ .legacy_cftypes = cpu_legacy_files, - .early_init = 1, - }; - -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index dd7cbb5..42b2dd5 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -177,36 +177,33 @@ static int cpuacct_percpu_seq_show(struct seq_file *m, void *V) - return 0; - } - --static const char * const cpuacct_stat_desc[] = { -- [CPUACCT_STAT_USER] = "user", -- [CPUACCT_STAT_SYSTEM] = "system", --}; -- --static int cpuacct_stats_show(struct seq_file *sf, void *v) -+static void cpuacct_stats_read(struct cpuacct *ca, u64 *userp, u64 *sysp) - { -- struct cpuacct *ca = css_ca(seq_css(sf)); - int cpu; -- s64 val = 0; - -+ *userp = 0; - for_each_online_cpu(cpu) { - struct kernel_cpustat *kcpustat = per_cpu_ptr(ca->cpustat, cpu); -- val += kcpustat->cpustat[CPUTIME_USER]; -- val += kcpustat->cpustat[CPUTIME_NICE]; -+ *userp += kcpustat->cpustat[CPUTIME_USER]; -+ *userp += kcpustat->cpustat[CPUTIME_NICE]; - } -- val = cputime64_to_clock_t(val); -- seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_USER], val); - -- val = 0; -+ *sysp = 0; - for_each_online_cpu(cpu) { - struct kernel_cpustat *kcpustat = per_cpu_ptr(ca->cpustat, cpu); -- val += kcpustat->cpustat[CPUTIME_SYSTEM]; -- val += kcpustat->cpustat[CPUTIME_IRQ]; -- val += kcpustat->cpustat[CPUTIME_SOFTIRQ]; -+ *sysp += kcpustat->cpustat[CPUTIME_SYSTEM]; -+ *sysp += kcpustat->cpustat[CPUTIME_IRQ]; -+ *sysp += kcpustat->cpustat[CPUTIME_SOFTIRQ]; - } -+} - -- val = cputime64_to_clock_t(val); -- seq_printf(sf, "%s %lld\n", cpuacct_stat_desc[CPUACCT_STAT_SYSTEM], val); -+static int cpuacct_stats_show(struct seq_file *sf, void *v) -+{ -+ cputime64_t user, sys; - -+ cpuacct_stats_read(css_ca(seq_css(sf)), &user, &sys); -+ seq_printf(sf, "user %lld\n", cputime64_to_clock_t(user)); -+ seq_printf(sf, "system %lld\n", cputime64_to_clock_t(sys)); - return 0; - } - - -commit 1bb33e8a69f089f2d3f58a0e681d4ff352e11c97 -Author: Tejun Heo <tj@kernel.org> -Date: Fri Mar 11 07:31:23 2016 -0500 - - sched: Implement interface for cgroup unified hierarchy - - While the cpu controller doesn't have any functional problems, there - are a couple interface issues which can be addressed in the v2 - interface. - - * cpuacct being a separate controller. This separation is artificial - and rather pointless as demonstrated by most use cases co-mounting - the two controllers. It also forces certain information to be - accounted twice. - - * Use of different time units. Writable control knobs use - microseconds, some stat fields use nanoseconds while other cpuacct - stat fields use centiseconds. - - * Control knobs which can't be used in the root cgroup still show up - in the root. - - * Control knob names and semantics aren't consistent with other - controllers. - - This patchset implements cpu controller's interface on the unified - hierarchy which adheres to the controller file conventions described - in Documentation/cgroups/unified-hierarchy.txt. Overall, the - following changes are made. - - * cpuacct is implictly enabled and disabled by cpu and its information - is reported through "cpu.stat" which now uses microseconds for all - time durations. All time duration fields now have "_usec" appended - to them for clarity. While this doesn't solve the double accounting - immediately, once majority of users switch to v2, cpu can directly - account and report the relevant stats and cpuacct can be disabled on - the unified hierarchy. - - Note that cpuacct.usage_percpu is currently not included in - "cpu.stat". If this information is actually called for, it can be - added later. - - * "cpu.shares" is replaced with "cpu.weight" and operates on the - standard scale defined by CGROUP_WEIGHT_MIN/DFL/MAX (1, 100, 10000). - The weight is scaled to scheduler weight so that 100 maps to 1024 - and the ratio relationship is preserved - if weight is W and its - scaled value is S, W / 100 == S / 1024. While the mapped range is a - bit smaller than the orignal scheduler weight range, the dead zones - on both sides are relatively small and covers wider range than the - nice value mappings. This file doesn't make sense in the root - cgroup and isn't create on root. - - * "cpu.cfs_quota_us" and "cpu.cfs_period_us" are replaced by "cpu.max" - which contains both quota and period. - - * "cpu.rt_runtime_us" and "cpu.rt_period_us" are replaced by - "cpu.rt.max" which contains both runtime and period. - - v2: cpu_stats_show() was incorrectly using CONFIG_FAIR_GROUP_SCHED for - CFS bandwidth stats and also using raw division for u64. Use - CONFIG_CFS_BANDWITH and do_div() instead. - - The semantics of "cpu.rt.max" is not fully decided yet. Dropped - for now. - - Signed-off-by: Tejun Heo <tj@kernel.org> - Cc: Ingo Molnar <mingo@redhat.com> - Cc: Peter Zijlstra <peterz@infradead.org> - Cc: Li Zefan <lizefan@huawei.com> - Cc: Johannes Weiner <hannes@cmpxchg.org> - -diff --git a/kernel/sched/core.c b/kernel/sched/core.c -index 77f3ddd..7aafe63 100644 ---- a/kernel/sched/core.c -+++ b/kernel/sched/core.c -@@ -8591,6 +8591,139 @@ static struct cftype cpu_legacy_files[] = { - { } /* terminate */ - }; - -+static int cpu_stats_show(struct seq_file *sf, void *v) -+{ -+ cpuacct_cpu_stats_show(sf); -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ struct task_group *tg = css_tg(seq_css(sf)); -+ struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; -+ u64 throttled_usec; -+ -+ throttled_usec = cfs_b->throttled_time; -+ do_div(throttled_usec, NSEC_PER_USEC); -+ -+ seq_printf(sf, "nr_periods %d\n" -+ "nr_throttled %d\n" -+ "throttled_usec %llu\n", -+ cfs_b->nr_periods, cfs_b->nr_throttled, -+ throttled_usec); -+ } -+#endif -+ return 0; -+} -+ -+#ifdef CONFIG_FAIR_GROUP_SCHED -+static u64 cpu_weight_read_u64(struct cgroup_subsys_state *css, -+ struct cftype *cft) -+{ -+ struct task_group *tg = css_tg(css); -+ u64 weight = scale_load_down(tg->shares); -+ -+ return DIV_ROUND_CLOSEST_ULL(weight * CGROUP_WEIGHT_DFL, 1024); -+} -+ -+static int cpu_weight_write_u64(struct cgroup_subsys_state *css, -+ struct cftype *cftype, u64 weight) -+{ -+ /* -+ * cgroup weight knobs should use the common MIN, DFL and MAX -+ * values which are 1, 100 and 10000 respectively. While it loses -+ * a bit of range on both ends, it maps pretty well onto the shares -+ * value used by scheduler and the round-trip conversions preserve -+ * the original value over the entire range. -+ */ -+ if (weight < CGROUP_WEIGHT_MIN || weight > CGROUP_WEIGHT_MAX) -+ return -ERANGE; -+ -+ weight = DIV_ROUND_CLOSEST_ULL(weight * 1024, CGROUP_WEIGHT_DFL); -+ -+ return sched_group_set_shares(css_tg(css), scale_load(weight)); -+} -+#endif -+ -+static void __maybe_unused cpu_period_quota_print(struct seq_file *sf, -+ long period, long quota) -+{ -+ if (quota < 0) -+ seq_puts(sf, "max"); -+ else -+ seq_printf(sf, "%ld", quota); -+ -+ seq_printf(sf, " %ld\n", period); -+} -+ -+/* caller should put the current value in *@periodp before calling */ -+static int __maybe_unused cpu_period_quota_parse(char *buf, -+ u64 *periodp, u64 *quotap) -+{ -+ char tok[21]; /* U64_MAX */ -+ -+ if (!sscanf(buf, "%s %llu", tok, periodp)) -+ return -EINVAL; -+ -+ *periodp *= NSEC_PER_USEC; -+ -+ if (sscanf(tok, "%llu", quotap)) -+ *quotap *= NSEC_PER_USEC; -+ else if (!strcmp(tok, "max")) -+ *quotap = RUNTIME_INF; -+ else -+ return -EINVAL; -+ -+ return 0; -+} -+ -+#ifdef CONFIG_CFS_BANDWIDTH -+static int cpu_max_show(struct seq_file *sf, void *v) -+{ -+ struct task_group *tg = css_tg(seq_css(sf)); -+ -+ cpu_period_quota_print(sf, tg_get_cfs_period(tg), tg_get_cfs_quota(tg)); -+ return 0; -+} -+ -+static ssize_t cpu_max_write(struct kernfs_open_file *of, -+ char *buf, size_t nbytes, loff_t off) -+{ -+ struct task_group *tg = css_tg(of_css(of)); -+ u64 period = tg_get_cfs_period(tg); -+ u64 quota; -+ int ret; -+ -+ ret = cpu_period_quota_parse(buf, &period, "a); -+ if (!ret) -+ ret = tg_set_cfs_bandwidth(tg, period, quota); -+ return ret ?: nbytes; -+} -+#endif -+ -+static struct cftype cpu_files[] = { -+ { -+ .name = "stat", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_stats_show, -+ }, -+#ifdef CONFIG_FAIR_GROUP_SCHED -+ { -+ .name = "weight", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .read_u64 = cpu_weight_read_u64, -+ .write_u64 = cpu_weight_write_u64, -+ }, -+#endif -+#ifdef CONFIG_CFS_BANDWIDTH -+ { -+ .name = "max", -+ .flags = CFTYPE_NOT_ON_ROOT, -+ .seq_show = cpu_max_show, -+ .write = cpu_max_write, -+ }, -+#endif -+ { } /* terminate */ -+}; -+ - struct cgroup_subsys cpu_cgrp_subsys = { - .css_alloc = cpu_cgroup_css_alloc, - .css_free = cpu_cgroup_css_free, -@@ -8600,7 +8733,15 @@ struct cgroup_subsys cpu_cgrp_subsys = { - .can_attach = cpu_cgroup_can_attach, - .attach = cpu_cgroup_attach, - .legacy_cftypes = cpu_legacy_files, -+ .dfl_cftypes = cpu_files, - .early_init = 1, -+#ifdef CONFIG_CGROUP_CPUACCT -+ /* -+ * cpuacct is enabled together with cpu on the unified hierarchy -+ * and its stats are reported through "cpu.stat". -+ */ -+ .depends_on = 1 << cpuacct_cgrp_id, -+#endif - }; - - #endif /* CONFIG_CGROUP_SCHED */ -diff --git a/kernel/sched/cpuacct.c b/kernel/sched/cpuacct.c -index 42b2dd5..b4d32a6 100644 ---- a/kernel/sched/cpuacct.c -+++ b/kernel/sched/cpuacct.c -@@ -224,6 +224,30 @@ static struct cftype files[] = { - { } /* terminate */ - }; - -+/* used to print cpuacct stats in cpu.stat on the unified hierarchy */ -+void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+ struct cgroup_subsys_state *css; -+ u64 usage, user, sys; -+ -+ css = cgroup_get_e_css(seq_css(sf)->cgroup, &cpuacct_cgrp_subsys); -+ -+ usage = cpuusage_read(css, seq_cft(sf)); -+ cpuacct_stats_read(css_ca(css), &user, &sys); -+ -+ user *= TICK_NSEC; -+ sys *= TICK_NSEC; -+ do_div(usage, NSEC_PER_USEC); -+ do_div(user, NSEC_PER_USEC); -+ do_div(sys, NSEC_PER_USEC); -+ -+ seq_printf(sf, "usage_usec %llu\n" -+ "user_usec %llu\n" -+ "system_usec %llu\n", usage, user, sys); -+ -+ css_put(css); -+} -+ - /* - * charge this task's execution time to its accounting group. - * -diff --git a/kernel/sched/cpuacct.h b/kernel/sched/cpuacct.h -index ed60562..44eace9 100644 ---- a/kernel/sched/cpuacct.h -+++ b/kernel/sched/cpuacct.h -@@ -2,6 +2,7 @@ - - extern void cpuacct_charge(struct task_struct *tsk, u64 cputime); - extern void cpuacct_account_field(struct task_struct *p, int index, u64 val); -+extern void cpuacct_cpu_stats_show(struct seq_file *sf); - - #else - -@@ -14,4 +15,8 @@ cpuacct_account_field(struct task_struct *p, int index, u64 val) - { - } - -+static inline void cpuacct_cpu_stats_show(struct seq_file *sf) -+{ -+} -+ - #endif diff --git a/pkgs/os-specific/linux/kernel/linux-4.4.nix b/pkgs/os-specific/linux/kernel/linux-4.4.nix deleted file mode 100644 index 9271aa0182e..00000000000 --- a/pkgs/os-specific/linux/kernel/linux-4.4.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ buildPackages, fetchurl, perl, buildLinux, nixosTests, stdenv, ... } @ args: - -buildLinux (args // rec { - version = "4.4.302"; - extraMeta.branch = "4.4"; - extraMeta.broken = stdenv.isAarch64; - - src = fetchurl { - url = "mirror://kernel/linux/kernel/v4.x/linux-${version}.tar.xz"; - sha256 = "1cvnydc7y5xrb1c4yfmsl846dd1jfrr7xf62gxbhnkk01fs7n09m"; - }; -} // (args.argsOverride or {})) diff --git a/pkgs/top-level/linux-kernels.nix b/pkgs/top-level/linux-kernels.nix index 5f043faecfd..9e254ee64a1 100644 --- a/pkgs/top-level/linux-kernels.nix +++ b/pkgs/top-level/linux-kernels.nix @@ -92,14 +92,7 @@ in { rpiVersion = 4; }; - linux_4_4 = callPackage ../os-specific/linux/kernel/linux-4.4.nix { - kernelPatches = - [ kernelPatches.bridge_stp_helper - kernelPatches.request_key_helper_updated - kernelPatches.cpu-cgroup-v2."4.4" - kernelPatches.modinst_arg_list_too_long - ]; - }; + linux_4_4 = throw "linux 4.4 was removed because it reached its end of life upstream"; linux_4_9 = callPackage ../os-specific/linux/kernel/linux-4.9.nix { kernelPatches = @@ -484,7 +477,7 @@ in { vanillaPackages = { # recurse to build modules for the kernels - linux_4_4 = recurseIntoAttrs (packagesFor kernels.linux_4_4); + linux_4_4 = throw "linux 4.4 was removed because it reached its end of life upstream"; # Added 2022-02-11 linux_4_9 = recurseIntoAttrs (packagesFor kernels.linux_4_9); linux_4_14 = recurseIntoAttrs (packagesFor kernels.linux_4_14); linux_4_19 = recurseIntoAttrs (packagesFor kernels.linux_4_19); |