diff --git a/debian/bin/genpatch-pfkernel b/debian/bin/genpatch-pfkernel index d3956fd..87fa53d 100755 --- a/debian/bin/genpatch-pfkernel +++ b/debian/bin/genpatch-pfkernel @@ -7,7 +7,7 @@ w=$(git rev-parse --path-format=absolute --show-toplevel) ; : "${w:?}" ; cd "$w" dst='debian/patches/pf-tmp' src='../linux-extras' -branches='amd-pstate cpuidle crypto fixes kbuild smb zstd' +branches='amd-pstate cpuidle crypto fixes invlpgb kbuild smb zstd' if [ -d "${dst}" ] ; then rm -rf "${dst}" ; fi mkdir -p "${dst}" diff --git a/debian/changelog b/debian/changelog index 20d8c0f..dcd934d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +linux (6.14.7-1) sid; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.14.7 + + -- Konstantin Demin Sun, 18 May 2025 11:56:49 +0300 + linux (6.14.6-1) sid; urgency=medium * New upstream stable update: 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 0f8e646..c2ed722 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 @@ -22,7 +22,7 @@ Signed-off-by: Ben Hutchings --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -2247,6 +2247,8 @@ +@@ -2264,6 +2264,8 @@ bypassed by not enabling DMAR with this option. In this case, gfx device will use physical address for DMA. diff --git a/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch b/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch index 2cacc5d..07cf5b6 100644 --- a/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch +++ b/debian/patches/features/x86/x86-make-x32-syscall-support-conditional.patch @@ -29,7 +29,7 @@ Signed-off-by: Ben Hutchings --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -6984,6 +6984,10 @@ +@@ -7002,6 +7002,10 @@ later by a loaded module cannot be set this way. Example: sysctl.vm.swappiness=40 @@ -42,7 +42,7 @@ Signed-off-by: Ben Hutchings Ignore sysrq setting - this boot parameter will --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig -@@ -3189,6 +3189,14 @@ config COMPAT_32 +@@ -3201,6 +3201,14 @@ config COMPAT_32 select HAVE_UID16 select OLD_SIGSUSPEND3 diff --git a/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch b/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch index ff37c41..95f0162 100644 --- a/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch +++ b/debian/patches/krd/0001-Revert-objtool-dont-fail-the-kernel-build-on-fatal-errors.patch @@ -30,7 +30,7 @@ this reverts following commit: --- a/tools/objtool/check.c +++ b/tools/objtool/check.c -@@ -4773,10 +4773,14 @@ int check(struct objtool_file *file) +@@ -4774,10 +4774,14 @@ int check(struct objtool_file *file) } out: diff --git a/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch b/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch index edaec65..69beee0 100644 --- a/debian/patches/mixed-arch/0002-ZEN-Restore-CONFIG_OPTIMIZE_FOR_PERFORMANCE_O3.patch +++ b/debian/patches/mixed-arch/0002-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 -@@ -1470,6 +1470,12 @@ config CC_OPTIMIZE_FOR_PERFORMANCE +@@ -1473,6 +1473,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/0017-cpufreq-amd-pstate-Replace-all-AMD_CPPC_-macros-with.patch b/debian/patches/patchset-pf/amd-pstate/0017-cpufreq-amd-pstate-Replace-all-AMD_CPPC_-macros-with.patch index cea136f..6bdc28c 100644 --- a/debian/patches/patchset-pf/amd-pstate/0017-cpufreq-amd-pstate-Replace-all-AMD_CPPC_-macros-with.patch +++ b/debian/patches/patchset-pf/amd-pstate/0017-cpufreq-amd-pstate-Replace-all-AMD_CPPC_-macros-with.patch @@ -17,7 +17,7 @@ Signed-off-by: Mario Limonciello --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h -@@ -701,15 +701,17 @@ +@@ -709,15 +709,17 @@ #define MSR_AMD_CPPC_REQ 0xc00102b3 #define MSR_AMD_CPPC_STATUS 0xc00102b4 diff --git a/debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch b/debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch index 82c3279..03e3c63 100644 --- a/debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch +++ b/debian/patches/patchset-pf/fixes/0007-Kconfig-switch-CONFIG_SYSFS_SYCALL-default-to-n.patch @@ -13,7 +13,7 @@ Signed-off-by: Christian Brauner --- a/init/Kconfig +++ b/init/Kconfig -@@ -1600,6 +1600,16 @@ config SYSCTL_ARCH_UNALIGN_ALLOW +@@ -1603,6 +1603,16 @@ config SYSCTL_ARCH_UNALIGN_ALLOW the unaligned access emulation. see arch/parisc/kernel/unaligned.c for reference @@ -30,7 +30,7 @@ Signed-off-by: Christian Brauner config HAVE_PCSPKR_PLATFORM bool -@@ -1644,16 +1654,6 @@ config SGETMASK_SYSCALL +@@ -1647,16 +1657,6 @@ config SGETMASK_SYSCALL If unsure, leave the default option here. diff --git a/debian/patches/patchset-pf/fixes/0012-Revert-drm-amd-Stop-evicting-resources-on-APUs-in-su.patch b/debian/patches/patchset-pf/fixes/0012-Revert-drm-amd-Stop-evicting-resources-on-APUs-in-su.patch deleted file mode 100644 index f95022a..0000000 --- a/debian/patches/patchset-pf/fixes/0012-Revert-drm-amd-Stop-evicting-resources-on-APUs-in-su.patch +++ /dev/null @@ -1,98 +0,0 @@ -From dca14df8b269f207ac834149126964039142b596 Mon Sep 17 00:00:00 2001 -From: Alex Deucher -Date: Thu, 1 May 2025 13:00:16 -0400 -Subject: Revert "drm/amd: Stop evicting resources on APUs in suspend" - -This reverts commit 3a9626c816db901def438dc2513622e281186d39. - -This breaks S4 because we end up setting the s3/s0ix flags -even when we are entering s4 since prepare is used by both -flows. The causes both the S3/s0ix and s4 flags to be set -which breaks several checks in the driver which assume they -are mutually exclusive. - -Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/3634 -Cc: Mario Limonciello -Reviewed-by: Mario Limonciello -Signed-off-by: Alex Deucher ---- - drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 -- - drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c | 18 ------------------ - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 11 ++--------- - 3 files changed, 2 insertions(+), 29 deletions(-) - ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h -@@ -1594,11 +1594,9 @@ static inline void amdgpu_acpi_get_backl - #if defined(CONFIG_ACPI) && defined(CONFIG_SUSPEND) - bool amdgpu_acpi_is_s3_active(struct amdgpu_device *adev); - bool amdgpu_acpi_is_s0ix_active(struct amdgpu_device *adev); --void amdgpu_choose_low_power_state(struct amdgpu_device *adev); - #else - static inline bool amdgpu_acpi_is_s0ix_active(struct amdgpu_device *adev) { return false; } - static inline bool amdgpu_acpi_is_s3_active(struct amdgpu_device *adev) { return false; } --static inline void amdgpu_choose_low_power_state(struct amdgpu_device *adev) { } - #endif - - void amdgpu_register_gpu_instance(struct amdgpu_device *adev); ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_acpi.c -@@ -1533,22 +1533,4 @@ bool amdgpu_acpi_is_s0ix_active(struct a - #endif /* CONFIG_AMD_PMC */ - } - --/** -- * amdgpu_choose_low_power_state -- * -- * @adev: amdgpu_device_pointer -- * -- * Choose the target low power state for the GPU -- */ --void amdgpu_choose_low_power_state(struct amdgpu_device *adev) --{ -- if (adev->in_runpm) -- return; -- -- if (amdgpu_acpi_is_s0ix_active(adev)) -- adev->in_s0ix = true; -- else if (amdgpu_acpi_is_s3_active(adev)) -- adev->in_s3 = true; --} -- - #endif /* CONFIG_SUSPEND */ ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -4861,15 +4861,13 @@ int amdgpu_device_prepare(struct drm_dev - struct amdgpu_device *adev = drm_to_adev(dev); - int i, r; - -- amdgpu_choose_low_power_state(adev); -- - if (dev->switch_power_state == DRM_SWITCH_POWER_OFF) - return 0; - - /* Evict the majority of BOs before starting suspend sequence */ - r = amdgpu_device_evict_resources(adev); - if (r) -- goto unprepare; -+ return r; - - flush_delayed_work(&adev->gfx.gfx_off_delay_work); - -@@ -4880,15 +4878,10 @@ int amdgpu_device_prepare(struct drm_dev - continue; - r = adev->ip_blocks[i].version->funcs->prepare_suspend(&adev->ip_blocks[i]); - if (r) -- goto unprepare; -+ return r; - } - - return 0; -- --unprepare: -- adev->in_s0ix = adev->in_s3 = adev->in_s4 = false; -- -- return r; - } - - /** diff --git a/debian/patches/patchset-pf/fixes/0013-drm-amdgpu-fix-pm-notifier-handling.patch b/debian/patches/patchset-pf/fixes/0013-drm-amdgpu-fix-pm-notifier-handling.patch deleted file mode 100644 index c7bb92e..0000000 --- a/debian/patches/patchset-pf/fixes/0013-drm-amdgpu-fix-pm-notifier-handling.patch +++ /dev/null @@ -1,87 +0,0 @@ -From e9ee1b0a41166033eda14d11823826b79ce5131b Mon Sep 17 00:00:00 2001 -From: Alex Deucher -Date: Thu, 1 May 2025 13:46:46 -0400 -Subject: drm/amdgpu: fix pm notifier handling - -Set the s3/s0ix and s4 flags in the pm notifier so that we can skip -the resource evictions properly in pm prepare based on whether -we are suspending or hibernating. Drop the eviction as processes -are not frozen at this time, we we can end up getting stuck trying -to evict VRAM while applications continue to submit work which -causes the buffers to get pulled back into VRAM. - -v2: Move suspend flags out of pm notifier (Mario) - -Closes: https://gitlab.freedesktop.org/drm/amd/-/issues/4178 -Fixes: 2965e6355dcd ("drm/amd: Add Suspend/Hibernate notification callback support") -Cc: Mario Limonciello -Reviewed-by: Mario Limonciello -Signed-off-by: Alex Deucher ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 18 +++++------------- - drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 10 +--------- - 2 files changed, 6 insertions(+), 22 deletions(-) - ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -4819,28 +4819,20 @@ static int amdgpu_device_evict_resources - * @data: data - * - * This function is called when the system is about to suspend or hibernate. -- * It is used to evict resources from the device before the system goes to -- * sleep while there is still access to swap. -+ * It is used to set the appropriate flags so that eviction can be optimized -+ * in the pm prepare callback. - */ - static int amdgpu_device_pm_notifier(struct notifier_block *nb, unsigned long mode, - void *data) - { - struct amdgpu_device *adev = container_of(nb, struct amdgpu_device, pm_nb); -- int r; - - switch (mode) { - case PM_HIBERNATION_PREPARE: - adev->in_s4 = true; -- fallthrough; -- case PM_SUSPEND_PREPARE: -- r = amdgpu_device_evict_resources(adev); -- /* -- * This is considered non-fatal at this time because -- * amdgpu_device_prepare() will also fatally evict resources. -- * See https://gitlab.freedesktop.org/drm/amd/-/issues/3781 -- */ -- if (r) -- drm_warn(adev_to_drm(adev), "Failed to evict resources, freeze active processes if problems occur: %d\n", r); -+ break; -+ case PM_POST_HIBERNATION: -+ adev->in_s4 = false; - break; - } - ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c -@@ -2592,13 +2592,8 @@ static int amdgpu_pmops_freeze(struct de - static int amdgpu_pmops_thaw(struct device *dev) - { - struct drm_device *drm_dev = dev_get_drvdata(dev); -- struct amdgpu_device *adev = drm_to_adev(drm_dev); -- int r; - -- r = amdgpu_device_resume(drm_dev, true); -- adev->in_s4 = false; -- -- return r; -+ return amdgpu_device_resume(drm_dev, true); - } - - static int amdgpu_pmops_poweroff(struct device *dev) -@@ -2611,9 +2606,6 @@ static int amdgpu_pmops_poweroff(struct - static int amdgpu_pmops_restore(struct device *dev) - { - struct drm_device *drm_dev = dev_get_drvdata(dev); -- struct amdgpu_device *adev = drm_to_adev(drm_dev); -- -- adev->in_s4 = false; - - return amdgpu_device_resume(drm_dev, true); - } diff --git a/debian/patches/patchset-zen/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch b/debian/patches/patchset-pf/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch rename to debian/patches/patchset-pf/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch index 826fcc5..55205fa 100644 --- a/debian/patches/patchset-zen/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch +++ b/debian/patches/patchset-pf/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch @@ -1,4 +1,4 @@ -From 1901291057a3f1bf2bf94c7a4ddf3253d3116acb Mon Sep 17 00:00:00 2001 +From 2ffeb0d8d193c35403cea13d3b7273b523631007 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Thu, 13 Feb 2025 11:13:52 -0500 Subject: x86/mm: Make MMU_GATHER_RCU_TABLE_FREE unconditional diff --git a/debian/patches/patchset-zen/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch b/debian/patches/patchset-pf/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch rename to debian/patches/patchset-pf/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch index c7cc238..272a209 100644 --- a/debian/patches/patchset-zen/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch +++ b/debian/patches/patchset-pf/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch @@ -1,4 +1,4 @@ -From 002a3e971d0d7987bdcdd564eccfa3dd63637226 Mon Sep 17 00:00:00 2001 +From aadea0887cca5739137f109eab0e1b38604c8af8 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Thu, 13 Feb 2025 11:13:53 -0500 Subject: x86/mm: Remove pv_ops.mmu.tlb_remove_table call diff --git a/debian/patches/patchset-zen/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch b/debian/patches/patchset-pf/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch similarity index 90% rename from debian/patches/patchset-zen/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch rename to debian/patches/patchset-pf/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch index 2ee5563..bbcdd0b 100644 --- a/debian/patches/patchset-zen/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch +++ b/debian/patches/patchset-pf/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch @@ -1,4 +1,4 @@ -From d4784e28cc2e488fce80ded0ff086c50244593ca Mon Sep 17 00:00:00 2001 +From 170f37d1499a28f7a1902e007111867c7cf0147f Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:36 -0500 Subject: x86/mm: Consolidate full flush threshold decision @@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-2-riel@surriel.com --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c -@@ -1000,6 +1000,15 @@ static struct flush_tlb_info *get_flush_ +@@ -1019,6 +1019,15 @@ static struct flush_tlb_info *get_flush_ BUG_ON(this_cpu_inc_return(flush_tlb_info_idx) != 1); #endif @@ -34,7 +34,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-2-riel@surriel.com info->start = start; info->end = end; info->mm = mm; -@@ -1026,17 +1035,8 @@ void flush_tlb_mm_range(struct mm_struct +@@ -1045,17 +1054,8 @@ void flush_tlb_mm_range(struct mm_struct bool freed_tables) { struct flush_tlb_info *info; @@ -53,7 +53,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-2-riel@surriel.com /* This is also a barrier that synchronizes with switch_mm(). */ new_tlb_gen = inc_mm_tlb_gen(mm); -@@ -1089,22 +1089,19 @@ static void do_kernel_range_flush(void * +@@ -1108,22 +1108,19 @@ static void do_kernel_range_flush(void * void flush_tlb_kernel_range(unsigned long start, unsigned long end) { diff --git a/debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch b/debian/patches/patchset-pf/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch rename to debian/patches/patchset-pf/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch index f24fddb..0829775 100644 --- a/debian/patches/patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch +++ b/debian/patches/patchset-pf/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch @@ -1,4 +1,4 @@ -From e5d151337c384934c9b669967d72f9b29781b308 Mon Sep 17 00:00:00 2001 +From acb5a284db4fa3dbbb246ab8fa58da0143cd68ce Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:37 -0500 Subject: x86/mm: Add INVLPGB feature and Kconfig entry diff --git a/debian/patches/patchset-zen/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch b/debian/patches/patchset-pf/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch rename to debian/patches/patchset-pf/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch index 509a237..ccd1eef 100644 --- a/debian/patches/patchset-zen/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch +++ b/debian/patches/patchset-pf/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch @@ -1,4 +1,4 @@ -From 9bbface3289771c5990e97ca047a52faaeafdb83 Mon Sep 17 00:00:00 2001 +From 27bab4a6ed6ee7b7b0e2d216b8802800ef26b2ad Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Fri, 28 Feb 2025 20:32:30 +0100 Subject: x86/mm: Add INVLPGB support code diff --git a/debian/patches/patchset-zen/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch b/debian/patches/patchset-pf/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch similarity index 89% rename from debian/patches/patchset-zen/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch rename to debian/patches/patchset-pf/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch index d2d2e70..f94c71b 100644 --- a/debian/patches/patchset-zen/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch +++ b/debian/patches/patchset-pf/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch @@ -1,4 +1,4 @@ -From 293fdf15ead45cd235e12a4f62f81767f7bce528 Mon Sep 17 00:00:00 2001 +From 358d71638f420efe8f7e05ce74aefe13e9320283 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:39 -0500 Subject: x86/mm: Use INVLPGB for kernel TLB flushes @@ -18,7 +18,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-5-riel@surriel.com --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c -@@ -1064,7 +1064,6 @@ void flush_tlb_mm_range(struct mm_struct +@@ -1083,7 +1083,6 @@ void flush_tlb_mm_range(struct mm_struct mmu_notifier_arch_invalidate_secondary_tlbs(mm, start, end); } @@ -26,7 +26,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-5-riel@surriel.com static void do_flush_tlb_all(void *info) { count_vm_tlb_event(NR_TLB_REMOTE_FLUSH_RECEIVED); -@@ -1074,7 +1073,32 @@ static void do_flush_tlb_all(void *info) +@@ -1093,7 +1092,32 @@ static void do_flush_tlb_all(void *info) void flush_tlb_all(void) { count_vm_tlb_event(NR_TLB_REMOTE_FLUSH); @@ -60,7 +60,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-5-riel@surriel.com } static void do_kernel_range_flush(void *info) -@@ -1087,6 +1111,22 @@ static void do_kernel_range_flush(void * +@@ -1106,6 +1130,22 @@ static void do_kernel_range_flush(void * flush_tlb_one_kernel(addr); } @@ -83,7 +83,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-5-riel@surriel.com void flush_tlb_kernel_range(unsigned long start, unsigned long end) { struct flush_tlb_info *info; -@@ -1097,9 +1137,9 @@ void flush_tlb_kernel_range(unsigned lon +@@ -1116,9 +1156,9 @@ void flush_tlb_kernel_range(unsigned lon TLB_GENERATION_INVALID); if (info->end == TLB_FLUSH_ALL) diff --git a/debian/patches/patchset-zen/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch b/debian/patches/patchset-pf/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch similarity index 90% rename from debian/patches/patchset-zen/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch rename to debian/patches/patchset-pf/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch index 5f38a1b..37eeb74 100644 --- a/debian/patches/patchset-zen/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch +++ b/debian/patches/patchset-pf/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch @@ -1,4 +1,4 @@ -From a093136bdb306345cd686f47c8faae8a608cfb47 Mon Sep 17 00:00:00 2001 +From 7cf099de79e12d6c4949f733c8cbb241bb08f07a Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:41 -0500 Subject: x86/mm: Use broadcast TLB flushing in page reclaim @@ -19,7 +19,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-7-riel@surriel.com --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c -@@ -1320,7 +1320,9 @@ void arch_tlbbatch_flush(struct arch_tlb +@@ -1339,7 +1339,9 @@ void arch_tlbbatch_flush(struct arch_tlb * a local TLB flush is needed. Optimize this use-case by calling * flush_tlb_func_local() directly in this case. */ diff --git a/debian/patches/patchset-zen/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch b/debian/patches/patchset-pf/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch similarity index 99% rename from debian/patches/patchset-zen/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch rename to debian/patches/patchset-pf/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch index 30c4b96..6eb5b9f 100644 --- a/debian/patches/patchset-zen/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch +++ b/debian/patches/patchset-pf/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch @@ -1,4 +1,4 @@ -From ef345ff96b47f21932c489edd2ebb44fbe3cb517 Mon Sep 17 00:00:00 2001 +From f9ecaaca7ac26789d7d3e0d8022b7c99599dc8a3 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:42 -0500 Subject: x86/mm: Add global ASID allocation helper functions diff --git a/debian/patches/patchset-zen/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch b/debian/patches/patchset-pf/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch similarity index 92% rename from debian/patches/patchset-zen/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch rename to debian/patches/patchset-pf/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch index 9d70eb5..6c0eebd 100644 --- a/debian/patches/patchset-zen/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch +++ b/debian/patches/patchset-pf/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch @@ -1,4 +1,4 @@ -From b3eb743c32515bf8fca7b619dd2a2c64b5812dd8 Mon Sep 17 00:00:00 2001 +From b56070b9f121507cabe352e03f0c534db2d5adc7 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:43 -0500 Subject: x86/mm: Handle global ASID context switch and TLB flush @@ -152,12 +152,16 @@ Link: https://lore.kernel.org/r/20250226030129.530345-9-riel@surriel.com * Leave this CPU in prev's mm_cpumask. Atomic writes to * mm_cpumask can be expensive under contention. The CPU * will be removed lazily at TLB flush time. -@@ -768,14 +821,12 @@ void switch_mm_irqs_off(struct mm_struct +@@ -768,18 +821,12 @@ void switch_mm_irqs_off(struct mm_struct next_tlb_gen = atomic64_read(&next->context.tlb_gen); choose_new_asid(next, next_tlb_gen, &new_asid, &need_flush); - -- /* Let nmi_uaccess_okay() know that we're changing CR3. */ +- /* +- * Indicate that CR3 is about to change. nmi_uaccess_okay() +- * and others are sensitive to the window where mm_cpumask(), +- * CR3 and cpu_tlbstate.loaded_mm are not all in sync. +- */ - this_cpu_write(cpu_tlbstate.loaded_mm, LOADED_MM_SWITCHING); - barrier(); } @@ -169,7 +173,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-9-riel@surriel.com this_cpu_write(cpu_tlbstate.ctxs[new_asid].ctx_id, next->context.ctx_id); this_cpu_write(cpu_tlbstate.ctxs[new_asid].tlb_gen, next_tlb_gen); load_new_mm_cr3(next->pgd, new_asid, new_lam, true); -@@ -894,7 +945,7 @@ static void flush_tlb_func(void *info) +@@ -898,7 +945,7 @@ static void flush_tlb_func(void *info) const struct flush_tlb_info *f = info; struct mm_struct *loaded_mm = this_cpu_read(cpu_tlbstate.loaded_mm); u32 loaded_mm_asid = this_cpu_read(cpu_tlbstate.loaded_mm_asid); @@ -178,7 +182,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-9-riel@surriel.com bool local = smp_processor_id() == f->initiating_cpu; unsigned long nr_invalidate = 0; u64 mm_tlb_gen; -@@ -917,6 +968,16 @@ static void flush_tlb_func(void *info) +@@ -921,6 +968,16 @@ static void flush_tlb_func(void *info) if (unlikely(loaded_mm == &init_mm)) return; @@ -195,7 +199,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-9-riel@surriel.com VM_WARN_ON(this_cpu_read(cpu_tlbstate.ctxs[loaded_mm_asid].ctx_id) != loaded_mm->context.ctx_id); -@@ -934,6 +995,8 @@ static void flush_tlb_func(void *info) +@@ -938,6 +995,8 @@ static void flush_tlb_func(void *info) return; } @@ -204,7 +208,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-9-riel@surriel.com if (unlikely(f->new_tlb_gen != TLB_GENERATION_INVALID && f->new_tlb_gen <= local_tlb_gen)) { /* -@@ -1101,7 +1164,7 @@ STATIC_NOPV void native_flush_tlb_multi( +@@ -1120,7 +1179,7 @@ STATIC_NOPV void native_flush_tlb_multi( * up on the new contents of what used to be page tables, while * doing a speculative memory access. */ diff --git a/debian/patches/patchset-zen/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch b/debian/patches/patchset-pf/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch similarity index 97% rename from debian/patches/patchset-zen/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch rename to debian/patches/patchset-pf/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch index 23a0570..47228b9 100644 --- a/debian/patches/patchset-zen/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch +++ b/debian/patches/patchset-pf/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch @@ -1,4 +1,4 @@ -From c63f1d0a496de7a926b92b52061905edfc8428a4 Mon Sep 17 00:00:00 2001 +From 6d3b8545e2c3c638363fb449a99b5a6cbab87a49 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:44 -0500 Subject: x86/mm: Add global ASID process exit helpers diff --git a/debian/patches/patchset-zen/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch b/debian/patches/patchset-pf/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch rename to debian/patches/patchset-pf/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch index 48aced4..cf2505d 100644 --- a/debian/patches/patchset-zen/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch +++ b/debian/patches/patchset-pf/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch @@ -1,4 +1,4 @@ -From e16bb18388207841efa841b9b11e69c886817024 Mon Sep 17 00:00:00 2001 +From 077e9ceb65f514ea63afc65cce86ce8677e77012 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:45 -0500 Subject: x86/mm: Enable broadcast TLB invalidation for multi-threaded @@ -203,7 +203,7 @@ Link: https://lore.kernel.org/r/20250226030129.530345-11-riel@surriel.com * Given an ASID, flush the corresponding user ASID. We can delay this * until the next time we switch to it. * -@@ -1260,9 +1359,12 @@ void flush_tlb_mm_range(struct mm_struct +@@ -1275,9 +1374,12 @@ void flush_tlb_mm_range(struct mm_struct * a local TLB flush is needed. Optimize this use-case by calling * flush_tlb_func_local() directly in this case. */ diff --git a/debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch b/debian/patches/patchset-pf/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch rename to debian/patches/patchset-pf/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch index 3d9270c..004d0c5 100644 --- a/debian/patches/patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch +++ b/debian/patches/patchset-pf/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch @@ -1,4 +1,4 @@ -From 9c88454149bd22cc3d8618b4445d32aaf48cadce Mon Sep 17 00:00:00 2001 +From 1994cff363a37aff5b1232ca9f757b02ae244956 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Tue, 25 Feb 2025 22:00:47 -0500 Subject: x86/mm: Enable AMD translation cache extensions diff --git a/debian/patches/patchset-zen/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch b/debian/patches/patchset-pf/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch similarity index 98% rename from debian/patches/patchset-zen/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch rename to debian/patches/patchset-pf/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch index c3525b1..5ff3979 100644 --- a/debian/patches/patchset-zen/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch +++ b/debian/patches/patchset-pf/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch @@ -1,4 +1,4 @@ -From 20dfd0edb14a1d0aecd5eb227f2db64487201976 Mon Sep 17 00:00:00 2001 +From 5932a2c8122050c4a2f71588778feb0677fe32b4 Mon Sep 17 00:00:00 2001 From: Tom Lendacky Date: Tue, 4 Mar 2025 12:59:56 +0100 Subject: x86/mm: Always set the ASID valid bit for the INVLPGB instruction diff --git a/debian/patches/patchset-zen/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch b/debian/patches/patchset-pf/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch similarity index 95% rename from debian/patches/patchset-zen/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch rename to debian/patches/patchset-pf/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch index 00a5448..1492c8d 100644 --- a/debian/patches/patchset-zen/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch +++ b/debian/patches/patchset-pf/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch @@ -1,4 +1,4 @@ -From b5a210ad153e5448876c422f5c77d3dcd83abac6 Mon Sep 17 00:00:00 2001 +From 0e0a5ca37a8e3b06f450f4093ba1b6d6f33c2161 Mon Sep 17 00:00:00 2001 From: Rik van Riel Date: Wed, 19 Mar 2025 13:25:20 -0400 Subject: x86/mm: Only do broadcast flush from reclaim if pages were unmapped @@ -57,7 +57,7 @@ Link: https://lore.kernel.org/r/20250319132520.6b10ad90@fangorn --- a/arch/x86/mm/tlb.c +++ b/arch/x86/mm/tlb.c -@@ -1633,8 +1633,9 @@ void arch_tlbbatch_flush(struct arch_tlb +@@ -1648,8 +1648,9 @@ void arch_tlbbatch_flush(struct arch_tlb * a local TLB flush is needed. Optimize this use-case by calling * flush_tlb_func_local() directly in this case. */ diff --git a/debian/patches/patchset-pf/invlpgb/0015-x86-mm-Eliminate-window-where-TLB-flushes-may-be-ina.patch b/debian/patches/patchset-pf/invlpgb/0015-x86-mm-Eliminate-window-where-TLB-flushes-may-be-ina.patch new file mode 100644 index 0000000..894e68f --- /dev/null +++ b/debian/patches/patchset-pf/invlpgb/0015-x86-mm-Eliminate-window-where-TLB-flushes-may-be-ina.patch @@ -0,0 +1,92 @@ +From 6ae491224973eb4013ee67a8c05c420f057d5fee Mon Sep 17 00:00:00 2001 +From: Dave Hansen +Date: Thu, 8 May 2025 15:41:32 -0700 +Subject: x86/mm: Eliminate window where TLB flushes may be inadvertently + skipped + +tl;dr: There is a window in the mm switching code where the new CR3 is +set and the CPU should be getting TLB flushes for the new mm. But +should_flush_tlb() has a bug and suppresses the flush. Fix it by +widening the window where should_flush_tlb() sends an IPI. + +Long Version: + +=== History === + +There were a few things leading up to this. + +First, updating mm_cpumask() was observed to be too expensive, so it was +made lazier. But being lazy caused too many unnecessary IPIs to CPUs +due to the now-lazy mm_cpumask(). So code was added to cull +mm_cpumask() periodically[2]. But that culling was a bit too aggressive +and skipped sending TLB flushes to CPUs that need them. So here we are +again. + +=== Problem === + +The too-aggressive code in should_flush_tlb() strikes in this window: + + // Turn on IPIs for this CPU/mm combination, but only + // if should_flush_tlb() agrees: + cpumask_set_cpu(cpu, mm_cpumask(next)); + + next_tlb_gen = atomic64_read(&next->context.tlb_gen); + choose_new_asid(next, next_tlb_gen, &new_asid, &need_flush); + load_new_mm_cr3(need_flush); + // ^ After 'need_flush' is set to false, IPIs *MUST* + // be sent to this CPU and not be ignored. + + this_cpu_write(cpu_tlbstate.loaded_mm, next); + // ^ Not until this point does should_flush_tlb() + // become true! + +should_flush_tlb() will suppress TLB flushes between load_new_mm_cr3() +and writing to 'loaded_mm', which is a window where they should not be +suppressed. Whoops. + +=== Solution === + +Thankfully, the fuzzy "just about to write CR3" window is already marked +with loaded_mm==LOADED_MM_SWITCHING. Simply checking for that state in +should_flush_tlb() is sufficient to ensure that the CPU is targeted with +an IPI. + +This will cause more TLB flush IPIs. But the window is relatively small +and I do not expect this to cause any kind of measurable performance +impact. + +Update the comment where LOADED_MM_SWITCHING is written since it grew +yet another user. + +Peter Z also raised a concern that should_flush_tlb() might not observe +'loaded_mm' and 'is_lazy' in the same order that switch_mm_irqs_off() +writes them. Add a barrier to ensure that they are observed in the +order they are written. + +Signed-off-by: Dave Hansen +Acked-by: Rik van Riel +Link: https://lore.kernel.org/oe-lkp/202411282207.6bd28eae-lkp@intel.com/ [1] +Fixes: 6db2526c1d69 ("x86/mm/tlb: Only trim the mm_cpumask once a second") [2] +Reported-by: Stephen Dolan +Cc: stable@vger.kernel.org +Acked-by: Ingo Molnar +Acked-by: Peter Zijlstra (Intel) +Signed-off-by: Linus Torvalds +--- + arch/x86/mm/tlb.c | 22 +++++++++++++++++++--- + 1 file changed, 19 insertions(+), 3 deletions(-) + +--- a/arch/x86/mm/tlb.c ++++ b/arch/x86/mm/tlb.c +@@ -900,8 +900,9 @@ void switch_mm_irqs_off(struct mm_struct + cond_mitigation(tsk); + + /* +- * Let nmi_uaccess_okay() and finish_asid_transition() +- * know that CR3 is changing. ++ * Indicate that CR3 is about to change. nmi_uaccess_okay() ++ * and others are sensitive to the window where mm_cpumask(), ++ * CR3 and cpu_tlbstate.loaded_mm are not all in sync. + */ + this_cpu_write(cpu_tlbstate.loaded_mm, LOADED_MM_SWITCHING); + barrier(); diff --git a/debian/patches/patchset-pf/smb/0001-ksmbd-prevent-rename-with-empty-string.patch b/debian/patches/patchset-pf/smb/0001-ksmbd-prevent-rename-with-empty-string.patch deleted file mode 100644 index beb21e2..0000000 --- a/debian/patches/patchset-pf/smb/0001-ksmbd-prevent-rename-with-empty-string.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 7b3f0f8d11f1b4319f593ba02d4dece890755dfa Mon Sep 17 00:00:00 2001 -From: Namjae Jeon -Date: Wed, 30 Apr 2025 11:18:28 +0900 -Subject: ksmbd: prevent rename with empty string - -Client can send empty newname string to ksmbd server. -It will cause a kernel oops from d_alloc. -This patch return the error when attempting to rename -a file or directory with an empty new name string. - -Cc: stable@vger.kernel.org -Reported-by: Norbert Szetei -Tested-by: Norbert Szetei -Signed-off-by: Namjae Jeon -Signed-off-by: Steve French ---- - fs/smb/server/smb2pdu.c | 5 +++++ - 1 file changed, 5 insertions(+) - ---- a/fs/smb/server/smb2pdu.c -+++ b/fs/smb/server/smb2pdu.c -@@ -633,6 +633,11 @@ smb2_get_name(const char *src, const int - return name; - } - -+ if (*name == '\0') { -+ kfree(name); -+ return ERR_PTR(-EINVAL); -+ } -+ - if (*name == '\\') { - pr_err("not allow directory name included leading slash\n"); - kfree(name); diff --git a/debian/patches/patchset-pf/smb/0001-smb-client-fix-memory-leak-during-error-handling-for.patch b/debian/patches/patchset-pf/smb/0001-smb-client-fix-memory-leak-during-error-handling-for.patch new file mode 100644 index 0000000..b6be507 --- /dev/null +++ b/debian/patches/patchset-pf/smb/0001-smb-client-fix-memory-leak-during-error-handling-for.patch @@ -0,0 +1,35 @@ +From 8ef14a884df5aaf48cf5f7ce6c91e7318cb07d4e Mon Sep 17 00:00:00 2001 +From: Jethro Donaldson +Date: Thu, 15 May 2025 01:23:23 +1200 +Subject: smb: client: fix memory leak during error handling for POSIX mkdir + +The response buffer for the CREATE request handled by smb311_posix_mkdir() +is leaked on the error path (goto err_free_rsp_buf) because the structure +pointer *rsp passed to free_rsp_buf() is not assigned until *after* the +error condition is checked. + +As *rsp is initialised to NULL, free_rsp_buf() becomes a no-op and the leak +is instead reported by __kmem_cache_shutdown() upon subsequent rmmod of +cifs.ko if (and only if) the error path has been hit. + +Pass rsp_iov.iov_base to free_rsp_buf() instead, similar to the code in +other functions in smb2pdu.c for which *rsp is assigned late. + +Cc: stable@vger.kernel.org +Signed-off-by: Jethro Donaldson +Signed-off-by: Steve French +--- + fs/smb/client/smb2pdu.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/fs/smb/client/smb2pdu.c ++++ b/fs/smb/client/smb2pdu.c +@@ -2967,7 +2967,7 @@ replay_again: + /* Eventually save off posix specific response info and timestamps */ + + err_free_rsp_buf: +- free_rsp_buf(resp_buftype, rsp); ++ free_rsp_buf(resp_buftype, rsp_iov.iov_base); + kfree(pc_buf); + err_free_req: + cifs_small_buf_release(req); diff --git a/debian/patches/patchset-pf/smb/0002-ksmbd-prevent-out-of-bounds-stream-writes-by-validat.patch b/debian/patches/patchset-pf/smb/0002-ksmbd-prevent-out-of-bounds-stream-writes-by-validat.patch deleted file mode 100644 index ce4c9e8..0000000 --- a/debian/patches/patchset-pf/smb/0002-ksmbd-prevent-out-of-bounds-stream-writes-by-validat.patch +++ /dev/null @@ -1,37 +0,0 @@ -From fb87d390de327c76b11ed544de83771118f7b0c5 Mon Sep 17 00:00:00 2001 -From: Norbert Szetei -Date: Fri, 2 May 2025 08:21:58 +0900 -Subject: ksmbd: prevent out-of-bounds stream writes by validating *pos - -ksmbd_vfs_stream_write() did not validate whether the write offset -(*pos) was within the bounds of the existing stream data length (v_len). -If *pos was greater than or equal to v_len, this could lead to an -out-of-bounds memory write. - -This patch adds a check to ensure *pos is less than v_len before -proceeding. If the condition fails, -EINVAL is returned. - -Cc: stable@vger.kernel.org -Signed-off-by: Norbert Szetei -Acked-by: Namjae Jeon -Signed-off-by: Steve French ---- - fs/smb/server/vfs.c | 7 +++++++ - 1 file changed, 7 insertions(+) - ---- a/fs/smb/server/vfs.c -+++ b/fs/smb/server/vfs.c -@@ -443,6 +443,13 @@ static int ksmbd_vfs_stream_write(struct - goto out; - } - -+ if (v_len <= *pos) { -+ pr_err("stream write position %lld is out of bounds (stream length: %zd)\n", -+ *pos, v_len); -+ err = -EINVAL; -+ goto out; -+ } -+ - if (v_len < size) { - wbuf = kvzalloc(size, KSMBD_DEFAULT_GFP); - if (!wbuf) { diff --git a/debian/patches/patchset-pf/smb/0003-ksmbd-Fix-UAF-in-__close_file_table_ids.patch b/debian/patches/patchset-pf/smb/0003-ksmbd-Fix-UAF-in-__close_file_table_ids.patch deleted file mode 100644 index 85432eb..0000000 --- a/debian/patches/patchset-pf/smb/0003-ksmbd-Fix-UAF-in-__close_file_table_ids.patch +++ /dev/null @@ -1,74 +0,0 @@ -From 67ea573ce44aeac74e659879cdeb6ac39212d0b9 Mon Sep 17 00:00:00 2001 -From: Sean Heelan -Date: Tue, 6 May 2025 22:04:52 +0900 -Subject: ksmbd: Fix UAF in __close_file_table_ids - -A use-after-free is possible if one thread destroys the file -via __ksmbd_close_fd while another thread holds a reference to -it. The existing checks on fp->refcount are not sufficient to -prevent this. - -The fix takes ft->lock around the section which removes the -file from the file table. This prevents two threads acquiring the -same file pointer via __close_file_table_ids, as well as the other -functions which retrieve a file from the IDR and which already use -this same lock. - -Cc: stable@vger.kernel.org -Signed-off-by: Sean Heelan -Acked-by: Namjae Jeon -Signed-off-by: Steve French ---- - fs/smb/server/vfs_cache.c | 33 ++++++++++++++++++++++++++------- - 1 file changed, 26 insertions(+), 7 deletions(-) - ---- a/fs/smb/server/vfs_cache.c -+++ b/fs/smb/server/vfs_cache.c -@@ -661,21 +661,40 @@ __close_file_table_ids(struct ksmbd_file - bool (*skip)(struct ksmbd_tree_connect *tcon, - struct ksmbd_file *fp)) - { -- unsigned int id; -- struct ksmbd_file *fp; -- int num = 0; -+ struct ksmbd_file *fp; -+ unsigned int id = 0; -+ int num = 0; - -- idr_for_each_entry(ft->idr, fp, id) { -- if (skip(tcon, fp)) -+ while (1) { -+ write_lock(&ft->lock); -+ fp = idr_get_next(ft->idr, &id); -+ if (!fp) { -+ write_unlock(&ft->lock); -+ break; -+ } -+ -+ if (skip(tcon, fp) || -+ !atomic_dec_and_test(&fp->refcount)) { -+ id++; -+ write_unlock(&ft->lock); - continue; -+ } - - set_close_state_blocked_works(fp); -+ idr_remove(ft->idr, fp->volatile_id); -+ fp->volatile_id = KSMBD_NO_FID; -+ write_unlock(&ft->lock); -+ -+ down_write(&fp->f_ci->m_lock); -+ list_del_init(&fp->node); -+ up_write(&fp->f_ci->m_lock); - -- if (!atomic_dec_and_test(&fp->refcount)) -- continue; - __ksmbd_close_fd(ft, fp); -+ - num++; -+ id++; - } -+ - return num; - } - 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 86b1022..999379e 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 @@ -185,7 +185,7 @@ Signed-off-by: Alexandre Frade return container_of(ns, struct ipc_namespace, ns); --- a/mm/vmalloc.c +++ b/mm/vmalloc.c -@@ -3181,6 +3181,7 @@ struct vm_struct *get_vm_area(unsigned l +@@ -3182,6 +3182,7 @@ struct vm_struct *get_vm_area(unsigned l NUMA_NO_NODE, GFP_KERNEL, __builtin_return_address(0)); } diff --git a/debian/patches/patchset-xanmod/pci_acso/0001-PCI-Enable-overrides-for-missing-ACS-capabilities.patch b/debian/patches/patchset-xanmod/pci_acso/0001-PCI-Enable-overrides-for-missing-ACS-capabilities.patch index dc152cf..3c21789 100644 --- a/debian/patches/patchset-xanmod/pci_acso/0001-PCI-Enable-overrides-for-missing-ACS-capabilities.patch +++ b/debian/patches/patchset-xanmod/pci_acso/0001-PCI-Enable-overrides-for-missing-ACS-capabilities.patch @@ -55,7 +55,7 @@ Signed-off-by: Alexandre Frade --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -4646,6 +4646,15 @@ +@@ -4664,6 +4664,15 @@ nomsi [MSI] If the PCI_MSI kernel config parameter is enabled, this kernel boot option can be used to disable the use of MSI interrupts system-wide. diff --git a/debian/patches/patchset-xanmod/xanmod/0013-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch b/debian/patches/patchset-xanmod/xanmod/0013-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch index 9ff09bc..5bb0a6d 100644 --- a/debian/patches/patchset-xanmod/xanmod/0013-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch +++ b/debian/patches/patchset-xanmod/xanmod/0013-XANMOD-sched-autogroup-Add-kernel-parameter-and-conf.patch @@ -24,7 +24,7 @@ Signed-off-by: Alexandre Frade bau= [X86_UV] Enable the BAU on SGI UV. The default behavior is to disable the BAU (i.e. bau=0). Format: { "0" | "1" } -@@ -4041,8 +4045,6 @@ +@@ -4059,8 +4063,6 @@ noapictimer [APIC,X86] Don't set up the APIC timer @@ -35,7 +35,7 @@ Signed-off-by: Alexandre Frade no_console_suspend --- a/init/Kconfig +++ b/init/Kconfig -@@ -1372,6 +1372,18 @@ config SCHED_AUTOGROUP +@@ -1375,6 +1375,18 @@ config SCHED_AUTOGROUP desktop applications. Task group autogeneration is currently based upon task session. diff --git a/debian/patches/patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch b/debian/patches/patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch deleted file mode 100644 index 8fdba05..0000000 --- a/debian/patches/patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch +++ /dev/null @@ -1,327 +0,0 @@ ---- a/Documentation/ABI/testing/sysfs-devices-system-cpu -+++ b/Documentation/ABI/testing/sysfs-devices-system-cpu -@@ -516,6 +516,7 @@ What: /sys/devices/system/cpu/vulnerabi - /sys/devices/system/cpu/vulnerabilities/mds - /sys/devices/system/cpu/vulnerabilities/meltdown - /sys/devices/system/cpu/vulnerabilities/mmio_stale_data -+ /sys/devices/system/cpu/vulnerabilities/old_microcode - /sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling - /sys/devices/system/cpu/vulnerabilities/retbleed - /sys/devices/system/cpu/vulnerabilities/spec_store_bypass ---- /dev/null -+++ b/Documentation/admin-guide/hw-vuln/old_microcode.rst -@@ -0,0 +1,21 @@ -+.. SPDX-License-Identifier: GPL-2.0 -+ -+============= -+Old Microcode -+============= -+ -+The kernel keeps a table of released microcode. Systems that had -+microcode older than this at boot will say "Vulnerable". This means -+that the system was vulnerable to some known CPU issue. It could be -+security or functional, the kernel does not know or care. -+ -+You should update the CPU microcode to mitigate any exposure. This is -+usually accomplished by updating the files in -+/lib/firmware/intel-ucode/ via normal distribution updates. Intel also -+distributes these files in a github repo: -+ -+ https://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git -+ -+Just like all the other hardware vulnerabilities, exposure is -+determined at boot. Runtime microcode updates do not change the status -+of this vulnerability. ---- a/arch/x86/include/asm/cpufeatures.h -+++ b/arch/x86/include/asm/cpufeatures.h -@@ -535,4 +535,6 @@ - #define X86_BUG_RFDS X86_BUG(1*32 + 2) /* "rfds" CPU is vulnerable to Register File Data Sampling */ - #define X86_BUG_BHI X86_BUG(1*32 + 3) /* "bhi" CPU is affected by Branch History Injection */ - #define X86_BUG_IBPB_NO_RET X86_BUG(1*32 + 4) /* "ibpb_no_ret" IBPB omits return target predictions */ -+#define X86_BUG_SPECTRE_V2_USER X86_BUG(1*32 + 5) /* "spectre_v2_user" CPU is affected by Spectre variant 2 attack between user processes */ -+#define X86_BUG_OLD_MICROCODE X86_BUG(1*32 + 6) /* "old_microcode" CPU has old microcode, it is surely vulnerable to something */ - #endif /* _ASM_X86_CPUFEATURES_H */ ---- a/arch/x86/kernel/cpu/bugs.c -+++ b/arch/x86/kernel/cpu/bugs.c -@@ -2806,6 +2806,14 @@ static ssize_t rfds_show_state(char *buf - return sysfs_emit(buf, "%s\n", rfds_strings[rfds_mitigation]); - } - -+static ssize_t old_microcode_show_state(char *buf) -+{ -+ if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) -+ return sysfs_emit(buf, "Unknown: running under hypervisor"); -+ -+ return sysfs_emit(buf, "Vulnerable\n"); -+} -+ - static char *stibp_state(void) - { - if (spectre_v2_in_eibrs_mode(spectre_v2_enabled) && -@@ -2988,6 +2996,9 @@ static ssize_t cpu_show_common(struct de - case X86_BUG_RFDS: - return rfds_show_state(buf); - -+ case X86_BUG_OLD_MICROCODE: -+ return old_microcode_show_state(buf); -+ - default: - break; - } -@@ -3067,6 +3078,11 @@ ssize_t cpu_show_reg_file_data_sampling( - { - return cpu_show_common(dev, attr, buf, X86_BUG_RFDS); - } -+ -+ssize_t cpu_show_old_microcode(struct device *dev, struct device_attribute *attr, char *buf) -+{ -+ return cpu_show_common(dev, attr, buf, X86_BUG_OLD_MICROCODE); -+} - #endif - - void __warn_thunk(void) ---- a/arch/x86/kernel/cpu/common.c -+++ b/arch/x86/kernel/cpu/common.c -@@ -1317,10 +1317,52 @@ static bool __init vulnerable_to_rfds(u6 - return cpu_matches(cpu_vuln_blacklist, RFDS); - } - -+static struct x86_cpu_id cpu_latest_microcode[] = { -+#include "microcode/intel-ucode-defs.h" -+ {} -+}; -+ -+static bool __init cpu_has_old_microcode(void) -+{ -+ const struct x86_cpu_id *m = x86_match_cpu(cpu_latest_microcode); -+ -+ /* Give unknown CPUs a pass: */ -+ if (!m) { -+ /* Intel CPUs should be in the list. Warn if not: */ -+ if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) -+ pr_info("x86/CPU: Model not found in latest microcode list\n"); -+ return false; -+ } -+ -+ /* -+ * Hosts usually lie to guests with a super high microcode -+ * version. Just ignore what hosts tell guests: -+ */ -+ if (boot_cpu_has(X86_FEATURE_HYPERVISOR)) -+ return false; -+ -+ /* Consider all debug microcode to be old: */ -+ if (boot_cpu_data.microcode & BIT(31)) -+ return true; -+ -+ /* Give new microocode a pass: */ -+ if (boot_cpu_data.microcode >= m->driver_data) -+ return false; -+ -+ /* Uh oh, too old: */ -+ return true; -+} -+ - static void __init cpu_set_bug_bits(struct cpuinfo_x86 *c) - { - u64 x86_arch_cap_msr = x86_read_arch_cap_msr(); - -+ if (cpu_has_old_microcode()) { -+ pr_warn("x86/CPU: Running old microcode\n"); -+ setup_force_cpu_bug(X86_BUG_OLD_MICROCODE); -+ add_taint(TAINT_CPU_OUT_OF_SPEC, LOCKDEP_STILL_OK); -+ } -+ - /* Set ITLB_MULTIHIT bug if cpu is not in the whitelist and not mitigated */ - if (!cpu_matches(cpu_vuln_whitelist, NO_ITLB_MULTIHIT) && - !(x86_arch_cap_msr & ARCH_CAP_PSCHANGE_MC_NO)) ---- /dev/null -+++ b/arch/x86/kernel/cpu/microcode/intel-ucode-defs.h -@@ -0,0 +1,150 @@ -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x03, .steppings = 0x0004, .driver_data = 0x2 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0001, .driver_data = 0x45 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0002, .driver_data = 0x40 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0004, .driver_data = 0x2c }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x05, .steppings = 0x0008, .driver_data = 0x10 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x0001, .driver_data = 0xa }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x0020, .driver_data = 0x3 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x0400, .driver_data = 0xd }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x06, .steppings = 0x2000, .driver_data = 0x7 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x07, .steppings = 0x0002, .driver_data = 0x14 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x07, .steppings = 0x0004, .driver_data = 0x38 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x07, .steppings = 0x0008, .driver_data = 0x2e }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0002, .driver_data = 0x11 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0008, .driver_data = 0x8 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0040, .driver_data = 0xc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x08, .steppings = 0x0400, .driver_data = 0x5 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x09, .steppings = 0x0020, .driver_data = 0x47 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0a, .steppings = 0x0001, .driver_data = 0x3 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0a, .steppings = 0x0002, .driver_data = 0x1 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0b, .steppings = 0x0002, .driver_data = 0x1d }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0b, .steppings = 0x0010, .driver_data = 0x2 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0d, .steppings = 0x0040, .driver_data = 0x18 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0e, .steppings = 0x0100, .driver_data = 0x39 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0e, .steppings = 0x1000, .driver_data = 0x59 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0004, .driver_data = 0x5d }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0040, .driver_data = 0xd2 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0080, .driver_data = 0x6b }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0400, .driver_data = 0x95 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x0800, .driver_data = 0xbc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x0f, .steppings = 0x2000, .driver_data = 0xa4 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x16, .steppings = 0x0002, .driver_data = 0x44 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x17, .steppings = 0x0040, .driver_data = 0x60f }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x17, .steppings = 0x0080, .driver_data = 0x70a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x17, .steppings = 0x0400, .driver_data = 0xa0b }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1a, .steppings = 0x0010, .driver_data = 0x12 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1a, .steppings = 0x0020, .driver_data = 0x1d }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1c, .steppings = 0x0004, .driver_data = 0x219 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1c, .steppings = 0x0400, .driver_data = 0x107 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1d, .steppings = 0x0002, .driver_data = 0x29 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x1e, .steppings = 0x0020, .driver_data = 0xa }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x25, .steppings = 0x0004, .driver_data = 0x11 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x25, .steppings = 0x0020, .driver_data = 0x7 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x26, .steppings = 0x0002, .driver_data = 0x105 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2a, .steppings = 0x0080, .driver_data = 0x2f }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2c, .steppings = 0x0004, .driver_data = 0x1f }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2d, .steppings = 0x0040, .driver_data = 0x621 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2d, .steppings = 0x0080, .driver_data = 0x71a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2e, .steppings = 0x0040, .driver_data = 0xd }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x2f, .steppings = 0x0004, .driver_data = 0x3b }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x37, .steppings = 0x0100, .driver_data = 0x838 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x37, .steppings = 0x0200, .driver_data = 0x90d }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3a, .steppings = 0x0200, .driver_data = 0x21 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3c, .steppings = 0x0008, .driver_data = 0x28 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3d, .steppings = 0x0010, .driver_data = 0x2f }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3e, .steppings = 0x0010, .driver_data = 0x42e }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3e, .steppings = 0x0040, .driver_data = 0x600 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3e, .steppings = 0x0080, .driver_data = 0x715 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3f, .steppings = 0x0004, .driver_data = 0x49 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x3f, .steppings = 0x0010, .driver_data = 0x1a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x45, .steppings = 0x0002, .driver_data = 0x26 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x46, .steppings = 0x0002, .driver_data = 0x1c }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x47, .steppings = 0x0002, .driver_data = 0x22 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4c, .steppings = 0x0008, .driver_data = 0x368 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4c, .steppings = 0x0010, .driver_data = 0x411 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4d, .steppings = 0x0100, .driver_data = 0x12d }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x4e, .steppings = 0x0008, .driver_data = 0xf0 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0008, .driver_data = 0x1000191 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0010, .driver_data = 0x2007006 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0020, .driver_data = 0x3000010 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0040, .driver_data = 0x4003605 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0080, .driver_data = 0x5003707 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x55, .steppings = 0x0800, .driver_data = 0x7002904 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0004, .driver_data = 0x1c }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0008, .driver_data = 0x700001c }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0010, .driver_data = 0xf00001a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x56, .steppings = 0x0020, .driver_data = 0xe000015 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5c, .steppings = 0x0004, .driver_data = 0x14 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5c, .steppings = 0x0200, .driver_data = 0x48 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5c, .steppings = 0x0400, .driver_data = 0x28 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5e, .steppings = 0x0008, .driver_data = 0xf0 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x5f, .steppings = 0x0002, .driver_data = 0x3e }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x66, .steppings = 0x0008, .driver_data = 0x2a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x6a, .steppings = 0x0020, .driver_data = 0xc0002f0 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x6a, .steppings = 0x0040, .driver_data = 0xd0003e7 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x6c, .steppings = 0x0002, .driver_data = 0x10002b0 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x7a, .steppings = 0x0002, .driver_data = 0x42 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x7a, .steppings = 0x0100, .driver_data = 0x24 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x7e, .steppings = 0x0020, .driver_data = 0xc6 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8a, .steppings = 0x0002, .driver_data = 0x33 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8c, .steppings = 0x0002, .driver_data = 0xb8 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8c, .steppings = 0x0004, .driver_data = 0x38 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8d, .steppings = 0x0002, .driver_data = 0x52 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x0200, .driver_data = 0xf6 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x0400, .driver_data = 0xf6 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x0800, .driver_data = 0xf6 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8e, .steppings = 0x1000, .driver_data = 0xfc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0100, .driver_data = 0x2c000390 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0080, .driver_data = 0x2b000603 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0040, .driver_data = 0x2c000390 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0020, .driver_data = 0x2c000390 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x8f, .steppings = 0x0010, .driver_data = 0x2c000390 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x96, .steppings = 0x0002, .driver_data = 0x1a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x97, .steppings = 0x0004, .driver_data = 0x37 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x97, .steppings = 0x0020, .driver_data = 0x37 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xbf, .steppings = 0x0004, .driver_data = 0x37 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xbf, .steppings = 0x0020, .driver_data = 0x37 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9a, .steppings = 0x0008, .driver_data = 0x435 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9a, .steppings = 0x0010, .driver_data = 0x435 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9c, .steppings = 0x0001, .driver_data = 0x24000026 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x0200, .driver_data = 0xf8 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x0400, .driver_data = 0xf8 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x0800, .driver_data = 0xf6 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x1000, .driver_data = 0xf8 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0x9e, .steppings = 0x2000, .driver_data = 0x100 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa5, .steppings = 0x0004, .driver_data = 0xfc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa5, .steppings = 0x0008, .driver_data = 0xfc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa5, .steppings = 0x0020, .driver_data = 0xfc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa6, .steppings = 0x0001, .driver_data = 0xfe }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa6, .steppings = 0x0002, .driver_data = 0xfc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xa7, .steppings = 0x0002, .driver_data = 0x62 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xaa, .steppings = 0x0010, .driver_data = 0x20 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xb7, .steppings = 0x0002, .driver_data = 0x12b }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xba, .steppings = 0x0004, .driver_data = 0x4123 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xba, .steppings = 0x0008, .driver_data = 0x4123 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xba, .steppings = 0x0100, .driver_data = 0x4123 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xbe, .steppings = 0x0001, .driver_data = 0x1a }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xcf, .steppings = 0x0004, .driver_data = 0x21000283 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0x6, .model = 0xcf, .steppings = 0x0002, .driver_data = 0x21000283 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x00, .steppings = 0x0080, .driver_data = 0x12 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x00, .steppings = 0x0400, .driver_data = 0x15 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x01, .steppings = 0x0004, .driver_data = 0x2e }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0010, .driver_data = 0x21 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0020, .driver_data = 0x2c }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0040, .driver_data = 0x10 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0080, .driver_data = 0x39 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x02, .steppings = 0x0200, .driver_data = 0x2f }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x03, .steppings = 0x0004, .driver_data = 0xa }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x03, .steppings = 0x0008, .driver_data = 0xc }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x03, .steppings = 0x0010, .driver_data = 0x17 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0002, .driver_data = 0x17 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0008, .driver_data = 0x5 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0010, .driver_data = 0x6 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0080, .driver_data = 0x3 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0100, .driver_data = 0xe }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0200, .driver_data = 0x3 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x04, .steppings = 0x0400, .driver_data = 0x4 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0004, .driver_data = 0xf }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0010, .driver_data = 0x4 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0020, .driver_data = 0x8 }, -+{ .flags = X86_CPU_ID_FLAG_ENTRY_VALID, .vendor = X86_VENDOR_INTEL, .family = 0xf, .model = 0x06, .steppings = 0x0100, .driver_data = 0x9 }, ---- a/drivers/base/cpu.c -+++ b/drivers/base/cpu.c -@@ -600,6 +600,7 @@ CPU_SHOW_VULN_FALLBACK(spec_rstack_overf - CPU_SHOW_VULN_FALLBACK(gds); - CPU_SHOW_VULN_FALLBACK(reg_file_data_sampling); - CPU_SHOW_VULN_FALLBACK(ghostwrite); -+CPU_SHOW_VULN_FALLBACK(old_microcode); - - static DEVICE_ATTR(meltdown, 0444, cpu_show_meltdown, NULL); - static DEVICE_ATTR(spectre_v1, 0444, cpu_show_spectre_v1, NULL); -@@ -616,6 +617,7 @@ static DEVICE_ATTR(spec_rstack_overflow, - static DEVICE_ATTR(gather_data_sampling, 0444, cpu_show_gds, NULL); - static DEVICE_ATTR(reg_file_data_sampling, 0444, cpu_show_reg_file_data_sampling, NULL); - static DEVICE_ATTR(ghostwrite, 0444, cpu_show_ghostwrite, NULL); -+static DEVICE_ATTR(old_microcode, 0444, cpu_show_old_microcode, NULL); - - static struct attribute *cpu_root_vulnerabilities_attrs[] = { - &dev_attr_meltdown.attr, -@@ -633,6 +635,7 @@ static struct attribute *cpu_root_vulner - &dev_attr_gather_data_sampling.attr, - &dev_attr_reg_file_data_sampling.attr, - &dev_attr_ghostwrite.attr, -+ &dev_attr_old_microcode.attr, - NULL - }; - ---- a/include/linux/cpu.h -+++ b/include/linux/cpu.h -@@ -78,6 +78,8 @@ extern ssize_t cpu_show_gds(struct devic - extern ssize_t cpu_show_reg_file_data_sampling(struct device *dev, - struct device_attribute *attr, char *buf); - extern ssize_t cpu_show_ghostwrite(struct device *dev, struct device_attribute *attr, char *buf); -+extern ssize_t cpu_show_old_microcode(struct device *dev, -+ struct device_attribute *attr, char *buf); - - extern __printf(4, 5) - struct device *cpu_device_create(struct device *parent, void *drvdata, diff --git a/debian/patches/patchset-zen/sauce/0007-ZEN-intel-pstate-Implement-enable-parameter.patch b/debian/patches/patchset-zen/sauce/0007-ZEN-intel-pstate-Implement-enable-parameter.patch index 9acd822..b850c5e 100644 --- a/debian/patches/patchset-zen/sauce/0007-ZEN-intel-pstate-Implement-enable-parameter.patch +++ b/debian/patches/patchset-zen/sauce/0007-ZEN-intel-pstate-Implement-enable-parameter.patch @@ -30,7 +30,7 @@ selection. --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt -@@ -2283,6 +2283,9 @@ +@@ -2300,6 +2300,9 @@ disable Do not enable intel_pstate as the default scaling driver for the supported processors diff --git a/debian/patches/patchset-zen/sauce/0009-ZEN-mm-Stop-kswapd-early-when-nothing-s-waiting-for-.patch b/debian/patches/patchset-zen/sauce/0009-ZEN-mm-Stop-kswapd-early-when-nothing-s-waiting-for-.patch index 45f6cb8..b5203a5 100644 --- a/debian/patches/patchset-zen/sauce/0009-ZEN-mm-Stop-kswapd-early-when-nothing-s-waiting-for-.patch +++ b/debian/patches/patchset-zen/sauce/0009-ZEN-mm-Stop-kswapd-early-when-nothing-s-waiting-for-.patch @@ -43,7 +43,7 @@ Contains: --- a/mm/internal.h +++ b/mm/internal.h -@@ -741,6 +741,7 @@ void post_alloc_hook(struct page *page, +@@ -736,6 +736,7 @@ void post_alloc_hook(struct page *page, extern bool free_pages_prepare(struct page *page, unsigned int order); extern int user_min_free_kbytes; @@ -62,7 +62,7 @@ Contains: /* prevent >1 _updater_ of zone percpu pageset ->high and ->batch fields */ static DEFINE_MUTEX(pcp_batch_high_lock); #define MIN_PERCPU_PAGELIST_HIGH_FRACTION (8) -@@ -4220,6 +4222,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, u +@@ -4255,6 +4257,7 @@ __alloc_pages_slowpath(gfp_t gfp_mask, u unsigned int cpuset_mems_cookie; unsigned int zonelist_iter_cookie; int reserve_flags; @@ -70,7 +70,7 @@ Contains: if (unlikely(nofail)) { /* -@@ -4279,8 +4282,13 @@ restart: +@@ -4314,8 +4317,13 @@ restart: goto nopage; } @@ -85,7 +85,7 @@ Contains: /* * The adjusted alloc_flags might result in immediate success, so try -@@ -4482,9 +4490,12 @@ nopage: +@@ -4517,9 +4525,12 @@ nopage: goto retry; } fail: diff --git a/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Base-config-item.patch b/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Base-config-item.patch index 03804aa..3a0e606 100644 --- a/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Base-config-item.patch +++ b/debian/patches/patchset-zen/sauce/0012-ZEN-INTERACTIVE-Base-config-item.patch @@ -9,7 +9,7 @@ Subject: ZEN: INTERACTIVE: Base config item --- a/init/Kconfig +++ b/init/Kconfig -@@ -162,6 +162,12 @@ config THREAD_INFO_IN_TASK +@@ -165,6 +165,12 @@ config THREAD_INFO_IN_TASK menu "General setup" diff --git a/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch b/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch index 8847593..195c9f1 100644 --- a/debian/patches/patchset-zen/sauce/0013-ZEN-INTERACTIVE-Use-BFQ-as-the-elevator-for-SQ-devic.patch +++ b/debian/patches/patchset-zen/sauce/0013-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 -@@ -168,6 +168,10 @@ config ZEN_INTERACTIVE +@@ -171,6 +171,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/0014-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch b/debian/patches/patchset-zen/sauce/0014-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch index 1d12daf..6cf05f0 100644 --- a/debian/patches/patchset-zen/sauce/0014-ZEN-INTERACTIVE-Use-Kyber-as-the-elevator-for-MQ-dev.patch +++ b/debian/patches/patchset-zen/sauce/0014-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 -@@ -171,6 +171,7 @@ config ZEN_INTERACTIVE +@@ -174,6 +174,7 @@ config ZEN_INTERACTIVE --- Block Layer ---------------------------------------- Default scheduler for SQ..: mq-deadline -> bfq diff --git a/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch b/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch index 33d3158..e5cefa1 100644 --- a/debian/patches/patchset-zen/sauce/0015-ZEN-INTERACTIVE-Enable-background-reclaim-of-hugepag.patch +++ b/debian/patches/patchset-zen/sauce/0015-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 -@@ -173,6 +173,10 @@ config ZEN_INTERACTIVE +@@ -176,6 +176,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/0016-ZEN-INTERACTIVE-Tune-EEVDF-for-interactivity.patch b/debian/patches/patchset-zen/sauce/0016-ZEN-INTERACTIVE-Tune-EEVDF-for-interactivity.patch index 9ae0e8d..d3ce0cb 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 -@@ -177,6 +177,13 @@ config ZEN_INTERACTIVE +@@ -180,6 +180,13 @@ config ZEN_INTERACTIVE Background-reclaim hugepages...: no -> yes 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 045f427..e35f73a 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 -@@ -184,6 +184,12 @@ config ZEN_INTERACTIVE +@@ -187,6 +187,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 0a48a8d..4ab12b2 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 -@@ -176,6 +176,7 @@ config ZEN_INTERACTIVE +@@ -179,6 +179,7 @@ config ZEN_INTERACTIVE --- Virtual Memory Subsystem --------------------------- Background-reclaim hugepages...: no -> yes diff --git a/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch b/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch index 287987b..369536c 100644 --- a/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch +++ b/debian/patches/patchset-zen/sauce/0019-ZEN-INTERACTIVE-mm-Disable-watermark-boosting-by-def.patch @@ -33,7 +33,7 @@ Signed-off-by: Sultan Alsawaf --- a/init/Kconfig +++ b/init/Kconfig -@@ -177,6 +177,7 @@ config ZEN_INTERACTIVE +@@ -180,6 +180,7 @@ config ZEN_INTERACTIVE Background-reclaim hugepages...: no -> yes Compact unevictable............: yes -> no diff --git a/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch b/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch index 6374eb7..46efc1b 100644 --- a/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch +++ b/debian/patches/patchset-zen/sauce/0020-ZEN-INTERACTIVE-mm-Lower-the-non-hugetlbpage-pageblo.patch @@ -47,7 +47,7 @@ Signed-off-by: Sultan Alsawaf --- a/init/Kconfig +++ b/init/Kconfig -@@ -178,6 +178,7 @@ config ZEN_INTERACTIVE +@@ -181,6 +181,7 @@ config ZEN_INTERACTIVE Background-reclaim hugepages...: no -> yes Compact unevictable............: yes -> no Watermark boost factor.........: 1.5 -> 0 diff --git a/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch b/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch index edb0449..1abf1a2 100644 --- a/debian/patches/patchset-zen/sauce/0021-ZEN-INTERACTIVE-dm-crypt-Disable-workqueues-for-cryp.patch +++ b/debian/patches/patchset-zen/sauce/0021-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 -@@ -172,6 +172,7 @@ config ZEN_INTERACTIVE +@@ -175,6 +175,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/0022-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch b/debian/patches/patchset-zen/sauce/0022-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch index 0238553..86deae9 100644 --- a/debian/patches/patchset-zen/sauce/0022-ZEN-INTERACTIVE-mm-swap-Disable-swap-in-readahead.patch +++ b/debian/patches/patchset-zen/sauce/0022-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 -@@ -180,6 +180,7 @@ config ZEN_INTERACTIVE +@@ -183,6 +183,7 @@ config ZEN_INTERACTIVE Compact unevictable............: yes -> no Watermark boost factor.........: 1.5 -> 0 Pageblock order................: 10 -> 3 diff --git a/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch b/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch index debcdb8..50c0be2 100644 --- a/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch +++ b/debian/patches/patchset-zen/sauce/0023-ZEN-INTERACTIVE-Document-PDS-BMQ-configuration.patch @@ -9,7 +9,7 @@ Subject: ZEN: INTERACTIVE: Document PDS/BMQ configuration --- a/init/Kconfig +++ b/init/Kconfig -@@ -189,6 +189,11 @@ config ZEN_INTERACTIVE +@@ -192,6 +192,11 @@ config ZEN_INTERACTIVE Bandwidth slice size...........: 5 -> 3 ms Task rebalancing threshold.....: 32 -> 8 diff --git a/debian/patches/series b/debian/patches/series index 9d26e10..ec4f176 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -156,9 +156,23 @@ patchset-pf/cpuidle/0001-cpuidle-Prefer-teo-over-menu-governor.patch patchset-pf/crypto/0001-crypto-x86-aes-xts-make-the-fast-path-64-bit-specifi.patch patchset-pf/crypto/0002-crypto-x86-aes-ctr-rewrite-AESNI-AVX-optimized-CTR-a.patch -patchset-pf/smb/0001-ksmbd-prevent-rename-with-empty-string.patch -patchset-pf/smb/0002-ksmbd-prevent-out-of-bounds-stream-writes-by-validat.patch -patchset-pf/smb/0003-ksmbd-Fix-UAF-in-__close_file_table_ids.patch +patchset-pf/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch +patchset-pf/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch +patchset-pf/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch +patchset-pf/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch +patchset-pf/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch +patchset-pf/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch +patchset-pf/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch +patchset-pf/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch +patchset-pf/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch +patchset-pf/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch +patchset-pf/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch +patchset-pf/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch +patchset-pf/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch +patchset-pf/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch +patchset-pf/invlpgb/0015-x86-mm-Eliminate-window-where-TLB-flushes-may-be-ina.patch + +patchset-pf/smb/0001-smb-client-fix-memory-leak-during-error-handling-for.patch patchset-pf/zstd/0001-zstd-import-upstream-v1.5.7.patch patchset-pf/zstd/0002-lib-zstd-Refactor-intentional-wrap-around-test.patch @@ -203,21 +217,6 @@ patchset-xanmod/valve/0004-leds-steamdeck-Add-support-for-Steam-Deck-LED.patch patchset-xanmod/valve/0005-mfd-Add-MFD-core-driver-for-Steam-Deck.patch patchset-xanmod/valve/0006-mfd-steamdeck-Expose-controller-board-power-in-sysfs.patch -patchset-zen/invlpgb/0001-x86-mm-Make-MMU_GATHER_RCU_TABLE_FREE-unconditional.patch -patchset-zen/invlpgb/0002-x86-mm-Remove-pv_ops.mmu.tlb_remove_table-call.patch -patchset-zen/invlpgb/0003-x86-mm-Consolidate-full-flush-threshold-decision.patch -patchset-zen/invlpgb/0004-x86-mm-Add-INVLPGB-feature-and-Kconfig-entry.patch -patchset-zen/invlpgb/0005-x86-mm-Add-INVLPGB-support-code.patch -patchset-zen/invlpgb/0006-x86-mm-Use-INVLPGB-for-kernel-TLB-flushes.patch -patchset-zen/invlpgb/0007-x86-mm-Use-broadcast-TLB-flushing-in-page-reclaim.patch -patchset-zen/invlpgb/0008-x86-mm-Add-global-ASID-allocation-helper-functions.patch -patchset-zen/invlpgb/0009-x86-mm-Handle-global-ASID-context-switch-and-TLB-flu.patch -patchset-zen/invlpgb/0010-x86-mm-Add-global-ASID-process-exit-helpers.patch -patchset-zen/invlpgb/0011-x86-mm-Enable-broadcast-TLB-invalidation-for-multi-t.patch -patchset-zen/invlpgb/0012-x86-mm-Enable-AMD-translation-cache-extensions.patch -patchset-zen/invlpgb/0013-x86-mm-Always-set-the-ASID-valid-bit-for-the-INVLPGB.patch -patchset-zen/invlpgb/0014-x86-mm-Only-do-broadcast-flush-from-reclaim-if-pages.patch - patchset-zen/ksm/0001-mm-expose-per-process-KSM-control-via-syscalls.patch patchset-xanmod/xanmod/0001-kbuild-Re-add-.config-file-required-to-sign-external.patch @@ -273,9 +272,6 @@ patchset-pf/fixes/0008-gcc-15-make-unterminated-string-initialization-just-.patc patchset-pf/fixes/0009-gcc-15-disable-Wunterminated-string-initialization-e.patch patchset-pf/fixes/0010-wifi-mac80211-mark-copy_mesh_setup-as-noinline.patch patchset-pf/fixes/0011-mei-vsc-Use-struct-vsc_tp_packet-as-vsc-tp-tx_buf-an.patch -patchset-pf/fixes/0012-Revert-drm-amd-Stop-evicting-resources-on-APUs-in-su.patch -patchset-pf/fixes/0013-drm-amdgpu-fix-pm-notifier-handling.patch patchset-zen/fixes/0001-arch-Kconfig-Default-to-maximum-amount-of-ASLR-bits.patch patchset-zen/fixes/0002-drivers-firmware-skip-simpledrm-if-nvidia-drm.modese.patch -patchset-zen/fixes/0003-x86-cpu-Help-users-notice-when-running-old-Intel-microcode.patch