Jared Bents

Work around for t1042 DMA issues in 64 bit with ath10k WiFi

Discussion created by Jared Bents on Mar 20, 2020
Latest reply on Mar 27, 2020 by ufedor

Here is a link to the original mailing list that I posted this information to DMA issues on PowerPC64 

 

Some background information first. I transitioned a build from 32 bit
to 64 bit and discovered my wifi modules no longer work. I am using
fsl-v2.0-1703 on a qoriq t1042. I sourced the problem to DMA mapping
errors and found that it was trying to map addresses in regions not
allowed by the kernel.

ath10k_pci 0001:01:00.0: unable to get target info from device
ath10k_pci 0001:01:00.0: could not get target info (5)
ath10k_pci 0001:01:00.0: could not probe fw (5)


I discovered that if I limited my memory from the actual 8GB present
down to just 2GB with the bootarg mem=2048M, the ath10k modules
worked.

So I started poking around in ath10k/pci.c and noticed that if I ORed
the regions specified in the memory allocations with GFP_DMA, I could
get rid of the initial dma mapping errors. A couple of examples are
below.

skb = __dev_alloc_skb(pipe->buf_sz, GFP_DMA | GFP_ATOMIC);
treq = kmemdup(req, req_len, GFP_DMA | GFP_KERNEL);


But then came across these failures which I have yet to sort out.

ath10k_pci 0001:01:00.0: failed to connect htt (-5)
ath10k_pci 0001:01:00.0: could not init core (-5)
ath10k_pci 0001:01:00.0: could not probe fw (-5)

 

I've attached the patches that were created by myself and NXP to resolved the dma errors when using the ath10k wifi on a board with the t1042 processor and 64 bit OS. These patches apply to the fsl-v2.0-1703 SDK.

Outcomes