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