Skip to content

ksystemstats update breaks GPU sensors in KDE #62056

Description

@al-tr

Is this a new report?

Yes

System Info

Void 6.18.44_1 x86_64 AuthenticAMD notuptodate hold rrrrmmnFFFF

Package(s) Affected

ksystemstats-6.7.4_1

Does a report exist for this bug with the project's home (upstream) and/or another distro?

didn't find any and that's the question where it belongs

After upgrading ksystemstats from 6.6.3_1 to 6.7.4_1, all GPU sensors disappeared from system monitor (KDE plasma)

system:
ksystemstats-6.7.4_1
eudev-3.2.14_2
eudev-libudev-3.2.14_2
NVIDIA TU106, proprietary driver
PCI class: 0x030000

nvidia-smi shows stuff: temp, wattage, usage, etc. kstatsviewer --list | grep '^gpu' only shows:

gpu GPU

no gpu0 sensors are created (used to be on 6.6.3_1), so system monitor does not see any GPU info + thermal monitor plugin (shows CPU/GPU temps in a bar) does not see GPU temps too

downgrading only ksystemstats to 6.6.3_1 immediately restores GPU util, temps, etc.

digged into what causes it, and it seems like systemd vs eudev difference. I'm not sure this is even correct, but that's my limit of system understanding at this point
KDE uses udev_enumerate_add_match_sysattr three times (introduced not so long ago),
https://invent.kde.org/plasma/ksystemstats/-/blob/master/plugins/gpu/LinuxBackend.cpp?blame=1#L52-54

eudev seems to just add three values to list
https://github.com/eudev-project/eudev/blob/master/src/libudev/libudev-enumerate.c#L398
and uses AND between them which obviously results in an empty list

while systemd seems to use OR
https://github.com/systemd/systemd/blob/main/src/libudev/libudev-enumerate.c#L224

so ksystemstats is relying on systemd OR semantics which breaks Void's eudev treats the same calls as AND

not sure what is the correct place for a fix, likely eudev?

Expected behaviour

KDE to see GPU sensors (gpu0...)

kstatsviewer --list | grep '^gpu'
gpu/all/usedVram All GPUs Used Memory
gpu/gpu0/totalVram GPU 1 Total Video Memory
gpu/all All GPUs
gpu/gpu0/usage GPU 1 Usage
gpu/gpu0/memoryFrequency GPU 1 Memory Frequency
gpu/gpu0/temperature GPU 1 Temperature
gpu/gpu0/coreFrequency GPU 1 Frequency
gpu/gpu0/usedVram GPU 1 Video Memory Used
gpu/gpu0/power GPU 1 Power
gpu/gpu0/name GPU 1 Name
gpu/gpu0 GPU 1
gpu/all/usage All GPUs Usage
gpu GPU
gpu/all/totalVram All GPUs Total Memory

Actual behaviour

kstatsviewer --list | grep '^gpu'
gpu GPU

and nothing else

Steps to reproduce

how I "reproduced" the behavior bug (GPU is 0000:26:00.0):

  • udevadm trigger -n -v -s pci -a 'class=0x030000' | grep '0000:26:00.0'
    sees gpu
  • udevadm trigger -n -v -s pci -a 'class=0x030000' -a 'class=0x030200' -a 'class=0x038000' | grep '0000:26:00.0'
    does not

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds-testingTesting a PR or reproducing an issue needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions