Skip to content

Commit

Permalink
Merge pull request #718 from hermit-os/lazy_lock
Browse files Browse the repository at this point in the history
refactor: migrate from `lazy_static` to `std::sync::LazyLock`
  • Loading branch information
mkroening authored Jul 26, 2024
2 parents 2ca210b + eceddbe commit 5a1158b
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 45 deletions.
7 changes: 0 additions & 7 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@ env_logger = "0.11"
gdbstub = "0.7"
gdbstub_arch = "0.3"
hermit-entry = { version = "0.10", features = ["loader"] }
lazy_static = "1.5"
libc = "0.2"
log = "0.4"
mac_address = "1.1"
Expand Down
7 changes: 2 additions & 5 deletions src/linux/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,13 @@ use std::{
io,
net::{TcpListener, TcpStream},
os::unix::prelude::JoinHandleExt,
sync::{Arc, Barrier},
sync::{Arc, Barrier, LazyLock},
thread,
};

use core_affinity::CoreId;
use gdbstub::stub::{DisconnectReason, GdbStub};
use kvm_ioctls::Kvm;
use lazy_static::lazy_static;
use libc::{SIGRTMAX, SIGRTMIN};
use nix::sys::{
pthread::{pthread_kill, Pthread},
Expand All @@ -33,9 +32,7 @@ use crate::{
vm::UhyveVm,
};

lazy_static! {
static ref KVM: Kvm = Kvm::new().unwrap();
}
static KVM: LazyLock<Kvm> = LazyLock::new(|| Kvm::new().unwrap());

/// The signal for kicking vCPUs out of KVM_RUN.
///
Expand Down
61 changes: 29 additions & 32 deletions src/macos/x86_64/vcpu.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,10 @@

use std::{
arch::x86_64::__cpuid_count,
sync::{Arc, Mutex},
sync::{Arc, LazyLock, Mutex},
};

use burst::x86::{disassemble_64, InstructionOperation, OperandType};
use lazy_static::lazy_static;
use log::{debug, trace};
use uhyve_interface::{GuestPhysAddr, Hypercall};
use x86_64::{
Expand Down Expand Up @@ -125,36 +124,34 @@ fn cap2ctrl(cap: u64, ctrl: u64) -> u64 {
(ctrl | (cap & 0xffffffff)) & (cap >> 32)
}

lazy_static! {
static ref CAP_PINBASED: u64 = {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::PINBASED).unwrap() };
cap2ctrl(cap, PIN_BASED_INTR | PIN_BASED_NMI | PIN_BASED_VIRTUAL_NMI)
};
static ref CAP_PROCBASED: u64 = {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::PROCBASED).unwrap() };
cap2ctrl(
cap,
CPU_BASED_SECONDARY_CTLS
| CPU_BASED_MWAIT
| CPU_BASED_MSR_BITMAPS
| CPU_BASED_MONITOR
| CPU_BASED_TSC_OFFSET
| CPU_BASED_TPR_SHADOW,
)
};
static ref CAP_PROCBASED2: u64 = {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::PROCBASED2).unwrap() };
cap2ctrl(cap, CPU_BASED2_RDTSCP | CPU_BASED2_APIC_REG_VIRT)
};
static ref CAP_ENTRY: u64 = {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::ENTRY).unwrap() };
cap2ctrl(cap, VMENTRY_LOAD_EFER | VMENTRY_GUEST_IA32E)
};
static ref CAP_EXIT: u64 = {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::EXIT).unwrap() };
cap2ctrl(cap, 0)
};
}
static CAP_PINBASED: LazyLock<u64> = LazyLock::new(|| {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::PINBASED).unwrap() };
cap2ctrl(cap, PIN_BASED_INTR | PIN_BASED_NMI | PIN_BASED_VIRTUAL_NMI)
});
static CAP_PROCBASED: LazyLock<u64> = LazyLock::new(|| {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::PROCBASED).unwrap() };
cap2ctrl(
cap,
CPU_BASED_SECONDARY_CTLS
| CPU_BASED_MWAIT
| CPU_BASED_MSR_BITMAPS
| CPU_BASED_MONITOR
| CPU_BASED_TSC_OFFSET
| CPU_BASED_TPR_SHADOW,
)
});
static CAP_PROCBASED2: LazyLock<u64> = LazyLock::new(|| {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::PROCBASED2).unwrap() };
cap2ctrl(cap, CPU_BASED2_RDTSCP | CPU_BASED2_APIC_REG_VIRT)
});
static CAP_ENTRY: LazyLock<u64> = LazyLock::new(|| {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::ENTRY).unwrap() };
cap2ctrl(cap, VMENTRY_LOAD_EFER | VMENTRY_GUEST_IA32E)
});
static CAP_EXIT: LazyLock<u64> = LazyLock::new(|| {
let cap: u64 = { read_vmx_cap(&xhypervisor::VMXCap::EXIT).unwrap() };
cap2ctrl(cap, 0)
});

pub struct XhyveCpu {
id: u32,
Expand Down

0 comments on commit 5a1158b

Please sign in to comment.