Index: hv/tools/python/xen/xend/server/pciif.py =================================================================== --- hv.orig/tools/python/xen/xend/server/pciif.py +++ hv/tools/python/xen/xend/server/pciif.py @@ -493,12 +493,14 @@ class PciController(DevController): # DMA transaction, etc dev.do_FLR() - pci_str = "0x%x, 0x%x, 0x%x, 0x%x" % (domain, bus, slot, func) - bdf = xc.deassign_device(fe_domid, pci_str) - if bdf > 0: - raise VmError("Failed to deassign device from IOMMU (%x:%x.%x)" - % (bus, slot, func)) - log.debug("pci: Deassign device %x:%x.%x" % (bus, slot, func)) + # qemu would do following in case of HVM + if not self.vm.info.is_hvm(): + pci_str = "0x%x, 0x%x, 0x%x, 0x%x" % (domain, bus, slot, func) + bdf = xc.deassign_device(fe_domid, pci_str) + if bdf > 0: + raise VmError("Failed to deassign device from IOMMU (%x:%x.%x)" + % (bus, slot, func)) + log.debug("pci: Deassign device %x:%x.%x" % (bus, slot, func)) for (start, size) in dev.ioports: log.debug('pci: disabling ioport 0x%x/0x%x'%(start,size))