linux_dsm_epyc7002/drivers/net/wireless/ath/ath10k
Adrian Chadd 79e6882158 ath10k: go back to using dma_alloc_coherent() for firmware scratch memory
This reverts commit b057886524 ("ath10k: do not use coherent memory for
allocated device memory chunks") in 2015 which converted this allocation from
dma_map_coherent() to kzalloc() / dma_map_single().

The current problem manifests when using later model NICs with larger
(>700KiB) scratch spaces in memory.  Although the kzalloc call
succeeds, the software IOMMU TLB code (via dma_map_single()) panics
because it can't find 700KiB of linear physmem bounce buffers for DMA.
Now, this is a bit of a silly failure mode for the dma map API,
but it's what we currently have to play with.

In these cases, doing kzalloc() works fine, but the dma_map_single()
call fails.

After chatting with Linus briefly about this, it indeed should be
using dma_alloc_coherent() for doing larger device memory allocation
that requires some kind of physical address mapping.

You're not supposed to be using kzalloc and dma_map_* calls for
large memory regions, and I'm guessing not for long-held mappings
either.  Typically dma mappings should be temporary for DMA,
not long held like these.

Now, since hopefully the major annoying underlying problem has also been
addressed (ie, ath10k is no longer tears down all of these allocations
and reallocates them every time the vdevs are brought down) fragmentation
should stop being such a touchy issue.  If it is though, using
dma_alloc_coherent() use gets us access to the CMB APIs too relatively
easily and ideally we would be allocating memory early in boot for
exactly these reasons.

Signed-off-by: Adrian Chadd <adrian@FreeBSD.org>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
2017-05-31 14:13:54 +03:00
..
ahb.c ath10k: fix NAPI enable/disable symmetry for AHB interface 2017-04-05 10:33:26 +03:00
ahb.h ath10k: expose hif ops for ahb 2016-01-28 10:47:28 +02:00
bmi.c ath10k: sdio get target info 2017-05-04 15:55:41 +03:00
bmi.h ath10k: sdio get target info 2017-05-04 15:55:41 +03:00
ce.c ath10k: fix compile time sanity check for CE4 buffer size 2017-04-13 15:44:27 +03:00
ce.h ath10k: dump Copy Engine registers during firmware crash 2017-01-19 15:19:24 +02:00
core.c ath10k: different fw file name for sdio 2017-05-04 15:55:50 +03:00
core.h ath10k: various sdio related definitions 2017-05-04 15:55:31 +03:00
debug.c ath10k: fix out of bounds access to local buffer 2017-05-04 15:58:57 +03:00
debug.h ath10k: various sdio related definitions 2017-05-04 15:55:31 +03:00
debugfs_sta.c ath10k: use octal permission representation 2017-04-05 10:43:44 +03:00
hif.h ath10k: clean header files from bad block comments 2017-04-05 10:45:21 +03:00
htc.c ath10k: htc: ready_ext msg support 2017-05-04 15:55:45 +03:00
htc.h ath10k: htc: ready_ext msg support 2017-05-04 15:55:45 +03:00
htt_rx.c ath10k: fix reported HT MCS rates with NSS > 1 2017-05-23 18:28:19 +03:00
htt_tx.c ath10k: fix block comments style 2017-04-05 10:41:03 +03:00
htt.c ath10k: add per peer htt tx stats support for 10.4 2016-11-23 21:40:02 +02:00
htt.h ath10k: clean header files from bad block comments 2017-04-05 10:45:21 +03:00
hw.c wireless-drivers-next patches for 4.12 2017-04-09 18:13:12 -07:00
hw.h ath10k: various sdio related definitions 2017-05-04 15:55:31 +03:00
Kconfig ath10k: add initial SDIO support 2017-05-04 15:55:55 +03:00
mac.c wireless-drivers-next patches for 4.12 2017-04-24 12:25:01 -04:00
mac.h ath10k: remove ath10k_vif_to_arvif() 2017-02-14 19:38:15 +02:00
Makefile ath10k: add initial SDIO support 2017-05-04 15:55:55 +03:00
p2p.c ath10k: remove ath10k_vif_to_arvif() 2017-02-14 19:38:15 +02:00
p2p.h ath10k: implement handling of p2p noa event 2015-03-07 09:57:42 +02:00
pci.c ath10k: bump up FW API to 6 2017-04-19 17:06:42 +03:00
pci.h ath10k: fix reading sram contents for QCA4019 2017-02-07 10:57:49 +02:00
rx_desc.h ath10k: clean header files from bad block comments 2017-04-05 10:45:21 +03:00
sdio.c ath10k: add initial SDIO support 2017-05-04 15:55:55 +03:00
sdio.h ath10k: add initial SDIO support 2017-05-04 15:55:55 +03:00
spectral.c ath10k: fix spectral scan for QCA99X0 family of chipsets 2017-04-19 17:05:26 +03:00
spectral.h ath10k: refactor phyerr event handlers 2015-08-17 17:43:29 +03:00
swap.c ath10k: move firmware_swap_code_seg_info to ath10k_fw_file 2016-08-31 10:18:37 +03:00
swap.h ath10k: move firmware_swap_code_seg_info to ath10k_fw_file 2016-08-31 10:18:37 +03:00
targaddrs.h ath10k: various sdio related definitions 2017-05-04 15:55:31 +03:00
testmode_i.h ath10k: append the wmi_op_version to testmode get_version cmd 2017-05-04 15:59:48 +03:00
testmode.c ath10k: append the wmi_op_version to testmode get_version cmd 2017-05-04 15:59:48 +03:00
testmode.h ath10k: add testmode 2014-09-11 23:42:36 +03:00
thermal.c ath10k: use octal permission representation 2017-04-05 10:43:44 +03:00
thermal.h ath10k: fix checkpatch warnings related to spaces 2016-04-14 17:30:51 +03:00
trace.c
trace.h ath10k: add hw_rev to trace events to support pktlog 2016-03-03 19:20:00 +02:00
txrx.c ath10k: fix block comments style 2017-04-05 10:41:03 +03:00
txrx.h ath10k: move mgmt descriptor limit handle under mgmt_tx 2016-03-18 09:52:27 +02:00
wmi-ops.h ath10k: clean header files from bad block comments 2017-04-05 10:45:21 +03:00
wmi-tlv.c ath10k: add VHT160 support 2017-01-13 15:26:30 +02:00
wmi-tlv.h ath10k: add VHT160 support 2017-01-13 15:26:30 +02:00
wmi.c ath10k: go back to using dma_alloc_coherent() for firmware scratch memory 2017-05-31 14:13:54 +03:00
wmi.h ath10k: clean header files from bad block comments 2017-04-05 10:45:21 +03:00
wow.c ath10k: move fw_features to struct ath10k_fw_file 2016-04-20 20:00:25 +03:00
wow.h ath10k: add WOW patterns support 2015-03-30 09:10:24 +03:00