xen/arm,arm64: fix xen_dma_ops after 815dd18 "Consolidate get_dma_ops..."
authorStefano Stabellini <sstabellini@kernel.org>
Thu, 13 Apr 2017 21:04:21 +0000 (14:04 -0700)
committerJuergen Gross <jgross@suse.com>
Tue, 2 May 2017 09:14:42 +0000 (11:14 +0200)
commite058632670b709145730a134acc3f83f392f7aa7
treeabecc50c3223d577868dac099c72bfe0c3696c49
parent4a806016223c6df131280c82f1ed69c820b6a9ff
xen/arm,arm64: fix xen_dma_ops after 815dd18 "Consolidate get_dma_ops..."

The following commit:

  commit 815dd18788fe0d41899f51b91d0560279cf16b0d
  Author: Bart Van Assche <bart.vanassche@sandisk.com>
  Date:   Fri Jan 20 13:04:04 2017 -0800

      treewide: Consolidate get_dma_ops() implementations

rearranges get_dma_ops in a way that xen_dma_ops are not returned when
running on Xen anymore, dev->dma_ops is returned instead (see
arch/arm/include/asm/dma-mapping.h:get_arch_dma_ops and
include/linux/dma-mapping.h:get_dma_ops).

Fix the problem by storing dev->dma_ops in dev_archdata, and setting
dev->dma_ops to xen_dma_ops. This way, xen_dma_ops is returned naturally
by get_dma_ops. The Xen code can retrieve the original dev->dma_ops from
dev_archdata when needed. It also allows us to remove __generic_dma_ops
from common headers.

Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
Tested-by: Julien Grall <julien.grall@arm.com>
Suggested-by: Catalin Marinas <catalin.marinas@arm.com>
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: <stable@vger.kernel.org> [4.11+]
CC: linux@armlinux.org.uk
CC: catalin.marinas@arm.com
CC: will.deacon@arm.com
CC: boris.ostrovsky@oracle.com
CC: jgross@suse.com
CC: Julien Grall <julien.grall@arm.com>
arch/arm/include/asm/device.h
arch/arm/include/asm/dma-mapping.h
arch/arm/mm/dma-mapping.c
arch/arm64/include/asm/device.h
arch/arm64/include/asm/dma-mapping.h
arch/arm64/mm/dma-mapping.c
include/xen/arm/page-coherent.h