Commit 96093fe5 authored by Jason Gunthorpe's avatar Jason Gunthorpe
Browse files

irqchip: Have CONFIG_IRQ_MSI_IOMMU be selected by irqchips that need it

Currently, IRQ_MSI_IOMMU is selected if DMA_IOMMU is available to provide
an implementation for iommu_dma_prepare/compose_msi_msg(). However, it'll
make more sense for irqchips that call prepare/compose to select it, and
that will trigger all the additional code and data to be compiled into
the kernel.

If IRQ_MSI_IOMMU is selected with no IOMMU side implementation, then the
prepare/compose() will be NOP stubs.

If IRQ_MSI_IOMMU is not selected by an irqchip, then the related code on
the iommu side is compiled out.

Link: https://patch.msgid.link/r/a2620f67002c5cdf974e89ca3bf905f5c0817be6.1740014950.git.nicolinc@nvidia.com


Signed-off-by: default avatarNicolin Chen <nicolinc@nvidia.com>
Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
Signed-off-by: default avatarJason Gunthorpe <jgg@nvidia.com>
parent 288683c9
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -154,7 +154,6 @@ config IOMMU_DMA
	select DMA_OPS_HELPERS
	select IOMMU_API
	select IOMMU_IOVA
	select IRQ_MSI_IOMMU
	select NEED_SG_DMA_LENGTH
	select NEED_SG_DMA_FLAGS if SWIOTLB

+2 −0
Original line number Diff line number Diff line
@@ -449,8 +449,10 @@ void iommu_put_dma_cookie(struct iommu_domain *domain)
	struct iommu_dma_cookie *cookie = domain->iova_cookie;
	struct iommu_dma_msi_page *msi, *tmp;

#if IS_ENABLED(CONFIG_IRQ_MSI_IOMMU)
	if (domain->sw_msi != iommu_dma_sw_msi)
		return;
#endif

	if (!cookie)
		return;
+4 −0
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ config ARM_GIC_V2M
	select ARM_GIC
	select IRQ_MSI_LIB
	select PCI_MSI
	select IRQ_MSI_IOMMU

config GIC_NON_BANKED
	bool
@@ -38,12 +39,14 @@ config ARM_GIC_V3
	select PARTITION_PERCPU
	select GENERIC_IRQ_EFFECTIVE_AFF_MASK if SMP
	select HAVE_ARM_SMCCC_DISCOVERY
	select IRQ_MSI_IOMMU

config ARM_GIC_V3_ITS
	bool
	select GENERIC_MSI_IRQ
	select IRQ_MSI_LIB
	default ARM_GIC_V3
	select IRQ_MSI_IOMMU

config ARM_GIC_V3_ITS_FSL_MC
	bool
@@ -408,6 +411,7 @@ config LS_EXTIRQ

config LS_SCFG_MSI
	def_bool y if SOC_LS1021A || ARCH_LAYERSCAPE
	select IRQ_MSI_IOMMU
	depends on PCI_MSI

config PARTITION_PERCPU
+1 −0
Original line number Diff line number Diff line
@@ -100,6 +100,7 @@ config GENERIC_MSI_IRQ
	bool
	select IRQ_DOMAIN_HIERARCHY

# irqchip drivers should select this if they call iommu_dma_prepare_msi()
config IRQ_MSI_IOMMU
	bool