On 7/9/26 12:34, Andriy Korud wrote:
Hi,
On DCE8-class ASICs (e.g. Bonaire), the resource pool contains digital
DIG stream encoders plus one analog DAC encoder. When assigning a stream
encoder for a second DisplayPort MST stream, if the preferred digital
encoder is already acquired,
dce100_find_first_free_match_stream_enc_for_link() falls back to the
first free pool entry. That entry may be the analog encoder, whose funcs
table lacks DP hooks such as dp_set_stream_attribute. The subsequent
atomic commit then dereferences NULL function pointers in
link_set_dpms_on() and crashes.
Skip encoders without dp_set_stream_attribute when the stream uses a DP
signal (including MST). Use dc_is_dp_signal(stream->signal) for the MST
fallback path instead of checking only the link connector signal.
Tested on:
- GPU: AMD Radeon R7 260X (Bonaire / DCE8)
- Board: Supermicro C9X299-PG300
- Setup: DP MST daisy chain, either hotplug second monitor or have it
connected on boot
- Kernel: 7.1.3 (issue observed since 6.19)
- Result: kernel oops without patch; dual monitors stable with patch
Thanks,
Andriy Korud
Can you restructure your submission against kernel guidelines?
https://www.kernel.org/doc/html/v7.2-rc2/process/submitting-patches.html
This should be a cover letter + patch or just a patch (not an attachment)