Skip to content

dGPU re-enumerates after suspend/resume in integrated mode (zombie state) #230

@heymuun

Description

@heymuun

Describe the bug
After switching to integrated mode with EnvyControl, the NVIDIA dGPU is correctly disabled at boot. However, after suspend/resume, the BIOS re‑enumerates the NVIDIA GPU and exposes it to the kernel again. This leaves the device in a “zombie” state (present in PCI tree, but unbound to any driver), which wastes power and can cause instability.


To Reproduce
Steps to reproduce the behavior:

  1. Run sudo envycontrol -s integrated
  2. Reboot → dGPU is disabled (not visible in lspci, renderer is AMD iGPU).
  3. Suspend the system.
  4. Resume → kernel logs show NVIDIA PCI devices (0000:01:00.0 and 0000:01:00.1) being re‑added.
  5. dGPU remains unbound, but present in PCI tree.

Expected behavior
The dGPU should remain disabled after suspend/resume, with no PCI re‑enumeration. EnvyControl should either:

  • Automatically remove the device again after resume, or
  • Bind it to a safe driver (e.g. Nouveau) to prevent unmanaged zombie state.

System Information:

  • Model: ASUS TUF Gaming A15 FA507UV
  • Distro: Fedora Linux 43 (GNOME, previously KDE Plasma)
  • Kernel: 6.17.11-300.fc43.x86_64
  • DE/WM and Display Manager: GNOME 45 with GDM
  • EnvyControl version: 3.5.2
  • Nvidia driver version: None installed (no matching packages in dnf list installed | grep nvidia)
  • lspci output (before suspend):
    (no NVIDIA devices listed)
  • lspci output (after suspend/resume):
    pci 0000:01:00.0: [10de:28e0] VGA compatible controller pci 0000:01:00.1: [10de:22be] Audio device
  • Kernel logs (after resume):
    pcieport 0000:00:01.1: Slot(0): Card present pci 0000:01:00.0: [10de:28e0] type 00 class 0x030000 PCIe Legacy Endpoint pci 0000:01:00.1: [10de:22be] type 00 class 0x040300 PCIe Endpoint input: HDA NVidia HDMI/DP,pcm=3 ...

Screenshot: Basically I closed my laptop lid DURING integrated mode to check ZOMBIE dgpu wake up

Image

Additional context

  • glxinfo confirms AMD Radeon 780M iGPU is the active renderer.
  • lspci shows no NVIDIA device before suspend, but devices reappear after resume.
  • journalctl -k logs confirm PCI hotplug events for NVIDIA GPU/audio controller after resume.
  • Workarounds tested: binding to Nouveau (safe hold) vs. systemd sleep hook to auto‑remove PCI device.

Suggested fix
Add a systemd sleep hook in EnvyControl that automatically re‑removes the dGPU after resume, or provide an option to bind it to Nouveau for safe handling of BIOS wakeups.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions