mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
hypervisor: improve error chain
On-behalf-of: SAP philipp.schuster@sap.com Signed-off-by: Philipp Schuster <philipp.schuster@cyberus-technology.de>
This commit is contained in:
committed by
Rob Bradford
parent
aa898db8d7
commit
b4c37def26
@@ -299,7 +299,7 @@ pub enum HypervisorCpuError {
|
|||||||
/// Failed to initialize PMU
|
/// Failed to initialize PMU
|
||||||
///
|
///
|
||||||
#[error("Failed to initialize PMU")]
|
#[error("Failed to initialize PMU")]
|
||||||
InitializePmu,
|
InitializePmu(#[source] anyhow::Error),
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
///
|
///
|
||||||
/// Error getting TSC frequency
|
/// Error getting TSC frequency
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ use std::sync::Mutex;
|
|||||||
use std::sync::atomic::{AtomicBool, Ordering};
|
use std::sync::atomic::{AtomicBool, Ordering};
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
use anyhow::Context;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
#[cfg(feature = "sev_snp")]
|
#[cfg(feature = "sev_snp")]
|
||||||
use kvm_bindings::kvm_create_guest_memfd;
|
use kvm_bindings::kvm_create_guest_memfd;
|
||||||
@@ -2198,7 +2200,8 @@ impl cpu::Vcpu for KvmVcpu {
|
|||||||
let cpuid: Vec<kvm_bindings::kvm_cpuid_entry2> =
|
let cpuid: Vec<kvm_bindings::kvm_cpuid_entry2> =
|
||||||
cpuid.iter().map(|e| (*e).into()).collect();
|
cpuid.iter().map(|e| (*e).into()).collect();
|
||||||
let kvm_cpuid = <CpuId>::from_entries(&cpuid)
|
let kvm_cpuid = <CpuId>::from_entries(&cpuid)
|
||||||
.map_err(|_| cpu::HypervisorCpuError::SetCpuid(anyhow!("failed to create CpuId")))?;
|
.context("failed to create CpuId")
|
||||||
|
.map_err(cpu::HypervisorCpuError::SetCpuid)?;
|
||||||
|
|
||||||
self.fd
|
self.fd
|
||||||
.set_cpuid2(&kvm_cpuid)
|
.set_cpuid2(&kvm_cpuid)
|
||||||
@@ -3338,10 +3341,10 @@ impl cpu::Vcpu for KvmVcpu {
|
|||||||
};
|
};
|
||||||
self.fd
|
self.fd
|
||||||
.set_device_attr(&cpu_attr_irq)
|
.set_device_attr(&cpu_attr_irq)
|
||||||
.map_err(|_| cpu::HypervisorCpuError::InitializePmu)?;
|
.map_err(|e| cpu::HypervisorCpuError::InitializePmu(e.into()))?;
|
||||||
self.fd
|
self.fd
|
||||||
.set_device_attr(&cpu_attr)
|
.set_device_attr(&cpu_attr)
|
||||||
.map_err(|_| cpu::HypervisorCpuError::InitializePmu)
|
.map_err(|e| cpu::HypervisorCpuError::InitializePmu(e.into()))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ use std::collections::HashMap;
|
|||||||
use std::num::NonZeroUsize;
|
use std::num::NonZeroUsize;
|
||||||
use std::sync::{Arc, RwLock};
|
use std::sync::{Arc, RwLock};
|
||||||
|
|
||||||
|
#[cfg(target_arch = "x86_64")]
|
||||||
|
use anyhow::Context;
|
||||||
use anyhow::anyhow;
|
use anyhow::anyhow;
|
||||||
#[cfg(target_arch = "x86_64")]
|
#[cfg(target_arch = "x86_64")]
|
||||||
use arc_swap::ArcSwap;
|
use arc_swap::ArcSwap;
|
||||||
@@ -1427,7 +1429,8 @@ impl cpu::Vcpu for MshvVcpu {
|
|||||||
fn set_cpuid2(&self, cpuid: &[CpuIdEntry]) -> cpu::Result<()> {
|
fn set_cpuid2(&self, cpuid: &[CpuIdEntry]) -> cpu::Result<()> {
|
||||||
let cpuid: Vec<mshv_bindings::hv_cpuid_entry> = cpuid.iter().map(|e| (*e).into()).collect();
|
let cpuid: Vec<mshv_bindings::hv_cpuid_entry> = cpuid.iter().map(|e| (*e).into()).collect();
|
||||||
let mshv_cpuid = <CpuId>::from_entries(&cpuid)
|
let mshv_cpuid = <CpuId>::from_entries(&cpuid)
|
||||||
.map_err(|_| cpu::HypervisorCpuError::SetCpuid(anyhow!("failed to create CpuId")))?;
|
.context("failed to create CpuId")
|
||||||
|
.map_err(cpu::HypervisorCpuError::SetCpuid)?;
|
||||||
|
|
||||||
self.fd
|
self.fd
|
||||||
.register_intercept_result_cpuid(&mshv_cpuid)
|
.register_intercept_result_cpuid(&mshv_cpuid)
|
||||||
|
|||||||
Reference in New Issue
Block a user