28 lines
970 B
Diff
28 lines
970 B
Diff
|
From: Ben Greear <greearb@candelatech.com>
|
||
|
Date: Tue, 29 Nov 2016 14:00:28 -0800
|
||
|
Subject: [PATCH] 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
|
||
|
|
||
|
Tested-by: Marek Behun <kabel@blackhole.sk>
|
||
|
Signed-off-by: Ben Greear <greearb@candelatech.com>
|
||
|
---
|
||
|
|
||
|
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||
|
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||
|
@@ -4495,7 +4495,7 @@ static int ath10k_wmi_alloc_chunk(struct
|
||
|
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;
|