CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Yong Wu <[email protected]>
CC: Mauro Carvalho Chehab <[email protected]>
CC: [email protected]
CC: AngeloGioacchino Del Regno <[email protected]>
CC: Hans Verkuil <[email protected]>

tree:   git://linuxtv.org/hverkuil/media_tree.git for-v5.18r
head:   ce9df78ab89f9fc79875af9fac11b4ca329c7e35
commit: 7d09aaf831b35ab62c5c24efbe716b8f60ad46ad [134/217] media: 
iommu/mediatek: Add probe_defer for smi-larb
:::::: branch date: 8 hours ago
:::::: commit date: 4 weeks ago
config: arm-randconfig-c023-20220223 
(https://download.01.org/0day-ci/archive/20220224/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>
Reported-by: Julia Lawall <[email protected]>


cocci warnings: (new ones prefixed by >>)
>> drivers/iommu/mtk_iommu.c:855:3-9: ERROR: missing put_device; call 
>> of_find_device_by_node on line 848, but without a corresponding object 
>> release within this function.
--
>> drivers/iommu/mtk_iommu_v1.c:611:3-9: ERROR: missing put_device; call 
>> of_find_device_by_node on line 604, but without a corresponding object 
>> release within this function.

vim +855 drivers/iommu/mtk_iommu.c

0df4fabe208d95 Yong Wu       2016-02-23  759  
0df4fabe208d95 Yong Wu       2016-02-23  760  static int mtk_iommu_probe(struct 
platform_device *pdev)
0df4fabe208d95 Yong Wu       2016-02-23  761  {
0df4fabe208d95 Yong Wu       2016-02-23  762    struct mtk_iommu_data   *data;
0df4fabe208d95 Yong Wu       2016-02-23  763    struct device           *dev = 
&pdev->dev;
baf94e6ebff962 Yong Wu       2021-01-11  764    struct device_node      
*larbnode, *smicomm_node;
baf94e6ebff962 Yong Wu       2021-01-11  765    struct platform_device  
*plarbdev;
baf94e6ebff962 Yong Wu       2021-01-11  766    struct device_link      *link;
0df4fabe208d95 Yong Wu       2016-02-23  767    struct resource         *res;
b16c0170b53cfb Joerg Roedel  2017-02-03  768    resource_size_t         ioaddr;
0df4fabe208d95 Yong Wu       2016-02-23  769    struct component_match  *match 
= NULL;
c2c59456e1fcad Miles Chen    2020-09-04  770    struct regmap           
*infracfg;
0df4fabe208d95 Yong Wu       2016-02-23  771    void                    
*protect;
0b6c0ad3cfe6bc Andrzej Hajda 2016-03-01  772    int                     i, 
larb_nr, ret;
c2c59456e1fcad Miles Chen    2020-09-04  773    u32                     val;
c2c59456e1fcad Miles Chen    2020-09-04  774    char                    *p;
0df4fabe208d95 Yong Wu       2016-02-23  775  
0df4fabe208d95 Yong Wu       2016-02-23  776    data = devm_kzalloc(dev, 
sizeof(*data), GFP_KERNEL);
0df4fabe208d95 Yong Wu       2016-02-23  777    if (!data)
0df4fabe208d95 Yong Wu       2016-02-23  778            return -ENOMEM;
0df4fabe208d95 Yong Wu       2016-02-23  779    data->dev = dev;
cecdce9d7eed33 Yong Wu       2019-08-24  780    data->plat_data = 
of_device_get_match_data(dev);
0df4fabe208d95 Yong Wu       2016-02-23  781  
0df4fabe208d95 Yong Wu       2016-02-23  782    /* Protect memory. HW will 
access here while translation fault.*/
0df4fabe208d95 Yong Wu       2016-02-23  783    protect = devm_kzalloc(dev, 
MTK_PROTECT_PA_ALIGN * 2, GFP_KERNEL);
0df4fabe208d95 Yong Wu       2016-02-23  784    if (!protect)
0df4fabe208d95 Yong Wu       2016-02-23  785            return -ENOMEM;
0df4fabe208d95 Yong Wu       2016-02-23  786    data->protect_base = 
ALIGN(virt_to_phys(protect), MTK_PROTECT_PA_ALIGN);
0df4fabe208d95 Yong Wu       2016-02-23  787  
c2c59456e1fcad Miles Chen    2020-09-04  788    if 
(MTK_IOMMU_HAS_FLAG(data->plat_data, HAS_4GB_MODE)) {
c2c59456e1fcad Miles Chen    2020-09-04  789            switch 
(data->plat_data->m4u_plat) {
c2c59456e1fcad Miles Chen    2020-09-04  790            case M4U_MT2712:
c2c59456e1fcad Miles Chen    2020-09-04  791                    p = 
"mediatek,mt2712-infracfg";
c2c59456e1fcad Miles Chen    2020-09-04  792                    break;
c2c59456e1fcad Miles Chen    2020-09-04  793            case M4U_MT8173:
c2c59456e1fcad Miles Chen    2020-09-04  794                    p = 
"mediatek,mt8173-infracfg";
c2c59456e1fcad Miles Chen    2020-09-04  795                    break;
c2c59456e1fcad Miles Chen    2020-09-04  796            default:
c2c59456e1fcad Miles Chen    2020-09-04  797                    p = NULL;
c2c59456e1fcad Miles Chen    2020-09-04  798            }
c2c59456e1fcad Miles Chen    2020-09-04  799  
c2c59456e1fcad Miles Chen    2020-09-04  800            infracfg = 
syscon_regmap_lookup_by_compatible(p);
c2c59456e1fcad Miles Chen    2020-09-04  801  
c2c59456e1fcad Miles Chen    2020-09-04  802            if (IS_ERR(infracfg))
c2c59456e1fcad Miles Chen    2020-09-04  803                    return 
PTR_ERR(infracfg);
c2c59456e1fcad Miles Chen    2020-09-04  804  
c2c59456e1fcad Miles Chen    2020-09-04  805            ret = 
regmap_read(infracfg, REG_INFRA_MISC, &val);
c2c59456e1fcad Miles Chen    2020-09-04  806            if (ret)
c2c59456e1fcad Miles Chen    2020-09-04  807                    return ret;
c2c59456e1fcad Miles Chen    2020-09-04  808            data->enable_4GB = 
!!(val & F_DDR_4GB_SUPPORT_EN);
c2c59456e1fcad Miles Chen    2020-09-04  809    }
01e23c93868884 Yong Wu       2016-03-14  810  
0df4fabe208d95 Yong Wu       2016-02-23  811    res = 
platform_get_resource(pdev, IORESOURCE_MEM, 0);
0df4fabe208d95 Yong Wu       2016-02-23  812    data->base = 
devm_ioremap_resource(dev, res);
0df4fabe208d95 Yong Wu       2016-02-23  813    if (IS_ERR(data->base))
0df4fabe208d95 Yong Wu       2016-02-23  814            return 
PTR_ERR(data->base);
b16c0170b53cfb Joerg Roedel  2017-02-03  815    ioaddr = res->start;
0df4fabe208d95 Yong Wu       2016-02-23  816  
0df4fabe208d95 Yong Wu       2016-02-23  817    data->irq = 
platform_get_irq(pdev, 0);
0df4fabe208d95 Yong Wu       2016-02-23  818    if (data->irq < 0)
0df4fabe208d95 Yong Wu       2016-02-23  819            return data->irq;
0df4fabe208d95 Yong Wu       2016-02-23  820  
6b717796227ec8 Chao Hao      2020-07-03  821    if 
(MTK_IOMMU_HAS_FLAG(data->plat_data, HAS_BCLK)) {
0df4fabe208d95 Yong Wu       2016-02-23  822            data->bclk = 
devm_clk_get(dev, "bclk");
0df4fabe208d95 Yong Wu       2016-02-23  823            if (IS_ERR(data->bclk))
0df4fabe208d95 Yong Wu       2016-02-23  824                    return 
PTR_ERR(data->bclk);
2aa4c2597cd671 Yong Wu       2019-08-24  825    }
0df4fabe208d95 Yong Wu       2016-02-23  826  
0df4fabe208d95 Yong Wu       2016-02-23  827    larb_nr = 
of_count_phandle_with_args(dev->of_node,
0df4fabe208d95 Yong Wu       2016-02-23  828                                    
     "mediatek,larbs", NULL);
0df4fabe208d95 Yong Wu       2016-02-23  829    if (larb_nr < 0)
0df4fabe208d95 Yong Wu       2016-02-23  830            return larb_nr;
0df4fabe208d95 Yong Wu       2016-02-23  831  
0df4fabe208d95 Yong Wu       2016-02-23  832    for (i = 0; i < larb_nr; i++) {
e6dec92308628c Yong Wu       2017-08-21  833            u32 id;
0df4fabe208d95 Yong Wu       2016-02-23  834  
0df4fabe208d95 Yong Wu       2016-02-23  835            larbnode = 
of_parse_phandle(dev->of_node, "mediatek,larbs", i);
0df4fabe208d95 Yong Wu       2016-02-23  836            if (!larbnode)
0df4fabe208d95 Yong Wu       2016-02-23  837                    return -EINVAL;
0df4fabe208d95 Yong Wu       2016-02-23  838  
1eb8e4e2b35b4d Wen Yang      2019-04-17  839            if 
(!of_device_is_available(larbnode)) {
1eb8e4e2b35b4d Wen Yang      2019-04-17  840                    
of_node_put(larbnode);
0df4fabe208d95 Yong Wu       2016-02-23  841                    continue;
1eb8e4e2b35b4d Wen Yang      2019-04-17  842            }
0df4fabe208d95 Yong Wu       2016-02-23  843  
e6dec92308628c Yong Wu       2017-08-21  844            ret = 
of_property_read_u32(larbnode, "mediatek,larb-id", &id);
e6dec92308628c Yong Wu       2017-08-21  845            if (ret)/* The id is 
consecutive if there is no this property */
e6dec92308628c Yong Wu       2017-08-21  846                    id = i;
e6dec92308628c Yong Wu       2017-08-21  847  
0df4fabe208d95 Yong Wu       2016-02-23 @848            plarbdev = 
of_find_device_by_node(larbnode);
1eb8e4e2b35b4d Wen Yang      2019-04-17  849            if (!plarbdev) {
1eb8e4e2b35b4d Wen Yang      2019-04-17  850                    
of_node_put(larbnode);
2fb0feed51085d Yong Wu       2022-01-17  851                    return -ENODEV;
1eb8e4e2b35b4d Wen Yang      2019-04-17  852            }
7d09aaf831b35a Yong Wu       2022-01-17  853            if 
(!plarbdev->dev.driver) {
7d09aaf831b35a Yong Wu       2022-01-17  854                    
of_node_put(larbnode);
7d09aaf831b35a Yong Wu       2022-01-17 @855                    return 
-EPROBE_DEFER;
7d09aaf831b35a Yong Wu       2022-01-17  856            }
1ee9feb2c9f893 Yong Wu       2019-08-24  857            data->larb_imu[id].dev 
= &plarbdev->dev;
0df4fabe208d95 Yong Wu       2016-02-23  858  
00c7c81f7b49d9 Russell King  2016-10-19  859            
component_match_add_release(dev, &match, release_of,
00c7c81f7b49d9 Russell King  2016-10-19  860                                    
    compare_of, larbnode);
0df4fabe208d95 Yong Wu       2016-02-23  861    }
0df4fabe208d95 Yong Wu       2016-02-23  862  
baf94e6ebff962 Yong Wu       2021-01-11  863    /* Get smi-common dev from the 
last larb. */
baf94e6ebff962 Yong Wu       2021-01-11  864    smicomm_node = 
of_parse_phandle(larbnode, "mediatek,smi", 0);
baf94e6ebff962 Yong Wu       2021-01-11  865    if (!smicomm_node)
baf94e6ebff962 Yong Wu       2021-01-11  866            return -EINVAL;
baf94e6ebff962 Yong Wu       2021-01-11  867  
baf94e6ebff962 Yong Wu       2021-01-11  868    plarbdev = 
of_find_device_by_node(smicomm_node);
baf94e6ebff962 Yong Wu       2021-01-11  869    of_node_put(smicomm_node);
baf94e6ebff962 Yong Wu       2021-01-11  870    data->smicomm_dev = 
&plarbdev->dev;
baf94e6ebff962 Yong Wu       2021-01-11  871  
c0b57581b73be7 Yong Wu       2021-01-11  872    pm_runtime_enable(dev);
c0b57581b73be7 Yong Wu       2021-01-11  873  
baf94e6ebff962 Yong Wu       2021-01-11  874    link = 
device_link_add(data->smicomm_dev, dev,
baf94e6ebff962 Yong Wu       2021-01-11  875                    
DL_FLAG_STATELESS | DL_FLAG_PM_RUNTIME);
baf94e6ebff962 Yong Wu       2021-01-11  876    if (!link) {
a92a90ac62d328 Dan Carpenter 2021-02-05  877            dev_err(dev, "Unable to 
link %s.\n", dev_name(data->smicomm_dev));
a92a90ac62d328 Dan Carpenter 2021-02-05  878            ret = -EINVAL;
c0b57581b73be7 Yong Wu       2021-01-11  879            goto 
out_runtime_disable;
baf94e6ebff962 Yong Wu       2021-01-11  880    }
baf94e6ebff962 Yong Wu       2021-01-11  881  
0df4fabe208d95 Yong Wu       2016-02-23  882    platform_set_drvdata(pdev, 
data);
0df4fabe208d95 Yong Wu       2016-02-23  883  
b16c0170b53cfb Joerg Roedel  2017-02-03  884    ret = 
iommu_device_sysfs_add(&data->iommu, dev, NULL,
b16c0170b53cfb Joerg Roedel  2017-02-03  885                                 
"mtk-iommu.%pa", &ioaddr);
b16c0170b53cfb Joerg Roedel  2017-02-03  886    if (ret)
baf94e6ebff962 Yong Wu       2021-01-11  887            goto out_link_remove;
b16c0170b53cfb Joerg Roedel  2017-02-03  888  
2d471b20c55e13 Robin Murphy  2021-04-01  889    ret = 
iommu_device_register(&data->iommu, &mtk_iommu_ops, dev);
b16c0170b53cfb Joerg Roedel  2017-02-03  890    if (ret)
986d9ec5f176ff Yong Wu       2021-01-11  891            goto out_sysfs_remove;
b16c0170b53cfb Joerg Roedel  2017-02-03  892  
da3cc91b8db403 Yong Wu       2019-11-04  893    spin_lock_init(&data->tlb_lock);
7c3a2ec02806a6 Yong Wu       2017-08-21  894    list_add_tail(&data->list, 
&m4ulist);
7c3a2ec02806a6 Yong Wu       2017-08-21  895  
986d9ec5f176ff Yong Wu       2021-01-11  896    if 
(!iommu_present(&platform_bus_type)) {
986d9ec5f176ff Yong Wu       2021-01-11  897            ret = 
bus_set_iommu(&platform_bus_type, &mtk_iommu_ops);
986d9ec5f176ff Yong Wu       2021-01-11  898            if (ret)
986d9ec5f176ff Yong Wu       2021-01-11  899                    goto 
out_list_del;
986d9ec5f176ff Yong Wu       2021-01-11  900    }
986d9ec5f176ff Yong Wu       2021-01-11  901  
986d9ec5f176ff Yong Wu       2021-01-11  902    ret = 
component_master_add_with_match(dev, &mtk_iommu_com_ops, match);
986d9ec5f176ff Yong Wu       2021-01-11  903    if (ret)
986d9ec5f176ff Yong Wu       2021-01-11  904            goto out_bus_set_null;
986d9ec5f176ff Yong Wu       2021-01-11  905    return ret;
0df4fabe208d95 Yong Wu       2016-02-23  906  
986d9ec5f176ff Yong Wu       2021-01-11  907  out_bus_set_null:
986d9ec5f176ff Yong Wu       2021-01-11  908    
bus_set_iommu(&platform_bus_type, NULL);
986d9ec5f176ff Yong Wu       2021-01-11  909  out_list_del:
986d9ec5f176ff Yong Wu       2021-01-11  910    list_del(&data->list);
986d9ec5f176ff Yong Wu       2021-01-11  911    
iommu_device_unregister(&data->iommu);
986d9ec5f176ff Yong Wu       2021-01-11  912  out_sysfs_remove:
986d9ec5f176ff Yong Wu       2021-01-11  913    
iommu_device_sysfs_remove(&data->iommu);
baf94e6ebff962 Yong Wu       2021-01-11  914  out_link_remove:
baf94e6ebff962 Yong Wu       2021-01-11  915    
device_link_remove(data->smicomm_dev, dev);
c0b57581b73be7 Yong Wu       2021-01-11  916  out_runtime_disable:
c0b57581b73be7 Yong Wu       2021-01-11  917    pm_runtime_disable(dev);
986d9ec5f176ff Yong Wu       2021-01-11  918    return ret;
0df4fabe208d95 Yong Wu       2016-02-23  919  }
0df4fabe208d95 Yong Wu       2016-02-23  920  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to