summaryrefslogtreecommitdiff
path: root/nvbios
diff options
context:
space:
mode:
authorKarol Herbst <karolherbst@gmail.com>2016-10-22 15:26:32 +0200
committerKarol Herbst <karolherbst@gmail.com>2016-10-22 15:26:32 +0200
commit1a2d8f7c6286ad9ad232e51777b37bf52142ce17 (patch)
tree221c2d28f86b9021b61e4c89c353f2bb48ef72ad /nvbios
parenta4fd800cdb2188da1925fc8b6a5d648e1888813f (diff)
nvbios: add nvidia-smi cap entry to power budget
currently no idea if it affects anything in the driver, but it does affect nvidia-smi. Setting that byte to 0xff even causes nvidia-smi to display N/A for the power cap
Diffstat (limited to 'nvbios')
-rw-r--r--nvbios/bios.h2
-rw-r--r--nvbios/power.c8
2 files changed, 9 insertions, 1 deletions
diff --git a/nvbios/bios.h b/nvbios/bios.h
index df466b70..13d112aa 100644
--- a/nvbios/bios.h
+++ b/nvbios/bios.h
@@ -833,6 +833,8 @@ struct envy_bios_power_budget {
uint8_t entriesnum;
uint8_t rlen;
+ uint8_t cap_entry;
+
struct envy_bios_power_budget_entry *entries;
};
diff --git a/nvbios/power.c b/nvbios/power.c
index a1c87084..526e5be3 100644
--- a/nvbios/power.c
+++ b/nvbios/power.c
@@ -508,8 +508,9 @@ int envy_bios_parse_power_budget(struct envy_bios *bios) {
bios_u8(bios, budget->offset + 0x0, &budget->version);
switch(budget->version) {
- case 0x10:
case 0x20:
+ err |= bios_u8(bios, budget->offset + 0x9, &budget->cap_entry);
+ case 0x10:
case 0x30:
err |= bios_u8(bios, budget->offset + 0x1, &budget->hlen);
err |= bios_u8(bios, budget->offset + 0x2, &budget->rlen);
@@ -560,6 +561,11 @@ void envy_bios_print_power_budget(struct envy_bios *bios, FILE *out, unsigned ma
}
fprintf(out, "POWER BUDGET table at 0x%x, version %x\n", budget->offset, budget->version);
+ switch(budget->version) {
+ case 0x20:
+ fprintf(out, "nvidia-smi cap entry: %i\n", budget->cap_entry);
+ break;
+ }
envy_bios_dump_hex(bios, out, budget->offset, budget->hlen, mask);
if (mask & ENVY_BIOS_PRINT_VERBOSE) fprintf(out, "\n");