Message ID | 577FB15B.3050907@candelatech.com (mailing list archive) |
---|---|
State | Not Applicable |
Delegated to: | Kalle Valo |
Headers | show |
On 07/08/2016 11:57 PM, Ben Greear wrote: > > > On 07/08/2016 06:09 AM, Manoharan, Rajkumar wrote: >> Logs are so limited. If possible, revert below commit and give a try >> >> "ath10k: do not use coherent memory for allocated device memory chunks" >> >> If revert is not so clean, try with this patch. >> >> https://patchwork.kernel.org/patch/9175029/ > > I use this patch, I don't think it is upstream, and per comment, I have not > tested this on other than x86 platform: Both the revert, and the change too DMA_BIDIRECTIONAL seem to resolve the issue here (also on x86). Thank you! Ben. > > [greearb@ben-dt ath10k]$ git show 0e6e6f6b2 > commit 0e6e6f6b2fac0ade990de56eef3841dbe7128f35 > Author: Ben Greear <greearb@candelatech.com> > Date: Thu Jan 21 18:57:11 2016 -0800 > > ath10k: wmi-alloc-chunk should use DMA_BIDIRECTIONAL. > > These memory chunks are often used as 'swap' by the NIC, > so it will be both reading and writing to these areas. > > This seems to fix errors like this on my x86-64 machine: > > kernel: DMAR: DMAR:[DMA Write] Request device [05:00.0] fault addr > ff5de000 > DMAR:[fault reason 05] PTE Write access is not set > > Should be tested and verified by someone who uses other platforms > though... > > Signed-off-by: Ben Greear <greearb@candelatech.com> > > diff --git a/drivers/net/wireless/ath/ath10k/wmi.c > b/drivers/net/wireless/ath/ath10k/wmi.c > index af37a77..502f0e0 100644 > --- a/drivers/net/wireless/ath/ath10k/wmi.c > +++ b/drivers/net/wireless/ath/ath10k/wmi.c > @@ -4404,7 +4404,7 @@ static int ath10k_wmi_alloc_chunk(struct ath10k > *ar, u32 req_id, > if (!num_units) > return -ENOMEM; > > - paddr = dma_map_single(ar->dev, vaddr, pool_size, DMA_TO_DEVICE); > + paddr = dma_map_single(ar->dev, vaddr, pool_size, > DMA_BIDIRECTIONAL); > if (dma_mapping_error(ar->dev, paddr)) { > kfree(vaddr); > return -ENOMEM; > [greearb@ben-dt ath10k]$ > >> >> -Rajkumar >> ________________________________________ >> From: ath10k <ath10k-bounces@lists.infradead.org> on behalf of Ben >> Skeggs <bskeggs@redhat.com> >> Sent: Friday, July 8, 2016 10:59 AM >> To: ath10k@lists.infradead.org >> Subject: AR9882 IOMMU faults >> >> Hey, >> >> I've just installed a COMPEX WLE600VX (AR9882) in my router machine, >> operating in AP mode. >> >> While it appears to be working well enough, I get massive floods of >> IOMMU faults reported in my kernel log. These appear to increase with >> the load on the network. >> >> I've attached both the info that ath10k reports when it detects the >> device, and a sample of one of the DMAR messages (worth nothing that >> it's the same fault address in all the messages). >> >> Is this a known issue, and anything I can do to help get it resolved? >> >> Thanks, >> Ben. >> >> _______________________________________________ >> ath10k mailing list >> ath10k@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/ath10k >> >
diff --git a/drivers/net/wireless/ath/ath10k/wmi.c b/drivers/net/wireless/ath/ath10k/wmi.c index af37a77..502f0e0 100644 --- a/drivers/net/wireless/ath/ath10k/wmi.c +++ b/drivers/net/wireless/ath/ath10k/wmi.c @@ -4404,7 +4404,7 @@ static int ath10k_wmi_alloc_chunk(struct ath10k *ar, u32 req_id, if (!num_units) return -ENOMEM; - paddr = dma_map_single(ar->dev, vaddr, pool_size, DMA_TO_DEVICE); + paddr = dma_map_single(ar->dev, vaddr, pool_size, DMA_BIDIRECTIONAL); if (dma_mapping_error(ar->dev, paddr)) { kfree(vaddr); return -ENOMEM;