mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2025-02-01 17:35:19 +00:00
arch: Print details of host hypervisor status & address space size
e.g. on QEMU on KVM: cloud-hypervisor: 17.079406ms: <vmm> INFO:arch/src/x86_64/mod.rs:565 -- Running under nested virtualisation. Hypervisor string: KVMKVMKVM Or under Azure: cloud-hypervisor: 3.881263ms: <vmm> INFO:arch/src/x86_64/mod.rs:565 -- Running under nested virtualisation. Hypervisor string: Microsoft Hv Fixes: #5067 Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
parent
c99a5fc7a5
commit
e661139e1e
@ -554,6 +554,23 @@ pub fn generate_common_cpuid(
|
|||||||
kvm_hyperv: bool,
|
kvm_hyperv: bool,
|
||||||
#[cfg(feature = "tdx")] tdx_enabled: bool,
|
#[cfg(feature = "tdx")] tdx_enabled: bool,
|
||||||
) -> super::Result<Vec<CpuIdEntry>> {
|
) -> super::Result<Vec<CpuIdEntry>> {
|
||||||
|
// SAFETY: cpuid called with valid leaves
|
||||||
|
if unsafe { x86_64::__cpuid(1) }.ecx & 1 << HYPERVISOR_ECX_BIT == 1 << HYPERVISOR_ECX_BIT {
|
||||||
|
// SAFETY: cpuid called with valid leaves
|
||||||
|
let hypervisor_cpuid = unsafe { x86_64::__cpuid(0x4000_0000) };
|
||||||
|
|
||||||
|
let mut identifier: [u8; 12] = [0; 12];
|
||||||
|
identifier[0..4].copy_from_slice(&hypervisor_cpuid.ebx.to_le_bytes()[..]);
|
||||||
|
identifier[4..8].copy_from_slice(&hypervisor_cpuid.ecx.to_le_bytes()[..]);
|
||||||
|
identifier[8..12].copy_from_slice(&hypervisor_cpuid.edx.to_le_bytes()[..]);
|
||||||
|
|
||||||
|
info!(
|
||||||
|
"Running under nested virtualisation. Hypervisor string: {}",
|
||||||
|
String::from_utf8_lossy(&identifier)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
info!("Generating guest CPUID for with physical address size: {phys_bits}");
|
||||||
let cpuid_patches = vec![
|
let cpuid_patches = vec![
|
||||||
// Patch tsc deadline timer bit
|
// Patch tsc deadline timer bit
|
||||||
CpuidPatch {
|
CpuidPatch {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user