diff options
author | Joerg Roedel <joerg.roedel@amd.com> | 2010-01-22 17:55:27 +0100 |
---|---|---|
committer | Joerg Roedel <joerg.roedel@amd.com> | 2010-01-22 17:56:49 +0100 |
commit | d3ad9373b7c29b63d5e8460a69453718d200cc3b (patch) | |
tree | ef3ed00e69808277cbdcce68928525458eaaebdb /arch | |
parent | f5325094379158e6b876ea0010c807bf7890ec8f (diff) | |
download | op-kernel-dev-d3ad9373b7c29b63d5e8460a69453718d200cc3b.zip op-kernel-dev-d3ad9373b7c29b63d5e8460a69453718d200cc3b.tar.gz |
x86/amd-iommu: Fix deassignment of a device from the pt_domain
Deassigning a device from the passthrough domain does not
work and breaks device assignment to kvm guests. This patch
fixes the issue.
Cc: stable@kernel.org
Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/kernel/amd_iommu.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/arch/x86/kernel/amd_iommu.c b/arch/x86/kernel/amd_iommu.c index 751ce73..adb0ba0 100644 --- a/arch/x86/kernel/amd_iommu.c +++ b/arch/x86/kernel/amd_iommu.c @@ -1511,9 +1511,11 @@ static void __detach_device(struct device *dev) /* * If we run in passthrough mode the device must be assigned to the - * passthrough domain if it is detached from any other domain + * passthrough domain if it is detached from any other domain. + * Make sure we can deassign from the pt_domain itself. */ - if (iommu_pass_through && dev_data->domain == NULL) + if (iommu_pass_through && + (dev_data->domain == NULL && domain != pt_domain)) __attach_device(dev, pt_domain); } |