[alsa-devel] [PATCH] sound: Add dependency on DMA
Architectures like m32r do not have a proper DMA-API implementation, fixes COMPILE_TEST linking failures for the sounds subsystem.
Signed-off-by: Florian Fainelli f.fainelli@gmail.com --- sound/Kconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/Kconfig b/sound/Kconfig index 5a240e050ae6..a768704d2f47 100644 --- a/sound/Kconfig +++ b/sound/Kconfig @@ -60,6 +60,7 @@ if !M68K && !UML
menuconfig SND tristate "Advanced Linux Sound Architecture" + depends on HAS_DMA help Say 'Y' or 'M' to enable ALSA (Advanced Linux Sound Architecture), the new base sound system.
On Thu, 17 Nov 2016 19:52:37 +0100, Florian Fainelli wrote:
Architectures like m32r do not have a proper DMA-API implementation, fixes COMPILE_TEST linking failures for the sounds subsystem.
What error did you get exactly? There are already CONFIG_HAS_DMA dependency in a few places, so I wonder what's missing.
thanks,
Takashi
Signed-off-by: Florian Fainelli f.fainelli@gmail.com
sound/Kconfig | 1 + 1 file changed, 1 insertion(+)
diff --git a/sound/Kconfig b/sound/Kconfig index 5a240e050ae6..a768704d2f47 100644 --- a/sound/Kconfig +++ b/sound/Kconfig @@ -60,6 +60,7 @@ if !M68K && !UML
menuconfig SND tristate "Advanced Linux Sound Architecture"
- depends on HAS_DMA help Say 'Y' or 'M' to enable ALSA (Advanced Linux Sound Architecture), the new base sound system.
-- 2.9.3
On 11/17/2016 11:03 AM, Takashi Iwai wrote:
On Thu, 17 Nov 2016 19:52:37 +0100, Florian Fainelli wrote:
Architectures like m32r do not have a proper DMA-API implementation, fixes COMPILE_TEST linking failures for the sounds subsystem.
What error did you get exactly? There are already CONFIG_HAS_DMA dependency in a few places, so I wonder what's missing.
They looked like these:
sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb14): undefined reference to `bad_dma_ops' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb1c): undefined reference to `bad_dma_ops' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb34): undefined reference to `dma_common_mmap' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb34): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `dma_common_mmap' Makefile:961: recipe for target 'vmlinux' failed
I could probably add an ifdef CONFIG_HAS_DMA just surrounding these snd_pcm_lib if you think this is more appropriate?
On 11/17/2016 11:14 AM, Florian Fainelli wrote:
On 11/17/2016 11:03 AM, Takashi Iwai wrote:
On Thu, 17 Nov 2016 19:52:37 +0100, Florian Fainelli wrote:
Architectures like m32r do not have a proper DMA-API implementation, fixes COMPILE_TEST linking failures for the sounds subsystem.
What error did you get exactly? There are already CONFIG_HAS_DMA dependency in a few places, so I wonder what's missing.
They looked like these:
sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb14): undefined reference to `bad_dma_ops' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb1c): undefined reference to `bad_dma_ops' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb34): undefined reference to `dma_common_mmap' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb34): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `dma_common_mmap' Makefile:961: recipe for target 'vmlinux' failed
I could probably add an ifdef CONFIG_HAS_DMA just surrounding these snd_pcm_lib if you think this is more appropriate?
I can't reproduce this build failure reliably anyway now, it was due to switching between x86/m32r configurations, the only offender was the Broadcom Cygnus driver, and this has been fixed as well.
Sorry for the noise!
On Thu, 17 Nov 2016 20:42:38 +0100, Florian Fainelli wrote:
On 11/17/2016 11:14 AM, Florian Fainelli wrote:
On 11/17/2016 11:03 AM, Takashi Iwai wrote:
On Thu, 17 Nov 2016 19:52:37 +0100, Florian Fainelli wrote:
Architectures like m32r do not have a proper DMA-API implementation, fixes COMPILE_TEST linking failures for the sounds subsystem.
What error did you get exactly? There are already CONFIG_HAS_DMA dependency in a few places, so I wonder what's missing.
They looked like these:
sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb14): undefined reference to `bad_dma_ops' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb1c): undefined reference to `bad_dma_ops' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb34): undefined reference to `dma_common_mmap' sound/built-in.o: In function `snd_pcm_lib_default_mmap': (.text+0xbb34): relocation truncated to fit: R_M32R_26_PCREL_RELA against undefined symbol `dma_common_mmap' Makefile:961: recipe for target 'vmlinux' failed
I could probably add an ifdef CONFIG_HAS_DMA just surrounding these snd_pcm_lib if you think this is more appropriate?
I can't reproduce this build failure reliably anyway now, it was due to switching between x86/m32r configurations, the only offender was the Broadcom Cygnus driver, and this has been fixed as well.
OK, good to hear.
Meanwhile, we can put a patch like below just to be sure, too. But you can't check whether it works now ;)
thanks,
Takashi
--- diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 9d33c1e85c79..8d7a61078b9f 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -3403,6 +3403,7 @@ int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream, area->vm_end - area->vm_start, area->vm_page_prot); } #endif /* CONFIG_GENERIC_ALLOCATOR */ +#ifdef CONFIG_HAS_DMA #ifndef CONFIG_X86 /* for avoiding warnings arch/x86/mm/pat.c */ if (!substream->ops->page && substream->dma_buffer.dev.type == SNDRV_DMA_TYPE_DEV) @@ -3412,6 +3413,7 @@ int snd_pcm_lib_default_mmap(struct snd_pcm_substream *substream, substream->runtime->dma_addr, area->vm_end - area->vm_start); #endif /* CONFIG_X86 */ +#endif /* CONFIG_HAS_DMA */ /* mmap with fault handler */ area->vm_ops = &snd_pcm_vm_ops_data_fault; return 0;
participants (2)
-
Florian Fainelli
-
Takashi Iwai