merge dma_direct_ops and dma_noncoherent_ops v2

From: Christoph Hellwig
Date: Mon Sep 10 2018 - 02:05:51 EST


While most architectures are either always or never dma coherent for a
given build, the arm, arm64, mips and soon arc architectures can have
different dma coherent settings on a per-device basis. Additionally
some mips builds can decide at boot time if dma is coherent or not.

I've started to look into handling noncoherent dma in swiotlb, and
moving the dma-iommu ops into common code [1], and for that we need a
generic way to check if a given device is coherent or not. Moving
this flag into struct device also simplifies the conditionally coherent
architecture implementations.

These patches are also available in a git tree given that they have
a few previous posted dependencies:

git://git.infradead.org/users/hch/misc.git dma-direct-noncoherent-merge

Gitweb:

http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/dma-direct-noncoherent-merge

Changes since v1:
- rebased to the latest Linus' tree which includes coherent dma support
for arc
- a couple tidyups suggested by Paul Burton