Hi David, On Tue, May 6, 2014 at 3:17 PM, David Laight <David.Laight@xxxxxxxxxx> wrote: >> If NO_DMA=y: >> >> drivers/built-in.o: In function `s3c_hsotg_map_dma': >> s3c-hsotg.c:(.text+0x375b2c): undefined reference to `usb_gadget_map_request' >> drivers/built-in.o: In function `s3c_hsotg_unmap_dma': >> s3c-hsotg.c:(.text+0x376a32): undefined reference to `usb_gadget_unmap_request' >> make[3]: *** [vmlinux] Error 1 >> >> Note that all callers of s3c_hsotg_map_dma()/s3c_hsotg_unmap_dma() are >> protected by a call into the using_dma() checking function: >> >> static inline bool using_dma(struct s3c_hsotg *hsotg) >> { >> return false; /* support is not complete */ >> } >> >> but not all versions of gcc manage to optimize the check away, causing a >> link error. > > A have seen gcc optimise away a call, but leave the undefined symbol > in the symbol table. > That might be what is happening here. Indeed, the unused functions s3c_hsotg_{,un}map_dma() are still there, but the calls to them have been optimized away. Marking s3c_hsotg_{,un}map_dma() inline fixes that. I'll send a new patch doing that, as it's a bit silly to require "depends on HAS_DMA" for a driver which has DMA disabled. 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 -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html