Thread (5 messages) 5 messages, 2 authors, 2022-06-29

Re: [PATCH v10 1/2] iommu/io-pgtable-arm-v7s: Add a quirk to allow pgtable PA up to 35bit

From: Yong Wu <yong.wu@mediatek.com>
Date: 2022-06-22 01:29:06
Also in: linux-iommu, linux-mediatek, lkml

On Thu, 2022-06-16 at 20:07 +0800, yf.wang@mediatek.com wrote:
From: Yunfei Wang <redacted>

Single memory zone feature will remove ZONE_DMA32 and ZONE_DMA and
cause pgtable PA size larger than 32bit.

Since Mediatek IOMMU hardware support at most 35bit PA in pgtable,
so add a quirk to allow the PA of pgtables support up to bit35.

Signed-off-by: Ning Li <redacted>
Signed-off-by: Yunfei Wang <redacted>
---
 drivers/iommu/io-pgtable-arm-v7s.c | 67 +++++++++++++++++++++++-----
--
 include/linux/io-pgtable.h         | 15 ++++---
 2 files changed, 63 insertions(+), 19 deletions(-)
[...]
 	/* TTBR */
-	cfg->arm_v7s_cfg.ttbr = virt_to_phys(data->pgd) |
ARM_V7S_TTBR_S |
+	paddr = virt_to_phys(data->pgd);
+	cfg->arm_v7s_cfg.ttbr = paddr | ARM_V7S_TTBR_S |
 				(cfg->coherent_walk ? (ARM_V7S_TTBR_NOS
|
 				 ARM_V7S_TTBR_IRGN_ATTR(ARM_V7S_RGN_WBW
A) |
 				 ARM_V7S_TTBR_ORGN_ATTR(ARM_V7S_RGN_WBW
A)) :
 				(ARM_V7S_TTBR_IRGN_ATTR(ARM_V7S_RGN_NC)
|
 				 ARM_V7S_TTBR_ORGN_ATTR(ARM_V7S_RGN_NC)
));
+
+	if (cfg->quirks & IO_PGTABLE_QUIRK_ARM_MTK_TTBR_EXT)
+		cfg->arm_v7s_cfg.ttbr = (paddr & GENMASK(31, 7)) |
+					upper_32_bits(paddr);
If we keep ttbr u32, we have to put the special logic here. This line
is ok for all the MediaTek cases, not only for this quirk. It means:

    if (arm_v7s_is_mtk_enabled(cfg))
           cfg->arm_v7s_cfg.ttbr = (virt_to_phys(data->pgd) &
GENMASK(31, 7)) | upper_32_bits(paddr);
    else
           xxx
 
     Then we don't need add "& MMU_PT_ADDR_MASK" in mtk_iommu.c since
you have done it here.
+
 	return &data->iop;
 
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help