Commit 1c00f0161f5e5bf1a441ea834c923f4102456489
Committed by
Linus Torvalds
1 parent
8df3bd9e18
Exists in
master
and in
20 other branches
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
arch/x86/Kconfig
... | ... | @@ -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 |