From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933654AbcFLVsj (ORCPT ); Sun, 12 Jun 2016 17:48:39 -0400 Received: from mail-qt0-f193.google.com ([209.85.216.193]:32795 "EHLO mail-qt0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932770AbcFLVsV (ORCPT ); Sun, 12 Jun 2016 17:48:21 -0400 X-Greylist: delayed 953 seconds by postgrey-1.27 at vger.kernel.org; Sun, 12 Jun 2016 17:48:20 EDT Date: Sun, 12 Jun 2016 14:32:24 -0700 From: Jerry Snitselaar To: Sudip Mukherjee Cc: Andrew Morton , linux-kernel@vger.kernel.org, Simran Rai , Christoph Hellwig Subject: Re: [PATCH] dma: remove bad_dma_ops to fix build fail Message-ID: <20160612213224.fcjalhwmjqwpjhui@rhwork> Reply-To: Jerry Snitselaar Mail-Followup-To: Sudip Mukherjee , Andrew Morton , linux-kernel@vger.kernel.org, Simran Rai , Christoph Hellwig References: <1465763104-6227-1-git-send-email-sudipm.mukherjee@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <1465763104-6227-1-git-send-email-sudipm.mukherjee@gmail.com> User-Agent: Mutt/1.6.1-neo (2016-05-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun Jun 12 16, Sudip Mukherjee wrote: >m32r allmodconfig is failng with errors like: >ERROR: "bad_dma_ops" [sound/soc/bcm/snd-soc-cygnus.ko] undefined! > >On checking the code it turns out that struct bad_dma_ops has been >declared as extern but no one has actually defined struct bad_dma_ops. >Lets remove that and return NULL from get_dma_ops() if HAS_DMA is not >defined. > >Signed-off-by: Sudip Mukherjee >--- > >This patch has been build tested with m32r allmodconfig, >x86_64 allmodconfig and i386 allmodconfig. > > include/linux/dma-mapping.h | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > >diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h >index 71c1b21..583795a 100644 >--- a/include/linux/dma-mapping.h >+++ b/include/linux/dma-mapping.h >@@ -113,10 +113,9 @@ int dma_mmap_from_coherent(struct device *dev, struct vm_area_struct *vma, > * dma dependent code. Code that depends on the dma-mapping > * API needs to set 'depends on HAS_DMA' in its Kconfig > */ >-extern struct dma_map_ops bad_dma_ops; > static inline struct dma_map_ops *get_dma_ops(struct device *dev) > { >- return &bad_dma_ops; >+ return NULL; > } > #endif > >-- >1.9.1 > Ccing Christoph since his commit introduced bad_dma_ops, and Simran who wrote that cygnus code. I'm thinking that is there to complain loudly when someone is trying to use dma without HAS_DMA, correct Christoph? cygnus_pcm_preallocate_dma_buffer() is calling dma_alloc_coherent(), which ends up in a call to get_dma_ops() and tripping over the above. Possibly this instead: diff --git a/sound/soc/bcm/Kconfig b/sound/soc/bcm/Kconfig index d528aac..edf3671 100644 --- a/sound/soc/bcm/Kconfig +++ b/sound/soc/bcm/Kconfig @@ -11,6 +11,7 @@ config SND_BCM2835_SOC_I2S config SND_SOC_CYGNUS tristate "SoC platform audio for Broadcom Cygnus chips" depends on ARCH_BCM_CYGNUS || COMPILE_TEST + depends on HAS_DMA help Say Y if you want to add support for ASoC audio on Broadcom Cygnus chips (bcm958300, bcm958305, bcm911360)