iommu-helper: mark iommu_is_span_boundary as inline This avoids selecting IOMMU_HELPER just for this function. And we only use it once or twice in normal builds so this often even is a size reduction. Signed-off-by: Christoph Hellwig <hch@lst.de>
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index b202288..3ff735a 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig
@@ -345,9 +345,6 @@ config PCI_SYSCALL def_bool PCI -config IOMMU_HELPER - def_bool PCI - config ALPHA_NONAME bool depends on ALPHA_BOOK1 || ALPHA_NONAME_CH
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index c723d3e..6bbf7b92 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig
@@ -1780,9 +1780,6 @@ config SWIOTLB def_bool y -config IOMMU_HELPER - def_bool SWIOTLB - config PARAVIRT bool "Enable paravirtualization code" help
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 2005e4b..a553deb 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig
@@ -251,9 +251,6 @@ config SWIOTLB def_bool y -config IOMMU_HELPER - def_bool SWIOTLB - config KERNEL_MODE_NEON def_bool y
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index f55aec9..ec2a397 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig
@@ -612,6 +612,3 @@ source "crypto/Kconfig" source "lib/Kconfig" - -config IOMMU_HELPER - def_bool (IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB || IA64_GENERIC || SWIOTLB)
diff --git a/arch/mips/cavium-octeon/Kconfig b/arch/mips/cavium-octeon/Kconfig index b5eee1a..647ed15 100644 --- a/arch/mips/cavium-octeon/Kconfig +++ b/arch/mips/cavium-octeon/Kconfig
@@ -67,16 +67,12 @@ help Lock the kernel's implementation of memcpy() into L2. -config IOMMU_HELPER - bool - config NEED_SG_DMA_LENGTH bool config SWIOTLB def_bool y select DMA_DIRECT_OPS - select IOMMU_HELPER select NEED_SG_DMA_LENGTH config OCTEON_ILM
diff --git a/arch/mips/loongson64/Kconfig b/arch/mips/loongson64/Kconfig index 72af0c1..5efb2e6 100644 --- a/arch/mips/loongson64/Kconfig +++ b/arch/mips/loongson64/Kconfig
@@ -130,9 +130,6 @@ default y depends on EARLY_PRINTK || SERIAL_8250 -config IOMMU_HELPER - bool - config NEED_SG_DMA_LENGTH bool @@ -141,7 +138,6 @@ default y depends on CPU_LOONGSON3 select DMA_DIRECT_OPS - select IOMMU_HELPER select NEED_SG_DMA_LENGTH select NEED_DMA_MAP_STATE
diff --git a/arch/mips/netlogic/Kconfig b/arch/mips/netlogic/Kconfig index 7fcfc7f..5c5ee0e 100644 --- a/arch/mips/netlogic/Kconfig +++ b/arch/mips/netlogic/Kconfig
@@ -83,9 +83,6 @@ config NLM_COMMON bool -config IOMMU_HELPER - bool - config NEED_SG_DMA_LENGTH bool
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index d81e0d4..5cf611f 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig
@@ -483,7 +483,6 @@ config SWIOTLB bool "SWIOTLB support" default n - select IOMMU_HELPER ---help--- Support for IO bounce buffering for systems without an IOMMU. This allows us to DMA to the full physical address space on
diff --git a/arch/unicore32/mm/Kconfig b/arch/unicore32/mm/Kconfig index e9154a5..3f105e0 100644 --- a/arch/unicore32/mm/Kconfig +++ b/arch/unicore32/mm/Kconfig
@@ -44,9 +44,6 @@ def_bool y select DMA_DIRECT_OPS -config IOMMU_HELPER - def_bool SWIOTLB - config NEED_SG_DMA_LENGTH def_bool SWIOTLB
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 13bf2c7..a43f21e7 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig
@@ -934,7 +934,7 @@ config IOMMU_HELPER def_bool y - depends on CALGARY_IOMMU || GART_IOMMU || SWIOTLB || AMD_IOMMU + depends on CALGARY_IOMMU || GART_IOMMU config MAXSMP bool "Enable Maximum number of SMP Processors and NUMA Nodes"
diff --git a/drivers/parisc/Kconfig b/drivers/parisc/Kconfig index 3a102a8..5a48b56 100644 --- a/drivers/parisc/Kconfig +++ b/drivers/parisc/Kconfig
@@ -103,11 +103,6 @@ depends on PCI_LBA default PCI_LBA -config IOMMU_HELPER - bool - depends on IOMMU_SBA || IOMMU_CCIO - default y - source "drivers/pcmcia/Kconfig" endmenu
diff --git a/include/linux/iommu-helper.h b/include/linux/iommu-helper.h index cb9a924..70d01ed 100644 --- a/include/linux/iommu-helper.h +++ b/include/linux/iommu-helper.h
@@ -2,6 +2,7 @@ #ifndef _LINUX_IOMMU_HELPER_H #define _LINUX_IOMMU_HELPER_H +#include <linux/bug.h> #include <linux/kernel.h> static inline unsigned long iommu_device_max_index(unsigned long size, @@ -14,9 +15,15 @@ static inline unsigned long iommu_device_max_index(unsigned long size, return size; } -extern int iommu_is_span_boundary(unsigned int index, unsigned int nr, - unsigned long shift, - unsigned long boundary_size); +static inline int iommu_is_span_boundary(unsigned int index, unsigned int nr, + unsigned long shift, unsigned long boundary_size) +{ + BUG_ON(!is_power_of_2(boundary_size)); + + shift = (shift + index) & (boundary_size - 1); + return shift + nr > boundary_size; +} + extern unsigned long iommu_area_alloc(unsigned long *map, unsigned long size, unsigned long start, unsigned int nr, unsigned long shift,
diff --git a/lib/iommu-helper.c b/lib/iommu-helper.c index ded1703..92a9f24 100644 --- a/lib/iommu-helper.c +++ b/lib/iommu-helper.c
@@ -4,17 +4,7 @@ */ #include <linux/bitmap.h> -#include <linux/bug.h> - -int iommu_is_span_boundary(unsigned int index, unsigned int nr, - unsigned long shift, - unsigned long boundary_size) -{ - BUG_ON(!is_power_of_2(boundary_size)); - - shift = (shift + index) & (boundary_size - 1); - return shift + nr > boundary_size; -} +#include <linux/iommu-helper.h> unsigned long iommu_area_alloc(unsigned long *map, unsigned long size, unsigned long start, unsigned int nr,