imx7: dev->coherent_dma_mask NULL warning

Fabio Estevam festevam at gmail.com
Wed Aug 18 02:31:19 PDT 2021


Hi Christoph,

On Wed, Aug 18, 2021 at 2:11 AM Christoph Hellwig <hch at lst.de> wrote:
>
> 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.

Correct, on i.MX7 the ath10k Wifi chip connects via SDIO.

Is there a way to avoid the WARN_ON_ONCE(!dev->coherent_dma_mask)
to happen in this case?

Thanks



More information about the ath10k mailing list