From: Greg Kroah-Hartman Date: Mon, 11 Sep 2023 06:46:58 +0000 (+0200) Subject: 6.4-stable patches X-Git-Tag: v6.1.53~18 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=199021ac3b278e927182e11b7e15650b74be7018;p=thirdparty%2Fkernel%2Fstable-queue.git 6.4-stable patches added patches: revert-drm-amd-display-do-not-set-drr-on-pipe-commit.patch tracing-zero-the-pipe-cpumask-on-alloc-to-avoid-spurious-ebusy.patch --- diff --git a/queue-6.4/revert-drm-amd-display-do-not-set-drr-on-pipe-commit.patch b/queue-6.4/revert-drm-amd-display-do-not-set-drr-on-pipe-commit.patch new file mode 100644 index 00000000000..697bcfa238a --- /dev/null +++ b/queue-6.4/revert-drm-amd-display-do-not-set-drr-on-pipe-commit.patch @@ -0,0 +1,105 @@ +From 360930985ec9f394c82ba0b235403b4a366d1560 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Mon, 22 May 2023 15:08:23 +0200 +Subject: Revert "drm/amd/display: Do not set drr on pipe commit" +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Michel Dänzer + +commit 360930985ec9f394c82ba0b235403b4a366d1560 upstream. + +This reverts commit e101bf95ea87ccc03ac2f48dfc0757c6364ff3c7. + +Caused a regression: + +Samsung Odyssey Neo G9, running at 5120x1440@240/VRR, connected to Navi +21 via DisplayPort, blanks and the GPU hangs while starting the Steam +game Assetto Corsa Competizione (via Proton 7.0). + +Example dmesg excerpt: + + amdgpu 0000:0c:00.0: [drm] ERROR [CRTC:82:crtc-0] flip_done timed out + NMI watchdog: Watchdog detected hard LOCKUP on cpu 6 + [...] + RIP: 0010:amdgpu_device_rreg.part.0+0x2f/0xf0 [amdgpu] + Code: 41 54 44 8d 24 b5 00 00 00 00 55 89 f5 53 48 89 fb 4c 3b a7 60 0b 00 00 73 6a 83 e2 02 74 29 4c 03 a3 68 0b 00 00 45 8b 24 24 <48> 8b 43 08 0f b7 70 3e 66 90 44 89 e0 5b 5d 41 5c 31 d2 31 c9 31 + RSP: 0000:ffffb39a119dfb88 EFLAGS: 00000086 + RAX: ffffffffc0eb96a0 RBX: ffff9e7963dc0000 RCX: 0000000000007fff + RDX: 0000000000000000 RSI: 0000000000004ff6 RDI: ffff9e7963dc0000 + RBP: 0000000000004ff6 R08: ffffb39a119dfc40 R09: 0000000000000010 + R10: ffffb39a119dfc40 R11: ffffb39a119dfc44 R12: 00000000000e05ae + R13: 0000000000000000 R14: ffff9e7963dc0010 R15: 0000000000000000 + FS: 000000001012f6c0(0000) GS:ffff9e805eb80000(0000) knlGS:000000007fd40000 + CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 + CR2: 00000000461ca000 CR3: 00000002a8a20000 CR4: 0000000000350ee0 + Call Trace: + + dm_read_reg_func+0x37/0xc0 [amdgpu] + generic_reg_get2+0x22/0x60 [amdgpu] + optc1_get_crtc_scanoutpos+0x6a/0xc0 [amdgpu] + dc_stream_get_scanoutpos+0x74/0x90 [amdgpu] + dm_crtc_get_scanoutpos+0x82/0xf0 [amdgpu] + amdgpu_display_get_crtc_scanoutpos+0x91/0x190 [amdgpu] + ? dm_read_reg_func+0x37/0xc0 [amdgpu] + amdgpu_get_vblank_counter_kms+0xb4/0x1a0 [amdgpu] + dm_pflip_high_irq+0x213/0x2f0 [amdgpu] + amdgpu_dm_irq_handler+0x8a/0x200 [amdgpu] + amdgpu_irq_dispatch+0xd4/0x220 [amdgpu] + amdgpu_ih_process+0x7f/0x110 [amdgpu] + amdgpu_irq_handler+0x1f/0x70 [amdgpu] + __handle_irq_event_percpu+0x46/0x1b0 + handle_irq_event+0x34/0x80 + handle_edge_irq+0x9f/0x240 + __common_interrupt+0x66/0x110 + common_interrupt+0x5c/0xd0 + asm_common_interrupt+0x22/0x40 + +Reviewed-by: Aurabindo Pillai +Acked-by: Alex Deucher +Signed-off-by: Michel Dänzer +Signed-off-by: Hamza Mahfooz +Signed-off-by: Alex Deucher +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c | 6 ------ + drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c | 7 ------- + 2 files changed, 13 deletions(-) + +--- a/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn20/dcn20_hwseq.c +@@ -2124,12 +2124,6 @@ void dcn20_optimize_bandwidth( + if (hubbub->funcs->program_compbuf_size) + hubbub->funcs->program_compbuf_size(hubbub, context->bw_ctx.bw.dcn.compbuf_size_kb, true); + +- if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) { +- dc_dmub_srv_p_state_delegate(dc, +- true, context); +- context->bw_ctx.bw.dcn.clk.p_state_change_support = true; +- } +- + dc->clk_mgr->funcs->update_clocks( + dc->clk_mgr, + context, +--- a/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c ++++ b/drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c +@@ -985,18 +985,11 @@ void dcn30_set_disp_pattern_generator(co + void dcn30_prepare_bandwidth(struct dc *dc, + struct dc_state *context) + { +- if (context->bw_ctx.bw.dcn.clk.fw_based_mclk_switching) { +- dc->optimized_required = true; +- context->bw_ctx.bw.dcn.clk.p_state_change_support = false; +- } +- + if (dc->clk_mgr->dc_mode_softmax_enabled) + if (dc->clk_mgr->clks.dramclk_khz <= dc->clk_mgr->bw_params->dc_mode_softmax_memclk * 1000 && + context->bw_ctx.bw.dcn.clk.dramclk_khz > dc->clk_mgr->bw_params->dc_mode_softmax_memclk * 1000) + dc->clk_mgr->funcs->set_max_memclk(dc->clk_mgr, dc->clk_mgr->bw_params->clk_table.entries[dc->clk_mgr->bw_params->clk_table.num_entries - 1].memclk_mhz); + + dcn20_prepare_bandwidth(dc, context); +- +- dc_dmub_srv_p_state_delegate(dc, false, context); + } + diff --git a/queue-6.4/series b/queue-6.4/series index b25d93c044b..870fd10bba8 100644 --- a/queue-6.4/series +++ b/queue-6.4/series @@ -733,3 +733,5 @@ memfd-do-not-eacces-old-memfd_create-users-with-vm.m.patch memfd-improve-userspace-warnings-for-missing-exec-re.patch revert-memfd-improve-userspace-warnings-for-missing-exec-related-flags.patch net-remove-duplicate-indirect_callable_declare-of-udp_ehashfn.patch +tracing-zero-the-pipe-cpumask-on-alloc-to-avoid-spurious-ebusy.patch +revert-drm-amd-display-do-not-set-drr-on-pipe-commit.patch diff --git a/queue-6.4/tracing-zero-the-pipe-cpumask-on-alloc-to-avoid-spurious-ebusy.patch b/queue-6.4/tracing-zero-the-pipe-cpumask-on-alloc-to-avoid-spurious-ebusy.patch new file mode 100644 index 00000000000..adbf9f09a6e --- /dev/null +++ b/queue-6.4/tracing-zero-the-pipe-cpumask-on-alloc-to-avoid-spurious-ebusy.patch @@ -0,0 +1,53 @@ +From 3d07fa1dd19035eb0b13ae6697efd5caa9033e74 Mon Sep 17 00:00:00 2001 +From: Brian Foster +Date: Thu, 31 Aug 2023 08:55:00 -0400 +Subject: tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY + +From: Brian Foster + +commit 3d07fa1dd19035eb0b13ae6697efd5caa9033e74 upstream. + +The pipe cpumask used to serialize opens between the main and percpu +trace pipes is not zeroed or initialized. This can result in +spurious -EBUSY returns if underlying memory is not fully zeroed. +This has been observed by immediate failure to read the main +trace_pipe file on an otherwise newly booted and idle system: + + # cat /sys/kernel/debug/tracing/trace_pipe + cat: /sys/kernel/debug/tracing/trace_pipe: Device or resource busy + +Zero the allocation of pipe_cpumask to avoid the problem. + +Link: https://lore.kernel.org/linux-trace-kernel/20230831125500.986862-1-bfoster@redhat.com + +Cc: stable@vger.kernel.org +Fixes: c2489bb7e6be ("tracing: Introduce pipe_cpumask to avoid race on trace_pipes") +Reviewed-by: Zheng Yejian +Reviewed-by: Masami Hiramatsu (Google) +Signed-off-by: Brian Foster +Signed-off-by: Steven Rostedt (Google) +Signed-off-by: Greg Kroah-Hartman +--- + kernel/trace/trace.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/kernel/trace/trace.c ++++ b/kernel/trace/trace.c +@@ -9465,7 +9465,7 @@ static struct trace_array *trace_array_c + if (!alloc_cpumask_var(&tr->tracing_cpumask, GFP_KERNEL)) + goto out_free_tr; + +- if (!alloc_cpumask_var(&tr->pipe_cpumask, GFP_KERNEL)) ++ if (!zalloc_cpumask_var(&tr->pipe_cpumask, GFP_KERNEL)) + goto out_free_tr; + + tr->trace_flags = global_trace.trace_flags & ~ZEROED_TRACE_FLAGS; +@@ -10410,7 +10410,7 @@ __init static int tracer_alloc_buffers(v + if (trace_create_savedcmd() < 0) + goto out_free_temp_buffer; + +- if (!alloc_cpumask_var(&global_trace.pipe_cpumask, GFP_KERNEL)) ++ if (!zalloc_cpumask_var(&global_trace.pipe_cpumask, GFP_KERNEL)) + goto out_free_savedcmd; + + /* TODO: make the number of buffers hot pluggable with CPUS */