Add experimental RTX 5090 (GDDR7) memory temperature support

Reads the per-module GDDR7 DRAM sensors (FBPA DQR) directly and reports
the hotspot by default; --per-module lists each of the 8 modules.
Adds a per-device decode so the existing GDDR6/6X path is unchanged.
This commit is contained in:
Ole Algoritme
2026-07-15 15:42:23 +02:00
parent bac2c5e301
commit 9259d9a2d4
5 changed files with 151 additions and 8 deletions

View File

@@ -4,11 +4,19 @@
#include <stdint.h>
// How to convert a raw register read into degrees Celsius.
enum temp_decode {
DECODE_ADA = 0, // Ada/Ampere: (raw & 0xfff) / 32
DECODE_GDDR_MRCODE, // Blackwell FBPA DQR: byte in bits 23:16 is a GDDR temp
// MR-code; C = (code-20)*2 for code>19, else -(40-code*2)
};
struct device
{
uint32_t bar0;
uint8_t bus, dev, func;
uint32_t offset;
enum temp_decode decode; // how to turn the raw reg into Celsius
uint16_t dev_id;
const char *vram;
const char *arch;
@@ -27,7 +35,7 @@ struct gddr6_ctx {
void gddr6_init(void);
void gddr6_memory_map(void);
void gddr6_cleanup(int signal);
void gddr6_monitor_temperatures(void);
void gddr6_monitor_temperatures(int per_module);
int gddr6_detect_compatible_gpus(void);
#endif // GDDR6_H