Summary
Follow-up to the shutdown-contract fix (PR #706 / #687): fcvm's reboot-in-place handling in run_vm_loop (src/commands/podman/mod.rs:~1289) assumes the hypervisor process exits when the guest reboots (true for Firecracker: triple-fault/PSCI reset ends the process, fcvm relaunches). Cloud Hypervisor instead performs guest resets in-process (vm_reboot() logs "Rebooting." and boots the same VM again in the same process), so an intentional guest reboot under CH never reaches fcvm's relaunch logic — the guest silently boot-cycles inside the same CH process while fcvm keeps waiting in vm_manager.wait().
PR #706 removed the shutdown path from this hazard (fcvm_shutdown=acpi makes CH guests power off, which does exit the process). This issue tracks the remaining reboot path: either drive CH reboots through its API (shutdown + relaunch to converge with the Firecracker-style lifecycle), or watch for CH's reboot event via its API socket and run the reboot-in-place bookkeeping then.
Not currently test-visible: no test intentionally reboots a CH guest. Worth closing before anything relies on guest-initiated reboot semantics under --hypervisor cloud-hypervisor.
https://claude.ai/code/session_01QBekRuBULNUgUSGYmgkjyd
Summary
Follow-up to the shutdown-contract fix (PR #706 / #687): fcvm's reboot-in-place handling in
run_vm_loop(src/commands/podman/mod.rs:~1289) assumes the hypervisor process exits when the guest reboots (true for Firecracker: triple-fault/PSCI reset ends the process, fcvm relaunches). Cloud Hypervisor instead performs guest resets in-process (vm_reboot()logs "Rebooting." and boots the same VM again in the same process), so an intentional guest reboot under CH never reaches fcvm's relaunch logic — the guest silently boot-cycles inside the same CH process while fcvm keeps waiting invm_manager.wait().PR #706 removed the shutdown path from this hazard (
fcvm_shutdown=acpimakes CH guests power off, which does exit the process). This issue tracks the remaining reboot path: either drive CH reboots through its API (shutdown + relaunch to converge with the Firecracker-style lifecycle), or watch for CH's reboot event via its API socket and run the reboot-in-place bookkeeping then.Not currently test-visible: no test intentionally reboots a CH guest. Worth closing before anything relies on guest-initiated reboot semantics under
--hypervisor cloud-hypervisor.https://claude.ai/code/session_01QBekRuBULNUgUSGYmgkjyd