[PATCH v4 10/10] xen/arm,arm64: enable SWIOTLB_XEN
From: Stefano Stabellini <hidden>
Date: 2013-08-29 15:38:31
Also in:
lkml, xen-devel
On Thu, 29 Aug 2013, Ian Campbell wrote:
On Wed, 2013-08-28 at 21:07 +0100, Stefano Stabellini wrote:quoted
On Thu, 15 Aug 2013, Ian Campbell wrote:quoted
On Thu, 2013-08-15 at 12:10 +0100, Stefano Stabellini wrote:quoted
At the moment always rely on swiotlb-xen, but when Xen starts supporting hardware IOMMUs we'll be able to avoid it conditionally on the presence of an IOMMU on the platform.Do we have any idea how we are going to do this? It's extra complicated if you consider that on some systems on some of the devices are behind an IOMMU :-/ I wonder if we can enumerate which devices have an IOMMU at boot time and force a ludicrous dma mask (such as 0) if one isn't present in order to force us to always take the exchange_and_pin path?We don't need to worry about how to specify which devices need to go via the swiotlb internally, because we have our own arm specific dma_map_ops. At the moment they are just implemented using the swiotlb-xen functions, but we could easily provide wrappers that check our own internal whitelist/blacklist and go via swiotlb-xen only in those cases.OK, but how do we decide which devices go on those lists? We need some sort of indication from the hypervisor, don't we? Only Xen knows if it has an iommu it can use because the iommu must necessarily be hidden from Linux.
Right. Maybe Xen could mark the devices that are safe to use without swiotlb-xen on device tree? Adding a property to the node?