#![deny(missing_docs)]
#![cfg(target_arch = "x86_64")]
use kvm_bindings::CpuId;
mod common;
use crate::common::*;
pub mod bit_helper;
mod template;
pub use crate::template::c3;
pub use crate::template::t2;
mod cpu_leaf;
mod transformer;
use crate::transformer::*;
pub use crate::transformer::{Error, VmSpec};
mod brand_string;
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
pub fn filter_cpuid(kvm_cpuid: &mut CpuId, vm_spec: &VmSpec) -> Result<(), Error> {
let maybe_cpuid_transformer: Option<&dyn CpuidTransformer> = match vm_spec.cpu_vendor_id() {
VENDOR_ID_INTEL => Some(&intel::IntelCpuidTransformer {}),
VENDOR_ID_AMD => Some(&amd::AmdCpuidTransformer {}),
_ => None,
};
if let Some(cpuid_transformer) = maybe_cpuid_transformer {
cpuid_transformer.process_cpuid(kvm_cpuid, vm_spec)?;
}
Ok(())
}