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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user