]> Git Repo - J-linux.git/commitdiff
iommu/amd: Improve amd_iommu_release_device()
authorVasant Hegde <[email protected]>
Wed, 30 Oct 2024 06:35:56 +0000 (06:35 +0000)
committerJoerg Roedel <[email protected]>
Wed, 30 Oct 2024 10:06:48 +0000 (11:06 +0100)
Previous patch added ops->release_domain support. Core will attach
devices to release_domain->attach_dev() before calling this function.
Devices are already detached their current domain and attached to
blocked domain.

This is mostly dummy function now. Just throw warning if device is still
attached to domain.

Suggested-by: Jason Gunthorpe <[email protected]>
Signed-off-by: Vasant Hegde <[email protected]>
Reviewed-by: Jason Gunthorpe <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Joerg Roedel <[email protected]>
drivers/iommu/amd/iommu.c

index fd39b54578830ead0cd1f8678a8b182127aa3198..5ce8e6504ba7ee63a1867d652294304ef11e8a37 100644 (file)
@@ -77,8 +77,6 @@ DEFINE_IDA(pdom_ids);
 
 struct kmem_cache *amd_iommu_irq_cache;
 
-static void detach_device(struct device *dev);
-
 static int amd_iommu_attach_device(struct iommu_domain *dom,
                                   struct device *dev);
 
@@ -563,22 +561,6 @@ static void iommu_ignore_device(struct amd_iommu *iommu, struct device *dev)
        setup_aliases(iommu, dev);
 }
 
-static void amd_iommu_uninit_device(struct device *dev)
-{
-       struct iommu_dev_data *dev_data;
-
-       dev_data = dev_iommu_priv_get(dev);
-       if (!dev_data)
-               return;
-
-       if (dev_data->domain)
-               detach_device(dev);
-
-       /*
-        * We keep dev_data around for unplugged devices and reuse it when the
-        * device is re-plugged - not doing so would introduce a ton of races.
-        */
-}
 
 /****************************************************************************
  *
@@ -2249,17 +2231,14 @@ out_err:
 
 static void amd_iommu_release_device(struct device *dev)
 {
-       struct amd_iommu *iommu;
-
-       if (!check_device(dev))
-               return;
+       struct iommu_dev_data *dev_data = dev_iommu_priv_get(dev);
 
-       iommu = rlookup_amd_iommu(dev);
-       if (!iommu)
-               return;
+       WARN_ON(dev_data->domain);
 
-       amd_iommu_uninit_device(dev);
-       iommu_completion_wait(iommu);
+       /*
+        * We keep dev_data around for unplugged devices and reuse it when the
+        * device is re-plugged - not doing so would introduce a ton of races.
+        */
 }
 
 static struct iommu_group *amd_iommu_device_group(struct device *dev)
This page took 0.055942 seconds and 4 git commands to generate.