Re: [RFC] avoid indirect calls for DMA direct mappings

From: Nadav Amit
Date: Thu Dec 06 2018 - 13:29:47 EST


> On Dec 6, 2018, at 9:43 AM, Jesper Dangaard Brouer <brouer@xxxxxxxxxx> wrote:
>
> On Thu, 6 Dec 2018 07:37:19 -0800
> Christoph Hellwig <hch@xxxxxx> wrote:
>
>> 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 patch adds a check if we are using dma_direct_ops in each fast path
>> DMA operation, and just uses a direct call instead. For the XDP workload
>> this increases the number of packets per second from 7,438,283 to
>> 9,610,088, so it provides a very significant speedup.
>
> Full test report avail here:
> https://github.com/xdp-project/xdp-project/blob/master/areas/dma/dma01_test_hellwig_direct_dma.org
>
>
>> Note that the patch depends on a lot of work either queued up in the
>> DMA mapping tree, or still out on the list from review, so to actually
>> try the patch you probably want this git tree:
>>
>>
>> git://git.infradead.org/users/hch/misc.git dma-direct-calls
>>
>> Gitweb:
>>
>> http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/dma-direct-calls

Did you happen to see my RFC for "automatic" indirect call promotion?

https://lkml.org/lkml/2018/10/18/175

I hope to get v1 based on Josh responses next week.