mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	arch: switch the default on ARCH_HAS_SG_CHAIN
These days architectures are mostly out of the business of dealing with struct scatterlist at all, unless they have architecture specific iommu drivers. Replace the ARCH_HAS_SG_CHAIN symbol with a ARCH_NO_SG_CHAIN one only enabled for architectures with horrible legacy iommu drivers like alpha and parisc, and conditionally for arm which wants to keep it disable for legacy platforms. Signed-off-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Palmer Dabbelt <palmer@sifive.com>
This commit is contained in:
		
							parent
							
								
									b14b9d25a3
								
							
						
					
					
						commit
						7c703e54cc
					
				
					 15 changed files with 8 additions and 47 deletions
				
			
		| 
						 | 
				
			
			@ -1,33 +0,0 @@
 | 
			
		|||
#
 | 
			
		||||
# Feature name:          sg-chain
 | 
			
		||||
#         Kconfig:       ARCH_HAS_SG_CHAIN
 | 
			
		||||
#         description:   arch supports chained scatter-gather lists
 | 
			
		||||
#
 | 
			
		||||
    -----------------------
 | 
			
		||||
    |         arch |status|
 | 
			
		||||
    -----------------------
 | 
			
		||||
    |       alpha: | TODO |
 | 
			
		||||
    |         arc: |  ok  |
 | 
			
		||||
    |         arm: |  ok  |
 | 
			
		||||
    |       arm64: |  ok  |
 | 
			
		||||
    |         c6x: | TODO |
 | 
			
		||||
    |       h8300: | TODO |
 | 
			
		||||
    |     hexagon: | TODO |
 | 
			
		||||
    |        ia64: |  ok  |
 | 
			
		||||
    |        m68k: | TODO |
 | 
			
		||||
    |  microblaze: | TODO |
 | 
			
		||||
    |        mips: | TODO |
 | 
			
		||||
    |       nds32: | TODO |
 | 
			
		||||
    |       nios2: | TODO |
 | 
			
		||||
    |    openrisc: | TODO |
 | 
			
		||||
    |      parisc: | TODO |
 | 
			
		||||
    |     powerpc: |  ok  |
 | 
			
		||||
    |       riscv: | TODO |
 | 
			
		||||
    |        s390: |  ok  |
 | 
			
		||||
    |          sh: | TODO |
 | 
			
		||||
    |       sparc: |  ok  |
 | 
			
		||||
    |          um: | TODO |
 | 
			
		||||
    |   unicore32: | TODO |
 | 
			
		||||
    |         x86: |  ok  |
 | 
			
		||||
    |      xtensa: | TODO |
 | 
			
		||||
    -----------------------
 | 
			
		||||
| 
						 | 
				
			
			@ -5,6 +5,7 @@ config ALPHA
 | 
			
		|||
	select ARCH_MIGHT_HAVE_PC_PARPORT
 | 
			
		||||
	select ARCH_MIGHT_HAVE_PC_SERIO
 | 
			
		||||
	select ARCH_NO_PREEMPT
 | 
			
		||||
	select ARCH_NO_SG_CHAIN
 | 
			
		||||
	select ARCH_USE_CMPXCHG_LOCKREF
 | 
			
		||||
	select HAVE_AOUT
 | 
			
		||||
	select HAVE_IDE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -13,7 +13,6 @@ config ARC
 | 
			
		|||
	select ARCH_HAS_PTE_SPECIAL
 | 
			
		||||
	select ARCH_HAS_SYNC_DMA_FOR_CPU
 | 
			
		||||
	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_SUPPORTS_ATOMIC_RMW if ARC_HAS_LLSC
 | 
			
		||||
	select BUILDTIME_EXTABLE_SORT
 | 
			
		||||
	select CLONE_BACKWARDS
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -19,6 +19,7 @@ config ARM
 | 
			
		|||
	select ARCH_HAVE_CUSTOM_GPIO_H
 | 
			
		||||
	select ARCH_HAS_GCOV_PROFILE_ALL
 | 
			
		||||
	select ARCH_MIGHT_HAVE_PC_PARPORT
 | 
			
		||||
	select ARCH_NO_SG_CHAIN if !ARM_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_OPTIONAL_KERNEL_RWX if ARCH_HAS_STRICT_KERNEL_RWX
 | 
			
		||||
	select ARCH_OPTIONAL_KERNEL_RWX_DEFAULT if CPU_V7
 | 
			
		||||
	select ARCH_SUPPORTS_ATOMIC_RMW
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +120,6 @@ config ARM
 | 
			
		|||
	  <http://www.arm.linux.org.uk/>.
 | 
			
		||||
 | 
			
		||||
config ARM_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	bool
 | 
			
		||||
 | 
			
		||||
config ARM_DMA_USE_IOMMU
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,7 +23,6 @@ config ARM64
 | 
			
		|||
	select ARCH_HAS_MEMBARRIER_SYNC_CORE
 | 
			
		||||
	select ARCH_HAS_PTE_SPECIAL
 | 
			
		||||
	select ARCH_HAS_SET_MEMORY
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_HAS_STRICT_KERNEL_RWX
 | 
			
		||||
	select ARCH_HAS_STRICT_MODULE_RWX
 | 
			
		||||
	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,7 +29,6 @@ config IA64
 | 
			
		|||
	select HAVE_MEMBLOCK_NODE_MAP
 | 
			
		||||
	select HAVE_VIRT_CPU_ACCOUNTING
 | 
			
		||||
	select ARCH_HAS_DMA_MARK_CLEAN
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select VIRT_TO_BUS
 | 
			
		||||
	select ARCH_DISCARD_MEMBLOCK
 | 
			
		||||
	select GENERIC_IRQ_PROBE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,7 @@ config PARISC
 | 
			
		|||
	select ARCH_HAS_ELF_RANDOMIZE
 | 
			
		||||
	select ARCH_HAS_STRICT_KERNEL_RWX
 | 
			
		||||
	select ARCH_HAS_UBSAN_SANITIZE_ALL
 | 
			
		||||
	select ARCH_NO_SG_CHAIN
 | 
			
		||||
	select ARCH_SUPPORTS_MEMORY_FAILURE
 | 
			
		||||
	select RTC_CLASS
 | 
			
		||||
	select RTC_DRV_GENERIC
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -138,7 +138,6 @@ config PPC
 | 
			
		|||
	select ARCH_HAS_PTE_SPECIAL
 | 
			
		||||
	select ARCH_HAS_MEMBARRIER_CALLBACKS
 | 
			
		||||
	select ARCH_HAS_SCALED_CPUTIME		if VIRT_CPU_ACCOUNTING_NATIVE && PPC64
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_HAS_STRICT_KERNEL_RWX	if ((PPC_BOOK3S_64 || PPC32) && !RELOCATABLE && !HIBERNATION)
 | 
			
		||||
	select ARCH_HAS_TICK_BROADCAST		if GENERIC_CLOCKEVENTS_BROADCAST
 | 
			
		||||
	select ARCH_HAS_UACCESS_FLUSHCACHE	if PPC64
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -73,7 +73,6 @@ config S390
 | 
			
		|||
	select ARCH_HAS_KCOV
 | 
			
		||||
	select ARCH_HAS_PTE_SPECIAL
 | 
			
		||||
	select ARCH_HAS_SET_MEMORY
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_HAS_STRICT_KERNEL_RWX
 | 
			
		||||
	select ARCH_HAS_STRICT_MODULE_RWX
 | 
			
		||||
	select ARCH_HAS_UBSAN_SANITIZE_ALL
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,7 +40,6 @@ config SPARC
 | 
			
		|||
	select MODULES_USE_ELF_RELA
 | 
			
		||||
	select ODD_RT_SIGACTION
 | 
			
		||||
	select OLD_SIGSUSPEND
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select CPU_NO_EFFICIENT_FFS
 | 
			
		||||
	select LOCKDEP_SMALL if LOCKDEP
 | 
			
		||||
	select NEED_DMA_MAP_STATE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -66,7 +66,6 @@ config X86
 | 
			
		|||
	select ARCH_HAS_UACCESS_FLUSHCACHE	if X86_64
 | 
			
		||||
	select ARCH_HAS_UACCESS_MCSAFE		if X86_64 && X86_MCE
 | 
			
		||||
	select ARCH_HAS_SET_MEMORY
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_HAS_STRICT_KERNEL_RWX
 | 
			
		||||
	select ARCH_HAS_STRICT_MODULE_RWX
 | 
			
		||||
	select ARCH_HAS_SYNC_CORE_BEFORE_USERMODE
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,7 +1,6 @@
 | 
			
		|||
# SPDX-License-Identifier: GPL-2.0
 | 
			
		||||
config XTENSA
 | 
			
		||||
	def_bool y
 | 
			
		||||
	select ARCH_HAS_SG_CHAIN
 | 
			
		||||
	select ARCH_HAS_SYNC_DMA_FOR_CPU
 | 
			
		||||
	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
 | 
			
		||||
	select ARCH_NO_COHERENT_DMA_MMAP if !MMU
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -324,10 +324,10 @@ size_t sg_zero_buffer(struct scatterlist *sgl, unsigned int nents,
 | 
			
		|||
 * Like SG_CHUNK_SIZE, but for archs that have sg chaining. This limit
 | 
			
		||||
 * is totally arbitrary, a setting of 2048 will get you at least 8mb ios.
 | 
			
		||||
 */
 | 
			
		||||
#ifdef CONFIG_ARCH_HAS_SG_CHAIN
 | 
			
		||||
#define SG_MAX_SEGMENTS	2048
 | 
			
		||||
#else
 | 
			
		||||
#ifdef CONFIG_ARCH_NO_SG_CHAIN
 | 
			
		||||
#define SG_MAX_SEGMENTS	SG_CHUNK_SIZE
 | 
			
		||||
#else
 | 
			
		||||
#define SG_MAX_SEGMENTS	2048
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef CONFIG_SG_POOL
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -577,7 +577,7 @@ config SG_POOL
 | 
			
		|||
# sg chaining option
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
config ARCH_HAS_SG_CHAIN
 | 
			
		||||
config ARCH_NO_SG_CHAIN
 | 
			
		||||
	def_bool n
 | 
			
		||||
 | 
			
		||||
config ARCH_HAS_PMEM_API
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -271,7 +271,7 @@ int __sg_alloc_table(struct sg_table *table, unsigned int nents,
 | 
			
		|||
 | 
			
		||||
	if (nents == 0)
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
#ifndef CONFIG_ARCH_HAS_SG_CHAIN
 | 
			
		||||
#ifdef CONFIG_ARCH_NO_SG_CHAIN
 | 
			
		||||
	if (WARN_ON_ONCE(nents > max_ents))
 | 
			
		||||
		return -EINVAL;
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue