ath10k: wmi-alloc-chunk should use DMA_BIDIRECTIONAL
authorBen Greear <greearb@candelatech.com>
Tue, 29 Nov 2016 22:00:28 +0000 (14:00 -0800)
committerKalle Valo <kvalo@qca.qualcomm.com>
Thu, 1 Dec 2016 11:16:10 +0000 (13:16 +0200)
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>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/wmi.c

index 95be2ba311fcf52ef2c72674159cbef6400e86bf..c893314a191f6b473af17f593c65d8b63ed5dbc8 100644 (file)
@@ -4487,7 +4487,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;