Re: [PATCH v10 09/23] iommu/io-pgtable-arm-v7s: Extend to support PA[33:32] for MediaTek

From: Robin Murphy
Date: Wed Aug 21 2019 - 11:34:34 EST


On 21/08/2019 16:24, Will Deacon wrote:
On Wed, Aug 21, 2019 at 09:53:12PM +0800, Yong Wu wrote:
MediaTek extend the arm v7s descriptor to support up to 34 bits PA where
the bit32 and bit33 are encoded in the bit9 and bit4 of the PTE
respectively. Meanwhile the iova still is 32bits.

Regarding whether the pagetable address could be over 4GB, the mt8183
support it while the previous mt8173 don't, thus keep it as is.

Signed-off-by: Yong Wu <yong.wu@xxxxxxxxxxxx>
---
drivers/iommu/io-pgtable-arm-v7s.c | 32 +++++++++++++++++++++++++-------
include/linux/io-pgtable.h | 7 +++----
2 files changed, 28 insertions(+), 11 deletions(-)

[...]

@@ -731,7 +747,9 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct io_pgtable_cfg *cfg,
{
struct arm_v7s_io_pgtable *data;
- if (cfg->ias > ARM_V7S_ADDR_BITS || cfg->oas > ARM_V7S_ADDR_BITS)
+ if (cfg->ias > ARM_V7S_ADDR_BITS ||
+ (cfg->oas > ARM_V7S_ADDR_BITS &&
+ !(cfg->quirks & IO_PGTABLE_QUIRK_ARM_MTK_EXT)))

Please can you instead change arm_v7s_alloc_pgtable() so that it allows an
ias of up to 34 when the IO_PGTABLE_QUIRK_ARM_MTK_EXT is set?

You mean oas, right? I believe the hardware *does* actually support a 32-bit ias as well, but we shouldn't pretend to support that while __arm_v7s_alloc_table() still only knows how to allocate normal-sized tables.

Robin.


With that change:

Acked-by: Will Deacon <will@xxxxxxxxxx>

Will