All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yong Wu <yong.wu@mediatek.com>
To: Joerg Roedel <joro@8bytes.org>, Rob Herring <robh+dt@kernel.org>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	Will Deacon <will@kernel.org>
Cc: youlin.pei@mediatek.com, devicetree@vger.kernel.org,
	srv_heupstream@mediatek.com,
	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>,
	chengci.xu@mediatek.com, xueqi.zhang@mediatek.com,
	linux-kernel@vger.kernel.org, libo.kang@mediatek.com,
	yen-chang.chen@mediatek.com, iommu@lists.linux-foundation.org,
	yf.wang@mediatek.com, linux-mediatek@lists.infradead.org,
	Hsin-Yi Wang <hsinyi@chromium.org>,
	anan.sun@mediatek.com, Robin Murphy <robin.murphy@arm.com>,
	mingyuan.ma@mediatek.com, linux-arm-kernel@lists.infradead.org,
	AngeloGioacchino Del Regno
	<angelogioacchino.delregno@collabora.com>
Subject: [PATCH v4 33/35] iommu/mediatek: Initialise/Remove for multi bank dev
Date: Tue, 25 Jan 2022 16:56:32 +0800	[thread overview]
Message-ID: <20220125085634.17972-34-yong.wu@mediatek.com> (raw)
In-Reply-To: <20220125085634.17972-1-yong.wu@mediatek.com>

The registers for each bank of the IOMMU base are in order, delta is
0x1000. Initialise the base for each bank.

For all the previous SoC, we only have bank0. thus use "do {} while()"
to allow bank0 always go.

When removing the device, Not always all the banks are initialised, it
depend on if there is masters for that bank.

Signed-off-by: Yong Wu <yong.wu@mediatek.com>
---
 drivers/iommu/mtk_iommu.c | 44 ++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index c6de9304bbc6..3a2907c19bd8 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -113,6 +113,7 @@
 #define F_MMU_INT_ID_PORT_ID(a)			(((a) >> 2) & 0x1f)
 
 #define MTK_PROTECT_PA_ALIGN			256
+#define MTK_IOMMU_BANK_SZ			0x1000
 
 #define PERICFG_IOMMU_1				0x714
 
@@ -1076,7 +1077,7 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 	struct component_match  *match = NULL;
 	struct regmap		*infracfg;
 	void                    *protect;
-	int                     ret, banks_num;
+	int                     ret, banks_num, i = 0;
 	u32			val;
 	char                    *p;
 	struct mtk_iommu_bank_data *bank;
@@ -1117,27 +1118,36 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 		data->enable_4GB = !!(val & F_DDR_4GB_SUPPORT_EN);
 	}
 
+	banks_num = data->plat_data->banks_num;
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (resource_size(res) < banks_num * MTK_IOMMU_BANK_SZ) {
+		dev_err(dev, "banknr %d. res %pR is not enough.\n", banks_num, res);
+		return -EINVAL;
+	}
 	base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 	ioaddr = res->start;
 
-	banks_num = data->plat_data->banks_num;
 	data->bank = devm_kmalloc(dev, banks_num * sizeof(*data->bank), GFP_KERNEL);
 	if (!data->bank)
 		return -ENOMEM;
 
-	bank = &data->bank[0];
-	bank->id = 0;
-	bank->base = base;
-	bank->m4u_dom = NULL;
-	bank->irq = platform_get_irq(pdev, 0);
-	if (bank->irq < 0)
-		return bank->irq;
-	bank->parent_dev = dev;
-	bank->parent_data = data;
-	spin_lock_init(&bank->tlb_lock);
+	do {
+		if (!data->plat_data->banks_enable[i])
+			continue;
+		bank = &data->bank[i];
+		bank->id = i;
+		bank->base = base + i * MTK_IOMMU_BANK_SZ;
+		bank->m4u_dom = NULL;
+
+		bank->irq = platform_get_irq(pdev, i);
+		if (bank->irq < 0)
+			return bank->irq;
+		bank->parent_dev = dev;
+		bank->parent_data = data;
+		spin_lock_init(&bank->tlb_lock);
+	} while (++i < banks_num);
 
 	if (MTK_IOMMU_HAS_FLAG(data->plat_data, HAS_BCLK)) {
 		data->bclk = devm_clk_get(dev, "bclk");
@@ -1223,7 +1233,8 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 static int mtk_iommu_remove(struct platform_device *pdev)
 {
 	struct mtk_iommu_data *data = platform_get_drvdata(pdev);
-	struct mtk_iommu_bank_data *bank = &data->bank[0];
+	struct mtk_iommu_bank_data *bank;
+	int i;
 
 	iommu_device_sysfs_remove(&data->iommu);
 	iommu_device_unregister(&data->iommu);
@@ -1240,7 +1251,12 @@ static int mtk_iommu_remove(struct platform_device *pdev)
 #endif
 	}
 	pm_runtime_disable(&pdev->dev);
-	devm_free_irq(&pdev->dev, bank->irq, bank);
+	for (i = 0; i < data->plat_data->banks_num; i++) {
+		bank = &data->bank[i];
+		if (!bank->m4u_dom)
+			continue;
+		devm_free_irq(&pdev->dev, bank->irq, bank);
+	}
 	return 0;
 }
 
-- 
2.18.0

_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu

WARNING: multiple messages have this Message-ID (diff)
From: Yong Wu <yong.wu@mediatek.com>
To: Joerg Roedel <joro@8bytes.org>, Rob Herring <robh+dt@kernel.org>,
	"Matthias Brugger" <matthias.bgg@gmail.com>,
	Will Deacon <will@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>,
	Tomasz Figa <tfiga@chromium.org>,
	<linux-mediatek@lists.infradead.org>,
	<srv_heupstream@mediatek.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<iommu@lists.linux-foundation.org>,
	Hsin-Yi Wang <hsinyi@chromium.org>, <yong.wu@mediatek.com>,
	<youlin.pei@mediatek.com>, <anan.sun@mediatek.com>,
	<xueqi.zhang@mediatek.com>, <yen-chang.chen@mediatek.com>,
	"AngeloGioacchino Del Regno" 
	<angelogioacchino.delregno@collabora.com>,
	<mingyuan.ma@mediatek.com>, <yf.wang@mediatek.com>,
	<libo.kang@mediatek.com>, <chengci.xu@mediatek.com>
Subject: [PATCH v4 33/35] iommu/mediatek: Initialise/Remove for multi bank dev
Date: Tue, 25 Jan 2022 16:56:32 +0800	[thread overview]
Message-ID: <20220125085634.17972-34-yong.wu@mediatek.com> (raw)
In-Reply-To: <20220125085634.17972-1-yong.wu@mediatek.com>

The registers for each bank of the IOMMU base are in order, delta is
0x1000. Initialise the base for each bank.

For all the previous SoC, we only have bank0. thus use "do {} while()"
to allow bank0 always go.

When removing the device, Not always all the banks are initialised, it
depend on if there is masters for that bank.

Signed-off-by: Yong Wu <yong.wu@mediatek.com>
---
 drivers/iommu/mtk_iommu.c | 44 ++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index c6de9304bbc6..3a2907c19bd8 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -113,6 +113,7 @@
 #define F_MMU_INT_ID_PORT_ID(a)			(((a) >> 2) & 0x1f)
 
 #define MTK_PROTECT_PA_ALIGN			256
+#define MTK_IOMMU_BANK_SZ			0x1000
 
 #define PERICFG_IOMMU_1				0x714
 
@@ -1076,7 +1077,7 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 	struct component_match  *match = NULL;
 	struct regmap		*infracfg;
 	void                    *protect;
-	int                     ret, banks_num;
+	int                     ret, banks_num, i = 0;
 	u32			val;
 	char                    *p;
 	struct mtk_iommu_bank_data *bank;
@@ -1117,27 +1118,36 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 		data->enable_4GB = !!(val & F_DDR_4GB_SUPPORT_EN);
 	}
 
+	banks_num = data->plat_data->banks_num;
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (resource_size(res) < banks_num * MTK_IOMMU_BANK_SZ) {
+		dev_err(dev, "banknr %d. res %pR is not enough.\n", banks_num, res);
+		return -EINVAL;
+	}
 	base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 	ioaddr = res->start;
 
-	banks_num = data->plat_data->banks_num;
 	data->bank = devm_kmalloc(dev, banks_num * sizeof(*data->bank), GFP_KERNEL);
 	if (!data->bank)
 		return -ENOMEM;
 
-	bank = &data->bank[0];
-	bank->id = 0;
-	bank->base = base;
-	bank->m4u_dom = NULL;
-	bank->irq = platform_get_irq(pdev, 0);
-	if (bank->irq < 0)
-		return bank->irq;
-	bank->parent_dev = dev;
-	bank->parent_data = data;
-	spin_lock_init(&bank->tlb_lock);
+	do {
+		if (!data->plat_data->banks_enable[i])
+			continue;
+		bank = &data->bank[i];
+		bank->id = i;
+		bank->base = base + i * MTK_IOMMU_BANK_SZ;
+		bank->m4u_dom = NULL;
+
+		bank->irq = platform_get_irq(pdev, i);
+		if (bank->irq < 0)
+			return bank->irq;
+		bank->parent_dev = dev;
+		bank->parent_data = data;
+		spin_lock_init(&bank->tlb_lock);
+	} while (++i < banks_num);
 
 	if (MTK_IOMMU_HAS_FLAG(data->plat_data, HAS_BCLK)) {
 		data->bclk = devm_clk_get(dev, "bclk");
@@ -1223,7 +1233,8 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 static int mtk_iommu_remove(struct platform_device *pdev)
 {
 	struct mtk_iommu_data *data = platform_get_drvdata(pdev);
-	struct mtk_iommu_bank_data *bank = &data->bank[0];
+	struct mtk_iommu_bank_data *bank;
+	int i;
 
 	iommu_device_sysfs_remove(&data->iommu);
 	iommu_device_unregister(&data->iommu);
@@ -1240,7 +1251,12 @@ static int mtk_iommu_remove(struct platform_device *pdev)
 #endif
 	}
 	pm_runtime_disable(&pdev->dev);
-	devm_free_irq(&pdev->dev, bank->irq, bank);
+	for (i = 0; i < data->plat_data->banks_num; i++) {
+		bank = &data->bank[i];
+		if (!bank->m4u_dom)
+			continue;
+		devm_free_irq(&pdev->dev, bank->irq, bank);
+	}
 	return 0;
 }
 
-- 
2.18.0


WARNING: multiple messages have this Message-ID (diff)
From: Yong Wu <yong.wu@mediatek.com>
To: Joerg Roedel <joro@8bytes.org>, Rob Herring <robh+dt@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Will Deacon <will@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>,
	Tomasz Figa <tfiga@chromium.org>,
	<linux-mediatek@lists.infradead.org>,
	<srv_heupstream@mediatek.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<iommu@lists.linux-foundation.org>,
	Hsin-Yi Wang <hsinyi@chromium.org>, <yong.wu@mediatek.com>,
	<youlin.pei@mediatek.com>, <anan.sun@mediatek.com>,
	<xueqi.zhang@mediatek.com>, <yen-chang.chen@mediatek.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	<mingyuan.ma@mediatek.com>, <yf.wang@mediatek.com>,
	<libo.kang@mediatek.com>,  <chengci.xu@mediatek.com>
Subject: [PATCH v4 33/35] iommu/mediatek: Initialise/Remove for multi bank dev
Date: Tue, 25 Jan 2022 16:56:32 +0800	[thread overview]
Message-ID: <20220125085634.17972-34-yong.wu@mediatek.com> (raw)
In-Reply-To: <20220125085634.17972-1-yong.wu@mediatek.com>

The registers for each bank of the IOMMU base are in order, delta is
0x1000. Initialise the base for each bank.

For all the previous SoC, we only have bank0. thus use "do {} while()"
to allow bank0 always go.

When removing the device, Not always all the banks are initialised, it
depend on if there is masters for that bank.

Signed-off-by: Yong Wu <yong.wu@mediatek.com>
---
 drivers/iommu/mtk_iommu.c | 44 ++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index c6de9304bbc6..3a2907c19bd8 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -113,6 +113,7 @@
 #define F_MMU_INT_ID_PORT_ID(a)			(((a) >> 2) & 0x1f)
 
 #define MTK_PROTECT_PA_ALIGN			256
+#define MTK_IOMMU_BANK_SZ			0x1000
 
 #define PERICFG_IOMMU_1				0x714
 
@@ -1076,7 +1077,7 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 	struct component_match  *match = NULL;
 	struct regmap		*infracfg;
 	void                    *protect;
-	int                     ret, banks_num;
+	int                     ret, banks_num, i = 0;
 	u32			val;
 	char                    *p;
 	struct mtk_iommu_bank_data *bank;
@@ -1117,27 +1118,36 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 		data->enable_4GB = !!(val & F_DDR_4GB_SUPPORT_EN);
 	}
 
+	banks_num = data->plat_data->banks_num;
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (resource_size(res) < banks_num * MTK_IOMMU_BANK_SZ) {
+		dev_err(dev, "banknr %d. res %pR is not enough.\n", banks_num, res);
+		return -EINVAL;
+	}
 	base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 	ioaddr = res->start;
 
-	banks_num = data->plat_data->banks_num;
 	data->bank = devm_kmalloc(dev, banks_num * sizeof(*data->bank), GFP_KERNEL);
 	if (!data->bank)
 		return -ENOMEM;
 
-	bank = &data->bank[0];
-	bank->id = 0;
-	bank->base = base;
-	bank->m4u_dom = NULL;
-	bank->irq = platform_get_irq(pdev, 0);
-	if (bank->irq < 0)
-		return bank->irq;
-	bank->parent_dev = dev;
-	bank->parent_data = data;
-	spin_lock_init(&bank->tlb_lock);
+	do {
+		if (!data->plat_data->banks_enable[i])
+			continue;
+		bank = &data->bank[i];
+		bank->id = i;
+		bank->base = base + i * MTK_IOMMU_BANK_SZ;
+		bank->m4u_dom = NULL;
+
+		bank->irq = platform_get_irq(pdev, i);
+		if (bank->irq < 0)
+			return bank->irq;
+		bank->parent_dev = dev;
+		bank->parent_data = data;
+		spin_lock_init(&bank->tlb_lock);
+	} while (++i < banks_num);
 
 	if (MTK_IOMMU_HAS_FLAG(data->plat_data, HAS_BCLK)) {
 		data->bclk = devm_clk_get(dev, "bclk");
@@ -1223,7 +1233,8 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 static int mtk_iommu_remove(struct platform_device *pdev)
 {
 	struct mtk_iommu_data *data = platform_get_drvdata(pdev);
-	struct mtk_iommu_bank_data *bank = &data->bank[0];
+	struct mtk_iommu_bank_data *bank;
+	int i;
 
 	iommu_device_sysfs_remove(&data->iommu);
 	iommu_device_unregister(&data->iommu);
@@ -1240,7 +1251,12 @@ static int mtk_iommu_remove(struct platform_device *pdev)
 #endif
 	}
 	pm_runtime_disable(&pdev->dev);
-	devm_free_irq(&pdev->dev, bank->irq, bank);
+	for (i = 0; i < data->plat_data->banks_num; i++) {
+		bank = &data->bank[i];
+		if (!bank->m4u_dom)
+			continue;
+		devm_free_irq(&pdev->dev, bank->irq, bank);
+	}
 	return 0;
 }
 
-- 
2.18.0


_______________________________________________
Linux-mediatek mailing list
Linux-mediatek@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-mediatek

WARNING: multiple messages have this Message-ID (diff)
From: Yong Wu <yong.wu@mediatek.com>
To: Joerg Roedel <joro@8bytes.org>, Rob Herring <robh+dt@kernel.org>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	Will Deacon <will@kernel.org>
Cc: Robin Murphy <robin.murphy@arm.com>,
	Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>,
	Tomasz Figa <tfiga@chromium.org>,
	<linux-mediatek@lists.infradead.org>,
	<srv_heupstream@mediatek.com>, <devicetree@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>,
	<linux-arm-kernel@lists.infradead.org>,
	<iommu@lists.linux-foundation.org>,
	Hsin-Yi Wang <hsinyi@chromium.org>, <yong.wu@mediatek.com>,
	<youlin.pei@mediatek.com>, <anan.sun@mediatek.com>,
	<xueqi.zhang@mediatek.com>, <yen-chang.chen@mediatek.com>,
	"AngeloGioacchino Del Regno"
	<angelogioacchino.delregno@collabora.com>,
	<mingyuan.ma@mediatek.com>, <yf.wang@mediatek.com>,
	<libo.kang@mediatek.com>,  <chengci.xu@mediatek.com>
Subject: [PATCH v4 33/35] iommu/mediatek: Initialise/Remove for multi bank dev
Date: Tue, 25 Jan 2022 16:56:32 +0800	[thread overview]
Message-ID: <20220125085634.17972-34-yong.wu@mediatek.com> (raw)
In-Reply-To: <20220125085634.17972-1-yong.wu@mediatek.com>

The registers for each bank of the IOMMU base are in order, delta is
0x1000. Initialise the base for each bank.

For all the previous SoC, we only have bank0. thus use "do {} while()"
to allow bank0 always go.

When removing the device, Not always all the banks are initialised, it
depend on if there is masters for that bank.

Signed-off-by: Yong Wu <yong.wu@mediatek.com>
---
 drivers/iommu/mtk_iommu.c | 44 ++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 14 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index c6de9304bbc6..3a2907c19bd8 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -113,6 +113,7 @@
 #define F_MMU_INT_ID_PORT_ID(a)			(((a) >> 2) & 0x1f)
 
 #define MTK_PROTECT_PA_ALIGN			256
+#define MTK_IOMMU_BANK_SZ			0x1000
 
 #define PERICFG_IOMMU_1				0x714
 
@@ -1076,7 +1077,7 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 	struct component_match  *match = NULL;
 	struct regmap		*infracfg;
 	void                    *protect;
-	int                     ret, banks_num;
+	int                     ret, banks_num, i = 0;
 	u32			val;
 	char                    *p;
 	struct mtk_iommu_bank_data *bank;
@@ -1117,27 +1118,36 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 		data->enable_4GB = !!(val & F_DDR_4GB_SUPPORT_EN);
 	}
 
+	banks_num = data->plat_data->banks_num;
 	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
+	if (resource_size(res) < banks_num * MTK_IOMMU_BANK_SZ) {
+		dev_err(dev, "banknr %d. res %pR is not enough.\n", banks_num, res);
+		return -EINVAL;
+	}
 	base = devm_ioremap_resource(dev, res);
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 	ioaddr = res->start;
 
-	banks_num = data->plat_data->banks_num;
 	data->bank = devm_kmalloc(dev, banks_num * sizeof(*data->bank), GFP_KERNEL);
 	if (!data->bank)
 		return -ENOMEM;
 
-	bank = &data->bank[0];
-	bank->id = 0;
-	bank->base = base;
-	bank->m4u_dom = NULL;
-	bank->irq = platform_get_irq(pdev, 0);
-	if (bank->irq < 0)
-		return bank->irq;
-	bank->parent_dev = dev;
-	bank->parent_data = data;
-	spin_lock_init(&bank->tlb_lock);
+	do {
+		if (!data->plat_data->banks_enable[i])
+			continue;
+		bank = &data->bank[i];
+		bank->id = i;
+		bank->base = base + i * MTK_IOMMU_BANK_SZ;
+		bank->m4u_dom = NULL;
+
+		bank->irq = platform_get_irq(pdev, i);
+		if (bank->irq < 0)
+			return bank->irq;
+		bank->parent_dev = dev;
+		bank->parent_data = data;
+		spin_lock_init(&bank->tlb_lock);
+	} while (++i < banks_num);
 
 	if (MTK_IOMMU_HAS_FLAG(data->plat_data, HAS_BCLK)) {
 		data->bclk = devm_clk_get(dev, "bclk");
@@ -1223,7 +1233,8 @@ static int mtk_iommu_probe(struct platform_device *pdev)
 static int mtk_iommu_remove(struct platform_device *pdev)
 {
 	struct mtk_iommu_data *data = platform_get_drvdata(pdev);
-	struct mtk_iommu_bank_data *bank = &data->bank[0];
+	struct mtk_iommu_bank_data *bank;
+	int i;
 
 	iommu_device_sysfs_remove(&data->iommu);
 	iommu_device_unregister(&data->iommu);
@@ -1240,7 +1251,12 @@ static int mtk_iommu_remove(struct platform_device *pdev)
 #endif
 	}
 	pm_runtime_disable(&pdev->dev);
-	devm_free_irq(&pdev->dev, bank->irq, bank);
+	for (i = 0; i < data->plat_data->banks_num; i++) {
+		bank = &data->bank[i];
+		if (!bank->m4u_dom)
+			continue;
+		devm_free_irq(&pdev->dev, bank->irq, bank);
+	}
 	return 0;
 }
 
-- 
2.18.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  parent reply	other threads:[~2022-01-25  9:01 UTC|newest]

Thread overview: 192+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-25  8:55 [PATCH v4 00/35] MT8195 IOMMU SUPPORT Yong Wu
2022-01-25  8:55 ` Yong Wu
2022-01-25  8:55 ` Yong Wu
2022-01-25  8:55 ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 01/35] dt-bindings: mediatek: mt8195: Add binding for MM IOMMU Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 02/35] dt-bindings: mediatek: mt8195: Add binding for infra IOMMU Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 03/35] iommu/mediatek: Fix 2 HW sharing pgtable issue Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 10:59   ` AngeloGioacchino Del Regno
2022-01-27 10:59     ` AngeloGioacchino Del Regno
2022-01-27 10:59     ` AngeloGioacchino Del Regno
2022-01-27 10:59     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` [PATCH v4 04/35] iommu/mediatek: Add list_del in mtk_iommu_remove Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 05/35] iommu/mediatek: Remove clk_disable " Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 06/35] iommu/mediatek: Add mutex for m4u_group and m4u_dom in data Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:02   ` AngeloGioacchino Del Regno
2022-01-27 11:02     ` AngeloGioacchino Del Regno
2022-01-27 11:02     ` AngeloGioacchino Del Regno
2022-01-27 11:02     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` [PATCH v4 07/35] iommu/mediatek: Add mutex for data in the mtk_iommu_domain Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:02   ` AngeloGioacchino Del Regno
2022-01-27 11:02     ` AngeloGioacchino Del Regno
2022-01-27 11:02     ` AngeloGioacchino Del Regno
2022-01-27 11:02     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` [PATCH v4 08/35] iommu/mediatek: Use kmalloc for protect buffer Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:08   ` AngeloGioacchino Del Regno
2022-01-27 11:08     ` AngeloGioacchino Del Regno
2022-01-27 11:08     ` AngeloGioacchino Del Regno
2022-01-27 11:08     ` AngeloGioacchino Del Regno
2022-02-16  5:54     ` Yong Wu
2022-02-16  5:54       ` Yong Wu
2022-02-16  5:54       ` Yong Wu
2022-02-16  5:54       ` Yong Wu via iommu
2022-02-16  5:59       ` Tomasz Figa
2022-02-16  5:59         ` Tomasz Figa
2022-02-16  5:59         ` Tomasz Figa
2022-02-16  5:59         ` Tomasz Figa
2022-02-16  8:11         ` Yong Wu
2022-02-16  8:11           ` Yong Wu
2022-02-16  8:11           ` Yong Wu
2022-02-16  8:11           ` Yong Wu via iommu
2022-01-25  8:56 ` [PATCH v4 09/35] iommu/mediatek: Adapt sharing and non-sharing pgtable case Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 10/35] iommu/mediatek: Add 12G~16G support for multi domains Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 11/35] iommu/mediatek: Add a flag DCM_DISABLE Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 12/35] iommu/mediatek: Add a flag NON_STD_AXI Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 13/35] iommu/mediatek: Remove the granule in the tlb flush Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 14/35] iommu/mediatek: Always enable output PA over 32bits in isr Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 15/35] iommu/mediatek: Add SUB_COMMON_3BITS flag Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 16/35] iommu/mediatek: Add IOMMU_TYPE flag Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 17/35] iommu/mediatek: Contain MM IOMMU flow with the MM TYPE Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 18/35] iommu/mediatek: Adjust device link when it is sub-common Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 19/35] iommu/mediatek: Allow IOMMU_DOMAIN_UNMANAGED for PCIe VFIO Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 20/35] iommu/mediatek: Add a PM_CLK_AO flag for infra iommu Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 21/35] iommu/mediatek: Add infra iommu support Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 22/35] iommu/mediatek: Add PCIe support Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 23/35] iommu/mediatek: Add mt8195 support Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 24/35] iommu/mediatek: Only adjust code about register base Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 25/35] iommu/mediatek: Just move code position in hw_init Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 26/35] iommu/mediatek: Separate mtk_iommu_data for v1 and v2 Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 27/35] iommu/mediatek: Remove mtk_iommu.h Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:15   ` AngeloGioacchino Del Regno
2022-01-27 11:15     ` AngeloGioacchino Del Regno
2022-01-27 11:15     ` AngeloGioacchino Del Regno
2022-01-27 11:15     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` [PATCH v4 28/35] iommu/mediatek-v1: Just rename mtk_iommu to mtk_iommu_v1 Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 29/35] iommu/mediatek: Add mtk_iommu_bank_data structure Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:17   ` AngeloGioacchino Del Regno
2022-01-27 11:17     ` AngeloGioacchino Del Regno
2022-01-27 11:17     ` AngeloGioacchino Del Regno
2022-01-27 11:17     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` [PATCH v4 30/35] iommu/mediatek: Initialise bank HW for each a bank Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 31/35] iommu/mediatek: Change the domid to iova_region_id Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 32/35] iommu/mediatek: Get the proper bankid for multi banks Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:21   ` AngeloGioacchino Del Regno
2022-01-27 11:21     ` AngeloGioacchino Del Regno
2022-01-27 11:21     ` AngeloGioacchino Del Regno
2022-01-27 11:21     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` Yong Wu [this message]
2022-01-25  8:56   ` [PATCH v4 33/35] iommu/mediatek: Initialise/Remove for multi bank dev Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56 ` [PATCH v4 34/35] iommu/mediatek: Backup/restore regsiters for multi banks Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:24   ` AngeloGioacchino Del Regno
2022-01-27 11:24     ` AngeloGioacchino Del Regno
2022-01-27 11:24     ` AngeloGioacchino Del Regno
2022-01-27 11:24     ` AngeloGioacchino Del Regno
2022-01-25  8:56 ` [PATCH v4 35/35] iommu/mediatek: mt8195: Enable multi banks for infra iommu Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-25  8:56   ` Yong Wu
2022-01-27 11:25   ` AngeloGioacchino Del Regno
2022-01-27 11:25     ` AngeloGioacchino Del Regno
2022-01-27 11:25     ` AngeloGioacchino Del Regno
2022-01-27 11:25     ` AngeloGioacchino Del Regno

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220125085634.17972-34-yong.wu@mediatek.com \
    --to=yong.wu@mediatek.com \
    --cc=anan.sun@mediatek.com \
    --cc=angelogioacchino.delregno@collabora.com \
    --cc=chengci.xu@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=hsinyi@chromium.org \
    --cc=iommu@lists.linux-foundation.org \
    --cc=joro@8bytes.org \
    --cc=krzysztof.kozlowski@canonical.com \
    --cc=libo.kang@mediatek.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=matthias.bgg@gmail.com \
    --cc=mingyuan.ma@mediatek.com \
    --cc=robh+dt@kernel.org \
    --cc=robin.murphy@arm.com \
    --cc=srv_heupstream@mediatek.com \
    --cc=will@kernel.org \
    --cc=xueqi.zhang@mediatek.com \
    --cc=yen-chang.chen@mediatek.com \
    --cc=yf.wang@mediatek.com \
    --cc=youlin.pei@mediatek.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.