diff mbox

AR9882 IOMMU faults

Message ID 577FB15B.3050907@candelatech.com (mailing list archive)
State Not Applicable
Delegated to: Kalle Valo
Headers show

Commit Message

Ben Greear July 8, 2016, 1:57 p.m. UTC
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:

[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>

[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
>

Comments

Ben Skeggs July 8, 2016, 11:45 p.m. UTC | #1
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 mbox

Patch

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;