x86/amd-iommu: Pt mode fix for domain_destroy
authorChris Wright <chrisw@sous-sol.org>
Wed, 17 Feb 2010 16:51:20 +0000 (08:51 -0800)
committerJoerg Roedel <joerg.roedel@amd.com>
Mon, 1 Mar 2010 13:16:36 +0000 (14:16 +0100)
commit04e856c072b84042bb56c487c2868638bb3f78db
treee4e5f7c96990ff2e7509eed0c3c705775e44879e
parent5d214fe6e808a8caa9cb6f610c0190d3f50ac570
x86/amd-iommu: Pt mode fix for domain_destroy

After a guest is shutdown, assigned devices are not properly
returned to the pt domain.  This can leave the device using
stale cached IOMMU data, and result in a non-functional
device after it's re-bound to the host driver.  For example,
I see this upon rebinding:

 AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a8000 flags=0x0050]
 AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a8040 flags=0x0050]
 AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a8080 flags=0x0050]
 AMD-Vi: Event logged [IO_PAGE_FAULT device=02:00.0 domain=0x0000 address=0x000000007e2a80c0 flags=0x0050]
 0000:02:00.0: eth2: Detected Hardware Unit Hang:
 ...

The amd_iommu_destroy_domain() function calls do_detach()
which doesn't reattach the pt domain to the device.
Use __detach_device() instead.

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