Due to an influx of spam, we have had to impose restrictions on new accounts. Please see this wiki page for instructions on how to get full permissions. Sorry for the inconvenience.
Admin message
Equinix is shutting down its operations with us on April 30, 2025. They have graciously supported us for almost 5 years, but all good things come to an end. We are expecting to transition to new infrastructure between late March and mid-April. We do not yet have a firm timeline for this, but it will involve (probably multiple) periods of downtime as we move our services whilst also changing them to be faster and more responsive. Any updates will be posted in freedesktop/freedesktop#2011 as it becomes clear, and any downtime will be announced with further broadcast messages.
Regression: Displayport over USB dock: Display can't be turned on since kernel 6.4
Problem:
The monitor is recognized correctly when X starts, but is not enabled:
xrandr says "connected" on DisplayPort-4 (as usual)
and shows the correct modelines for the monitor,
and the 3840x2160 line shows "60.00 +", but not "60.00*+".
Enabling it with "xrandr ... -auto" fails in both 3840x2160 and smaller modes like 1920x1080.
The monitor receives no signal.
X11 log error message:
[ 94.572] (II) AMDGPU(0): Allocate new frame buffer 3840x2160
[ 94.572] (II) AMDGPU(0): => pitch 15360 bytes
[ 94.587] (EE) AMDGPU(0): failed to set mode: Invalid argument
[ 94.635] (EE) AMDGPU(0): drmmode_do_crtc_dpms cannot get last vblank counter
I found nothing in dmesg at the time of that error.
Exactly the same HW & SW configuration worked (and still works) in 4K@60 up to and including kernel 6.3.8
and fails since I switched to 6.4.1 (I tried no other kernel between 6.3.8 and 6.4.1).
The same monitor works in 4K mode with 6.4.1 when connected directly to the notebook with a HDMI cable
(unfortunately, I have no DP cable to try a direct connection without the dock).
The problem seems to be the DisplayPort-over-USB mode of the WD19DC dock:
I tried to connect the monitor via displayport to my noname mobile thunderbolt 3 dock,
and that works fine also with kernel 6.4.1.
However, when connected via TB+DP, xrandr shows the monitor on DisplayPort-0,
whereas it is shown on DisplayPort-4 with the failing Dell dock (DP-over-USB).
Bisecting that many versions 6.3.8 to 6.4.1 is quite hard with a non-working display... (my dock is mounted in a fixed position quite far away from my desk, when docked, I can neither see my notebook's display nor operate the notebook's keyboard and touch,
I just have the external display/keyboard/mouse).
Any specific guesses / patches I could try or undo?
Can comment that this is the case for me as well. Latest arch, 6.4.2 kernel, on a Redmibook laptop with 6800H. There is no response at all, no sign of any attempt to connect (used debug logging of DRM, no sign of any EDID negotiation, nada). The dock works immediately on another Macbook. USB-C SOHO dock. Have tried 6.1 LTS on arch and 6.4 latest. It used to work before, although there has been some issues.
Previously there has been issues of it working sporadically, requiring plugging back in a few times before it works. However, almost always it worked during reboot, but lately its been completely broken and no signs of it trying to connect.
Ill gladly test it out and see if it works. However, is this mainly for thunderbolt/USB4? This is USB C 3.2 gen 2 port. Also, I cannot seem to find the .patch file for the bottom comment.
Same here: We are talking about DisplayPort over USB3, no thunderbolt involved.
As I said above, my noname thunderbolt dock (also TB3 not TB4) is not affected and works fine, only my dell USB3 dock fails.
I tried the code at the bottom of the mail you mentioned, and it does not change anything (still no external display).
However, I can tell that the problem is related to the AMD DC code: I tried to boot a kernel without DC (which is still basically possible with polaris12), and it works: The external display is recognized and enabled and works, even when connected to the dell DisplayPort over USB3 dock. However, polaris12 without DC has so many other problems and misfeatures that using it without DC is not an option.
Tried kernel versions: 6.3.12 is still ok (so the problem was not backported), 6.4-rc1 is already broken (so the problem was introduced in the main 6.4 merge window), and 6.4.2 is still broken (so the problem is not fixed yet).
So I would have to bisect all the way from 6.3 to 6.4-rc1. Not something I will find time for any time soon. Can anybody narrow this down? Does anybody have other ideas to try?
Don't know about 6.1 LTS, but the 6.1 series definitly worked for me.
In my case, I do get info about the display: The display and all its modes and frequencies are correctly shown in xrandr (so most likely, the EDID data was read correctly from the display).
However, the display is not marked active in xrandr (i.e. none of its modes is marked with a "*"), and trying to make it active fails with the error message "xrandr: Configure crtc 1 failed".
So for some reason the kernel refuses or fails to configure the output timings it shows for that display (for any mode I tried), but it only does so when the display is connected via DP over USB. The same display and modes work when connected directly via HDMI, and when connected via DP over TB.
1.) The problem still exists in amd-staging-drm-next as of today and in 6.5-rc3: With both kernels, a 4K monitor connected via DisplayPort, Dell WD19DC dock and DP-over-USB3 does not work: It is listed with correct resolutions in xrandr, but activating it fails with "xrandr: Configure crtc 1 failed".
2.) I tried to bisect between 6.3 and 6.4-rc1, but the first kernel generated by bisect locks up hard after starting the X server with the dock connected, or after connecting the dock when the X server has been started without the dock. So no chance to bisect, I can't tell if the bisect kernel is good or bad w.r.t. our DP-over-USB3 problem.
What to try next?
(for now, I've kicked the Dell dock and switched to my noname mobile thunderbolt dock, which works fine with the 4K monitor and kernel 6.4.6).
No chance to bisect: All those commits result in a kernel which locks up as soon as the X server is started, starting from amd-drm-next-6.4-2023-03-31 up to and including commit 0c0463ff010b80a0c03937ca8cf85587ded2f20e. Commit 3cf7cd3f770a0b89dc5f06e19edb52e65b93b214 is the first one which does not hang the system, but which is unable to initialize the DP-over-USB3 display.
I turned on drm debugging while trying to activate the display with xrandr. Relevant section of dmesg attached. The lines correspondig to the xrandr error and failure are most likely:
I checked the modes first. Sorry, no wayland here.
But I enabled the drm trace and used xrandr to switch the display off and back on.
To my surprise, the mode xrandr sets indeed differs for the same display, depending on whether the display is connected by DP-over-TB or DP-over-USB.
However, that's not the cause of the problem: With the display connected by DP-over-TB, I added the problematic DP-over-USB mode to xrandr and switched the display to it, and that mode worked without problems (no xrandr error, xrandr shows new mode, display works).
In 6.4.6-gentoo, the res_pool patch was only partially present: I sucessfully reverse-applied hunk 1 to 3, and hunk 4 and 5 obviously have already been removed earlier (they don't do anything useful, anyway, a compiler would flag them as "no effect" statements?!).
That fixed the problem: My display now works again also when connected DP-over-USB.