From 9debc8729c2897281e8eac133cbbfe3cd5316108 Mon Sep 17 00:00:00 2001 From: Konstantin Demin Date: Thu, 5 Dec 2024 18:46:18 +0300 Subject: [PATCH] release 6.11.11 --- debian/changelog | 7 + ...ftdep-declarations-for-hard-coded-cr.patch | 2 +- ...nprivileged-CLONE_NEWUSER-by-default.patch | 4 +- ...rt-symbols-needed-by-android-drivers.patch | 2 +- ...ption-to-exclude-integrated-gpu-only.patch | 4 +- ..._F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch | 2 +- ...e-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch | 2 +- ...te-Export-symbols-for-changing-modes.patch | 4 +- ...te-Catch-failures-for-amd_pstate_epp.patch | 8 +- ..._get_highest_perf-from-amd.c-to-cppc.patch | 2 +- ...d_get_highest_perf-out-of-amd-pstate.patch | 6 +- ...referred-cores-in-amd_get_boost_rati.patch | 8 +- ...te-Merge-amd_pstate_highest_perf_set.patch | 4 +- ...te-Optimize-amd_pstate_update_limits.patch | 2 +- ...amd-pstate-Fix-non-kerneldoc-comment.patch | 2 +- ...te-Rename-MSR-and-shared-memory-spec.patch | 2 +- ...te-Set-the-initial-min_freq-to-lowes.patch | 8 +- ...te-Cleanup-the-old-min_freq-qos-requ.patch | 10 +- ...te-Use-nominal-perf-for-limits-when-.patch | 2 +- ...te-Don-t-update-CPPC-request-in-amd_.patch | 55 --- ...in_perf-to-nominal_perf-for-active-m.patch | 33 -- ...req-schedutil-iowait-boost-cap-sysfs.patch | 2 +- ...pufreq-schedutil-Remove-iowait-boost.patch | 2 +- ...ugepage-recovery-thread-to-vhost_tas.patch | 326 ------------------ .../binder/0001-binder-turn-into-module.patch | 2 +- ...-rq_affinity-to-force-complete-I-O-r.patch | 2 +- ...ogroup-Add-kernel-parameter-and-conf.patch | 2 +- ...011-ZEN-INTERACTIVE-Base-config-item.patch | 2 +- ...Use-BFQ-as-the-elevator-for-SQ-devic.patch | 2 +- ...Use-Kyber-as-the-elevator-for-MQ-dev.patch | 2 +- ...Enable-background-reclaim-of-hugepag.patch | 2 +- ...Tune-mgLRU-to-protect-cache-used-in-.patch | 2 +- ...RACTIVE-Tune-EEVDF-for-interactivity.patch | 2 +- ...Tune-ondemand-governor-for-interacti.patch | 2 +- ...VE-mm-Disable-unevictable-compaction.patch | 2 +- ...mm-Disable-proactive-compaction-by-d.patch | 2 +- ...mm-Disable-watermark-boosting-by-def.patch | 2 +- ...mm-Lower-the-non-hugetlbpage-pageblo.patch | 2 +- ...dm-crypt-Disable-workqueues-for-cryp.patch | 2 +- ...VE-mm-swap-Disable-swap-in-readahead.patch | 2 +- debian/patches/series | 3 - 41 files changed, 62 insertions(+), 472 deletions(-) delete mode 100644 debian/patches/patchset-pf/amd-pstate/0023-cpufreq-amd-pstate-Don-t-update-CPPC-request-in-amd_.patch delete mode 100644 debian/patches/patchset-pf/amd-pstate/0032-amd-pstate-Set-min_perf-to-nominal_perf-for-active-m.patch delete mode 100644 debian/patches/patchset-pf/fixes/0006-KVM-x86-switch-hugepage-recovery-thread-to-vhost_tas.patch diff --git a/debian/changelog b/debian/changelog index 8e16257..b248e8e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +linux (6.11.11-1) sid; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.11.11 + + -- Konstantin Demin Thu, 05 Dec 2024 18:41:08 +0300 + linux (6.11.10-1) sid; urgency=medium * New upstream stable update: diff --git a/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch b/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch index 30e99bc..ab53304 100644 --- a/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch +++ b/debian/patches/bugfix/all/fs-add-module_softdep-declarations-for-hard-coded-cr.patch @@ -29,7 +29,7 @@ Signed-off-by: Ben Hutchings MODULE_SOFTDEP("pre: blake2b-256"); --- a/fs/ext4/super.c +++ b/fs/ext4/super.c -@@ -7435,6 +7435,6 @@ static void __exit ext4_exit_fs(void) +@@ -7447,6 +7447,6 @@ static void __exit ext4_exit_fs(void) MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others"); MODULE_DESCRIPTION("Fourth Extended Filesystem"); MODULE_LICENSE("GPL"); diff --git a/debian/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch b/debian/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch index e030945..1d70505 100644 --- a/debian/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch +++ b/debian/patches/debian/add-sysctl-to-disallow-unprivileged-CLONE_NEWUSER-by-default.patch @@ -34,7 +34,7 @@ Signed-off-by: Serge Hallyn /* * Minimum number of threads to boot the kernel */ -@@ -2136,6 +2142,10 @@ __latent_entropy struct task_struct *cop +@@ -2156,6 +2162,10 @@ __latent_entropy struct task_struct *cop if ((clone_flags & (CLONE_NEWUSER|CLONE_FS)) == (CLONE_NEWUSER|CLONE_FS)) return ERR_PTR(-EINVAL); @@ -45,7 +45,7 @@ Signed-off-by: Serge Hallyn /* * Thread groups must share signals as well, and detached threads * can only be started up within the thread group. -@@ -3285,6 +3295,12 @@ int ksys_unshare(unsigned long unshare_f +@@ -3305,6 +3315,12 @@ int ksys_unshare(unsigned long unshare_f if (unshare_flags & CLONE_NEWNS) unshare_flags |= CLONE_FS; diff --git a/debian/patches/debian/export-symbols-needed-by-android-drivers.patch b/debian/patches/debian/export-symbols-needed-by-android-drivers.patch index 11584f9..002470f 100644 --- a/debian/patches/debian/export-symbols-needed-by-android-drivers.patch +++ b/debian/patches/debian/export-symbols-needed-by-android-drivers.patch @@ -42,7 +42,7 @@ Export the currently un-exported symbols it depends on. struct msg_msgseg *next; --- a/ipc/namespace.c +++ b/ipc/namespace.c -@@ -205,6 +205,7 @@ void put_ipc_ns(struct ipc_namespace *ns +@@ -207,6 +207,7 @@ void put_ipc_ns(struct ipc_namespace *ns schedule_work(&free_ipc_work); } } diff --git a/debian/patches/features/x86/intel-iommu-add-option-to-exclude-integrated-gpu-only.patch b/debian/patches/features/x86/intel-iommu-add-option-to-exclude-integrated-gpu-only.patch index fb327a9..9979abd 100644 --- a/debian/patches/features/x86/intel-iommu-add-option-to-exclude-integrated-gpu-only.patch +++ b/debian/patches/features/x86/intel-iommu-add-option-to-exclude-integrated-gpu-only.patch @@ -68,7 +68,7 @@ Signed-off-by: Ben Hutchings } else if (!strncmp(str, "forcedac", 8)) { pr_warn("intel_iommu=forcedac deprecated; use iommu.forcedac instead\n"); iommu_dma_forcedac = true; -@@ -2156,6 +2164,9 @@ static int device_def_domain_type(struct +@@ -2168,6 +2176,9 @@ static int device_def_domain_type(struct if ((iommu_identity_mapping & IDENTMAP_AZALIA) && IS_AZALIA(pdev)) return IOMMU_DOMAIN_IDENTITY; @@ -78,7 +78,7 @@ Signed-off-by: Ben Hutchings } return 0; -@@ -2456,6 +2467,9 @@ static int __init init_dmars(void) +@@ -2468,6 +2479,9 @@ static int __init init_dmars(void) iommu_set_root_entry(iommu); } diff --git a/debian/patches/misc-openwrt/0003-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch b/debian/patches/misc-openwrt/0003-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch index 9240cc2..b4b2728 100644 --- a/debian/patches/misc-openwrt/0003-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch +++ b/debian/patches/misc-openwrt/0003-net-remove-NETIF_F_GSO_FRAGLIST-from-NETIF_F_GSO_SOF.patch @@ -107,7 +107,7 @@ Signed-off-by: Felix Fietkau if (sk_can_gso(sk)) { --- a/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h -@@ -2009,7 +2009,7 @@ void ieee80211_color_collision_detection +@@ -2010,7 +2010,7 @@ void ieee80211_color_collision_detection /* interface handling */ #define MAC80211_SUPPORTED_FEATURES_TX (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM | \ NETIF_F_HW_CSUM | NETIF_F_SG | \ diff --git a/debian/patches/mixed-arch/0003-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch b/debian/patches/mixed-arch/0003-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch index b3ff8a4..f6dee20 100644 --- a/debian/patches/mixed-arch/0003-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch +++ b/debian/patches/mixed-arch/0003-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch @@ -25,7 +25,7 @@ dependency on CONFIG_ARC and adds RUSTFLAGS. KBUILD_RUSTFLAGS += -Copt-level=s --- a/init/Kconfig +++ b/init/Kconfig -@@ -1407,6 +1407,12 @@ config CC_OPTIMIZE_FOR_PERFORMANCE +@@ -1416,6 +1416,12 @@ config CC_OPTIMIZE_FOR_PERFORMANCE with the "-O2" compiler flag for best performance and most helpful compile-time warnings. diff --git a/debian/patches/patchset-pf/amd-pstate/0002-cpufreq-amd-pstate-Export-symbols-for-changing-modes.patch b/debian/patches/patchset-pf/amd-pstate/0002-cpufreq-amd-pstate-Export-symbols-for-changing-modes.patch index a15acda..8046713 100644 --- a/debian/patches/patchset-pf/amd-pstate/0002-cpufreq-amd-pstate-Export-symbols-for-changing-modes.patch +++ b/debian/patches/patchset-pf/amd-pstate/0002-cpufreq-amd-pstate-Export-symbols-for-changing-modes.patch @@ -48,7 +48,7 @@ Signed-off-by: Mario Limonciello struct quirk_entry { u32 nominal_freq; u32 lowest_freq; -@@ -1402,7 +1398,7 @@ static ssize_t amd_pstate_show_status(ch +@@ -1380,7 +1376,7 @@ static ssize_t amd_pstate_show_status(ch return sysfs_emit(buf, "%s\n", amd_pstate_mode_string[cppc_state]); } @@ -57,7 +57,7 @@ Signed-off-by: Mario Limonciello { int mode_idx; -@@ -1419,6 +1415,7 @@ static int amd_pstate_update_status(cons +@@ -1397,6 +1393,7 @@ static int amd_pstate_update_status(cons return 0; } diff --git a/debian/patches/patchset-pf/amd-pstate/0004-cpufreq-amd-pstate-Catch-failures-for-amd_pstate_epp.patch b/debian/patches/patchset-pf/amd-pstate/0004-cpufreq-amd-pstate-Catch-failures-for-amd_pstate_epp.patch index 50cd48f..cdb3bb0 100644 --- a/debian/patches/patchset-pf/amd-pstate/0004-cpufreq-amd-pstate-Catch-failures-for-amd_pstate_epp.patch +++ b/debian/patches/patchset-pf/amd-pstate/0004-cpufreq-amd-pstate-Catch-failures-for-amd_pstate_epp.patch @@ -14,7 +14,7 @@ Signed-off-by: Mario Limonciello --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -1605,7 +1605,7 @@ static void amd_pstate_epp_cpu_exit(stru +@@ -1583,7 +1583,7 @@ static void amd_pstate_epp_cpu_exit(stru pr_debug("CPU %d exiting\n", policy->cpu); } @@ -23,7 +23,7 @@ Signed-off-by: Mario Limonciello { struct amd_cpudata *cpudata = policy->driver_data; u32 max_perf, min_perf, min_limit_perf, max_limit_perf; -@@ -1655,7 +1655,7 @@ static void amd_pstate_epp_update_limit( +@@ -1633,7 +1633,7 @@ static void amd_pstate_epp_update_limit( * This return value can only be negative for shared_memory * systems where EPP register read/write not supported. */ @@ -32,7 +32,7 @@ Signed-off-by: Mario Limonciello } if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE) -@@ -1668,12 +1668,13 @@ static void amd_pstate_epp_update_limit( +@@ -1646,12 +1646,13 @@ static void amd_pstate_epp_update_limit( } WRITE_ONCE(cpudata->cppc_req_cached, value); @@ -47,7 +47,7 @@ Signed-off-by: Mario Limonciello if (!policy->cpuinfo.max_freq) return -ENODEV; -@@ -1683,7 +1684,9 @@ static int amd_pstate_epp_set_policy(str +@@ -1661,7 +1662,9 @@ static int amd_pstate_epp_set_policy(str cpudata->policy = policy->policy; diff --git a/debian/patches/patchset-pf/amd-pstate/0005-x86-amd-Move-amd_get_highest_perf-from-amd.c-to-cppc.patch b/debian/patches/patchset-pf/amd-pstate/0005-x86-amd-Move-amd_get_highest_perf-from-amd.c-to-cppc.patch index e5e41ad..caa2b7e 100644 --- a/debian/patches/patchset-pf/amd-pstate/0005-x86-amd-Move-amd_get_highest_perf-from-amd.c-to-cppc.patch +++ b/debian/patches/patchset-pf/amd-pstate/0005-x86-amd-Move-amd_get_highest_perf-from-amd.c-to-cppc.patch @@ -42,7 +42,7 @@ Reviewed-by: Gautham R. Shenoy +EXPORT_SYMBOL_GPL(amd_get_highest_perf); --- a/arch/x86/kernel/cpu/amd.c +++ b/arch/x86/kernel/cpu/amd.c -@@ -1201,22 +1201,6 @@ unsigned long amd_get_dr_addr_mask(unsig +@@ -1202,22 +1202,6 @@ unsigned long amd_get_dr_addr_mask(unsig } EXPORT_SYMBOL_GPL(amd_get_dr_addr_mask); diff --git a/debian/patches/patchset-pf/amd-pstate/0010-x86-amd-Move-amd_get_highest_perf-out-of-amd-pstate.patch b/debian/patches/patchset-pf/amd-pstate/0010-x86-amd-Move-amd_get_highest_perf-out-of-amd-pstate.patch index 8081de8..9115a48 100644 --- a/debian/patches/patchset-pf/amd-pstate/0010-x86-amd-Move-amd_get_highest_perf-out-of-amd-pstate.patch +++ b/debian/patches/patchset-pf/amd-pstate/0010-x86-amd-Move-amd_get_highest_perf-out-of-amd-pstate.patch @@ -60,7 +60,7 @@ Reviewed-by: Gautham R. Shenoy * @cpu: CPU to get numerator for. --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -837,36 +837,6 @@ static void amd_pstste_sched_prefcore_wo +@@ -815,36 +815,6 @@ static void amd_pstste_sched_prefcore_wo } static DECLARE_WORK(sched_prefcore_work, amd_pstste_sched_prefcore_workfn); @@ -97,7 +97,7 @@ Reviewed-by: Gautham R. Shenoy #define CPPC_MAX_PERF U8_MAX static void amd_pstate_init_prefcore(struct amd_cpudata *cpudata) -@@ -874,7 +844,7 @@ static void amd_pstate_init_prefcore(str +@@ -852,7 +822,7 @@ static void amd_pstate_init_prefcore(str int ret, prio; u32 highest_perf; @@ -106,7 +106,7 @@ Reviewed-by: Gautham R. Shenoy if (ret) return; -@@ -918,7 +888,7 @@ static void amd_pstate_update_limits(uns +@@ -896,7 +866,7 @@ static void amd_pstate_update_limits(uns if ((!amd_pstate_prefcore) || (!cpudata->hw_prefcore)) goto free_cpufreq_put; diff --git a/debian/patches/patchset-pf/amd-pstate/0011-x86-amd-Detect-preferred-cores-in-amd_get_boost_rati.patch b/debian/patches/patchset-pf/amd-pstate/0011-x86-amd-Detect-preferred-cores-in-amd_get_boost_rati.patch index 151cbe5..948e4fe 100644 --- a/debian/patches/patchset-pf/amd-pstate/0011-x86-amd-Detect-preferred-cores-in-amd_get_boost_rati.patch +++ b/debian/patches/patchset-pf/amd-pstate/0011-x86-amd-Detect-preferred-cores-in-amd_get_boost_rati.patch @@ -149,7 +149,7 @@ Signed-off-by: Mario Limonciello } --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -841,32 +841,18 @@ static DECLARE_WORK(sched_prefcore_work, +@@ -819,32 +819,18 @@ static DECLARE_WORK(sched_prefcore_work, static void amd_pstate_init_prefcore(struct amd_cpudata *cpudata) { @@ -185,7 +185,7 @@ Signed-off-by: Mario Limonciello schedule_work(&sched_prefcore_work); } -@@ -1037,12 +1023,12 @@ static int amd_pstate_cpu_init(struct cp +@@ -1015,12 +1001,12 @@ static int amd_pstate_cpu_init(struct cp cpudata->cpu = policy->cpu; @@ -200,7 +200,7 @@ Signed-off-by: Mario Limonciello ret = amd_pstate_init_freq(cpudata); if (ret) goto free_cpudata1; -@@ -1503,12 +1489,12 @@ static int amd_pstate_epp_cpu_init(struc +@@ -1481,12 +1467,12 @@ static int amd_pstate_epp_cpu_init(struc cpudata->cpu = policy->cpu; cpudata->epp_policy = 0; @@ -215,7 +215,7 @@ Signed-off-by: Mario Limonciello ret = amd_pstate_init_freq(cpudata); if (ret) goto free_cpudata1; -@@ -1970,6 +1956,12 @@ static int __init amd_pstate_init(void) +@@ -1948,6 +1934,12 @@ static int __init amd_pstate_init(void) static_call_update(amd_pstate_update_perf, cppc_update_perf); } diff --git a/debian/patches/patchset-pf/amd-pstate/0012-cpufreq-amd-pstate-Merge-amd_pstate_highest_perf_set.patch b/debian/patches/patchset-pf/amd-pstate/0012-cpufreq-amd-pstate-Merge-amd_pstate_highest_perf_set.patch index e65aaff..0906c42 100644 --- a/debian/patches/patchset-pf/amd-pstate/0012-cpufreq-amd-pstate-Merge-amd_pstate_highest_perf_set.patch +++ b/debian/patches/patchset-pf/amd-pstate/0012-cpufreq-amd-pstate-Merge-amd_pstate_highest_perf_set.patch @@ -143,7 +143,7 @@ Reviewed-by: Gautham R. Shenoy WRITE_ONCE(cpudata->nominal_perf, cppc_perf.nominal_perf); WRITE_ONCE(cpudata->lowest_nonlinear_perf, cppc_perf.lowest_nonlinear_perf); -@@ -944,8 +910,8 @@ static u32 amd_pstate_get_transition_lat +@@ -922,8 +888,8 @@ static u32 amd_pstate_get_transition_lat static int amd_pstate_init_freq(struct amd_cpudata *cpudata) { int ret; @@ -154,7 +154,7 @@ Reviewed-by: Gautham R. Shenoy u32 nominal_perf, nominal_freq; u32 lowest_nonlinear_perf, lowest_nonlinear_freq; u32 boost_ratio, lowest_nonlinear_ratio; -@@ -967,8 +933,10 @@ static int amd_pstate_init_freq(struct a +@@ -945,8 +911,10 @@ static int amd_pstate_init_freq(struct a nominal_perf = READ_ONCE(cpudata->nominal_perf); diff --git a/debian/patches/patchset-pf/amd-pstate/0013-cpufreq-amd-pstate-Optimize-amd_pstate_update_limits.patch b/debian/patches/patchset-pf/amd-pstate/0013-cpufreq-amd-pstate-Optimize-amd_pstate_update_limits.patch index 3ab7c18..6c940bc 100644 --- a/debian/patches/patchset-pf/amd-pstate/0013-cpufreq-amd-pstate-Optimize-amd_pstate_update_limits.patch +++ b/debian/patches/patchset-pf/amd-pstate/0013-cpufreq-amd-pstate-Optimize-amd_pstate_update_limits.patch @@ -17,7 +17,7 @@ Reviewed-by: Gautham R. Shenoy --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -836,17 +836,17 @@ static void amd_pstate_update_limits(uns +@@ -814,17 +814,17 @@ static void amd_pstate_update_limits(uns cpudata = policy->driver_data; diff --git a/debian/patches/patchset-pf/amd-pstate/0016-cpufreq-amd-pstate-Fix-non-kerneldoc-comment.patch b/debian/patches/patchset-pf/amd-pstate/0016-cpufreq-amd-pstate-Fix-non-kerneldoc-comment.patch index 36e8abc..0cd7b1c 100644 --- a/debian/patches/patchset-pf/amd-pstate/0016-cpufreq-amd-pstate-Fix-non-kerneldoc-comment.patch +++ b/debian/patches/patchset-pf/amd-pstate/0016-cpufreq-amd-pstate-Fix-non-kerneldoc-comment.patch @@ -13,7 +13,7 @@ Signed-off-by: Mario Limonciello --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -1796,7 +1796,7 @@ static int __init amd_pstate_set_driver( +@@ -1774,7 +1774,7 @@ static int __init amd_pstate_set_driver( return -EINVAL; } diff --git a/debian/patches/patchset-pf/amd-pstate/0018-cpufreq-amd-pstate-Rename-MSR-and-shared-memory-spec.patch b/debian/patches/patchset-pf/amd-pstate/0018-cpufreq-amd-pstate-Rename-MSR-and-shared-memory-spec.patch index 287b881..f9db96e 100644 --- a/debian/patches/patchset-pf/amd-pstate/0018-cpufreq-amd-pstate-Rename-MSR-and-shared-memory-spec.patch +++ b/debian/patches/patchset-pf/amd-pstate/0018-cpufreq-amd-pstate-Rename-MSR-and-shared-memory-spec.patch @@ -93,7 +93,7 @@ Signed-off-by: Dhananjay Ugwekar u32 min_perf, u32 des_perf, u32 max_perf, bool fast_switch) { -@@ -1919,9 +1919,9 @@ static int __init amd_pstate_init(void) +@@ -1897,9 +1897,9 @@ static int __init amd_pstate_init(void) current_pstate_driver->adjust_perf = amd_pstate_adjust_perf; } else { pr_debug("AMD CPPC shared memory based functionality is supported\n"); diff --git a/debian/patches/patchset-pf/amd-pstate/0020-cpufreq-amd-pstate-Set-the-initial-min_freq-to-lowes.patch b/debian/patches/patchset-pf/amd-pstate/0020-cpufreq-amd-pstate-Set-the-initial-min_freq-to-lowes.patch index fb70b93..3aeab8a 100644 --- a/debian/patches/patchset-pf/amd-pstate/0020-cpufreq-amd-pstate-Set-the-initial-min_freq-to-lowes.patch +++ b/debian/patches/patchset-pf/amd-pstate/0020-cpufreq-amd-pstate-Set-the-initial-min_freq-to-lowes.patch @@ -33,7 +33,7 @@ Reviewed-by: Mario Limonciello --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -1025,13 +1025,6 @@ static int amd_pstate_cpu_init(struct cp +@@ -1003,13 +1003,6 @@ static int amd_pstate_cpu_init(struct cp if (cpu_feature_enabled(X86_FEATURE_CPPC)) policy->fast_switch_possible = true; @@ -47,7 +47,7 @@ Reviewed-by: Mario Limonciello ret = freq_qos_add_request(&policy->constraints, &cpudata->req[1], FREQ_QOS_MAX, policy->cpuinfo.max_freq); if (ret < 0) { -@@ -1746,6 +1739,13 @@ static int amd_pstate_epp_resume(struct +@@ -1724,6 +1717,13 @@ static int amd_pstate_epp_resume(struct return 0; } @@ -61,7 +61,7 @@ Reviewed-by: Mario Limonciello static struct cpufreq_driver amd_pstate_driver = { .flags = CPUFREQ_CONST_LOOPS | CPUFREQ_NEED_UPDATE_LIMITS, .verify = amd_pstate_verify, -@@ -1759,6 +1759,7 @@ static struct cpufreq_driver amd_pstate_ +@@ -1737,6 +1737,7 @@ static struct cpufreq_driver amd_pstate_ .update_limits = amd_pstate_update_limits, .name = "amd-pstate", .attr = amd_pstate_attr, @@ -69,7 +69,7 @@ Reviewed-by: Mario Limonciello }; static struct cpufreq_driver amd_pstate_epp_driver = { -@@ -1775,6 +1776,7 @@ static struct cpufreq_driver amd_pstate_ +@@ -1753,6 +1754,7 @@ static struct cpufreq_driver amd_pstate_ .set_boost = amd_pstate_set_boost, .name = "amd-pstate-epp", .attr = amd_pstate_epp_attr, diff --git a/debian/patches/patchset-pf/amd-pstate/0021-cpufreq-amd-pstate-Cleanup-the-old-min_freq-qos-requ.patch b/debian/patches/patchset-pf/amd-pstate/0021-cpufreq-amd-pstate-Cleanup-the-old-min_freq-qos-requ.patch index 1b82a70..1b64445 100644 --- a/debian/patches/patchset-pf/amd-pstate/0021-cpufreq-amd-pstate-Cleanup-the-old-min_freq-qos-requ.patch +++ b/debian/patches/patchset-pf/amd-pstate/0021-cpufreq-amd-pstate-Cleanup-the-old-min_freq-qos-requ.patch @@ -16,7 +16,7 @@ Reviewed-by: Mario Limonciello --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c -@@ -726,7 +726,7 @@ static int amd_pstate_cpu_boost_update(s +@@ -704,7 +704,7 @@ static int amd_pstate_cpu_boost_update(s policy->max = policy->cpuinfo.max_freq; if (cppc_state == AMD_PSTATE_PASSIVE) { @@ -25,7 +25,7 @@ Reviewed-by: Mario Limonciello if (ret < 0) pr_debug("Failed to update freq constraint: CPU%d\n", cpudata->cpu); } -@@ -993,17 +993,17 @@ static int amd_pstate_cpu_init(struct cp +@@ -971,17 +971,17 @@ static int amd_pstate_cpu_init(struct cp ret = amd_pstate_init_perf(cpudata); if (ret) @@ -46,7 +46,7 @@ Reviewed-by: Mario Limonciello min_freq = READ_ONCE(cpudata->min_freq); max_freq = READ_ONCE(cpudata->max_freq); -@@ -1025,11 +1025,11 @@ static int amd_pstate_cpu_init(struct cp +@@ -1003,11 +1003,11 @@ static int amd_pstate_cpu_init(struct cp if (cpu_feature_enabled(X86_FEATURE_CPPC)) policy->fast_switch_possible = true; @@ -60,7 +60,7 @@ Reviewed-by: Mario Limonciello } cpudata->max_limit_freq = max_freq; -@@ -1042,9 +1042,7 @@ static int amd_pstate_cpu_init(struct cp +@@ -1020,9 +1020,7 @@ static int amd_pstate_cpu_init(struct cp return 0; @@ -71,7 +71,7 @@ Reviewed-by: Mario Limonciello kfree(cpudata); return ret; } -@@ -1053,8 +1051,7 @@ static void amd_pstate_cpu_exit(struct c +@@ -1031,8 +1029,7 @@ static void amd_pstate_cpu_exit(struct c { struct amd_cpudata *cpudata = policy->driver_data; diff --git a/debian/patches/patchset-pf/amd-pstate/0022-cpufreq-amd-pstate-Use-nominal-perf-for-limits-when-.patch b/debian/patches/patchset-pf/amd-pstate/0022-cpufreq-amd-pstate-Use-nominal-perf-for-limits-when-.patch index 7036362..e40ea02 100644 --- a/debian/patches/patchset-pf/amd-pstate/0022-cpufreq-amd-pstate-Use-nominal-perf-for-limits-when-.patch +++ b/debian/patches/patchset-pf/amd-pstate/0022-cpufreq-amd-pstate-Use-nominal-perf-for-limits-when-.patch @@ -38,7 +38,7 @@ Signed-off-by: Mario Limonciello lowest_perf = READ_ONCE(cpudata->lowest_perf); if (min_limit_perf < lowest_perf) -@@ -1526,10 +1531,13 @@ static int amd_pstate_epp_update_limit(s +@@ -1504,10 +1509,13 @@ static int amd_pstate_epp_update_limit(s u64 value; s16 epp; diff --git a/debian/patches/patchset-pf/amd-pstate/0023-cpufreq-amd-pstate-Don-t-update-CPPC-request-in-amd_.patch b/debian/patches/patchset-pf/amd-pstate/0023-cpufreq-amd-pstate-Don-t-update-CPPC-request-in-amd_.patch deleted file mode 100644 index 0019cc1..0000000 --- a/debian/patches/patchset-pf/amd-pstate/0023-cpufreq-amd-pstate-Don-t-update-CPPC-request-in-amd_.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 01ad0fb3da95867947d923596a26b18d844afe3c Mon Sep 17 00:00:00 2001 -From: Mario Limonciello -Date: Sat, 12 Oct 2024 12:45:17 -0500 -Subject: cpufreq/amd-pstate: Don't update CPPC request in - amd_pstate_cpu_boost_update() - -When boost is changed the CPPC value is changed in amd_pstate_cpu_boost_update() -but then changed again when refresh_frequency_limits() and all it's callbacks -occur. The first is a pointless write, so instead just update the limits for -the policy and let the policy refresh anchor everything properly. - -Fixes: c8c68c38b56f ("cpufreq: amd-pstate: initialize core precision boost state") -Signed-off-by: Mario Limonciello ---- - drivers/cpufreq/amd-pstate.c | 24 +----------------------- - 1 file changed, 1 insertion(+), 23 deletions(-) - ---- a/drivers/cpufreq/amd-pstate.c -+++ b/drivers/cpufreq/amd-pstate.c -@@ -695,34 +695,12 @@ static void amd_pstate_adjust_perf(unsig - static int amd_pstate_cpu_boost_update(struct cpufreq_policy *policy, bool on) - { - struct amd_cpudata *cpudata = policy->driver_data; -- struct cppc_perf_ctrls perf_ctrls; -- u32 highest_perf, nominal_perf, nominal_freq, max_freq; -+ u32 nominal_freq, max_freq; - int ret = 0; - -- highest_perf = READ_ONCE(cpudata->highest_perf); -- nominal_perf = READ_ONCE(cpudata->nominal_perf); - nominal_freq = READ_ONCE(cpudata->nominal_freq); - max_freq = READ_ONCE(cpudata->max_freq); - -- if (boot_cpu_has(X86_FEATURE_CPPC)) { -- u64 value = READ_ONCE(cpudata->cppc_req_cached); -- -- value &= ~GENMASK_ULL(7, 0); -- value |= on ? highest_perf : nominal_perf; -- WRITE_ONCE(cpudata->cppc_req_cached, value); -- -- wrmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ, value); -- } else { -- perf_ctrls.max_perf = on ? highest_perf : nominal_perf; -- ret = cppc_set_perf(cpudata->cpu, &perf_ctrls); -- if (ret) { -- cpufreq_cpu_release(policy); -- pr_debug("Failed to set max perf on CPU:%d. ret:%d\n", -- cpudata->cpu, ret); -- return ret; -- } -- } -- - if (on) - policy->cpuinfo.max_freq = max_freq; - else if (policy->cpuinfo.max_freq > nominal_freq * 1000) diff --git a/debian/patches/patchset-pf/amd-pstate/0032-amd-pstate-Set-min_perf-to-nominal_perf-for-active-m.patch b/debian/patches/patchset-pf/amd-pstate/0032-amd-pstate-Set-min_perf-to-nominal_perf-for-active-m.patch deleted file mode 100644 index 528b7cb..0000000 --- a/debian/patches/patchset-pf/amd-pstate/0032-amd-pstate-Set-min_perf-to-nominal_perf-for-active-m.patch +++ /dev/null @@ -1,33 +0,0 @@ -From e82b9b5a56bcac18cae68878fe67263279805735 Mon Sep 17 00:00:00 2001 -From: "Gautham R. Shenoy" -Date: Mon, 21 Oct 2024 15:48:35 +0530 -Subject: amd-pstate: Set min_perf to nominal_perf for active mode performance - gov - -The amd-pstate driver sets CPPC_REQ.min_perf to CPPC_REQ.max_perf when -in active mode with performance governor. Typically CPPC_REQ.max_perf -is set to CPPC.highest_perf. This causes frequency throttling on -power-limited platforms which causes performance regressions on -certain classes of workloads. - -Hence, set the CPPC_REQ.min_perf to the CPPC.nominal_perf or -CPPC_REQ.max_perf, whichever is lower of the two. - -Fixes: ffa5096a7c33 ("cpufreq: amd-pstate: implement Pstate EPP support for the AMD processors") -Signed-off-by: Gautham R. Shenoy -Reviewed-by: Mario Limonciello ---- - drivers/cpufreq/amd-pstate.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/drivers/cpufreq/amd-pstate.c -+++ b/drivers/cpufreq/amd-pstate.c -@@ -1565,7 +1565,7 @@ static int amd_pstate_epp_update_limit(s - value = READ_ONCE(cpudata->cppc_req_cached); - - if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE) -- min_perf = max_perf; -+ min_perf = min(cpudata->nominal_perf, max_perf); - - /* Initial min/max values for CPPC Performance Controls Register */ - value &= ~AMD_CPPC_MIN_PERF(~0L); diff --git a/debian/patches/patchset-pf/cpuidle/0004-TEST-cpufreq-schedutil-iowait-boost-cap-sysfs.patch b/debian/patches/patchset-pf/cpuidle/0004-TEST-cpufreq-schedutil-iowait-boost-cap-sysfs.patch index a655dad..288c7e9 100644 --- a/debian/patches/patchset-pf/cpuidle/0004-TEST-cpufreq-schedutil-iowait-boost-cap-sysfs.patch +++ b/debian/patches/patchset-pf/cpuidle/0004-TEST-cpufreq-schedutil-iowait-boost-cap-sysfs.patch @@ -95,7 +95,7 @@ Signed-off-by: Christian Loehle policy->governor_data = sg_policy; sg_policy->tunables = tunables; -@@ -834,6 +870,8 @@ static int sugov_start(struct cpufreq_po +@@ -833,6 +869,8 @@ static int sugov_start(struct cpufreq_po sg_policy->limits_changed = false; sg_policy->cached_raw_freq = 0; diff --git a/debian/patches/patchset-pf/cpuidle/0005-cpufreq-schedutil-Remove-iowait-boost.patch b/debian/patches/patchset-pf/cpuidle/0005-cpufreq-schedutil-Remove-iowait-boost.patch index 2c1db29..365699b 100644 --- a/debian/patches/patchset-pf/cpuidle/0005-cpufreq-schedutil-Remove-iowait-boost.patch +++ b/debian/patches/patchset-pf/cpuidle/0005-cpufreq-schedutil-Remove-iowait-boost.patch @@ -314,7 +314,7 @@ Signed-off-by: Christian Loehle policy->governor_data = sg_policy; sg_policy->tunables = tunables; -@@ -870,8 +697,6 @@ static int sugov_start(struct cpufreq_po +@@ -869,8 +696,6 @@ static int sugov_start(struct cpufreq_po sg_policy->limits_changed = false; sg_policy->cached_raw_freq = 0; diff --git a/debian/patches/patchset-pf/fixes/0006-KVM-x86-switch-hugepage-recovery-thread-to-vhost_tas.patch b/debian/patches/patchset-pf/fixes/0006-KVM-x86-switch-hugepage-recovery-thread-to-vhost_tas.patch deleted file mode 100644 index b0e8d91..0000000 --- a/debian/patches/patchset-pf/fixes/0006-KVM-x86-switch-hugepage-recovery-thread-to-vhost_tas.patch +++ /dev/null @@ -1,326 +0,0 @@ -From 11fa4cfe7134f44f2cdac4b25636fc3291096979 Mon Sep 17 00:00:00 2001 -From: Paolo Bonzini -Date: Fri, 8 Nov 2024 08:07:37 -0500 -Subject: KVM: x86: switch hugepage recovery thread to vhost_task - -kvm_vm_create_worker_thread() is meant to be used for kthreads that -can consume significant amounts of CPU time on behalf of a VM or in -response to how the VM behaves (for example how it accesses its memory). -Therefore it wants to charge the CPU time consumed by that work to -the VM's container. - -However, because of these threads, cgroups which have kvm instances inside -never complete freezing. This can be trivially reproduced: - - root@test ~# mkdir /sys/fs/cgroup/test - root@test ~# echo $fish_pid > /sys/fs/cgroup/test/cgroup.procs - root@test ~# qemu-system-x86_64 --nographic -enable-kvm - -and in another terminal: - - root@test ~# echo 1 > /sys/fs/cgroup/test/cgroup.freeze - root@test ~# cat /sys/fs/cgroup/test/cgroup.events - populated 1 - frozen 0 - -The cgroup freezing happens in the signal delivery path but -kvm_vm_worker_thread() thread never call into the signal delivery path while -joining non-root cgroups, so they never get frozen. Because the cgroup -freezer determines whether a given cgroup is frozen by comparing the number -of frozen threads to the total number of threads in the cgroup, the cgroup -never becomes frozen and users waiting for the state transition may hang -indefinitely. - -Since the worker kthread is tied to a user process, it's better if -it behaves similarly to user tasks as much as possible, including -being able to send SIGSTOP and SIGCONT. In fact, vhost_task is all -that kvm_vm_create_worker_thread() wanted to be and more: not only it -inherits the userspace process's cgroups, it has other niceties like -being parented properly in the process tree. Use it instead of the -homegrown alternative. - -(Commit message based on emails from Tejun). - -Reported-by: Tejun Heo -Reported-by: Luca Boccassi -Tested-by: Luca Boccassi -Acked-by: Tejun Heo -Signed-off-by: Paolo Bonzini ---- - arch/x86/include/asm/kvm_host.h | 4 +- - arch/x86/kvm/Kconfig | 1 + - arch/x86/kvm/mmu/mmu.c | 67 +++++++++++---------- - include/linux/kvm_host.h | 6 -- - virt/kvm/kvm_main.c | 103 -------------------------------- - 5 files changed, 39 insertions(+), 142 deletions(-) - ---- a/arch/x86/include/asm/kvm_host.h -+++ b/arch/x86/include/asm/kvm_host.h -@@ -26,6 +26,7 @@ - #include - #include - #include -+#include - - #include - #include -@@ -1445,7 +1446,8 @@ struct kvm_arch { - bool sgx_provisioning_allowed; - - struct kvm_x86_pmu_event_filter __rcu *pmu_event_filter; -- struct task_struct *nx_huge_page_recovery_thread; -+ struct vhost_task *nx_huge_page_recovery_thread; -+ u64 nx_huge_page_next; - - #ifdef CONFIG_X86_64 - /* The number of TDP MMU pages across all roots. */ ---- a/arch/x86/kvm/Kconfig -+++ b/arch/x86/kvm/Kconfig -@@ -29,6 +29,7 @@ config KVM - select HAVE_KVM_IRQ_BYPASS - select HAVE_KVM_IRQ_ROUTING - select HAVE_KVM_READONLY_MEM -+ select VHOST_TASK - select KVM_ASYNC_PF - select USER_RETURN_NOTIFIER - select KVM_MMIO ---- a/arch/x86/kvm/mmu/mmu.c -+++ b/arch/x86/kvm/mmu/mmu.c -@@ -7160,7 +7160,7 @@ static int set_nx_huge_pages(const char - kvm_mmu_zap_all_fast(kvm); - mutex_unlock(&kvm->slots_lock); - -- wake_up_process(kvm->arch.nx_huge_page_recovery_thread); -+ vhost_task_wake(kvm->arch.nx_huge_page_recovery_thread); - } - mutex_unlock(&kvm_lock); - } -@@ -7306,7 +7306,7 @@ static int set_nx_huge_pages_recovery_pa - mutex_lock(&kvm_lock); - - list_for_each_entry(kvm, &vm_list, vm_list) -- wake_up_process(kvm->arch.nx_huge_page_recovery_thread); -+ vhost_task_wake(kvm->arch.nx_huge_page_recovery_thread); - - mutex_unlock(&kvm_lock); - } -@@ -7409,62 +7409,65 @@ static void kvm_recover_nx_huge_pages(st - srcu_read_unlock(&kvm->srcu, rcu_idx); - } - --static long get_nx_huge_page_recovery_timeout(u64 start_time) -+#define NX_HUGE_PAGE_DISABLED (-1) -+ -+static u64 get_nx_huge_page_recovery_next(void) - { - bool enabled; - uint period; - - enabled = calc_nx_huge_pages_recovery_period(&period); - -- return enabled ? start_time + msecs_to_jiffies(period) - get_jiffies_64() -- : MAX_SCHEDULE_TIMEOUT; -+ return enabled ? get_jiffies_64() + msecs_to_jiffies(period) -+ : NX_HUGE_PAGE_DISABLED; - } - --static int kvm_nx_huge_page_recovery_worker(struct kvm *kvm, uintptr_t data) -+static void kvm_nx_huge_page_recovery_worker_kill(void *data) - { -- u64 start_time; -- long remaining_time; -- -- while (true) { -- start_time = get_jiffies_64(); -- remaining_time = get_nx_huge_page_recovery_timeout(start_time); -- -- set_current_state(TASK_INTERRUPTIBLE); -- while (!kthread_should_stop() && remaining_time > 0) { -- schedule_timeout(remaining_time); -- remaining_time = get_nx_huge_page_recovery_timeout(start_time); -- set_current_state(TASK_INTERRUPTIBLE); -- } -+} - -- set_current_state(TASK_RUNNING); -+static bool kvm_nx_huge_page_recovery_worker(void *data) -+{ -+ struct kvm *kvm = data; -+ long remaining_time; - -- if (kthread_should_stop()) -- return 0; -+ if (kvm->arch.nx_huge_page_next == NX_HUGE_PAGE_DISABLED) -+ return false; - -- kvm_recover_nx_huge_pages(kvm); -+ remaining_time = kvm->arch.nx_huge_page_next - get_jiffies_64(); -+ if (remaining_time > 0) { -+ schedule_timeout(remaining_time); -+ /* check for signals and come back */ -+ return true; - } -+ -+ __set_current_state(TASK_RUNNING); -+ kvm_recover_nx_huge_pages(kvm); -+ kvm->arch.nx_huge_page_next = get_nx_huge_page_recovery_next(); -+ return true; - } - - int kvm_mmu_post_init_vm(struct kvm *kvm) - { -- int err; -- - if (nx_hugepage_mitigation_hard_disabled) - return 0; - -- err = kvm_vm_create_worker_thread(kvm, kvm_nx_huge_page_recovery_worker, 0, -- "kvm-nx-lpage-recovery", -- &kvm->arch.nx_huge_page_recovery_thread); -- if (!err) -- kthread_unpark(kvm->arch.nx_huge_page_recovery_thread); -+ kvm->arch.nx_huge_page_next = get_nx_huge_page_recovery_next(); -+ kvm->arch.nx_huge_page_recovery_thread = vhost_task_create( -+ kvm_nx_huge_page_recovery_worker, kvm_nx_huge_page_recovery_worker_kill, -+ kvm, "kvm-nx-lpage-recovery"); - -- return err; -+ if (!kvm->arch.nx_huge_page_recovery_thread) -+ return -ENOMEM; -+ -+ vhost_task_start(kvm->arch.nx_huge_page_recovery_thread); -+ return 0; - } - - void kvm_mmu_pre_destroy_vm(struct kvm *kvm) - { - if (kvm->arch.nx_huge_page_recovery_thread) -- kthread_stop(kvm->arch.nx_huge_page_recovery_thread); -+ vhost_task_stop(kvm->arch.nx_huge_page_recovery_thread); - } - - #ifdef CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES ---- a/include/linux/kvm_host.h -+++ b/include/linux/kvm_host.h -@@ -2370,12 +2370,6 @@ static inline int kvm_arch_vcpu_run_pid_ - } - #endif /* CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE */ - --typedef int (*kvm_vm_thread_fn_t)(struct kvm *kvm, uintptr_t data); -- --int kvm_vm_create_worker_thread(struct kvm *kvm, kvm_vm_thread_fn_t thread_fn, -- uintptr_t data, const char *name, -- struct task_struct **thread_ptr); -- - #ifdef CONFIG_KVM_XFER_TO_GUEST_WORK - static inline void kvm_handle_signal_exit(struct kvm_vcpu *vcpu) - { ---- a/virt/kvm/kvm_main.c -+++ b/virt/kvm/kvm_main.c -@@ -6573,106 +6573,3 @@ void kvm_exit(void) - kvm_irqfd_exit(); - } - EXPORT_SYMBOL_GPL(kvm_exit); -- --struct kvm_vm_worker_thread_context { -- struct kvm *kvm; -- struct task_struct *parent; -- struct completion init_done; -- kvm_vm_thread_fn_t thread_fn; -- uintptr_t data; -- int err; --}; -- --static int kvm_vm_worker_thread(void *context) --{ -- /* -- * The init_context is allocated on the stack of the parent thread, so -- * we have to locally copy anything that is needed beyond initialization -- */ -- struct kvm_vm_worker_thread_context *init_context = context; -- struct task_struct *parent; -- struct kvm *kvm = init_context->kvm; -- kvm_vm_thread_fn_t thread_fn = init_context->thread_fn; -- uintptr_t data = init_context->data; -- int err; -- -- err = kthread_park(current); -- /* kthread_park(current) is never supposed to return an error */ -- WARN_ON(err != 0); -- if (err) -- goto init_complete; -- -- err = cgroup_attach_task_all(init_context->parent, current); -- if (err) { -- kvm_err("%s: cgroup_attach_task_all failed with err %d\n", -- __func__, err); -- goto init_complete; -- } -- -- set_user_nice(current, task_nice(init_context->parent)); -- --init_complete: -- init_context->err = err; -- complete(&init_context->init_done); -- init_context = NULL; -- -- if (err) -- goto out; -- -- /* Wait to be woken up by the spawner before proceeding. */ -- kthread_parkme(); -- -- if (!kthread_should_stop()) -- err = thread_fn(kvm, data); -- --out: -- /* -- * Move kthread back to its original cgroup to prevent it lingering in -- * the cgroup of the VM process, after the latter finishes its -- * execution. -- * -- * kthread_stop() waits on the 'exited' completion condition which is -- * set in exit_mm(), via mm_release(), in do_exit(). However, the -- * kthread is removed from the cgroup in the cgroup_exit() which is -- * called after the exit_mm(). This causes the kthread_stop() to return -- * before the kthread actually quits the cgroup. -- */ -- rcu_read_lock(); -- parent = rcu_dereference(current->real_parent); -- get_task_struct(parent); -- rcu_read_unlock(); -- cgroup_attach_task_all(parent, current); -- put_task_struct(parent); -- -- return err; --} -- --int kvm_vm_create_worker_thread(struct kvm *kvm, kvm_vm_thread_fn_t thread_fn, -- uintptr_t data, const char *name, -- struct task_struct **thread_ptr) --{ -- struct kvm_vm_worker_thread_context init_context = {}; -- struct task_struct *thread; -- -- *thread_ptr = NULL; -- init_context.kvm = kvm; -- init_context.parent = current; -- init_context.thread_fn = thread_fn; -- init_context.data = data; -- init_completion(&init_context.init_done); -- -- thread = kthread_run(kvm_vm_worker_thread, &init_context, -- "%s-%d", name, task_pid_nr(current)); -- if (IS_ERR(thread)) -- return PTR_ERR(thread); -- -- /* kthread_run is never supposed to return NULL */ -- WARN_ON(thread == NULL); -- -- wait_for_completion(&init_context.init_done); -- -- if (!init_context.err) -- *thread_ptr = thread; -- -- return init_context.err; --} diff --git a/debian/patches/patchset-xanmod/binder/0001-binder-turn-into-module.patch b/debian/patches/patchset-xanmod/binder/0001-binder-turn-into-module.patch index aa448d6..208de2c 100644 --- a/debian/patches/patchset-xanmod/binder/0001-binder-turn-into-module.patch +++ b/debian/patches/patchset-xanmod/binder/0001-binder-turn-into-module.patch @@ -174,7 +174,7 @@ Signed-off-by: Alexandre Frade struct user_namespace *user_ns, struct ipc_namespace *ns); --- a/ipc/namespace.c +++ b/ipc/namespace.c -@@ -207,6 +207,22 @@ void put_ipc_ns(struct ipc_namespace *ns +@@ -209,6 +209,22 @@ void put_ipc_ns(struct ipc_namespace *ns } EXPORT_SYMBOL_GPL(put_ipc_ns); diff --git a/debian/patches/patchset-xanmod/xanmod/0007-XANMOD-block-Set-rq_affinity-to-force-complete-I-O-r.patch b/debian/patches/patchset-xanmod/xanmod/0007-XANMOD-block-Set-rq_affinity-to-force-complete-I-O-r.patch index 63f64f6..d26d787 100644 --- a/debian/patches/patchset-xanmod/xanmod/0007-XANMOD-block-Set-rq_affinity-to-force-complete-I-O-r.patch +++ b/debian/patches/patchset-xanmod/xanmod/0007-XANMOD-block-Set-rq_affinity-to-force-complete-I-O-r.patch @@ -11,7 +11,7 @@ Signed-off-by: Alexandre Frade --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h -@@ -605,7 +605,8 @@ enum { +@@ -615,7 +615,8 @@ enum { QUEUE_FLAG_MAX }; diff --git a/debian/patches/patchset-xanmod/xanmod/0012-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch b/debian/patches/patchset-xanmod/xanmod/0012-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch index ac8cbe4..35532a1 100644 --- a/debian/patches/patchset-xanmod/xanmod/0012-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch +++ b/debian/patches/patchset-xanmod/xanmod/0012-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch @@ -35,7 +35,7 @@ Signed-off-by: Alexandre Frade no_console_suspend --- a/init/Kconfig +++ b/init/Kconfig -@@ -1309,6 +1309,18 @@ config SCHED_AUTOGROUP +@@ -1318,6 +1318,18 @@ config SCHED_AUTOGROUP desktop applications. Task group autogeneration is currently based upon task session. diff --git a/debian/patches/patchset-zen/sauce/0011-ZEN-INTERACTIVE-Base-config-item.patch b/debian/patches/patchset-zen/sauce/0011-ZEN-INTERACTIVE-Base-config-item.patch index 58ddd57..58bc8d4 100644 --- a/debian/patches/patchset-zen/sauce/0011-ZEN-INTERACTIVE-Base-config-item.patch +++ b/debian/patches/patchset-zen/sauce/0011-ZEN-INTERACTIVE-Base-config-item.patch @@ -9,7 +9,7 @@ Subject: ZEN: INTERACTIVE: Base config item --- a/init/Kconfig +++ b/init/Kconfig -@@ -134,6 +134,12 @@ config THREAD_INFO_IN_TASK +@@ -143,6 +143,12 @@ config THREAD_INFO_IN_TASK menu "General setup" diff --git a/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch b/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch index 81de3dd..8eb24ad 100644 --- a/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch +++ b/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch @@ -24,7 +24,7 @@ Subject: ZEN: INTERACTIVE: Use BFQ as the elevator for SQ devices /* --- a/init/Kconfig +++ b/init/Kconfig -@@ -140,6 +140,10 @@ config ZEN_INTERACTIVE +@@ -149,6 +149,10 @@ config ZEN_INTERACTIVE help Tunes the kernel for responsiveness at the cost of throughput and power usage. diff --git a/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch b/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch index 9025985..4fca761 100644 --- a/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch +++ b/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch @@ -26,7 +26,7 @@ Subject: ZEN: INTERACTIVE: Use Kyber as the elevator for MQ devices return elevator_find_get("bfq"); --- a/init/Kconfig +++ b/init/Kconfig -@@ -143,6 +143,7 @@ config ZEN_INTERACTIVE +@@ -152,6 +152,7 @@ config ZEN_INTERACTIVE --- Block Layer ---------------------------------------- Default scheduler for SQ..: mq-deadline -> bfq diff --git a/debian/patches/patchset-zen/sauce/0014-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch b/debian/patches/patchset-zen/sauce/0014-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch index 7ddc6fc..10e54b7 100644 --- a/debian/patches/patchset-zen/sauce/0014-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch +++ b/debian/patches/patchset-zen/sauce/0014-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch @@ -32,7 +32,7 @@ Reasoning and details in the original patch: https://lwn.net/Articles/711248/ --- a/init/Kconfig +++ b/init/Kconfig -@@ -145,6 +145,10 @@ config ZEN_INTERACTIVE +@@ -154,6 +154,10 @@ config ZEN_INTERACTIVE Default scheduler for SQ..: mq-deadline -> bfq Default scheduler for MQ..: none -> kyber diff --git a/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Tune-mgLRU-to-protect-cache-used-in-.patch b/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Tune-mgLRU-to-protect-cache-used-in-.patch index bbb30ec..a42c635 100644 --- a/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Tune-mgLRU-to-protect-cache-used-in-.patch +++ b/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Tune-mgLRU-to-protect-cache-used-in-.patch @@ -17,7 +17,7 @@ that don't know they need it. --- a/init/Kconfig +++ b/init/Kconfig -@@ -148,6 +148,7 @@ config ZEN_INTERACTIVE +@@ -157,6 +157,7 @@ config ZEN_INTERACTIVE --- Virtual Memory Subsystem --------------------------- Background-reclaim hugepages...: no -> yes diff --git a/debian/patches/patchset-zen/sauce/0016-ZEN-INTERACTIVE-Tune-EEVDF-for-interactivity.patch b/debian/patches/patchset-zen/sauce/0016-ZEN-INTERACTIVE-Tune-EEVDF-for-interactivity.patch index 75a0131..1ae1bc1 100644 --- a/debian/patches/patchset-zen/sauce/0016-ZEN-INTERACTIVE-Tune-EEVDF-for-interactivity.patch +++ b/debian/patches/patchset-zen/sauce/0016-ZEN-INTERACTIVE-Tune-EEVDF-for-interactivity.patch @@ -42,7 +42,7 @@ caused by rebalancing too many tasks at once. --- a/init/Kconfig +++ b/init/Kconfig -@@ -150,6 +150,13 @@ config ZEN_INTERACTIVE +@@ -159,6 +159,13 @@ config ZEN_INTERACTIVE Background-reclaim hugepages...: no -> yes MG-LRU minimum cache TTL.......: 0 -> 1000 ms diff --git a/debian/patches/patchset-zen/sauce/0017-ZEN-INTERACTIVE-Tune-ondemand-governor-for-interacti.patch b/debian/patches/patchset-zen/sauce/0017-ZEN-INTERACTIVE-Tune-ondemand-governor-for-interacti.patch index 5cef79c..438f562 100644 --- a/debian/patches/patchset-zen/sauce/0017-ZEN-INTERACTIVE-Tune-ondemand-governor-for-interacti.patch +++ b/debian/patches/patchset-zen/sauce/0017-ZEN-INTERACTIVE-Tune-ondemand-governor-for-interacti.patch @@ -75,7 +75,7 @@ Remove MuQSS cpufreq configuration. --- a/init/Kconfig +++ b/init/Kconfig -@@ -157,6 +157,12 @@ config ZEN_INTERACTIVE +@@ -166,6 +166,12 @@ config ZEN_INTERACTIVE Bandwidth slice size...........: 5 -> 3 ms Task rebalancing threshold.....: 32 -> 8 diff --git a/debian/patches/patchset-zen/sauce/0018-ZEN-INTERACTIVE-mm-Disable-unevictable-compaction.patch b/debian/patches/patchset-zen/sauce/0018-ZEN-INTERACTIVE-mm-Disable-unevictable-compaction.patch index e6a0e18..841acf9 100644 --- a/debian/patches/patchset-zen/sauce/0018-ZEN-INTERACTIVE-mm-Disable-unevictable-compaction.patch +++ b/debian/patches/patchset-zen/sauce/0018-ZEN-INTERACTIVE-mm-Disable-unevictable-compaction.patch @@ -12,7 +12,7 @@ turn it off when CONFIG_ZEN_INTERACTIVE is set as well. --- a/init/Kconfig +++ b/init/Kconfig -@@ -149,6 +149,7 @@ config ZEN_INTERACTIVE +@@ -158,6 +158,7 @@ config ZEN_INTERACTIVE Background-reclaim hugepages...: no -> yes MG-LRU minimum cache TTL.......: 0 -> 1000 ms diff --git a/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-proactive-compaction-by-d.patch b/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-proactive-compaction-by-d.patch index 2927530..fafd8bd 100644 --- a/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-proactive-compaction-by-d.patch +++ b/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-proactive-compaction-by-d.patch @@ -14,7 +14,7 @@ Signed-off-by: Sultan Alsawaf --- a/init/Kconfig +++ b/init/Kconfig -@@ -150,6 +150,7 @@ config ZEN_INTERACTIVE +@@ -159,6 +159,7 @@ config ZEN_INTERACTIVE Background-reclaim hugepages...: no -> yes MG-LRU minimum cache TTL.......: 0 -> 1000 ms Compact unevictable............: yes -> no diff --git a/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch b/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch index e745c99..f5caa56 100644 --- a/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch +++ b/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch @@ -33,7 +33,7 @@ Signed-off-by: Sultan Alsawaf --- a/init/Kconfig +++ b/init/Kconfig -@@ -151,6 +151,7 @@ config ZEN_INTERACTIVE +@@ -160,6 +160,7 @@ config ZEN_INTERACTIVE MG-LRU minimum cache TTL.......: 0 -> 1000 ms Compact unevictable............: yes -> no Compaction proactiveness.......: 20 -> 0 diff --git a/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch b/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch index 0333d12..bba7ba1 100644 --- a/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch +++ b/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch @@ -47,7 +47,7 @@ Signed-off-by: Sultan Alsawaf --- a/init/Kconfig +++ b/init/Kconfig -@@ -152,6 +152,7 @@ config ZEN_INTERACTIVE +@@ -161,6 +161,7 @@ config ZEN_INTERACTIVE Compact unevictable............: yes -> no Compaction proactiveness.......: 20 -> 0 Watermark boost factor.........: 1.5 -> 0 diff --git a/debian/patches/patchset-zen/sauce/0022-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch b/debian/patches/patchset-zen/sauce/0022-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch index 2ead0f7..3cd88e6 100644 --- a/debian/patches/patchset-zen/sauce/0022-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch +++ b/debian/patches/patchset-zen/sauce/0022-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch @@ -34,7 +34,7 @@ Fixes: https://github.com/zen-kernel/zen-kernel/issues/282 goto bad; --- a/init/Kconfig +++ b/init/Kconfig -@@ -144,6 +144,7 @@ config ZEN_INTERACTIVE +@@ -153,6 +153,7 @@ config ZEN_INTERACTIVE Default scheduler for SQ..: mq-deadline -> bfq Default scheduler for MQ..: none -> kyber diff --git a/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch b/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch index 55146b0..a6392c6 100644 --- a/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch +++ b/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch @@ -20,7 +20,7 @@ same change so Zen Kernel users benefit. --- a/init/Kconfig +++ b/init/Kconfig -@@ -154,6 +154,7 @@ config ZEN_INTERACTIVE +@@ -163,6 +163,7 @@ config ZEN_INTERACTIVE Compaction proactiveness.......: 20 -> 0 Watermark boost factor.........: 1.5 -> 0 Pageblock order................: 10 -> 3 diff --git a/debian/patches/series b/debian/patches/series index a8a4ab0..a6fed10 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -188,7 +188,6 @@ patchset-pf/amd-pstate/0019-cpufreq-Add-a-callback-to-update-the-min_freq_req-fr patchset-pf/amd-pstate/0020-cpufreq-amd-pstate-Set-the-initial-min_freq-to-lowes.patch patchset-pf/amd-pstate/0021-cpufreq-amd-pstate-Cleanup-the-old-min_freq-qos-requ.patch patchset-pf/amd-pstate/0022-cpufreq-amd-pstate-Use-nominal-perf-for-limits-when-.patch -patchset-pf/amd-pstate/0023-cpufreq-amd-pstate-Don-t-update-CPPC-request-in-amd_.patch patchset-pf/amd-pstate/0024-cpufreq-amd-pstate-Use-amd_pstate_update_min_max_lim.patch patchset-pf/amd-pstate/0025-cpufreq-amd-pstate-Drop-needless-EPP-initialization.patch patchset-pf/amd-pstate/0026-amd-pstate-6.11-update-setting-the-minimum-frequency.patch @@ -197,7 +196,6 @@ patchset-pf/amd-pstate/0028-cpufreq-amd-pstate-Call-amd_pstate_set_driver-in-amd patchset-pf/amd-pstate/0029-cpufreq-amd-pstate-Remove-the-switch-case-in-amd_pst.patch patchset-pf/amd-pstate/0030-cpufreq-amd-pstate-Remove-the-redundant-amd_pstate_s.patch patchset-pf/amd-pstate/0031-cpufreq-amd-pstate-ut-Add-fix-for-min-freq-unit-test.patch -patchset-pf/amd-pstate/0032-amd-pstate-Set-min_perf-to-nominal_perf-for-active-m.patch patchset-pf/amd-pstate/0033-amd-pstate-Switch-to-amd-pstate-by-default-on-some-S.patch patchset-pf/amd-pstate/0034-cpufreq-amd-pstate-Push-adjust_perf-vfunc-init-into-.patch patchset-pf/amd-pstate/0035-ACPI-processor-Move-arch_init_invariance_cppc-call-l.patch @@ -307,6 +305,5 @@ patchset-pf/fixes/0002-cpufreq-Remove-LATENCY_MULTIPLIER.patch patchset-pf/fixes/0003-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch patchset-pf/fixes/0004-nfsd-add-more-info-to-WARN_ON_ONCE-on-failed-callbac.patch patchset-pf/fixes/0005-btrfs-also-add-stripe-entries-for-NOCOW-writes.patch -patchset-pf/fixes/0006-KVM-x86-switch-hugepage-recovery-thread-to-vhost_tas.patch patchset-zen/fixes/0001-Partially-revert-drm-amd-amdgpu-add-pipe1-hardware-s.patch