Skip to content

Commit 6d8caed

Browse files
committed
TEMP COMMIT
Signed-off-by: Ludvig Liljenberg <[email protected]>
1 parent 5174202 commit 6d8caed

File tree

3 files changed

+48
-24
lines changed

3 files changed

+48
-24
lines changed

.github/workflows/dep_rust.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,19 @@ jobs:
9696
- name: Verify MSRV
9797
run: ./dev/verify-msrv.sh hyperlight-host hyperlight-guest hyperlight-guest-bin hyperlight-common
9898

99+
- name: check kvm
100+
run: ls -al /dev/kvm || true
101+
102+
- name: check groups
103+
run: groups || true
104+
105+
- name: increase ulimit
106+
run: |
107+
ulimit -n || true
108+
ulimit -Sn || true
109+
ulimit -Hn || true
110+
ulimit -n 65535 || true
111+
99112
- name: Run Rust tests
100113
env:
101114
CARGO_TERM_COLOR: always

Justfile

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -86,26 +86,26 @@ test target=default-target features="": (test-unit target features) (test-isolat
8686

8787
# runs unit tests
8888
test-unit target=default-target features="":
89-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} --lib
89+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} --lib -- --show-output --nocapture
9090

9191
# runs tests that requires being run separately, for example due to global state
9292
test-isolated target=default-target features="":
93-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::uninitialized::tests::test_trace_trace --exact --ignored
94-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::uninitialized::tests::test_log_trace --exact --ignored
95-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::initialized_multi_use::tests::create_1000_sandboxes --exact --ignored
96-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::outb::tests::test_log_outb_log --exact --ignored
97-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- mem::shared_mem::tests::test_drop --exact --ignored
98-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --test integration_test -- log_message --exact --ignored
93+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::uninitialized::tests::test_trace_trace --exact --ignored --show-output --nocapture
94+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::uninitialized::tests::test_log_trace --exact --ignored --show-output --nocapture
95+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::initialized_multi_use::tests::create_1000_sandboxes --exact --ignored --show-output --nocapture
96+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- sandbox::outb::tests::test_log_outb_log --exact --ignored --show-output --nocapture
97+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- mem::shared_mem::tests::test_drop --exact --ignored --show-output --nocapture
98+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --test integration_test -- log_message --exact --ignored --show-output --nocapture
9999
@# metrics tests
100-
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F function_call_metrics," + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- metrics::tests::test_metrics_are_emitted --exact
100+
cargo test {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F function_call_metrics," + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} -p hyperlight-host --lib -- metrics::tests::test_metrics_are_emitted --exact --show-output --nocapture
101101
# runs integration tests. Guest can either be "rust" or "c"
102102
test-integration guest target=default-target features="":
103103
@# run execute_on_heap test with feature "executable_heap" on and off
104-
{{if os() == "windows" { "$env:" } else { "" } }}GUEST="{{guest}}"{{if os() == "windows" { ";" } else { "" } }} cargo test --profile={{ if target == "debug" { "dev" } else { target } }} --test integration_test execute_on_heap {{ if features =="" {" --features executable_heap"} else {"--features executable_heap," + features} }} -- --ignored
105-
{{if os() == "windows" { "$env:" } else { "" } }}GUEST="{{guest}}"{{if os() == "windows" { ";" } else { "" } }} cargo test --profile={{ if target == "debug" { "dev" } else { target } }} --test integration_test execute_on_heap {{ if features =="" {""} else {"--features " + features} }} -- --ignored
104+
{{if os() == "windows" { "$env:" } else { "" } }}GUEST="{{guest}}"{{if os() == "windows" { ";" } else { "" } }} cargo test --profile={{ if target == "debug" { "dev" } else { target } }} --test integration_test execute_on_heap {{ if features =="" {" --features executable_heap"} else {"--features executable_heap," + features} }} -- --ignored --show-output --nocapture
105+
{{if os() == "windows" { "$env:" } else { "" } }}GUEST="{{guest}}"{{if os() == "windows" { ";" } else { "" } }} cargo test --profile={{ if target == "debug" { "dev" } else { target } }} --test integration_test execute_on_heap {{ if features =="" {""} else {"--features " + features} }} -- --ignored --show-output --nocapture
106106

107107
@# run the rest of the integration tests
108-
{{if os() == "windows" { "$env:" } else { "" } }}GUEST="{{guest}}"{{if os() == "windows" { ";" } else { "" } }} cargo test -p hyperlight-host {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} --test '*'
108+
{{if os() == "windows" { "$env:" } else { "" } }}GUEST="{{guest}}"{{if os() == "windows" { ";" } else { "" } }} cargo test -p hyperlight-host {{ if features =="" {''} else if features=="no-default-features" {"--no-default-features" } else {"--no-default-features -F " + features } }} --profile={{ if target == "debug" { "dev" } else { target } }} --test '*' -- --show-output --nocapture
109109

110110
# runs seccomp tests
111111
test-seccomp target=default-target features="":

src/hyperlight_host/src/hypervisor/kvm.rs

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ use std::sync::Arc;
2020
#[cfg(gdb)]
2121
use std::sync::Mutex;
2222
use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
23+
use std::thread;
24+
use std::time::Duration;
2325

2426
use kvm_bindings::{KVM_MEM_READONLY, kvm_fpu, kvm_regs, kvm_userspace_memory_region};
2527
use kvm_ioctls::Cap::UserMemory;
@@ -48,23 +50,32 @@ use crate::{Result, log_then_return, new_error};
4850
/// Return `true` if the KVM API is available, version 12, and has UserMemory capability, or `false` otherwise
4951
#[instrument(skip_all, parent = Span::current(), level = "Trace")]
5052
pub(crate) fn is_hypervisor_present() -> bool {
51-
if let Ok(kvm) = Kvm::new() {
52-
let api_version = kvm.get_api_version();
53-
match api_version {
54-
version if version == 12 && kvm.check_extension(UserMemory) => true,
55-
12 => {
56-
log::info!("KVM does not have KVM_CAP_USER_MEMORY capability");
57-
false
53+
for _ in 0..10 {
54+
let entries = std::fs::read_dir("/proc/self/fd").unwrap();
55+
println!("Current open file descriptors: {}", entries.count());
56+
match Kvm::new() {
57+
Ok(kvm) => {
58+
let api_version = kvm.get_api_version();
59+
match api_version {
60+
version if version == 12 && kvm.check_extension(UserMemory) => return true,
61+
12 => {
62+
println!("KVM does not have KVM_CAP_USER_MEMORY capability");
63+
log::info!("KVM does not have KVM_CAP_USER_MEMORY capability");
64+
}
65+
version => {
66+
println!("KVM GET_API_VERSION returned {}, expected 12", version);
67+
log::info!("KVM GET_API_VERSION returned {}, expected 12", version);
68+
}
69+
}
5870
}
59-
version => {
60-
log::info!("KVM GET_API_VERSION returned {}, expected 12", version);
61-
false
71+
Err(e) => {
72+
log::info!("KVM is not available on this system: {:?}", e);
73+
println!("KVM is not available on this system: {:?}", e);
6274
}
6375
}
64-
} else {
65-
log::info!("KVM is not available on this system");
66-
false
76+
thread::sleep(Duration::from_millis(100));
6777
}
78+
return false;
6879
}
6980

7081
#[cfg(gdb)]

0 commit comments

Comments
 (0)