Skip to content

Commit ed20ca6

Browse files
committed
fix: Workaround weird driver bug with RX 7900 XTX and power limit
1 parent 5e2dfdf commit ed20ca6

File tree

1 file changed

+14
-6
lines changed
  • lact-daemon/src/server/gpu_controller

1 file changed

+14
-6
lines changed

lact-daemon/src/server/gpu_controller/mod.rs

+14-6
Original file line numberDiff line numberDiff line change
@@ -639,9 +639,13 @@ impl GpuController {
639639
}
640640
}
641641

642-
hw_mon
643-
.set_power_cap(cap)
644-
.with_context(|| format!("Failed to set power cap: {cap}"))?;
642+
// Due to possible driver bug, RX 7900 XTX really doesn't like when we set the same value again.
643+
// But, also in general we want to avoid setting same value twice
644+
if Ok(cap) != hw_mon.get_power_cap() {
645+
hw_mon
646+
.set_power_cap(cap)
647+
.with_context(|| format!("Failed to set power cap: {cap}"))?;
648+
}
645649

646650
// Reapply old power level
647651
if let Some(level) = original_performance_level {
@@ -651,9 +655,13 @@ impl GpuController {
651655
}
652656
} else if let Ok(hw_mon) = self.first_hw_mon() {
653657
if let Ok(default_cap) = hw_mon.get_power_cap_default() {
654-
hw_mon.set_power_cap(default_cap).with_context(|| {
655-
format!("Failed to set power cap to default cap: {default_cap}")
656-
})?;
658+
// Due to possible driver bug, RX 7900 XTX really doesn't like when we set the same value again.
659+
// But, also in general we want to avoid setting same value twice
660+
if Ok(default_cap) != hw_mon.get_power_cap() {
661+
hw_mon.set_power_cap(default_cap).with_context(|| {
662+
format!("Failed to set power cap to default cap: {default_cap}")
663+
})?;
664+
}
657665
}
658666
}
659667

0 commit comments

Comments
 (0)