From: Joerg Roedel <joerg.roedel@amd.com>
Date: Mon, 8 Jun 2009 20:47:33 +0000 (-0700)
Subject: amd-iommu: detach device explicitly before attaching it to a new domain
X-Git-Tag: firefly_0821_release~13675^2~3^2~1
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=71ff3bca2f70264effe8cbbdd5bc10cf6be5f2f0;p=firefly-linux-kernel-4.4.55.git

amd-iommu: detach device explicitly before attaching it to a new domain

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>
---

diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c
index 81872604eb76..772e91088e40 100644
--- a/arch/x86/kernel/amd_iommu.c
+++ b/arch/x86/kernel/amd_iommu.c
@@ -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);