From 0b6ec345058679f3cea388277d8c6432deb8637b Mon Sep 17 00:00:00 2001 From: Samuel Ortiz Date: Tue, 12 Mar 2019 14:55:35 +0100 Subject: [PATCH] vmm: Retry running a CPU when getting EAGAIN or EINTR from the run ioctl Signed-off-by: Samuel Ortiz --- vmm/src/vm.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/vmm/src/vm.rs b/vmm/src/vm.rs index 72522b3ff..6848d21e9 100644 --- a/vmm/src/vm.rs +++ b/vmm/src/vm.rs @@ -414,10 +414,17 @@ impl<'a> Vm<'a> { VcpuExit::IoapicEoi => {} VcpuExit::Hyperv => {} }, - Err(e) => { - println! {"VCPU {:?} error {:?}", cpu_id, e}; - break; + Err(Error::VcpuRun(ref e)) => { + match e.raw_os_error().unwrap() { + // Why do we check for these if we only return EINVAL? + libc::EAGAIN | libc::EINTR => {} + _ => { + println! {"VCPU {:?} error {:?}", cpu_id, e}; + break; + } + } } + _ => (), } } })