From 9d1a7e43a73094527c4038451c9e2e893203fca8 Mon Sep 17 00:00:00 2001 From: Rob Bradford Date: Fri, 29 Oct 2021 10:44:51 +0100 Subject: [PATCH] vmm: Refactor MCFG table creation to take just the PCI segments This matches the lock taking behaviour of other functions in this file. Signed-off-by: Rob Bradford --- vmm/src/acpi.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/vmm/src/acpi.rs b/vmm/src/acpi.rs index 97be12400..ec46e10c5 100644 --- a/vmm/src/acpi.rs +++ b/vmm/src/acpi.rs @@ -5,6 +5,7 @@ use crate::cpu::CpuManager; use crate::device_manager::DeviceManager; use crate::memory_manager::MemoryManager; +use crate::pci_segment::PciSegment; use crate::{GuestMemoryMmap, GuestRegionMmap}; use acpi_tables::sdt::GenericAddress; use acpi_tables::{aml::Aml, rsdp::Rsdp, sdt::Sdt}; @@ -223,13 +224,13 @@ fn create_facp_table(dsdt_offset: GuestAddress) -> Sdt { facp } -fn create_mcfg_table(device_manager: &Arc>) -> Sdt { +fn create_mcfg_table(pci_segments: &[PciSegment]) -> Sdt { let mut mcfg = Sdt::new(*b"MCFG", 36, 1, *b"CLOUDH", *b"CHMCFG ", 1); // MCFG reserved 8 bytes mcfg.append(0u64); - for segment in device_manager.lock().unwrap().pci_segments() { + for segment in pci_segments { // 32-bit PCI enhanced configuration mechanism mcfg.append(PciRangeEntry { base_address: segment.mmio_config_address, @@ -539,7 +540,7 @@ pub fn create_acpi_tables( } // MCFG - let mcfg = create_mcfg_table(device_manager); + let mcfg = create_mcfg_table(device_manager.lock().unwrap().pci_segments()); let mcfg_offset = prev_tbl_off.checked_add(prev_tbl_len).unwrap(); guest_mem .write_slice(mcfg.as_slice(), mcfg_offset)