diff options
| author | Liam Mark <lmark@codeaurora.org> | 2017-04-05 13:42:34 -0700 |
|---|---|---|
| committer | Liam Mark <lmark@codeaurora.org> | 2017-04-05 14:13:44 -0700 |
| commit | 9db017f6ac71d3c364c00b42dd76fb96c2d4a193 (patch) | |
| tree | de58382b748c7b3f1ff0621a0062a3bc9c6e3da3 | |
| parent | 26db194916bdb891d9b2865d38cbe8068760d8ce (diff) | |
iommu/io-pgtable-fast: fix sign extension position
The introduction of support for ttbr1 wrongly caused the
fastmap stage 1 input address sign extension position to
be set to bit 31.
This was causing valid IOVAs to page fault.
Set the sign extension position back to its previous value.
Change-Id: I95ca88f8c033dd79006eff8dfea85007d091f869
Signed-off-by: Liam Mark <lmark@codeaurora.org>
| -rw-r--r-- | drivers/iommu/io-pgtable-fast.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/iommu/io-pgtable-fast.c b/drivers/iommu/io-pgtable-fast.c index 3582e206db68..b95dbd46184d 100644 --- a/drivers/iommu/io-pgtable-fast.c +++ b/drivers/iommu/io-pgtable-fast.c @@ -133,6 +133,9 @@ struct av8l_fast_io_pgtable { #define AV8L_FAST_TCR_EPD1_SHIFT 23 #define AV8L_FAST_TCR_EPD1_FAULT 1 +#define AV8L_FAST_TCR_SEP_SHIFT (15 + 32) +#define AV8L_FAST_TCR_SEP_UPSTREAM 7ULL + #define AV8L_FAST_MAIR_ATTR_SHIFT(n) ((n) << 3) #define AV8L_FAST_MAIR_ATTR_MASK 0xff #define AV8L_FAST_MAIR_ATTR_DEVICE 0x04 @@ -522,6 +525,7 @@ av8l_fast_alloc_pgtable(struct io_pgtable_cfg *cfg, void *cookie) #if defined(CONFIG_ARM) reg |= ARM_32_LPAE_TCR_EAE; #endif + reg |= AV8L_FAST_TCR_SEP_UPSTREAM << AV8L_FAST_TCR_SEP_SHIFT; cfg->av8l_fast_cfg.tcr = reg; /* MAIRs */ |
