Re: [PATCH v5 06/10] iommu/mediatek: Add sub_comm id in translation fault
From: Yong Wu <yong.wu@mediatek.com>
Date: 2020-06-30 10:55:50
Also in:
linux-devicetree, linux-iommu, linux-mediatek, lkml
On Mon, 2020-06-29 at 15:13 +0800, Chao Hao wrote:
The max larb number that a iommu HW support is 8(larb0~larb7 in the below
diagram).
If the larb's number is over 8, we use a sub_common for merging
several larbs into one larb. At this case, we will extend larb_id:
bit[11:9] means common-id;
bit[8:7] means subcommon-id;
From these two variables, we could get the real larb number when
translation fault happen.
The diagram is as below:
EMI
|
IOMMU
|
-----------------
| |
common1 common0
| |
-----------------
|
smi common
|
------------------------------------
| | | | | |
3'd0 3'd1 3'd2 3'd3 ... 3'd7 <-common_id(max is 8)
| | | | | |
Larb0 Larb1 | Larb3 ... Larb7
|
smi sub common
|
--------------------------
| | | |
2'd0 2'd1 2'd2 2'd3 <-sub_common_id(max is 4)
| | | |
Larb8 Larb9 Larb10 Larb11
In this patch we extend larb_remap[] to larb_remap[8][4] for this.
larb_remap[x][y]: x means common-id above, y means subcommon_id above.
We can also distinguish if the M4U HW has sub_common by HAS_SUB_COMM
macro.
Cc: Matthias Brugger <matthias.bgg@gmail.com>
Signed-off-by: Chao Hao <redacted>
Reviewed-by: Yong Wu <yong.wu@mediatek.com>
---
drivers/iommu/mtk_iommu.c | 20 +++++++++++++-------
drivers/iommu/mtk_iommu.h | 3 ++-
include/soc/mediatek/smi.h | 2 ++
3 files changed, 17 insertions(+), 8 deletions(-)[snip]
quoted hunk ↗ jump to hunk
@@ -48,7 +49,7 @@ struct mtk_iommu_plat_data { enum mtk_iommu_plat m4u_plat; u32 flags; u32 inv_sel_reg; - unsigned char larbid_remap[MTK_LARB_NR_MAX]; + unsigned char larbid_remap[MTK_LARB_COM_MAX][MTK_LARB_SUBCOM_MAX]; }; struct mtk_iommu_domain;diff --git a/include/soc/mediatek/smi.h b/include/soc/mediatek/smi.h index 5a34b87d89e3..fa65a55468e2 100644 --- a/include/soc/mediatek/smi.h +++ b/include/soc/mediatek/smi.h@@ -12,6 +12,8 @@ #ifdef CONFIG_MTK_SMI #define MTK_LARB_NR_MAX 16 +#define MTK_LARB_COM_MAX 8 +#define MTK_LARB_SUBCOM_MAX 4
Both are only used in mtk_iommu.h, and I don't think smi has plan to use them. thus we could move them into mtk_iommu.h
#define MTK_SMI_MMU_EN(port) BIT(port)
_______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel