Subject: Re: [BUILD_FAILURE] 2.6.27-git2 - allyesconfig on powerpc selects CONFIG_INTEL_IOATDMA=y

From: Brice Goglin <[email-masked]>
Date: Mon, 13 Oct 2008 14:02:26 +0200

Adrian Bunk wrote:
> On Mon, Oct 13, 2008 at 03:45:59PM +0530, Kamalesh Babulal wrote:
>   
>> Hi,
>>
>>    2.6.27-git2 kernel build fails, while building the kernel with
>> allyesconfig option. The allyesconfig selects CONFIG_INTEL_IOATDMA=y
>>
>> CC   drivers/dma/ioat_dca.o
>> drivers/dma/ioat_dca.c: In function âdca_enabled_in_biosâ:
>> drivers/dma/ioat_dca.c:81: error: implicit declaration of function âcpuid_eaxâ
>> drivers/dma/ioat_dca.c: In function âsystem_has_dca_enabledâ:
>> drivers/dma/ioat_dca.c:91: error: implicit declaration of function âboot_cpu_hasâ
>> drivers/dma/ioat_dca.c:91: error: âX86_FEATURE_DCAâ undeclared (first use in this function)
>> drivers/dma/ioat_dca.c:91: error: (Each undeclared identifier is reported only once
>> drivers/dma/ioat_dca.c:91: error: for each function it appears in.)
>> drivers/dma/ioat_dca.c: In function âioat_dca_get_tagâ:
>> drivers/dma/ioat_dca.c:190: error: implicit declaration of function âcpu_physical_idâ
>> make[2]: *** [drivers/dma/ioat_dca.o] Error 1
>> make[1]: *** [drivers/dma] Error 2
>> make: *** [drivers] Error 2
>> ...
>>     
>
> Thanks for the report, the MYRI10GE and IXGBE commits that introduced 
> the select's are really broken.
>
> For fixing it I need to know the intended semantics.
>
> Brian, Jesse, is it OK to limit the drivers to m with 
> CONFIG_INTEL_IOATDMA=m ?
>   

I think I would rather drop DCA from myri10ge if IOATDMA=m while
myri10ge=y. What's the simplest way to do so?

When Jesse told me to commit this in myri10ge, I thought it would be
nice to have DCA work the same than NETDMA/DMAengine does: you can have
NETDMA enabled without IOATDMA (either not built at all, or just not
loaded). You just don't get any DMA channel when you ask for one. Why
not do the same for DCA? There could be some generic DCA layer that can
be built all the time and returns DCA resources only if IOATDMA is
loaded/built ?

Brice