[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <4EBC3E20.20301@codeaurora.org>
Date: Thu, 10 Nov 2011 13:12:00 -0800
From: Stepan Moskovchenko <stepanm@...eaurora.org>
To: Joerg Roedel <Joerg.Roedel@....com>
CC: David Woodhouse <dwmw2@...radead.org>,
Kai Huang <mail.kai.huang@...il.com>,
Ohad Ben-Cohen <ohad@...ery.com>,
iommu@...ts.linux-foundation.org, linux-omap@...r.kernel.org,
Laurent Pinchart <laurent.pinchart@...asonboard.com>,
linux-arm-kernel@...ts.infradead.org,
David Brown <davidb@...eaurora.org>,
Arnd Bergmann <arnd@...db.de>, linux-kernel@...r.kernel.org,
Hiroshi Doyu <hdoyu@...dia.com>,
KyongHo Cho <pullip.cho@...sung.com>, kvm@...r.kernel.org
Subject: Re: [PATCH v4 2/7] iommu/core: split mapping to page sizes as supported
by the hardware
On 11/10/2011 9:09 AM, Joerg Roedel wrote:
> The plan is to have a single DMA-API implementation for all IOMMU
> drivers (X86 and ARM) which just uses the IOMMU-API. But to make this
> performing reasonalbly well a few changes to the IOMMU-API are
> required. I already have some ideas which we can discuss if you want.
I have been experimenting with an iommu_map_range call, which maps a
given scatterlist of discontiguous physical pages into a contiguous
virtual region at a given IOVA. This has some performance advantages
over just calling iommu_map iteratively. First, it reduces the amount of
table walking / calculation needed for mapping each page, given how you
know that all the pages will be mapped into a single
virtually-contiguous region (so in most cases, the first-level table
calculation can be reused). Second, it allows one to defer the TLB (and
sometimes cache) maintenance operations until the entire scatterlist has
been mapped, rather than doing a TLB invalidate after mapping each page,
as would have been the case if iommu_map were just being called from
within a loop. Granted, just using iommu_map many times may be
acceptable on the slow path, but I have seen significant performance
gains when using this approach on the fast path.
Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists