IOMMU in bypass mode by default on ARM64, instead of command line option
Sunil Kovvuri
sunil.kovvuri at gmail.com
Tue Mar 7 04:55:11 PST 2017
On Tue, Mar 7, 2017 at 5:02 PM, Will Deacon <will.deacon at arm.com> wrote:
> On Mon, Mar 06, 2017 at 12:34:36PM +0000, Robin Murphy wrote:
>> On 04/03/17 16:59, Sunil Kovvuri wrote:
>> > I did see some patches submitted earlier to enable user to boot kernel
>> > with SMMU in bypass mode using a command line parameter.
>> >
>> > Idea sounds good, but just wondering if it would be better if things are done in
>> > reverse i.e put SMMU in bypass mode by default on host and provide
>> > option to user to enable SMMU via bootargs. Reason i am saying this is
>> > with SMMU
>> > enabled on host, performance of devices drops down to pathetic levels, not
>> > because of HW but mostly because of ARM IOMMU implementation in kernel.
>
> [...]
>
>> > Performance with SMMU enabled drops to <1/5th on NVMe disk and on NIC
>> > it's down to nothing. Problem seems to be with high contention for
>> > locks which are
>> > being used for IOVA maintenance and while updating translation tables inside
>> > ARM SMMUv2/v3 drivers.
>>
>> Yes, we're well aware that there's a whole load of potential lock
>> contention where there doesn't really need to be. The performance
>> optimisation effort has mostly been waiting for sufficiently big
>> systems/workloads to start appearing in order to measure and justify it.
>> Consider yourself the winner :)
>
> Yup. Given that you have numbers (thank you!), then we'll bump the priority
> of this work and try to get something out that you can test.
>
> I'll also respin my bypass series ASAP.
>
> Will
Good to know that this is a known problem.
We will be morethan happy to test your patches.
Thanks,
Sunil.
More information about the linux-arm-kernel
mailing list