x86: allow CONFIG_ISA_DMA_API to be disabled
Not all 64-bit systems require ISA-style DMA, so allow it to be configurable. x86 utilizes the generic ISA DMA allocator from kernel/dma.c, so require it only when CONFIG_ISA_DMA_API is enabled. Disabling CONFIG_ISA_DMA_API is dependent on x86_64 since those machines do not have ISA slots and benefit the most from disabling the option (and on CONFIG_EXPERT as required by H. Peter Anvin). When disabled, this also avoids declaring claim_dma_lock(), release_dma_lock(), request_dma(), and free_dma() since those interfaces will no longer be provided. Signed-off-by: David Rientjes <rientjes@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: "H. Peter Anvin" <hpa@zytor.com> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Bjorn Helgaas <bjorn.helgaas@hp.com> Cc: Russell King <linux@arm.linux.org.uk> Cc: "Luck, Tony" <tony.luck@intel.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									8df3bd9e18
								
							
						
					
					
						commit
						1c00f0161f
					
				| @ -123,7 +123,7 @@ config NEED_SG_DMA_LENGTH | ||||
| 	def_bool y | ||||
| 
 | ||||
| config GENERIC_ISA_DMA | ||||
| 	def_bool y | ||||
| 	def_bool ISA_DMA_API | ||||
| 
 | ||||
| config GENERIC_IOMAP | ||||
| 	def_bool y | ||||
| @ -2002,9 +2002,13 @@ source "drivers/pci/pcie/Kconfig" | ||||
| 
 | ||||
| source "drivers/pci/Kconfig" | ||||
| 
 | ||||
| # x86_64 have no ISA slots, but do have ISA-style DMA. | ||||
| # x86_64 have no ISA slots, but can have ISA-style DMA. | ||||
| config ISA_DMA_API | ||||
| 	def_bool y | ||||
| 	bool "ISA-style DMA support" if (X86_64 && EXPERT) | ||||
| 	default y | ||||
| 	help | ||||
| 	  Enables ISA-style DMA support for devices requiring such controllers. | ||||
| 	  If unsure, say Y. | ||||
| 
 | ||||
| if X86_32 | ||||
| 
 | ||||
|  | ||||
| @ -151,6 +151,7 @@ | ||||
| #define DMA_AUTOINIT		0x10 | ||||
| 
 | ||||
| 
 | ||||
| #ifdef CONFIG_ISA_DMA_API | ||||
| extern spinlock_t  dma_spin_lock; | ||||
| 
 | ||||
| static inline unsigned long claim_dma_lock(void) | ||||
| @ -164,6 +165,7 @@ static inline void release_dma_lock(unsigned long flags) | ||||
| { | ||||
| 	spin_unlock_irqrestore(&dma_spin_lock, flags); | ||||
| } | ||||
| #endif /* CONFIG_ISA_DMA_API */ | ||||
| 
 | ||||
| /* enable/disable a specific DMA channel */ | ||||
| static inline void enable_dma(unsigned int dmanr) | ||||
| @ -303,9 +305,11 @@ static inline int get_dma_residue(unsigned int dmanr) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /* These are in kernel/dma.c: */ | ||||
| /* These are in kernel/dma.c because x86 uses CONFIG_GENERIC_ISA_DMA */ | ||||
| #ifdef CONFIG_ISA_DMA_API | ||||
| extern int request_dma(unsigned int dmanr, const char *device_id); | ||||
| extern void free_dma(unsigned int dmanr); | ||||
| #endif | ||||
| 
 | ||||
| /* From PCI */ | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user