Hi all, a while ago Jesper reported major performance regressions due to the spectre v2 mitigations in his XDP forwarding workloads. A large part of that is due to the DMA mapping API indirect calls. It turns out that the most common implementation of the DMA API is the direct mapping case, and now that we have merged almost all duplicate implementations of that into a single generic one is easily feasily to direct calls for this fast path. This series adds consolidate the DMA mapping code by merging the swiotlb case into the dma direct case, and then treats NULL dma_ops as an indicator that that we should directly call the direct mapping case. This recovers a large part of the retpoline induces XDP slowdown. This works is based on the dma-mapping tree, so you probably want to want this git tree for testing: git://git.infradead.org/users/hch/misc.git dma-direct-calls.2 Gitweb: http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/dma-direct-calls.2 Changes since v1: - now also includes all the prep patches relative to the dma-mapping for-next tree - move various slow path functions out of line - use a NULL dma ops as the indicate to use the direct mapping path - remove dma_direct_ops now that we always call it without the indirection - move the dummy dma ops to common code - explicitly st the dummy dma ops for devices that are indicates as not DMA capable by firmware