fix(power-trap-eacces): gracefully handle hypercall errors in power management (#325)

* daemon: reenable built-in power management policy

* xenruntime: gracefully handle power management errors
This commit is contained in:
Ariadne Conill 2024-08-13 01:22:05 -07:00 committed by GitHub
parent dcffaf110e
commit 0358c9c775
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 8 deletions

View File

@ -141,12 +141,12 @@ impl Daemon {
// TODO: Create a way of abstracting early init tasks in kratad.
// TODO: Make initial power management policy configurable.
// FIXME: Power management hypercalls fail when running as an L1 hypervisor.
// let power = runtime.power_management_context().await?;
// power.set_smt_policy(true).await?;
// power
// .set_scheduler_policy("performance".to_string())
// .await?;
let power = runtime.power_management_context().await?;
power.set_smt_policy(true).await?;
power
.set_scheduler_policy("performance".to_string())
.await?;
info!("power management initialized");
info!("krata daemon initialized");
Ok(Self {

View File

@ -1,5 +1,6 @@
use anyhow::Result;
use indexmap::IndexMap;
use log::info;
use xencall::sys::{CpuId, SysctlCputopo};
use crate::RuntimeContext;
@ -151,7 +152,10 @@ impl PowerManagementContext {
.xen
.call
.set_turbo_mode(CpuId::All, enable)
.await?;
.await
.unwrap_or_else(|error| {
info!("non-fatal error while setting SMT policy: {:?}", error);
});
Ok(())
}
@ -161,7 +165,10 @@ impl PowerManagementContext {
.xen
.call
.set_cpufreq_gov(CpuId::All, policy)
.await?;
.await
.unwrap_or_else(|error| {
info!("non-fatal error while setting scheduler policy: {:?}", error);
});
Ok(())
}
}