Generic IOMMU page table framework
Get series with b4
b4 am 6034238.mfQ54vFFKj@avalonVersions newest first
- v1 Latest4 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | iommu: introduce generic page table allocation framework | +0 | 1 reply | |
| 1/4 | iommu: introduce generic page table allocation framework | +0 | 1 reply | |
| 2/4 | iommu: add ARM LPAE page table allocator | +0 | 1 reply | |
| 2/4 | iommu: add ARM LPAE page table allocator | +0 | 1 reply | |
| 2/4 | iommu: add ARM LPAE page table allocator | +0 | 1 reply |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [PATCH 0/4] Generic IOMMU page table framework
Hi Will,
Thank you for the patches.
Quoted 22 lines · On Thursday 27 November 2014 11:51:14 Will Deacon wrote:
Hi all,
This series introduces a generic IOMMU page table allocation framework, implements support for ARM long-descriptors and then ports the arm-smmu driver over to the new code.
There are a few reasons for doing this:
- Page table code is hard, and I don't enjoy shopping
- A number of IOMMUs actually use the same table format, but currently duplicate the code
- It provides a CPU (and architecture) independent allocator, which may be useful for some systems where the CPU is using a different table format for its own mappings
As illustrated in the final patch, an IOMMU driver interacts with the allocator by passing in a configuration structure describing the input and output address ranges, the supported pages sizes and a set of ops for performing various TLB invalidation and PTE flushing routines.
Quoted 4 lines
The LPAE code implements support for 4k/2M/1G, 16k/32M and 64k/512M mappings, but I decided not to implement the contiguous bit in the interest of trying to keep the code semi-readable. This could always be added later, if needed.
Do you have any idea how much the contiguous bit can improve performances in real use cases ?
Quoted 32 lines
I also included some self-tests for the LPAE implementation. Ideally we'd merge these, but I'm also happy to drop them if there are objections.
Tested with the self-tests, but also VFIO + MMU-500 at stage-1 and stage-2. Patches taken against my iommu/devel branch (queued by Joerg for 3.19).
All feedback welcome.
Will
--->8
Will Deacon (4):
iommu: introduce generic page table allocation framework
iommu: add ARM LPAE page table allocator
iommu: add self-consistency tests to ARM LPAE IO page table allocator iommu/arm-smmu: make use of generic LPAE allocatorMAINTAINERS | 1 + arch/arm64/Kconfig | 1 - drivers/iommu/Kconfig | 32 +- drivers/iommu/Makefile | 2 + drivers/iommu/arm-smmu.c | 872 +++++++++++--------------------------- drivers/iommu/io-pgtable-arm.c | 925 ++++++++++++++++++++++++++++++++++++++ drivers/iommu/io-pgtable.c | 78 ++++ drivers/iommu/io-pgtable.h | 77 ++++ 8 files changed, 1361 insertions(+), 627 deletions(-) create mode 100644 drivers/iommu/io-pgtable-arm.c create mode 100644 drivers/iommu/io-pgtable.c create mode 100644 drivers/iommu/io-pgtable.h
Signature · 3 lines
Regards, Laurent Pinchart