On Tue, Aug 17, 2021 at 09:23:26PM -0300, Fabio Estevam wrote: > > void *dma_alloc_attrs(struct device *dev, size_t size, dma_addr_t *dma_handle, > .... > WARN_ON_ONCE(!dev->coherent_dma_mask); > > Where should the coherent_dma_mask be set to avoid this problem? Looking at the ath10k code ar->dev is set by ath10k_core_create, which has multiple callers. For ath10k_pci_probe it is a pci_dev, whoch should always have a dma_mask. For ath10k_ahb_probe is is a device tree probed platform_device, which should have a dma mask. For ath10k_sdio_probe it is a sdio_func, which from my understanding is a virtual device can't do DMA itself. For ath10k_snoc_probe it is a platform device wit an explicit dma_set_mask_and_coherent and above so the dma_mask is set. For ath10k_usb_probe it is an usb device which can't do USB So unless I misred the driver you're using the SDIO or USB variant, and those are not allowed to just call dma_* functions on their respective devices.