Skip to content

[Bug] Dual AMD GPU functionality breaks hhd's power‑profile‑daemon and CPU scheduling #215

@KIDult2226

Description

@KIDult2226

Description

When connecting an external AMD GPU (eGPU) in addition to the internal AMD GPU, requiring the use of Mesa for both, GPU‑related functionality in hhd fails to start. This prevents the CPU power-profile-daemon from starting, which in turn stops scheduling adjustments from working.

Image

Steps to Reproduce

  1. Connect an external AMD GPU to a system already using an AMD iGPU.
  2. Start hhd.service

Expected Behavior

  • Both GPUs should be correctly detected and initialized.
  • AMD GPU plugin should load without errors.
  • power-profile-daemon should start and allow CPU scheduling modifications.

Actual Behavior

  • AMD GPU plugin fails to start due to missing pp_od_clk_voltage path.
  • Related functions are disabled, causing power-profile-daemon not to launch.
  • CPU scheduling adjustments cannot be applied.

System Information

OS: CachyOS x86_64
Host: GPD Win Max 2 (G1619-04, Ver.1.0)
Kernel: Linux 6.16.2-2-cachyos-lto
DE: GNOME 48.4 (Wayland)
CPU: AMD Ryzen 7 7840U (16) @ 5.13 GHz
GPU 1: AMD Radeon RX 9070 XT [Discrete, External]
GPU 2: AMD Radeon 780M Graphics [Integrated]
RAM: 46.85 GiB
Locale: zh_CN.UTF-8
Image

Relevant Logs

2025-08-26 21:40:17,679 logging         INFO    Handheld Daemon starting...
2025-08-26 21:40:17,680 __main__        INFO    Trying to acquire hhd lock...
2025-08-26 21:40:17,681 utils           INFO    Running under Linux distro 'arch'.
2025-08-26 21:40:17,691 __main__        INFO    Running autodetection...
2025-08-26 21:40:17,725 __main__        INFO    Found plugin providers: adjustor, aura, ayaneo, bootc, debug, generic, gpd_win, legion_go, msi_claw, onexplayer, orange_pi, overlay, power, powerbuttond, rgb, rog_ally
2025-08-26 21:40:17,735 __main__        INFO    Loaded the following plugins:
                                                  - adjustor: adjustor_smu, adjustor_smu_qam, adjustor_init, adjustor_main, adjustor_battery, adjustor_ppd
                                                  -  gpd_win: gpd_win_controllers@'GPD Win Max 2 (04)', gpd_wincontrols@'GPD Win Max 2 (04)'
                                                  -  overlay: overlay
                                                  -    power: power
                                                  - powerbuttond: powerbuttond@'GPD Win Max 2'
                                                  -      rgb: controller_rgb
2025-08-26 21:40:17,736 __main__        INFO    Loaded the following locales:
                                                 - adjustor (20): /usr/lib/python3.13/site-packages/hhd/i18n/./
                                                 - hhd (10): /usr/lib/python3.13/site-packages/hhd/i18n/./
2025-08-26 21:40:17,737 __init__        INFO    Found thermal zones:
2025-08-26 21:40:17,737 __init__        INFO      /sys/class/thermal/thermal_zone0/temp: hot @ 105C
2025-08-26 21:40:17,737 __init__        INFO    Found battery:
                                                /sys/class/power_supply/BAT0
2025-08-26 21:40:17,739 __main__        INFO    Reloading configuration.
2025-08-26 21:40:17,786 __main__        INFO    Handheld Daemon Version: 3.19.4
2025-08-26 21:40:17,787 __main__        INFO    Adjustor Version: 3.11.4
2025-08-26 21:40:17,790 __main__        INFO    Overlay Version: 
2025-08-26 21:40:17,791 __main__        INFO    No profiles found.
2025-08-26 21:40:17,791 __main__        INFO    Initialization Complete!
2025-08-26 21:40:17,798 __main__        INFO    AC status is: True
2025-08-26 21:40:17,805 acpi            INFO    'acpi_call' modprobe output:
2025-08-26 21:40:17,807 __init__        WARNING Setting battery alarm to 164985/3882000 mAh/mWh (5%)
2025-08-26 21:40:17,841 __init__        INFO    Starting shortcut loop with:
                                                kbd: True, touch: True, custom: False, ctrl: True, disable_touch: False
2025-08-26 21:40:17,842 sdl             ERROR   Failed to load SDL gamepad mappings from /usr/share/sdl/gamecontrollerdb.txt:
                                                [Errno 2] No such file or directory: '/usr/share/sdl/gamecontrollerdb.txt'
2025-08-26 21:40:17,937 events          INFO    Starting ACPI Event handler.
2025-08-26 21:40:17,937 hhd             INFO    Starting FUSE mount for /sys.
2025-08-26 21:40:17,938 utils           INFO    Found GPU at:
                                                '/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon6'
2025-08-26 21:40:17,939 utils           INFO    Creating bind mount for:
                                                '/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon6'
                                                to:
                                                '/run/hhd-tdp/hwmon'
2025-08-26 21:40:17,941 utils           INFO    Making bind mount private.
2025-08-26 21:40:17,942 utils           INFO    Launching FUSE mount over:
                                                '/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon6'
2025-08-26 21:40:17,962 utils           INFO    Starting TDP client on socket:
                                                '/run/hhd-tdp/socket'
2025-08-26 21:40:17,963 utils           INFO    Connected to TDP socket.
2025-08-26 21:40:17,964 base            INFO    Starting isa keyboard powerbutton handler for device 'GPD Win Max 2'.
2025-08-26 21:40:17,965 base            INFO    Waiting for steam to launch.
2025-08-26 21:40:17,971 __main__        INFO    Reloading settings.
2025-08-26 21:40:17,978 __init__        ERROR   Failed to get AMD GPU status:
                                                [Errno 2] No such file or directory: '/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon6/device/pp_od_clk_voltage'
2025-08-26 21:40:17,978 __init__        ERROR   Traceback (most recent call last):
                                                  File "/usr/lib/python3.13/site-packages/adjustor/drivers/gpu/__init__.py", line 102, in settings
                                                    status = get_igpu_status()
                                                  File "/usr/lib/python3.13/site-packages/adjustor/fuse/gpu.py", line 84, in get_igpu_status
                                                    with open(os.path.join(hwmon, GPU_FREQUENCY_PATH), "r") as f:
                                                         ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                                FileNotFoundError: [Errno 2] No such file or directory: '/sys/devices/pci0000:00/0000:00:01.1/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon6/device/pp_od_clk_voltage'
                                                
2025-08-26 21:40:17,979 __init__        ERROR   Could not get frequency status. Disabling AMD GPU plugin.
2025-08-26 21:40:17,983 platform        INFO    Could not enumerate platform profile choices. Disabling platform profile.
2025-08-26 21:40:18,010 alib            INFO    Sending SMU command with 4 parameters:
                                                 -   fast_limit (0x06): 20
                                                 -   slow_limit (0x07): 20
                                                 -   skin_limit (0x2e): 18
                                                 -  stapm_limit (0x05): 18
2025-08-26 21:40:18,011 acpi            INFO    Executing ACPI call:
                                                '\_SB.ALIB 0x0c b160006204e000007204e00002e504600000550460000'
2025-08-26 21:40:18,063 base            INFO    Launching emulated controller.
2025-08-26 21:40:18,065 outputs         INFO    Gamepadui closed. Disabling touchpad emulation.
2025-08-26 21:40:18,132 __init__        INFO    Opening virtual device 'Xbox Elite'.
2025-08-26 21:40:18,142 __init__        ERROR   Monkey patch probably failed. Could not create evdev device with uniq:
                                                [Errno 22] Invalid argument
2025-08-26 21:40:18,144 base            INFO    Emulated controller launched, have fun!
2025-08-26 21:40:19,846 controllers     INFO    Found new shortcut devices:
                                                 - 'GXTP7385:00 27C6:0113' [27c6:0113] (Touchscreen[GPD Win Max 2 (04)])

Additional Notes

  • Issue occurs only when both GPUs are AMD and require Mesa simultaneously.
  • Disabling one GPU allows hhd to function normally.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions