Fixed it. I was missing these two kernel options:
This option enables a tickless system: timer interrupts will
only trigger on an as-needed basis both when the system is
busy and when the system is idle.
This option causes RCU to attempt to accelerate grace periods
in order to allow CPUs to enter dynticks-idle state more
quickly. On the other hand, this option increases the overhead
of the dynticks-idle checking, particularly on systems with
large numbers of CPUs.
The second one depends on the first. After enabling both of those, I could query my GPU. I don't know why both are needed, but I'm guessing it's something to do with the interrupts. On my main desktop machine, only the first one is set.
Anyway, I'm off to sleep. Hope this serves somebody.