Currently do_pci_unregister_device() calls memory_region_del_subregion() on the device's bus_master_enable_region and the device's iommu region. But the bus_master_enable_region is an _alias_ to the iommu region, the iommu region is _not_ a subregion of it. I suspect this has slipped by only because PCI hot unplug has not been tested with the new PCI DMA address space handling. This patch removes the bogus call.
Signed-off-by: David Gibson <da...@gibson.dropbear.id.au> --- hw/pci/pci.c | 1 - 1 file changed, 1 deletion(-) diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 0ba39e6..58d3f69 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -875,7 +875,6 @@ static void do_pci_unregister_device(PCIDevice *pci_dev) pci_config_free(pci_dev); address_space_destroy(&pci_dev->bus_master_as); - memory_region_del_subregion(&pci_dev->bus_master_enable_region, pci_dev->iommu); pci_dev->bus->iommu_dtor_fn(pci_dev->iommu); memory_region_destroy(&pci_dev->bus_master_enable_region); } -- 1.7.10.4