linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
* [PATCH rc] iommu/power: Remove iommu_del_device()
@ 2023-05-16  0:12 Jason Gunthorpe
  2023-05-17 12:10 ` Michael Ellerman
  2023-07-03  5:21 ` Michael Ellerman
  0 siblings, 2 replies; 3+ messages in thread
From: Jason Gunthorpe @ 2023-05-16  0:12 UTC (permalink / raw)
  To: Christophe Leroy, linuxppc-dev, Nicholas Piggin
  Cc: Kevin Tian, Joerg Roedel, Alexey Kardashevskiy, iommu,
	Timothy Pearson, Alex Williamson, Robin Murphy, Lu Baolu

Now that power calls iommu_device_register() and populates its groups
using iommu_ops->device_group it should not be calling
iommu_group_remove_device().

The core code owns the groups and all the other related iommu data, it
will clean it up automatically.

Remove the bus notifiers and explicit calls to
iommu_group_remove_device().

Cc: iommu@lists.linux.dev
Fixes: a940904443e4 ("powerpc/iommu: Add iommu_ops to report capabilities and allow blocking domains")
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
---
 arch/powerpc/include/asm/iommu.h       |  5 -----
 arch/powerpc/kernel/iommu.c            | 17 -----------------
 arch/powerpc/platforms/powernv/pci.c   | 25 -------------------------
 arch/powerpc/platforms/pseries/iommu.c | 25 -------------------------
 4 files changed, 72 deletions(-)

Michael, please take this on the PPC tree to -rc thanks

Jason

diff --git a/arch/powerpc/include/asm/iommu.h b/arch/powerpc/include/asm/iommu.h
index 678b5bdc79b1f5..34e14dfd8e042a 100644
--- a/arch/powerpc/include/asm/iommu.h
+++ b/arch/powerpc/include/asm/iommu.h
@@ -205,7 +205,6 @@ extern void iommu_register_group(struct iommu_table_group *table_group,
 				 int pci_domain_number, unsigned long pe_num);
 extern int iommu_add_device(struct iommu_table_group *table_group,
 		struct device *dev);
-extern void iommu_del_device(struct device *dev);
 extern long iommu_tce_xchg(struct mm_struct *mm, struct iommu_table *tbl,
 		unsigned long entry, unsigned long *hpa,
 		enum dma_data_direction *direction);
@@ -229,10 +228,6 @@ static inline int iommu_add_device(struct iommu_table_group *table_group,
 {
 	return 0;
 }
-
-static inline void iommu_del_device(struct device *dev)
-{
-}
 #endif /* !CONFIG_IOMMU_API */
 
 u64 dma_iommu_get_required_mask(struct device *dev);
diff --git a/arch/powerpc/kernel/iommu.c b/arch/powerpc/kernel/iommu.c
index 0089dd49b4cbf7..8fce2da109ebe5 100644
--- a/arch/powerpc/kernel/iommu.c
+++ b/arch/powerpc/kernel/iommu.c
@@ -1168,23 +1168,6 @@ int iommu_add_device(struct iommu_table_group *table_group, struct device *dev)
 }
 EXPORT_SYMBOL_GPL(iommu_add_device);
 
-void iommu_del_device(struct device *dev)
-{
-	/*
-	 * Some devices might not have IOMMU table and group
-	 * and we needn't detach them from the associated
-	 * IOMMU groups
-	 */
-	if (!device_iommu_mapped(dev)) {
-		pr_debug("iommu_tce: skipping device %s with no tbl\n",
-			 dev_name(dev));
-		return;
-	}
-
-	iommu_group_remove_device(dev);
-}
-EXPORT_SYMBOL_GPL(iommu_del_device);
-
 /*
  * A simple iommu_table_group_ops which only allows reusing the existing
  * iommu_table. This handles VFIO for POWER7 or the nested KVM.
diff --git a/arch/powerpc/platforms/powernv/pci.c b/arch/powerpc/platforms/powernv/pci.c
index 233a50e65fcedd..7725492097b627 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -865,28 +865,3 @@ void __init pnv_pci_init(void)
 	/* Configure IOMMU DMA hooks */
 	set_pci_dma_ops(&dma_iommu_ops);
 }
-
-static int pnv_tce_iommu_bus_notifier(struct notifier_block *nb,
-		unsigned long action, void *data)
-{
-	struct device *dev = data;
-
-	switch (action) {
-	case BUS_NOTIFY_DEL_DEVICE:
-		iommu_del_device(dev);
-		return 0;
-	default:
-		return 0;
-	}
-}
-
-static struct notifier_block pnv_tce_iommu_bus_nb = {
-	.notifier_call = pnv_tce_iommu_bus_notifier,
-};
-
-static int __init pnv_tce_iommu_bus_notifier_init(void)
-{
-	bus_register_notifier(&pci_bus_type, &pnv_tce_iommu_bus_nb);
-	return 0;
-}
-machine_subsys_initcall_sync(powernv, pnv_tce_iommu_bus_notifier_init);
diff --git a/arch/powerpc/platforms/pseries/iommu.c b/arch/powerpc/platforms/pseries/iommu.c
index 7464fa6e414553..e44d3c4a0781d8 100644
--- a/arch/powerpc/platforms/pseries/iommu.c
+++ b/arch/powerpc/platforms/pseries/iommu.c
@@ -1695,31 +1695,6 @@ static int __init disable_multitce(char *str)
 
 __setup("multitce=", disable_multitce);
 
-static int tce_iommu_bus_notifier(struct notifier_block *nb,
-		unsigned long action, void *data)
-{
-	struct device *dev = data;
-
-	switch (action) {
-	case BUS_NOTIFY_DEL_DEVICE:
-		iommu_del_device(dev);
-		return 0;
-	default:
-		return 0;
-	}
-}
-
-static struct notifier_block tce_iommu_bus_nb = {
-	.notifier_call = tce_iommu_bus_notifier,
-};
-
-static int __init tce_iommu_bus_notifier_init(void)
-{
-	bus_register_notifier(&pci_bus_type, &tce_iommu_bus_nb);
-	return 0;
-}
-machine_subsys_initcall_sync(pseries, tce_iommu_bus_notifier_init);
-
 #ifdef CONFIG_SPAPR_TCE_IOMMU
 struct iommu_group *pSeries_pci_device_group(struct pci_controller *hose,
 					     struct pci_dev *pdev)

base-commit: 0b355ade2baf262f213da274411c0e05d8232a21
-- 
2.40.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH rc] iommu/power: Remove iommu_del_device()
  2023-05-16  0:12 [PATCH rc] iommu/power: Remove iommu_del_device() Jason Gunthorpe
@ 2023-05-17 12:10 ` Michael Ellerman
  2023-07-03  5:21 ` Michael Ellerman
  1 sibling, 0 replies; 3+ messages in thread
From: Michael Ellerman @ 2023-05-17 12:10 UTC (permalink / raw)
  To: Jason Gunthorpe, Christophe Leroy, linuxppc-dev, Nicholas Piggin
  Cc: Kevin Tian, Joerg Roedel, Alexey Kardashevskiy, iommu,
	Timothy Pearson, Alex Williamson, Robin Murphy, Lu Baolu

Jason Gunthorpe <jgg@nvidia.com> writes:
> Now that power calls iommu_device_register() and populates its groups
> using iommu_ops->device_group it should not be calling
> iommu_group_remove_device().
>
> The core code owns the groups and all the other related iommu data, it
> will clean it up automatically.
>
> Remove the bus notifiers and explicit calls to
> iommu_group_remove_device().
>
> Cc: iommu@lists.linux.dev
> Fixes: a940904443e4 ("powerpc/iommu: Add iommu_ops to report capabilities and allow blocking domains")
> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
> ---
>  arch/powerpc/include/asm/iommu.h       |  5 -----
>  arch/powerpc/kernel/iommu.c            | 17 -----------------
>  arch/powerpc/platforms/powernv/pci.c   | 25 -------------------------
>  arch/powerpc/platforms/pseries/iommu.c | 25 -------------------------
>  4 files changed, 72 deletions(-)
>
> Michael, please take this on the PPC tree to -rc thanks

Will do, thanks.

cheers

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH rc] iommu/power: Remove iommu_del_device()
  2023-05-16  0:12 [PATCH rc] iommu/power: Remove iommu_del_device() Jason Gunthorpe
  2023-05-17 12:10 ` Michael Ellerman
@ 2023-07-03  5:21 ` Michael Ellerman
  1 sibling, 0 replies; 3+ messages in thread
From: Michael Ellerman @ 2023-07-03  5:21 UTC (permalink / raw)
  To: Christophe Leroy, linuxppc-dev, Nicholas Piggin, Jason Gunthorpe
  Cc: Kevin Tian, Joerg Roedel, Alexey Kardashevskiy, iommu,
	Timothy Pearson, Alex Williamson, Robin Murphy, Lu Baolu

On Mon, 15 May 2023 21:12:31 -0300, Jason Gunthorpe wrote:
> Now that power calls iommu_device_register() and populates its groups
> using iommu_ops->device_group it should not be calling
> iommu_group_remove_device().
> 
> The core code owns the groups and all the other related iommu data, it
> will clean it up automatically.
> 
> [...]

Applied to powerpc/fixes.

[1/1] iommu/power: Remove iommu_del_device()
      https://git.kernel.org/powerpc/c/ad593827db9b73f15eb65416ec975ec0311f773a

cheers

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-07-03  5:25 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-05-16  0:12 [PATCH rc] iommu/power: Remove iommu_del_device() Jason Gunthorpe
2023-05-17 12:10 ` Michael Ellerman
2023-07-03  5:21 ` Michael Ellerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).