From: Ian Jackson Date: Wed, 29 Apr 2009 15:28:37 +0000 (+0100) Subject: passthrough: don't call xc_deassign_device() X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=438f0453656e54f3f4db248fd280673992d5ad54;p=xenclient%2Fioemu.git passthrough: don't call xc_deassign_device() This series of patches modify the order of resetting/deassigning device. I modify the order of resetting/deassigning device like below. When guest OS shutdowns or a device is hotremoved. 1. Xend resets devices. 2. Xend deassigns devices. Because if devices are deassigned before the reset, dom0 memory may be broken by DMA This patch modifies ioemu not to call xc_deassign_device() Signed-off-by: Yuji Shimada --- diff --git a/hw/pass-through.c b/hw/pass-through.c index 7bd2febb..6a531371 100644 --- a/hw/pass-through.c +++ b/hw/pass-through.c @@ -3972,13 +3972,6 @@ static int unregister_real_device(int slot) /* unregister real device's MMIO/PIO BARs */ pt_unregister_regions(assigned_device); - /* deassign the dev to dom0 */ - bdf |= (pci_dev->bus & 0xff) << 16; - bdf |= (pci_dev->dev & 0x1f) << 11; - bdf |= (pci_dev->func & 0x1f) << 8; - if ( (rc = xc_deassign_device(xc_handle, domid, bdf)) != 0) - PT_LOG("Error: Revoking the device failed! rc=%d\n", rc); - /* mark this slot as free */ php_dev->valid = 0; php_dev->pt_dev = NULL;