On Thu, Apr 23, 2015 at 8:27 PM, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, Apr 23, 2015 at 08:06:52PM +0200, Geert Uytterhoeven wrote: >> If NO_DMA=y: >> >> drivers/built-in.o: In function `fbtft_framebuffer_alloc': >> (.text+0xb53cae): undefined reference to `dmam_alloc_coherent' >> >> As DMA support is already optional, make it depend on HAS_DMA. >> >> Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> >> --- >> drivers/staging/fbtft/fbtft-core.c | 4 ++++ >> 1 file changed, 4 insertions(+) >> >> diff --git a/drivers/staging/fbtft/fbtft-core.c b/drivers/staging/fbtft/fbtft-core.c >> index 53b748be27124793..88bf4705ebadc590 100644 >> --- a/drivers/staging/fbtft/fbtft-core.c >> +++ b/drivers/staging/fbtft/fbtft-core.c >> @@ -47,9 +47,13 @@ static unsigned long debug; >> module_param(debug, ulong, 0); >> MODULE_PARM_DESC(debug, "override device debug level"); >> >> +#ifdef CONFIG_HAS_DMA >> static bool dma = true; >> module_param(dma, bool, 0); >> MODULE_PARM_DESC(dma, "Use DMA buffer"); >> +#else >> +static const bool dma; >> +#endif > > I don't see how this change can fix the build error you show above. > What am I missing? You're missing that gcc is optimized optimize away the branch that calls dmam_alloc_coherent(): if (dma) { dev->coherent_dma_mask = ~0; txbuf = dmam_alloc_coherent(dev, txbuflen, &par->txbuf.dma, GFP_DMA); } else { ... } HOWEVER, please drop this patch. Originally I had "static const bool dma = false;", but checkpatch rightfully complained about the initialization of a static, so I dropped it. Guess what, gcc 4.1.2 no longer optimizes away the branch :-( Will send v2 in a few minutes. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel