From f4a956a60a8236fb1a263e9dca55fbd0e3bf90de Mon Sep 17 00:00:00 2001 From: Sebastien Boeuf Date: Wed, 11 Mar 2020 10:12:37 +0100 Subject: [PATCH] vmm: Remove 32 bits MMIO range from correct address space The 32 bits MMIO address space is handled separately from the 64 bits one. For this reason, we need to invoke the appropriate freeing function to remove a range from this address space. Signed-off-by: Sebastien Boeuf --- vmm/src/device_manager.rs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/vmm/src/device_manager.rs b/vmm/src/device_manager.rs index df7194e92..6301a475d 100644 --- a/vmm/src/device_manager.rs +++ b/vmm/src/device_manager.rs @@ -354,12 +354,12 @@ impl DeviceRelocation for AddressManager { } PciBarRegionType::Memory32BitRegion | PciBarRegionType::Memory64BitRegion => { // Update system allocator - self.allocator - .lock() - .unwrap() - .free_mmio_addresses(GuestAddress(old_base), len as GuestUsize); - if region_type == PciBarRegionType::Memory32BitRegion { + self.allocator + .lock() + .unwrap() + .free_mmio_hole_addresses(GuestAddress(old_base), len as GuestUsize); + self.allocator .lock() .unwrap() @@ -375,6 +375,11 @@ impl DeviceRelocation for AddressManager { ) })?; } else { + self.allocator + .lock() + .unwrap() + .free_mmio_addresses(GuestAddress(old_base), len as GuestUsize); + self.allocator .lock() .unwrap()