Hermit does not sleep with multiple CPUs when MWAIT is available

Aperta
#2,706 3 commenti 0 reazioni 1 assegnatario Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@stlankes ci sta già lavorando.

Dal 8/9/2026.

Valutazione

Questa issue non è ancora stata valutata.

Descrizione

To reproduce:

use std::thread;
use std::time::Duration;

#[cfg(target_os = "hermit")]
use hermit as _;

fn main() {
	loop {
		thread::sleep(Duration::from_hours(1));
	}
}

Build:

cargo build --target=x86_64-unknown-hermit -Zbuild-std=std,panic_abort --features hermit/smp,hermit/loader --package hello_world

Run without issue (no MWAIT):

qemu-system-x86_64 \
-cpu Skylake-Client \
-smp 2 \
-m 1G \
-display none \
-serial stdio \
-kernel hermit-loader-x86_64-multiboot \
-initrd target/x86_64-unknown-hermit/debug/hello_world

Run with MWAIT (use -cpu max):

qemu-system-x86_64 \
-cpu max \
-smp 2 \
-m 1G \
-display none \
-serial stdio \
-kernel hermit-loader-x86_64-multiboot \
-initrd target/x86_64-unknown-hermit/debug/hello_world

Now, two CPUs are fully utilized.

Is this expected or a bug?

Lingua principale
Rust
Stelle
1.5k
Fork
138
Merge medio
1g 45m
PR unite (30g)
12

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di hermit-os/kernel

Tutte le issue di hermit-os/kernel

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.