You are not logged in.
Heyhey!
So I recently updated my system, and as of recently, any time an application window opens, my dGPU goes from D3cold to D0, which results in the application startup stalling for a few seconds as the dGPU wakes up. The thing is, these applications do not use the dGPU, nvtop shows no usage when I peek to see why. This can occur any time a new window is opened as a result of a program starting - a new dolphin window, a new terminal window, etc.
This does not happen if I open a new window with an existing process - for example, if I have a Konsole window open and hit ctrl-shift-N, there is no D0 wakeup. But if I start it by hitting ctrl-alt-t (my binding for konsole) or via the application launcher etc, I get a D0 wakeup.
I did try downgrading kwin from 6.4.4-4 to 6.4.4-1, which is where it was previously before this issue started occurring (this may have happened earlier but I had not noticed), but it didn't seem to resolve it, so I'm not sure where it's happening.
I have a list of packages and versions from pacman.log which resulted in this change, and the ones I thought were potentially of note are:
kwin (6.4.4-1 -> 6.4.4-4)
linux-zen (6.16.2.zen1-1 -> 6.16.3.zen1-1)
linux-zen-headers (6.16.2.zen1-1 -> 6.16.3.zen1-1)
but downgrading all of these to their previous versions did not resolve the problem. I'm not really sure how to go about troubleshooting this further.
I'm currently on the latest version of everything as of right now, running on a Framework 16 with a AMD Radeon RX 7700S in the main bay and AMD Radeon 780M Graphics as the integrated graphics (which everything else is running off of).
Anything which might help me figure out where to look next or what to try would be useful.
Last edited by tapghoul (2025-08-27 21:14:55)
Making things, breaking yours
He/They
Offline
I am also using KDE Plasma's wayland session and have also started seeing this behavior on a laptop with a dedicated Navi GPU and Renoir integrated GPU. Running a strace command like the following:
strace -t -e %file arkshows the program stalling on this line for a second while the dedicated GPU wakes up:
openat(AT_FDCWD, "/dev/dri/renderD128", O_RDWR|O_CLOEXEC) = 13I guess in the process of probing for GPUs it ends up waking them up and causing this stall.
For me this happens for every Qt-based and gtk4-based program, as well as others like kitty terminal.
Offline
Having the same issue here. Trying to trace the syscall that performs the enumeration reveals that something in mesa is calling the device enumeration function that is waking up the GPUs.
So this appears to be a recent change in mesa/libdrm that's causing this issue. Not sure how to work around it yet but I am working backwards from it to try and come up with a solution.
EDIT: It appears that this is a known issue that is being worked on: mesa #13001 Enumerating Vulkan devices on AMD laptop stalls while freedreno wakes up the dGPU and drm/amd #2295 radv: vkEnumeratePhysicalDevices powers on dGPU
Device enumeration during konsole launch backtrace:
Thread 1 "konsole" hit Catchpoint 1 (call to syscall newfstatat), 0x00007ffff592834e in fstatat64 () from /usr/lib/libc.so.6
(gdb) p/s (const char*)$rsi
$55 = 0x7fffffff93c0 "/dev/dri/card1"
(gdb) bt
#0 0x00007ffff592834e in fstatat64 () at /usr/lib/libc.so.6
#1 0x00007fffedc1c84c in process_device () at ../libdrm-2.4.125/xf86drm.c:4485
#2 0x00007fffedc21fae in drmGetDevices2 () at ../libdrm-2.4.125/xf86drm.c:4794
#3 0x00007fffec3bcdd6 in ??? () at /usr/lib/libEGL_mesa.so.0
#4 0x00007fffec3aff9b in ??? () at /usr/lib/libEGL_mesa.so.0
#5 0x00007fffedcd4562 in QtWaylandClient::QWaylandEglClientBufferIntegration::initialize (this=0x5555556250c0, display=0x55555559c110)
at /usr/src/debug/qt6-wayland/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglclientbufferintegration.cpp:78
#6 0x00007ffff2db5059 in QtWaylandClient::QWaylandIntegration::initializeClientBufferIntegration (this=this@entry=0x5555555a5760)
at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylandintegration.cpp:360
#7 0x00007ffff2db566a in QtWaylandClient::QWaylandIntegration::clientBufferIntegration (this=0x5555555a5760) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylandintegration.cpp:308
#8 0x00007ffff2db10b8 in QtWaylandClient::QWaylandDisplay::clientBufferIntegration (this=<optimized out>) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylanddisplay.cpp:311
#9 QtWaylandClient::QWaylandIntegration::createPlatformOpenGLContext (this=0x5555555a5760, context=0x7fffffffd170) at /usr/src/debug/qt6-wayland/qtwayland/src/client/qwaylandintegration.cpp:152
#10 0x00007ffff6df7380 in QOpenGLContext::create (this=0x7fffffffd170) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qopenglcontext.cpp:374
#11 0x00007fffedd30106 in checkBackend () at /usr/src/debug/plasma-integration/plasma-integration-6.4.4/qt6/src/platformtheme/qtquickrenderersettings.cpp:43
#12 initializeRendererSessions () at /usr/src/debug/plasma-integration/plasma-integration-6.4.4/qt6/src/platformtheme/qtquickrenderersettings.cpp:66
#13 0x00007ffff617f7ea in qt_call_pre_routines () at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:327
#14 QCoreApplicationPrivate::init (this=this@entry=0x5555555978e0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:880
#15 0x00007ffff69a8626 in QGuiApplicationPrivate::init (this=this@entry=0x5555555978e0) at /usr/src/debug/qt6-base/qtbase/src/gui/kernel/qguiapplication.cpp:1638
#16 0x00007ffff72fa6de in QApplicationPrivate::init (this=0x5555555978e0) at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:476
#17 0x000055555555883f in main () at /usr/src/debug/konsole/konsole-25.08.0/src/main.cpp:159Last edited by takatarumc (2025-09-08 23:33:01)
Offline