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]
