vmm: cpu: Pass CpusConfig to simplify the new() prototype

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
Samuel Ortiz 2020-03-16 18:14:15 +01:00 committed by Rob Bradford
parent b584ec3fb3
commit 0646a90626
2 changed files with 10 additions and 14 deletions

View File

@ -10,6 +10,8 @@
// //
// SPDX-License-Identifier: Apache-2.0 AND BSD-3-Clause // SPDX-License-Identifier: Apache-2.0 AND BSD-3-Clause
// //
use crate::config::CpusConfig;
use crate::device_manager::DeviceManager; use crate::device_manager::DeviceManager;
#[cfg(feature = "acpi")] #[cfg(feature = "acpi")]
use acpi_tables::{aml, aml::Aml, sdt::SDT}; use acpi_tables::{aml, aml::Aml, sdt::SDT};
@ -507,22 +509,21 @@ impl VcpuState {
impl CpuManager { impl CpuManager {
pub fn new( pub fn new(
boot_vcpus: u8, config: &CpusConfig,
max_vcpus: u8,
device_manager: &Arc<Mutex<DeviceManager>>, device_manager: &Arc<Mutex<DeviceManager>>,
guest_memory: GuestMemoryAtomic<GuestMemoryMmap>, guest_memory: GuestMemoryAtomic<GuestMemoryMmap>,
kvm: &Kvm, kvm: &Kvm,
fd: Arc<VmFd>, fd: Arc<VmFd>,
reset_evt: EventFd, reset_evt: EventFd,
) -> Result<Arc<Mutex<CpuManager>>> { ) -> Result<Arc<Mutex<CpuManager>>> {
let mut vcpu_states = Vec::with_capacity(usize::from(max_vcpus)); let mut vcpu_states = Vec::with_capacity(usize::from(config.max_vcpus));
vcpu_states.resize_with(usize::from(max_vcpus), VcpuState::default); vcpu_states.resize_with(usize::from(config.max_vcpus), VcpuState::default);
let device_manager = device_manager.lock().unwrap(); let device_manager = device_manager.lock().unwrap();
let cpuid = CpuManager::patch_cpuid(kvm)?; let cpuid = CpuManager::patch_cpuid(kvm)?;
let cpu_manager = Arc::new(Mutex::new(CpuManager { let cpu_manager = Arc::new(Mutex::new(CpuManager {
boot_vcpus, boot_vcpus: config.boot_vcpus,
max_vcpus, max_vcpus: config.max_vcpus,
io_bus: device_manager.io_bus().clone(), io_bus: device_manager.io_bus().clone(),
mmio_bus: device_manager.mmio_bus().clone(), mmio_bus: device_manager.mmio_bus().clone(),
ioapic: device_manager.ioapic().clone(), ioapic: device_manager.ioapic().clone(),

View File

@ -314,7 +314,6 @@ impl Vm {
let memory_manager = MemoryManager::new(fd.clone(), &config.lock().unwrap().memory.clone()) let memory_manager = MemoryManager::new(fd.clone(), &config.lock().unwrap().memory.clone())
.map_err(Error::MemoryManager)?; .map_err(Error::MemoryManager)?;
let guest_memory = memory_manager.lock().unwrap().guest_memory();
let device_manager = DeviceManager::new( let device_manager = DeviceManager::new(
fd.clone(), fd.clone(),
config.clone(), config.clone(),
@ -325,21 +324,17 @@ impl Vm {
) )
.map_err(Error::DeviceManager)?; .map_err(Error::DeviceManager)?;
let on_tty = unsafe { libc::isatty(libc::STDIN_FILENO as i32) } != 0;
let boot_vcpus = config.lock().unwrap().cpus.boot_vcpus;
let max_vcpus = config.lock().unwrap().cpus.max_vcpus;
let cpu_manager = cpu::CpuManager::new( let cpu_manager = cpu::CpuManager::new(
boot_vcpus, &config.lock().unwrap().cpus.clone(),
max_vcpus,
&device_manager, &device_manager,
guest_memory, memory_manager.lock().unwrap().guest_memory(),
&kvm, &kvm,
fd, fd,
reset_evt, reset_evt,
) )
.map_err(Error::CpuManager)?; .map_err(Error::CpuManager)?;
let on_tty = unsafe { libc::isatty(libc::STDIN_FILENO as i32) } != 0;
Ok(Vm { Ok(Vm {
kernel, kernel,
initramfs, initramfs,