amd-iommu: detach device explicitly before attaching it to a new domain
authorJoerg Roedel <joerg.roedel@amd.com>
Mon, 8 Jun 2009 20:47:33 +0000 (13:47 -0700)
committerJoerg Roedel <joerg.roedel@amd.com>
Tue, 9 Jun 2009 09:14:14 +0000 (11:14 +0200)
This fixes a bug with a device that could not be assigned to a KVM guest
because it is still assigned to a dma_ops protection domain.

[chrisw: simply remove WARN_ON(), will always fire since dev->driver
will be pci-sub]

Signed-off-by: Chris Wright <chrisw@sous-sol.org>
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
arch/x86/kernel/amd_iommu.c

index 8187260..772e910 100644 (file)
@@ -2073,7 +2073,7 @@ static int amd_iommu_attach_device(struct iommu_domain *dom,
 
        old_domain = domain_for_device(devid);
        if (old_domain)
-               return -EBUSY;
+               detach_device(old_domain, devid);
 
        attach_device(iommu, domain, devid);