Add support for DMA coherent skb heads

Allocate dma heads from DMA coherent memory which is mapped
non-cachable. This requires a proprietary change in the kernel that adds
the dma_coherent field to struct sk_buff.

Using DMA coherent (non-cachable) memory only makes sense when using the
fast forwarding path for the NXP (formerly Freescale) QorIQ LS1024A
(formerly Mindspeed Comcerto 2000) SoC.

See Documentation/networking/ls1024a-fastforwarding.txt in our 4.1
kernel for more information.

It should be noted that the DMA coherent approach is different from the
ZONE_DMA_NCNB approach that was used for the 3.2 kernel. In the 3.2
kernel, they repurposed ZONE_DMA as ZONE_DMA_NCNB. They mapped the
entire zone as non-cachable (but bufferable) and hacked the zone
allocator to not fall back from ZONE_NORMAL to ZONE_DMA (ZONE_DMA_NCNB)
under memory pressure. This allowed them to use kmalloc() and friends
on the non-cachable memory area.

Change-Id: If536c91ed0d393d0bc0969e66556fcf8fbccda65
5 files changed