| From 0446372bb0ae6cbfdfb21d12103361d64887d2d2 Mon Sep 17 00:00:00 2001 |
| From: Yong Wu <yong.wu@mediatek.com> |
| Date: Sat, 10 Apr 2021 17:11:14 +0800 |
| Subject: [PATCH] FROMLIST: iommu/mediatek: Add probe_defer for smi-larb |
| |
| The iommu consumer should use device_link to connect with the |
| smi-larb(supplier). then the smi-larb should run before the iommu |
| consumer. Here we delay the iommu driver until the smi driver is |
| ready, then all the iommu consumer always is after the smi driver. |
| |
| When there is no this patch, if some consumer drivers run before |
| smi-larb, the supplier link_status is DL_DEV_NO_DRIVER(0) in the |
| device_link_add, then device_links_driver_bound will use WARN_ON |
| to complain that the link_status of supplier is not right. |
| |
| This is a preparing patch for adding device_link. |
| |
| Signed-off-by: Yong Wu <yong.wu@mediatek.com> |
| |
| (am from https://patchwork.kernel.org/project/linux-mediatek/patch/20210410091128.31823-3-yong.wu@mediatek.com/) |
| |
| BUG=b:126008328 |
| TEST=boot krane |
| |
| Signed-off-by: Hsin-Yi Wang <hsinyi@chromium.org> |
| Change-Id: Id122fa8aa5ec7df051d2d054ff1895c3b72ce267 |
| Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/kernel/+/2866749 |
| Reviewed-by: Sean Paul <seanpaul@chromium.org> |
| Reviewed-by: Nicolas Boichat <drinkcat@chromium.org> |
| --- |
| drivers/iommu/mtk_iommu.c | 2 +- |
| drivers/iommu/mtk_iommu_v1.c | 2 +- |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c |
| index e06b8a0e2b56..c8b82a3cdf3f 100644 |
| --- a/drivers/iommu/mtk_iommu.c |
| +++ b/drivers/iommu/mtk_iommu.c |
| @@ -856,7 +856,7 @@ static int mtk_iommu_probe(struct platform_device *pdev) |
| id = i; |
| |
| plarbdev = of_find_device_by_node(larbnode); |
| - if (!plarbdev) { |
| + if (!plarbdev || !plarbdev->dev.driver) { |
| of_node_put(larbnode); |
| return -EPROBE_DEFER; |
| } |
| diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c |
| index 5915d7b38211..278908716a13 100644 |
| --- a/drivers/iommu/mtk_iommu_v1.c |
| +++ b/drivers/iommu/mtk_iommu_v1.c |
| @@ -595,7 +595,7 @@ static int mtk_iommu_probe(struct platform_device *pdev) |
| } |
| |
| plarbdev = of_find_device_by_node(larbnode); |
| - if (!plarbdev) { |
| + if (!plarbdev || !plarbdev->dev.driver) { |
| of_node_put(larbnode); |
| return -EPROBE_DEFER; |
| } |
| -- |
| 2.31.1.607.g51e8a6a459-goog |
| |