diff options
author | Robin Murphy <robin.murphy@arm.com> | 2019-10-25 19:08:39 +0100 |
---|---|---|
committer | Will Deacon <will@kernel.org> | 2020-01-10 15:52:25 +0000 |
commit | db6903010aa5b7691d8234a179f4cf71a119445a (patch) | |
tree | 2e764bb4fe0f0281426595bbd5ed30e7e52e8226 /include/linux/io-pgtable.h | |
parent | ac4b80e5b9d0ecf906300d79e4dc4df5526579a8 (diff) | |
download | linux-db6903010aa5b7691d8234a179f4cf71a119445a.tar.gz linux-db6903010aa5b7691d8234a179f4cf71a119445a.tar.bz2 linux-db6903010aa5b7691d8234a179f4cf71a119445a.zip |
iommu/io-pgtable-arm: Prepare for TTBR1 usage
Now that we can correctly extract top-level indices without relying on
the remaining upper bits being zero, the only remaining impediments to
using a given table for TTBR1 are the address validation on map/unmap
and the awkward TCR translation granule format. Add a quirk so that we
can do the right thing at those points.
Tested-by: Jordan Crouse <jcrouse@codeaurora.org>
Signed-off-by: Robin Murphy <robin.murphy@arm.com>
Signed-off-by: Will Deacon <will@kernel.org>
Diffstat (limited to 'include/linux/io-pgtable.h')
-rw-r--r-- | include/linux/io-pgtable.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/io-pgtable.h b/include/linux/io-pgtable.h index 40c1b7745fb6..53d53c6c2be9 100644 --- a/include/linux/io-pgtable.h +++ b/include/linux/io-pgtable.h @@ -83,12 +83,16 @@ struct io_pgtable_cfg { * IO_PGTABLE_QUIRK_NON_STRICT: Skip issuing synchronous leaf TLBIs * on unmap, for DMA domains using the flush queue mechanism for * delayed invalidation. + * + * IO_PGTABLE_QUIRK_ARM_TTBR1: (ARM LPAE format) Configure the table + * for use in the upper half of a split address space. */ #define IO_PGTABLE_QUIRK_ARM_NS BIT(0) #define IO_PGTABLE_QUIRK_NO_PERMS BIT(1) #define IO_PGTABLE_QUIRK_TLBI_ON_MAP BIT(2) #define IO_PGTABLE_QUIRK_ARM_MTK_EXT BIT(3) #define IO_PGTABLE_QUIRK_NON_STRICT BIT(4) + #define IO_PGTABLE_QUIRK_ARM_TTBR1 BIT(5) unsigned long quirks; unsigned long pgsize_bitmap; unsigned int ias; |