Commit 1c00f0161f5e5bf1a441ea834c923f4102456489

Authored by David Rientjes
Committed by Linus Torvalds
1 parent 8df3bd9e18

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>

Showing 2 changed files with 12 additions and 4 deletions Side-by-side Diff

... ... @@ -123,7 +123,7 @@
123 123 def_bool y
124 124  
125 125 config GENERIC_ISA_DMA
126   - def_bool y
  126 + def_bool ISA_DMA_API
127 127  
128 128 config GENERIC_IOMAP
129 129 def_bool y
130 130  
... ... @@ -2002,9 +2002,13 @@
2002 2002  
2003 2003 source "drivers/pci/Kconfig"
2004 2004  
2005   -# x86_64 have no ISA slots, but do have ISA-style DMA.
  2005 +# x86_64 have no ISA slots, but can have ISA-style DMA.
2006 2006 config ISA_DMA_API
2007   - def_bool y
  2007 + bool "ISA-style DMA support" if (X86_64 && EXPERT)
  2008 + default y
  2009 + help
  2010 + Enables ISA-style DMA support for devices requiring such controllers.
  2011 + If unsure, say Y.
2008 2012  
2009 2013 if X86_32
2010 2014  
arch/x86/include/asm/dma.h
... ... @@ -151,6 +151,7 @@
151 151 #define DMA_AUTOINIT 0x10
152 152  
153 153  
  154 +#ifdef CONFIG_ISA_DMA_API
154 155 extern spinlock_t dma_spin_lock;
155 156  
156 157 static inline unsigned long claim_dma_lock(void)
... ... @@ -164,6 +165,7 @@
164 165 {
165 166 spin_unlock_irqrestore(&dma_spin_lock, flags);
166 167 }
  168 +#endif /* CONFIG_ISA_DMA_API */
167 169  
168 170 /* enable/disable a specific DMA channel */
169 171 static inline void enable_dma(unsigned int dmanr)
170 172  
... ... @@ -303,9 +305,11 @@
303 305 }
304 306  
305 307  
306   -/* These are in kernel/dma.c: */
  308 +/* These are in kernel/dma.c because x86 uses CONFIG_GENERIC_ISA_DMA */
  309 +#ifdef CONFIG_ISA_DMA_API
307 310 extern int request_dma(unsigned int dmanr, const char *device_id);
308 311 extern void free_dma(unsigned int dmanr);
  312 +#endif
309 313  
310 314 /* From PCI */
311 315