tile: support LSI MEGARAID SAS HBA hybrid dma_ops
authorChris Metcalf <cmetcalf@tilera.com>
Fri, 2 Aug 2013 16:24:42 +0000 (12:24 -0400)
committerChris Metcalf <cmetcalf@tilera.com>
Tue, 6 Aug 2013 16:52:33 +0000 (12:52 -0400)
commit803c874abe1358998ab65a8cca728684ebb50a13
tree06f6ca14ed84458c0bd2b40e8b61a3cb4c0e8e1c
parent26cde05a2cb7d4c0f4cd1d4aeeadc2939c972786
tile: support LSI MEGARAID SAS HBA hybrid dma_ops

The LSI MEGARAID SAS HBA suffers from the problem where it can do
64-bit DMA to streaming buffers but not to consistent buffers.
In other words, 64-bit DMA is used for disk data transfers and 32-bit
DMA must be used for control message transfers. According to LSI,
the firmware is not fully functional yet. This change implements a
kind of hybrid dma_ops to support this.

Note that on most other platforms, the 64-bit DMA addressing space is the
same as the 32-bit DMA space and they overlap the physical memory space.
No special arrangement is needed to support this kind of mixed DMA
capability.  On TILE-Gx, the 64-bit DMA space is completely separate
from the 32-bit DMA space.  Due to the use of the IOMMU, the 64-bit DMA
space doesn't overlap the physical memory space.  On the other hand,
the 32-bit DMA space overlaps the physical memory space under 4GB.
The separate address spaces make it necessary to have separate dma_ops.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
arch/tile/include/asm/dma-mapping.h
arch/tile/kernel/pci-dma.c