On Thu, Jul 11, 2013 at 3:01 AM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > On Thu, 11 Jul 2013, Arnd Bergmann wrote: > >> On Wednesday 10 July 2013, Alan Stern wrote: >> > This isn't right. There are USB host controllers that use PIO, not >> > DMA. The HAS_DMA dependency should go with the controller driver, not >> > the USB core. >> > >> > On the other hand, the USB core does call various routines like >> > dma_unmap_single. It ought to be possible to compile these calls even >> > when DMA isn't enabled. That is, they should be defined as do-nothing >> > stubs. >> >> The asm-generic/dma-mapping-broken.h file intentionally causes link >> errors, but that could be changed. >> >> The better approach in my mind would be to replace code like >> >> >> if (hcd->self.uses_dma) >> >> with >> >> if (IS_ENABLED(CONFIG_HAS_DMA) && hcd->self.uses_dma) { >> >> which will reliably cause that reference to be omitted from object code, >> but not stop giving link errors for drivers that actually require >> DMA. > > How will it give link errors for drivers that require DMA? It won't. Unless the host driver itself calls into the DMA API, too (are there any that don't?). > Besides, wouldn't it be better to get an error at config time rather > than at link time? Or even better still, not to be allowed to > configure drivers that depend on DMA if DMA isn't available? Indeed. > If we add an explicit dependency for HAS_DMA to the Kconfig entries for > these drivers, then your suggestion would be a good way to allow > usbcore to be built independently of DMA support. However, having the link errors helps when annotating the Kconfig files with HAS_DMA dependencies. Unfortunately the check for "hcd->self.uses_dma" (which boils down to "dev->dma_mask != NULL") isn't sufficient to cause breakage at compilation time when a Kconfig entry incorrectly doesn't depend on HAS_DMA. 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