--- /dev/null
+From 360930985ec9f394c82ba0b235403b4a366d1560 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Michel=20D=C3=A4nzer?= <mdaenzer@redhat.com>
+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 <mdaenzer@redhat.com>
+
+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:
+ <TASK>
+ 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 <aurabindo.pillai@amd.com>
+Acked-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Michel Dänzer <mdaenzer@redhat.com>
+Signed-off-by: Hamza Mahfooz <hamza.mahfooz@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);
+ }
+
--- /dev/null
+From 3d07fa1dd19035eb0b13ae6697efd5caa9033e74 Mon Sep 17 00:00:00 2001
+From: Brian Foster <bfoster@redhat.com>
+Date: Thu, 31 Aug 2023 08:55:00 -0400
+Subject: tracing: Zero the pipe cpumask on alloc to avoid spurious -EBUSY
+
+From: Brian Foster <bfoster@redhat.com>
+
+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 <zhengyejian1@huawei.com>
+Reviewed-by: Masami Hiramatsu (Google) <mhiramat@kernel.org>
+Signed-off-by: Brian Foster <bfoster@redhat.com>
+Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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 */