iwlwifi for 7260 card: DMA memory allocation fails

Josef Söntgen josef.soentgen at ...1...
Mon Dec 1 17:49:37 CET 2014

Hallo Christian,

On 12/01/14 17:11, Christian Menard wrote:
> unfortunately I still have no possibility to get LOG output via serial, I only-
> can print the LOG to screen and I'm too lazy to type the full log ;).

I see — in this case you might want to try using the tcp_terminal in
combination with terminal_log and route the LOG session of the wifi_drv
accordingly. This atleast enables you to get the wifi_drv messages via
TCP :-)

> However, I did some investigation into the problem. The device is stopped
> because of this error:
>> dma_map_single: virtual address b008a78 not registered for DMA, called from:-
> 1070bfc
>> def_error: Error sending BT_CONFIG: enqueu_hcmd failed: -12
> Where dma_map_single is called by enqueu_hcmd. So the problem is related to-
> DMA,

Yeah, the problem is related to how DMA memory is handled in Linux and
with how we deal with it in dde_linux. Almost all memory allocations in
the vanilla source, even the ones that are used later on for DMA, are
done with GFP_KERNEL. In dde_linux we employ two memory pools. One for
“normal” memory and one for memory which may be used for DMA. We
introduced a flag (GFP_LX_DMA) to distinguish between the two.
Unfortunatly, you have to patch the vanilla sources for this to work
(you may take a look at the wifi_mem.patch). Since the wifi_drv was
only tested on 6xxx cards only the dvm source is patched. To enable the
7260 card you would have to trace all memory allocations done by this
part of the iwlwifi driver and change the flags on all allocations that
might end up being used in an DMA transaction.

I am afraid that at the moment I do not have the time to look any
further into this matter but maybe you get away by changing all
allocations to use the DMA allocator for now.


More information about the users mailing list