From: Greg Kroah-Hartman Date: Fri, 10 Jan 2025 13:33:42 +0000 (+0100) Subject: move temp-6.6 queue back in place X-Git-Tag: v6.1.125~73 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=557cb47c1c98b3b7a3e5494974f6a74141c3e229;p=thirdparty%2Fkernel%2Fstable-queue.git move temp-6.6 queue back in place --- diff --git a/temp-6.6/asoc-mediatek-disable-buffer-pre-allocation.patch b/queue-6.6/asoc-mediatek-disable-buffer-pre-allocation.patch similarity index 100% rename from temp-6.6/asoc-mediatek-disable-buffer-pre-allocation.patch rename to queue-6.6/asoc-mediatek-disable-buffer-pre-allocation.patch diff --git a/temp-6.6/asoc-rt722-add-delay-time-to-wait-for-the-calibratio.patch b/queue-6.6/asoc-rt722-add-delay-time-to-wait-for-the-calibratio.patch similarity index 100% rename from temp-6.6/asoc-rt722-add-delay-time-to-wait-for-the-calibratio.patch rename to queue-6.6/asoc-rt722-add-delay-time-to-wait-for-the-calibratio.patch diff --git a/temp-6.6/dm-array-fix-cursor-index-when-skipping-across-block.patch b/queue-6.6/dm-array-fix-cursor-index-when-skipping-across-block.patch similarity index 100% rename from temp-6.6/dm-array-fix-cursor-index-when-skipping-across-block.patch rename to queue-6.6/dm-array-fix-cursor-index-when-skipping-across-block.patch diff --git a/temp-6.6/dm-array-fix-releasing-a-faulty-array-block-twice-in.patch b/queue-6.6/dm-array-fix-releasing-a-faulty-array-block-twice-in.patch similarity index 100% rename from temp-6.6/dm-array-fix-releasing-a-faulty-array-block-twice-in.patch rename to queue-6.6/dm-array-fix-releasing-a-faulty-array-block-twice-in.patch diff --git a/temp-6.6/dm-array-fix-unreleased-btree-blocks-on-closing-a-fa.patch b/queue-6.6/dm-array-fix-unreleased-btree-blocks-on-closing-a-fa.patch similarity index 100% rename from temp-6.6/dm-array-fix-unreleased-btree-blocks-on-closing-a-fa.patch rename to queue-6.6/dm-array-fix-unreleased-btree-blocks-on-closing-a-fa.patch diff --git a/temp-6.6/erofs-fix-psi-memstall-accounting.patch b/queue-6.6/erofs-fix-psi-memstall-accounting.patch similarity index 100% rename from temp-6.6/erofs-fix-psi-memstall-accounting.patch rename to queue-6.6/erofs-fix-psi-memstall-accounting.patch diff --git a/temp-6.6/erofs-handle-overlapped-pclusters-out-of-crafted-ima.patch b/queue-6.6/erofs-handle-overlapped-pclusters-out-of-crafted-ima.patch similarity index 100% rename from temp-6.6/erofs-handle-overlapped-pclusters-out-of-crafted-ima.patch rename to queue-6.6/erofs-handle-overlapped-pclusters-out-of-crafted-ima.patch diff --git a/temp-6.6/exfat-fix-the-infinite-loop-in-__exfat_free_cluster.patch b/queue-6.6/exfat-fix-the-infinite-loop-in-__exfat_free_cluster.patch similarity index 100% rename from temp-6.6/exfat-fix-the-infinite-loop-in-__exfat_free_cluster.patch rename to queue-6.6/exfat-fix-the-infinite-loop-in-__exfat_free_cluster.patch diff --git a/temp-6.6/exfat-fix-the-infinite-loop-in-exfat_readdir.patch b/queue-6.6/exfat-fix-the-infinite-loop-in-exfat_readdir.patch similarity index 100% rename from temp-6.6/exfat-fix-the-infinite-loop-in-exfat_readdir.patch rename to queue-6.6/exfat-fix-the-infinite-loop-in-exfat_readdir.patch diff --git a/temp-6.6/jbd2-flush-filesystem-device-before-updating-tail-se.patch b/queue-6.6/jbd2-flush-filesystem-device-before-updating-tail-se.patch similarity index 100% rename from temp-6.6/jbd2-flush-filesystem-device-before-updating-tail-se.patch rename to queue-6.6/jbd2-flush-filesystem-device-before-updating-tail-se.patch diff --git a/temp-6.6/jbd2-increase-io-priority-for-writing-revoke-records.patch b/queue-6.6/jbd2-increase-io-priority-for-writing-revoke-records.patch similarity index 100% rename from temp-6.6/jbd2-increase-io-priority-for-writing-revoke-records.patch rename to queue-6.6/jbd2-increase-io-priority-for-writing-revoke-records.patch diff --git a/temp-6.6/memblock-make-memblock_set_node-also-warn-about-use-.patch b/queue-6.6/memblock-make-memblock_set_node-also-warn-about-use-.patch similarity index 100% rename from temp-6.6/memblock-make-memblock_set_node-also-warn-about-use-.patch rename to queue-6.6/memblock-make-memblock_set_node-also-warn-about-use-.patch diff --git a/temp-6.6/memblock-use-numa_valid_node-helper-to-check-for-invalid-node-id.patch b/queue-6.6/memblock-use-numa_valid_node-helper-to-check-for-invalid-node-id.patch similarity index 100% rename from temp-6.6/memblock-use-numa_valid_node-helper-to-check-for-invalid-node-id.patch rename to queue-6.6/memblock-use-numa_valid_node-helper-to-check-for-invalid-node-id.patch diff --git a/temp-6.6/ovl-do-not-encode-lower-fh-with-upper-sb_writers-hel.patch b/queue-6.6/ovl-do-not-encode-lower-fh-with-upper-sb_writers-hel.patch similarity index 100% rename from temp-6.6/ovl-do-not-encode-lower-fh-with-upper-sb_writers-hel.patch rename to queue-6.6/ovl-do-not-encode-lower-fh-with-upper-sb_writers-hel.patch diff --git a/temp-6.6/ovl-pass-realinode-to-ovl_encode_real_fh-instead-of-.patch b/queue-6.6/ovl-pass-realinode-to-ovl_encode_real_fh-instead-of-.patch similarity index 100% rename from temp-6.6/ovl-pass-realinode-to-ovl_encode_real_fh-instead-of-.patch rename to queue-6.6/ovl-pass-realinode-to-ovl_encode_real_fh-instead-of-.patch diff --git a/temp-6.6/ovl-support-encoding-fid-from-inode-with-no-alias.patch b/queue-6.6/ovl-support-encoding-fid-from-inode-with-no-alias.patch similarity index 100% rename from temp-6.6/ovl-support-encoding-fid-from-inode-with-no-alias.patch rename to queue-6.6/ovl-support-encoding-fid-from-inode-with-no-alias.patch diff --git a/temp-6.6/selftests-alsa-fix-circular-dependency-involving-glo.patch b/queue-6.6/selftests-alsa-fix-circular-dependency-involving-glo.patch similarity index 100% rename from temp-6.6/selftests-alsa-fix-circular-dependency-involving-glo.patch rename to queue-6.6/selftests-alsa-fix-circular-dependency-involving-glo.patch diff --git a/temp-6.6/series b/queue-6.6/series similarity index 82% rename from temp-6.6/series rename to queue-6.6/series index e10812508b5..8d2b0e0ecbf 100644 --- a/temp-6.6/series +++ b/queue-6.6/series @@ -1,6 +1,3 @@ -revert-x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch -revert-x86-crash-wrap-crash-dumping-code-into-crash-related-ifdefs.patch -x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch memblock-make-memblock_set_node-also-warn-about-use-.patch memblock-use-numa_valid_node-helper-to-check-for-invalid-node-id.patch jbd2-increase-io-priority-for-writing-revoke-records.patch diff --git a/temp-6.6/revert-x86-crash-wrap-crash-dumping-code-into-crash-related-ifdefs.patch b/temp-6.6/revert-x86-crash-wrap-crash-dumping-code-into-crash-related-ifdefs.patch deleted file mode 100644 index 4d5e5329885..00000000000 --- a/temp-6.6/revert-x86-crash-wrap-crash-dumping-code-into-crash-related-ifdefs.patch +++ /dev/null @@ -1,244 +0,0 @@ -From 129885ec461fd82348e557524b087496947532fe Mon Sep 17 00:00:00 2001 -From: Greg Kroah-Hartman -Date: Fri, 10 Jan 2025 13:09:11 +0100 -Subject: Revert "x86, crash: wrap crash dumping code into crash related ifdefs" - -From: Greg Kroah-Hartman - -This reverts commit e5b1574a8ca28c40cf53eda43f6c3b016ed41e27 which is -commit a4eeb2176d89fdf2785851521577b94b31690a60 upstream. - -When this change is backported to the 6.6.y tree, it can cause build -errors on some configurations when KEXEC is not enabled, so revert it -for now. - -Reported-by: Ignat Korchagin -Link: https://lore.kernel.org/r/3DB3A6D3-0D3A-4682-B4FA-407B2D3263B2@cloudflare.com -Reported-by: Lars Wendler -Link: https://lore.kernel.org/r/20250110103328.0e3906a8@chagall.paradoxon.rec -Reported-by: Chris Clayton -Link: https://lore.kernel.org/r/10c7be00-b1f8-4389-801b-fb2d0b22468d@googlemail.com -Cc: Al Viro -Cc: Andrew Morton -Cc: Dexuan Cui -Cc: Eric W. Biederman -Cc: Hari Bathini -Cc: Klara Modin -Cc: Michael Kelley -Cc: Michael Kelley -Cc: Naman Jain -Cc: Nathan Chancellor -Cc: Pingfan Liu -Cc: Sasha Levin -Cc: Stephen Rothwell -Cc: Wei Liu -Cc: Yang Li -Signed-off-by: Greg Kroah-Hartman ---- - arch/x86/kernel/Makefile | 4 ++-- - arch/x86/kernel/cpu/mshyperv.c | 10 ++-------- - arch/x86/kernel/kexec-bzimage64.c | 4 ---- - arch/x86/kernel/kvm.c | 4 ++-- - arch/x86/kernel/machine_kexec_64.c | 3 --- - arch/x86/kernel/reboot.c | 4 ++-- - arch/x86/kernel/setup.c | 2 +- - arch/x86/kernel/smp.c | 2 +- - arch/x86/xen/enlighten_hvm.c | 4 ---- - arch/x86/xen/mmu_pv.c | 2 +- - 10 files changed, 11 insertions(+), 28 deletions(-) - ---- a/arch/x86/kernel/Makefile -+++ b/arch/x86/kernel/Makefile -@@ -99,9 +99,9 @@ obj-$(CONFIG_TRACING) += trace.o - obj-$(CONFIG_RETHOOK) += rethook.o - obj-$(CONFIG_CRASH_CORE) += crash_core_$(BITS).o - obj-$(CONFIG_KEXEC_CORE) += machine_kexec_$(BITS).o --obj-$(CONFIG_KEXEC_CORE) += relocate_kernel_$(BITS).o -+obj-$(CONFIG_KEXEC_CORE) += relocate_kernel_$(BITS).o crash.o - obj-$(CONFIG_KEXEC_FILE) += kexec-bzimage64.o --obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o crash.o -+obj-$(CONFIG_CRASH_DUMP) += crash_dump_$(BITS).o - obj-y += kprobes/ - obj-$(CONFIG_MODULES) += module.o - obj-$(CONFIG_X86_32) += doublefault_32.o ---- a/arch/x86/kernel/cpu/mshyperv.c -+++ b/arch/x86/kernel/cpu/mshyperv.c -@@ -209,9 +209,7 @@ static void hv_machine_shutdown(void) - if (kexec_in_progress) - hyperv_cleanup(); - } --#endif /* CONFIG_KEXEC_CORE */ - --#ifdef CONFIG_CRASH_DUMP - static void hv_machine_crash_shutdown(struct pt_regs *regs) - { - if (hv_crash_handler) -@@ -223,7 +221,7 @@ static void hv_machine_crash_shutdown(st - /* Disable the hypercall page when there is only 1 active CPU. */ - hyperv_cleanup(); - } --#endif /* CONFIG_CRASH_DUMP */ -+#endif /* CONFIG_KEXEC_CORE */ - #endif /* CONFIG_HYPERV */ - - static uint32_t __init ms_hyperv_platform(void) -@@ -495,14 +493,10 @@ static void __init ms_hyperv_init_platfo - no_timer_check = 1; - #endif - --#if IS_ENABLED(CONFIG_HYPERV) --#if defined(CONFIG_KEXEC_CORE) -+#if IS_ENABLED(CONFIG_HYPERV) && defined(CONFIG_KEXEC_CORE) - machine_ops.shutdown = hv_machine_shutdown; --#endif --#if defined(CONFIG_CRASH_DUMP) - machine_ops.crash_shutdown = hv_machine_crash_shutdown; - #endif --#endif - if (ms_hyperv.features & HV_ACCESS_TSC_INVARIANT) { - /* - * Writing to synthetic MSR 0x40000118 updates/changes the ---- a/arch/x86/kernel/kexec-bzimage64.c -+++ b/arch/x86/kernel/kexec-bzimage64.c -@@ -263,13 +263,11 @@ setup_boot_parameters(struct kimage *ima - memset(¶ms->hd0_info, 0, sizeof(params->hd0_info)); - memset(¶ms->hd1_info, 0, sizeof(params->hd1_info)); - --#ifdef CONFIG_CRASH_DUMP - if (image->type == KEXEC_TYPE_CRASH) { - ret = crash_setup_memmap_entries(image, params); - if (ret) - return ret; - } else --#endif - setup_e820_entries(params); - - nr_e820_entries = params->e820_entries; -@@ -430,14 +428,12 @@ static void *bzImage64_load(struct kimag - return ERR_PTR(-EINVAL); - } - --#ifdef CONFIG_CRASH_DUMP - /* Allocate and load backup region */ - if (image->type == KEXEC_TYPE_CRASH) { - ret = crash_load_segments(image); - if (ret) - return ERR_PTR(ret); - } --#endif - - /* - * Load purgatory. For 64bit entry point, purgatory code can be ---- a/arch/x86/kernel/kvm.c -+++ b/arch/x86/kernel/kvm.c -@@ -769,7 +769,7 @@ static struct notifier_block kvm_pv_rebo - * won't be valid. In cases like kexec, in which you install a new kernel, this - * means a random memory location will be kept being written. - */ --#ifdef CONFIG_CRASH_DUMP -+#ifdef CONFIG_KEXEC_CORE - static void kvm_crash_shutdown(struct pt_regs *regs) - { - kvm_guest_cpu_offline(true); -@@ -852,7 +852,7 @@ static void __init kvm_guest_init(void) - kvm_guest_cpu_init(); - #endif - --#ifdef CONFIG_CRASH_DUMP -+#ifdef CONFIG_KEXEC_CORE - machine_ops.crash_shutdown = kvm_crash_shutdown; - #endif - ---- a/arch/x86/kernel/machine_kexec_64.c -+++ b/arch/x86/kernel/machine_kexec_64.c -@@ -545,8 +545,6 @@ int arch_kimage_file_post_load_cleanup(s - } - #endif /* CONFIG_KEXEC_FILE */ - --#ifdef CONFIG_CRASH_DUMP -- - static int - kexec_mark_range(unsigned long start, unsigned long end, bool protect) - { -@@ -591,7 +589,6 @@ void arch_kexec_unprotect_crashkres(void - { - kexec_mark_crashkres(false); - } --#endif - - /* - * During a traditional boot under SME, SME will encrypt the kernel, ---- a/arch/x86/kernel/reboot.c -+++ b/arch/x86/kernel/reboot.c -@@ -796,7 +796,7 @@ struct machine_ops machine_ops __ro_afte - .emergency_restart = native_machine_emergency_restart, - .restart = native_machine_restart, - .halt = native_machine_halt, --#ifdef CONFIG_CRASH_DUMP -+#ifdef CONFIG_KEXEC_CORE - .crash_shutdown = native_machine_crash_shutdown, - #endif - }; -@@ -826,7 +826,7 @@ void machine_halt(void) - machine_ops.halt(); - } - --#ifdef CONFIG_CRASH_DUMP -+#ifdef CONFIG_KEXEC_CORE - void machine_crash_shutdown(struct pt_regs *regs) - { - machine_ops.crash_shutdown(regs); ---- a/arch/x86/kernel/setup.c -+++ b/arch/x86/kernel/setup.c -@@ -547,7 +547,7 @@ static void __init reserve_crashkernel(v - bool high = false; - int ret; - -- if (!IS_ENABLED(CONFIG_CRASH_RESERVE)) -+ if (!IS_ENABLED(CONFIG_KEXEC_CORE)) - return; - - total_mem = memblock_phys_mem_size(); ---- a/arch/x86/kernel/smp.c -+++ b/arch/x86/kernel/smp.c -@@ -282,7 +282,7 @@ struct smp_ops smp_ops = { - .smp_cpus_done = native_smp_cpus_done, - - .stop_other_cpus = native_stop_other_cpus, --#if defined(CONFIG_CRASH_DUMP) -+#if defined(CONFIG_KEXEC_CORE) - .crash_stop_other_cpus = kdump_nmi_shootdown_cpus, - #endif - .smp_send_reschedule = native_smp_send_reschedule, ---- a/arch/x86/xen/enlighten_hvm.c -+++ b/arch/x86/xen/enlighten_hvm.c -@@ -141,9 +141,7 @@ static void xen_hvm_shutdown(void) - if (kexec_in_progress) - xen_reboot(SHUTDOWN_soft_reset); - } --#endif - --#ifdef CONFIG_CRASH_DUMP - static void xen_hvm_crash_shutdown(struct pt_regs *regs) - { - native_machine_crash_shutdown(regs); -@@ -231,8 +229,6 @@ static void __init xen_hvm_guest_init(vo - - #ifdef CONFIG_KEXEC_CORE - machine_ops.shutdown = xen_hvm_shutdown; --#endif --#ifdef CONFIG_CRASH_DUMP - machine_ops.crash_shutdown = xen_hvm_crash_shutdown; - #endif - } ---- a/arch/x86/xen/mmu_pv.c -+++ b/arch/x86/xen/mmu_pv.c -@@ -2517,7 +2517,7 @@ out: - } - EXPORT_SYMBOL_GPL(xen_remap_pfn); - --#ifdef CONFIG_VMCORE_INFO -+#ifdef CONFIG_KEXEC_CORE - phys_addr_t paddr_vmcoreinfo_note(void) - { - if (xen_pv_domain()) diff --git a/temp-6.6/revert-x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch b/temp-6.6/revert-x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch deleted file mode 100644 index 6b20454e531..00000000000 --- a/temp-6.6/revert-x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch +++ /dev/null @@ -1,146 +0,0 @@ -From be4f07d3d03f35e86493195f4a7b34187e995b70 Mon Sep 17 00:00:00 2001 -From: Greg Kroah-Hartman -Date: Fri, 10 Jan 2025 13:06:34 +0100 -Subject: Revert "x86/hyperv: Fix hv tsc page based sched_clock for hibernation" - -From: Greg Kroah-Hartman - -This reverts commit 6681113633dc738ec95fe33104843a1e25acef3b which is -commit bcc80dec91ee745b3d66f3e48f0ec2efdea97149 upstream. - -The dependant patch before this one caused build errors in the 6.6.y -tree, so revert this for now so that we can fix them up properly. - -Reported-by: Ignat Korchagin -Link: https://lore.kernel.org/r/3DB3A6D3-0D3A-4682-B4FA-407B2D3263B2@cloudflare.com -Reported-by: Lars Wendler -Link: https://lore.kernel.org/r/20250110103328.0e3906a8@chagall.paradoxon.rec -Reported-by: Chris Clayton -Link: https://lore.kernel.org/r/10c7be00-b1f8-4389-801b-fb2d0b22468d@googlemail.com -Cc: Dexuan Cui -Cc: Naman Jain -Cc: Michael Kelley -Cc: Wei Liu -Cc: Sasha Levin -Signed-off-by: Greg Kroah-Hartman ---- - arch/x86/kernel/cpu/mshyperv.c | 58 ------------------------------------- - drivers/clocksource/hyperv_timer.c | 14 -------- - include/clocksource/hyperv_timer.h | 2 - - 3 files changed, 1 insertion(+), 73 deletions(-) - ---- a/arch/x86/kernel/cpu/mshyperv.c -+++ b/arch/x86/kernel/cpu/mshyperv.c -@@ -224,63 +224,6 @@ static void hv_machine_crash_shutdown(st - hyperv_cleanup(); - } - #endif /* CONFIG_CRASH_DUMP */ -- --static u64 hv_ref_counter_at_suspend; --static void (*old_save_sched_clock_state)(void); --static void (*old_restore_sched_clock_state)(void); -- --/* -- * Hyper-V clock counter resets during hibernation. Save and restore clock -- * offset during suspend/resume, while also considering the time passed -- * before suspend. This is to make sure that sched_clock using hv tsc page -- * based clocksource, proceeds from where it left off during suspend and -- * it shows correct time for the timestamps of kernel messages after resume. -- */ --static void save_hv_clock_tsc_state(void) --{ -- hv_ref_counter_at_suspend = hv_read_reference_counter(); --} -- --static void restore_hv_clock_tsc_state(void) --{ -- /* -- * Adjust the offsets used by hv tsc clocksource to -- * account for the time spent before hibernation. -- * adjusted value = reference counter (time) at suspend -- * - reference counter (time) now. -- */ -- hv_adj_sched_clock_offset(hv_ref_counter_at_suspend - hv_read_reference_counter()); --} -- --/* -- * Functions to override save_sched_clock_state and restore_sched_clock_state -- * functions of x86_platform. The Hyper-V clock counter is reset during -- * suspend-resume and the offset used to measure time needs to be -- * corrected, post resume. -- */ --static void hv_save_sched_clock_state(void) --{ -- old_save_sched_clock_state(); -- save_hv_clock_tsc_state(); --} -- --static void hv_restore_sched_clock_state(void) --{ -- restore_hv_clock_tsc_state(); -- old_restore_sched_clock_state(); --} -- --static void __init x86_setup_ops_for_tsc_pg_clock(void) --{ -- if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE)) -- return; -- -- old_save_sched_clock_state = x86_platform.save_sched_clock_state; -- x86_platform.save_sched_clock_state = hv_save_sched_clock_state; -- -- old_restore_sched_clock_state = x86_platform.restore_sched_clock_state; -- x86_platform.restore_sched_clock_state = hv_restore_sched_clock_state; --} - #endif /* CONFIG_HYPERV */ - - static uint32_t __init ms_hyperv_platform(void) -@@ -635,7 +578,6 @@ static void __init ms_hyperv_init_platfo - - /* Register Hyper-V specific clocksource */ - hv_init_clocksource(); -- x86_setup_ops_for_tsc_pg_clock(); - hv_vtl_init_platform(); - #endif - /* ---- a/drivers/clocksource/hyperv_timer.c -+++ b/drivers/clocksource/hyperv_timer.c -@@ -27,8 +27,7 @@ - #include - - static struct clock_event_device __percpu *hv_clock_event; --/* Note: offset can hold negative values after hibernation. */ --static u64 hv_sched_clock_offset __read_mostly; -+static u64 hv_sched_clock_offset __ro_after_init; - - /* - * If false, we're using the old mechanism for stimer0 interrupts -@@ -457,17 +456,6 @@ static void resume_hv_clock_tsc(struct c - hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64); - } - --/* -- * Called during resume from hibernation, from overridden -- * x86_platform.restore_sched_clock_state routine. This is to adjust offsets -- * used to calculate time for hv tsc page based sched_clock, to account for -- * time spent before hibernation. -- */ --void hv_adj_sched_clock_offset(u64 offset) --{ -- hv_sched_clock_offset -= offset; --} -- - #ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK - static int hv_cs_enable(struct clocksource *cs) - { ---- a/include/clocksource/hyperv_timer.h -+++ b/include/clocksource/hyperv_timer.h -@@ -38,8 +38,6 @@ extern void hv_remap_tsc_clocksource(voi - extern unsigned long hv_get_tsc_pfn(void); - extern struct ms_hyperv_tsc_page *hv_get_tsc_page(void); - --extern void hv_adj_sched_clock_offset(u64 offset); -- - static __always_inline bool - hv_read_tsc_page_tsc(const struct ms_hyperv_tsc_page *tsc_pg, - u64 *cur_tsc, u64 *time) diff --git a/temp-6.6/x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch b/temp-6.6/x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch deleted file mode 100644 index 35599589ea0..00000000000 --- a/temp-6.6/x86-hyperv-fix-hv-tsc-page-based-sched_clock-for-hibernation.patch +++ /dev/null @@ -1,168 +0,0 @@ -From bcc80dec91ee745b3d66f3e48f0ec2efdea97149 Mon Sep 17 00:00:00 2001 -From: Naman Jain -Date: Tue, 17 Sep 2024 11:09:17 +0530 -Subject: x86/hyperv: Fix hv tsc page based sched_clock for hibernation - -From: Naman Jain - -commit bcc80dec91ee745b3d66f3e48f0ec2efdea97149 upstream. - -read_hv_sched_clock_tsc() assumes that the Hyper-V clock counter is -bigger than the variable hv_sched_clock_offset, which is cached during -early boot, but depending on the timing this assumption may be false -when a hibernated VM starts again (the clock counter starts from 0 -again) and is resuming back (Note: hv_init_tsc_clocksource() is not -called during hibernation/resume); consequently, -read_hv_sched_clock_tsc() may return a negative integer (which is -interpreted as a huge positive integer since the return type is u64) -and new kernel messages are prefixed with huge timestamps before -read_hv_sched_clock_tsc() grows big enough (which typically takes -several seconds). - -Fix the issue by saving the Hyper-V clock counter just before the -suspend, and using it to correct the hv_sched_clock_offset in -resume. This makes hv tsc page based sched_clock continuous and ensures -that post resume, it starts from where it left off during suspend. -Override x86_platform.save_sched_clock_state and -x86_platform.restore_sched_clock_state routines to correct this as soon -as possible. - -Note: if Invariant TSC is available, the issue doesn't happen because -1) we don't register read_hv_sched_clock_tsc() for sched clock: -See commit e5313f1c5404 ("clocksource/drivers/hyper-v: Rework -clocksource and sched clock setup"); -2) the common x86 code adjusts TSC similarly: see -__restore_processor_state() -> tsc_verify_tsc_adjust(true) and -x86_platform.restore_sched_clock_state(). - -Cc: stable@vger.kernel.org -Fixes: 1349401ff1aa ("clocksource/drivers/hyper-v: Suspend/resume Hyper-V clocksource for hibernation") -Co-developed-by: Dexuan Cui -Signed-off-by: Dexuan Cui -Signed-off-by: Naman Jain -Reviewed-by: Michael Kelley -Link: https://lore.kernel.org/r/20240917053917.76787-1-namjain@linux.microsoft.com -Signed-off-by: Wei Liu -Message-ID: <20240917053917.76787-1-namjain@linux.microsoft.com> -Signed-off-by: Greg Kroah-Hartman ---- - arch/x86/kernel/cpu/mshyperv.c | 58 +++++++++++++++++++++++++++++++++++++ - drivers/clocksource/hyperv_timer.c | 14 ++++++++ - include/clocksource/hyperv_timer.h | 2 + - 3 files changed, 73 insertions(+), 1 deletion(-) - ---- a/arch/x86/kernel/cpu/mshyperv.c -+++ b/arch/x86/kernel/cpu/mshyperv.c -@@ -222,6 +222,63 @@ static void hv_machine_crash_shutdown(st - hyperv_cleanup(); - } - #endif /* CONFIG_KEXEC_CORE */ -+ -+static u64 hv_ref_counter_at_suspend; -+static void (*old_save_sched_clock_state)(void); -+static void (*old_restore_sched_clock_state)(void); -+ -+/* -+ * Hyper-V clock counter resets during hibernation. Save and restore clock -+ * offset during suspend/resume, while also considering the time passed -+ * before suspend. This is to make sure that sched_clock using hv tsc page -+ * based clocksource, proceeds from where it left off during suspend and -+ * it shows correct time for the timestamps of kernel messages after resume. -+ */ -+static void save_hv_clock_tsc_state(void) -+{ -+ hv_ref_counter_at_suspend = hv_read_reference_counter(); -+} -+ -+static void restore_hv_clock_tsc_state(void) -+{ -+ /* -+ * Adjust the offsets used by hv tsc clocksource to -+ * account for the time spent before hibernation. -+ * adjusted value = reference counter (time) at suspend -+ * - reference counter (time) now. -+ */ -+ hv_adj_sched_clock_offset(hv_ref_counter_at_suspend - hv_read_reference_counter()); -+} -+ -+/* -+ * Functions to override save_sched_clock_state and restore_sched_clock_state -+ * functions of x86_platform. The Hyper-V clock counter is reset during -+ * suspend-resume and the offset used to measure time needs to be -+ * corrected, post resume. -+ */ -+static void hv_save_sched_clock_state(void) -+{ -+ old_save_sched_clock_state(); -+ save_hv_clock_tsc_state(); -+} -+ -+static void hv_restore_sched_clock_state(void) -+{ -+ restore_hv_clock_tsc_state(); -+ old_restore_sched_clock_state(); -+} -+ -+static void __init x86_setup_ops_for_tsc_pg_clock(void) -+{ -+ if (!(ms_hyperv.features & HV_MSR_REFERENCE_TSC_AVAILABLE)) -+ return; -+ -+ old_save_sched_clock_state = x86_platform.save_sched_clock_state; -+ x86_platform.save_sched_clock_state = hv_save_sched_clock_state; -+ -+ old_restore_sched_clock_state = x86_platform.restore_sched_clock_state; -+ x86_platform.restore_sched_clock_state = hv_restore_sched_clock_state; -+} - #endif /* CONFIG_HYPERV */ - - static uint32_t __init ms_hyperv_platform(void) -@@ -572,6 +629,7 @@ static void __init ms_hyperv_init_platfo - - /* Register Hyper-V specific clocksource */ - hv_init_clocksource(); -+ x86_setup_ops_for_tsc_pg_clock(); - hv_vtl_init_platform(); - #endif - /* ---- a/drivers/clocksource/hyperv_timer.c -+++ b/drivers/clocksource/hyperv_timer.c -@@ -27,7 +27,8 @@ - #include - - static struct clock_event_device __percpu *hv_clock_event; --static u64 hv_sched_clock_offset __ro_after_init; -+/* Note: offset can hold negative values after hibernation. */ -+static u64 hv_sched_clock_offset __read_mostly; - - /* - * If false, we're using the old mechanism for stimer0 interrupts -@@ -456,6 +457,17 @@ static void resume_hv_clock_tsc(struct c - hv_set_register(HV_REGISTER_REFERENCE_TSC, tsc_msr.as_uint64); - } - -+/* -+ * Called during resume from hibernation, from overridden -+ * x86_platform.restore_sched_clock_state routine. This is to adjust offsets -+ * used to calculate time for hv tsc page based sched_clock, to account for -+ * time spent before hibernation. -+ */ -+void hv_adj_sched_clock_offset(u64 offset) -+{ -+ hv_sched_clock_offset -= offset; -+} -+ - #ifdef HAVE_VDSO_CLOCKMODE_HVCLOCK - static int hv_cs_enable(struct clocksource *cs) - { ---- a/include/clocksource/hyperv_timer.h -+++ b/include/clocksource/hyperv_timer.h -@@ -38,6 +38,8 @@ extern void hv_remap_tsc_clocksource(voi - extern unsigned long hv_get_tsc_pfn(void); - extern struct ms_hyperv_tsc_page *hv_get_tsc_page(void); - -+extern void hv_adj_sched_clock_offset(u64 offset); -+ - static __always_inline bool - hv_read_tsc_page_tsc(const struct ms_hyperv_tsc_page *tsc_pg, - u64 *cur_tsc, u64 *time)