From b107bfcf2c2962a38105b95e53d3490fb17c62db Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Tue, 23 Jun 2020 13:11:00 +0100 Subject: [PATCH] vmm: cpu: Add info!() level debugging to vCPU handling These messages are intended to be useful to support debugging related to vCPU hotplug/unplug issues. Signed-off-by: Rob Bradford --- vmm/src/cpu.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/vmm/src/cpu.rs b/vmm/src/cpu.rs index 3b8e9f48a..f8e5ac724 100644 --- a/vmm/src/cpu.rs +++ b/vmm/src/cpu.rs @@ -692,6 +692,8 @@ impl CpuManager { entry_point: Option, snapshot: Option, ) -> Result>> { + info!("Creating vCPU: cpu_id = {}", cpu_id); + let interrupt_controller = if let Some(interrupt_controller) = &self.interrupt_controller { Some(interrupt_controller.clone()) } else { @@ -749,6 +751,14 @@ impl CpuManager { } fn create_vcpus(&mut self, desired_vcpus: u8, entry_point: Option) -> Result<()> { + info!( + "Request to create new vCPUs: desired = {}, max = {}, allocated = {}, present = {}", + desired_vcpus, + self.config.max_vcpus, + self.vcpus.len(), + self.present_vcpus() + ); + if desired_vcpus > self.config.max_vcpus { return Err(Error::DesiredVCPUCountExceedsMax); } @@ -777,6 +787,8 @@ impl CpuManager { .vcpu_run_interrupted .clone(); + info!("Starting vCPU: cpu_id = {}", cpu_id); + let handle = Some( thread::Builder::new() .name(format!("vcpu{}", cpu_id)) @@ -856,6 +868,13 @@ impl CpuManager { (desired_vcpus - self.present_vcpus() + 1) as usize, )); + info!( + "Starting vCPUs: desired = {}, allocated = {}, present = {}", + desired_vcpus, + self.vcpus.len(), + self.present_vcpus() + ); + for cpu_id in self.present_vcpus()..desired_vcpus { let vcpu = Arc::clone(&self.vcpus[cpu_id as usize]); self.start_vcpu(vcpu, vcpu_thread_barrier.clone(), inserting)?; @@ -875,6 +894,7 @@ impl CpuManager { } fn remove_vcpu(&mut self, cpu_id: u8) -> Result<()> { + info!("Removing vCPU: cpu_id = {}", cpu_id); let mut state = &mut self.vcpu_states[usize::from(cpu_id)]; state.kill.store(true, Ordering::SeqCst); state.signal_thread();