[ath10k] not working in 64 bit with >2GB Ram

paresh chaudhary chaudharyparesh1986 at gmail.com
Wed Mar 21 12:26:43 PDT 2018


Hi Adrian,

The answer regarding fbff7000 : This address is returned by dma_map_single api but it's failed to validate in dma_map_error api.

  skb_cb->paddr = dma_map_single(dev, msdu->data, msdu->len,
                                       DMA_TO_DEVICE);
        res = dma_mapping_error(dev, skb_cb->paddr);
        if (res) {
                res = -EIO;
                goto err_free_txdesc;
        }

For bounce buffer, we have compiled kernel with  SWIOTLB support. 


config SWIOTLB
        bool "SWIOTLB support"
        default n
        select IOMMU_HELPER
        ---help---
          Support for IO bounce buffering for systems without an IOMMU.
          This allows us to DMA to the full physical address space on
          platforms where the size of a physical address is larger
          than the bus address.  Not all platforms support this.



> On Mar 21, 2018, at 12:12 PM, Adrian Chadd <adrian at freebsd.org> wrote:
> 
> Sorry, a quick follow-up:
> 
> I bring it up because I know there's some oddness with the PPC IOMMU
> and where they put their devices in the physical address map, so you
> have to do a lot of gymnastics to be able to even access devices.
> Anything above 32 bit boundary requires that they do a temporary IOMMU
> mapping OR they have to use a bounce buffer in memory < 4G. So that
> whole side of things needs to be setup correctly on the Linux BSP side
> of things for the dma map/unmap calls to do the right thing.
> 
> 
> 
> -adrian



More information about the ath10k mailing list