All of lore.kernel.org
 help / color / mirror / Atom feed
* [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
@ 2020-09-30  6:10 ` Dan Carpenter
  0 siblings, 0 replies; 8+ messages in thread
From: Dan Carpenter @ 2020-09-30  6:10 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 9226 bytes --]

Hi Jim,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   49e7e3e905e437a02782019570f70997e2da9101
commit: 5d98ac4e2823dcfd5e8a2ac3c71ec1ed6cdd1f54 [9468/11956] PCI: brcmstb: Set additional internal memory DMA viewport sizes
config: arm64-randconfig-m031-20200929 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.

vim +1270 drivers/pci/controller/pcie-brcmstb.c

c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1178  	struct device_node *np = pdev->dev.of_node, *msi_np;
c0452137034bda8 Jim Quinlan            2019-12-16  1179  	struct pci_host_bridge *bridge;
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180  	struct device_node *fw_np;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181  	const struct pcie_cfg_data *data;
c0452137034bda8 Jim Quinlan            2019-12-16  1182  	struct brcm_pcie *pcie;
c0452137034bda8 Jim Quinlan            2019-12-16  1183  	int ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1184  
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185  	/*
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186  	 * We have to wait for Raspberry Pi's firmware interface to be up as a
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187  	 * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188  	 * probe can race with the firmware interface's (see
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189  	 * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190  	 */
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191  	fw_np = of_find_compatible_node(NULL, NULL,
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192  					"raspberrypi,bcm2835-firmware");
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193  	if (fw_np && !rpi_firmware_get(fw_np)) {
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194  		of_node_put(fw_np);
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195  		return -EPROBE_DEFER;
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196  	}
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197  	of_node_put(fw_np);
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198  
c0452137034bda8 Jim Quinlan            2019-12-16  1199  	bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
c0452137034bda8 Jim Quinlan            2019-12-16  1200  	if (!bridge)
c0452137034bda8 Jim Quinlan            2019-12-16  1201  		return -ENOMEM;
c0452137034bda8 Jim Quinlan            2019-12-16  1202  
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203  	data = of_device_get_match_data(&pdev->dev);
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204  	if (!data) {
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205  		pr_err("failed to look up compatible string\n");
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206  		return -EINVAL;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207  	}
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208  
c0452137034bda8 Jim Quinlan            2019-12-16  1209  	pcie = pci_host_bridge_priv(bridge);
c0452137034bda8 Jim Quinlan            2019-12-16  1210  	pcie->dev = &pdev->dev;
c0452137034bda8 Jim Quinlan            2019-12-16  1211  	pcie->np = np;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212  	pcie->reg_offsets = data->offsets;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213  	pcie->type = data->type;
04356ac30771091 Jim Quinlan            2020-09-11  1214  	pcie->perst_set = data->perst_set;
04356ac30771091 Jim Quinlan            2020-09-11  1215  	pcie->bridge_sw_init_set = data->bridge_sw_init_set;
c0452137034bda8 Jim Quinlan            2019-12-16  1216  
3cf0eead9fb895d Dejin Zheng            2020-07-08  1217  	pcie->base = devm_platform_ioremap_resource(pdev, 0);
c0452137034bda8 Jim Quinlan            2019-12-16  1218  	if (IS_ERR(pcie->base))
c0452137034bda8 Jim Quinlan            2019-12-16  1219  		return PTR_ERR(pcie->base);
c0452137034bda8 Jim Quinlan            2019-12-16  1220  
c0452137034bda8 Jim Quinlan            2019-12-16  1221  	pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
c0452137034bda8 Jim Quinlan            2019-12-16  1222  	if (IS_ERR(pcie->clk))
c0452137034bda8 Jim Quinlan            2019-12-16  1223  		return PTR_ERR(pcie->clk);
c0452137034bda8 Jim Quinlan            2019-12-16  1224  
c0452137034bda8 Jim Quinlan            2019-12-16  1225  	ret = of_pci_get_max_link_speed(np);
c0452137034bda8 Jim Quinlan            2019-12-16  1226  	pcie->gen = (ret < 0) ? 0 : ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1227  
c0452137034bda8 Jim Quinlan            2019-12-16  1228  	pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
c0452137034bda8 Jim Quinlan            2019-12-16  1229  
c0452137034bda8 Jim Quinlan            2019-12-16  1230  	ret = clk_prepare_enable(pcie->clk);
c0452137034bda8 Jim Quinlan            2019-12-16  1231  	if (ret) {
c0452137034bda8 Jim Quinlan            2019-12-16  1232  		dev_err(&pdev->dev, "could not enable clock\n");
c0452137034bda8 Jim Quinlan            2019-12-16  1233  		return ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1234  	}
b98f52bc6495110 Jim Quinlan            2020-09-11  1235  	pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
b98f52bc6495110 Jim Quinlan            2020-09-11  1236  	if (IS_ERR(pcie->rescal))
b98f52bc6495110 Jim Quinlan            2020-09-11  1237  		return PTR_ERR(pcie->rescal);
                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Smatch complains that some of these don't do a "goto fail;" should do
the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
clk is a devm_ clock.  Do devm_ clocks need to be unprepared?

b98f52bc6495110 Jim Quinlan            2020-09-11  1238  
b98f52bc6495110 Jim Quinlan            2020-09-11  1239  	ret = reset_control_deassert(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1240  	if (ret)
b98f52bc6495110 Jim Quinlan            2020-09-11  1241  		dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
b98f52bc6495110 Jim Quinlan            2020-09-11  1242  
b98f52bc6495110 Jim Quinlan            2020-09-11  1243  	ret = brcm_phy_start(pcie);
b98f52bc6495110 Jim Quinlan            2020-09-11  1244  	if (ret) {
b98f52bc6495110 Jim Quinlan            2020-09-11  1245  		reset_control_assert(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1246  		return ret;
b98f52bc6495110 Jim Quinlan            2020-09-11  1247  	}
c0452137034bda8 Jim Quinlan            2019-12-16  1248  
c0452137034bda8 Jim Quinlan            2019-12-16  1249  	ret = brcm_pcie_setup(pcie);
c0452137034bda8 Jim Quinlan            2019-12-16  1250  	if (ret)
c0452137034bda8 Jim Quinlan            2019-12-16  1251  		goto fail;
c0452137034bda8 Jim Quinlan            2019-12-16  1252  
40ca1bf580ef24d Jim Quinlan            2019-12-16  1253  	msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
40ca1bf580ef24d Jim Quinlan            2019-12-16  1254  	if (pci_msi_enabled() && msi_np == pcie->np) {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1255  		ret = brcm_pcie_enable_msi(pcie);
40ca1bf580ef24d Jim Quinlan            2019-12-16  1256  		if (ret) {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1257  			dev_err(pcie->dev, "probe of internal MSI failed");
40ca1bf580ef24d Jim Quinlan            2019-12-16  1258  			goto fail;
40ca1bf580ef24d Jim Quinlan            2019-12-16  1259  		}
40ca1bf580ef24d Jim Quinlan            2019-12-16  1260  	}
40ca1bf580ef24d Jim Quinlan            2019-12-16  1261  
c0452137034bda8 Jim Quinlan            2019-12-16  1262  	bridge->ops = &brcm_pcie_ops;
c0452137034bda8 Jim Quinlan            2019-12-16  1263  	bridge->sysdata = pcie;
c0452137034bda8 Jim Quinlan            2019-12-16  1264  
c0452137034bda8 Jim Quinlan            2019-12-16  1265  	platform_set_drvdata(pdev, pcie);
c0452137034bda8 Jim Quinlan            2019-12-16  1266  
a37571fa9c04a9e Rob Herring            2020-05-22  1267  	return pci_host_probe(bridge);
c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
c0452137034bda8 Jim Quinlan            2019-12-16  1269  	__brcm_pcie_remove(pcie);
c0452137034bda8 Jim Quinlan            2019-12-16 @1270  	return ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1271  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36574 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
@ 2020-09-30  6:10 ` Dan Carpenter
  0 siblings, 0 replies; 8+ messages in thread
From: Dan Carpenter @ 2020-09-30  6:10 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 9226 bytes --]

Hi Jim,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   49e7e3e905e437a02782019570f70997e2da9101
commit: 5d98ac4e2823dcfd5e8a2ac3c71ec1ed6cdd1f54 [9468/11956] PCI: brcmstb: Set additional internal memory DMA viewport sizes
config: arm64-randconfig-m031-20200929 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.

vim +1270 drivers/pci/controller/pcie-brcmstb.c

c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1178  	struct device_node *np = pdev->dev.of_node, *msi_np;
c0452137034bda8 Jim Quinlan            2019-12-16  1179  	struct pci_host_bridge *bridge;
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180  	struct device_node *fw_np;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181  	const struct pcie_cfg_data *data;
c0452137034bda8 Jim Quinlan            2019-12-16  1182  	struct brcm_pcie *pcie;
c0452137034bda8 Jim Quinlan            2019-12-16  1183  	int ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1184  
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185  	/*
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186  	 * We have to wait for Raspberry Pi's firmware interface to be up as a
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187  	 * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188  	 * probe can race with the firmware interface's (see
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189  	 * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190  	 */
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191  	fw_np = of_find_compatible_node(NULL, NULL,
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192  					"raspberrypi,bcm2835-firmware");
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193  	if (fw_np && !rpi_firmware_get(fw_np)) {
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194  		of_node_put(fw_np);
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195  		return -EPROBE_DEFER;
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196  	}
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197  	of_node_put(fw_np);
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198  
c0452137034bda8 Jim Quinlan            2019-12-16  1199  	bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
c0452137034bda8 Jim Quinlan            2019-12-16  1200  	if (!bridge)
c0452137034bda8 Jim Quinlan            2019-12-16  1201  		return -ENOMEM;
c0452137034bda8 Jim Quinlan            2019-12-16  1202  
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203  	data = of_device_get_match_data(&pdev->dev);
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204  	if (!data) {
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205  		pr_err("failed to look up compatible string\n");
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206  		return -EINVAL;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207  	}
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208  
c0452137034bda8 Jim Quinlan            2019-12-16  1209  	pcie = pci_host_bridge_priv(bridge);
c0452137034bda8 Jim Quinlan            2019-12-16  1210  	pcie->dev = &pdev->dev;
c0452137034bda8 Jim Quinlan            2019-12-16  1211  	pcie->np = np;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212  	pcie->reg_offsets = data->offsets;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213  	pcie->type = data->type;
04356ac30771091 Jim Quinlan            2020-09-11  1214  	pcie->perst_set = data->perst_set;
04356ac30771091 Jim Quinlan            2020-09-11  1215  	pcie->bridge_sw_init_set = data->bridge_sw_init_set;
c0452137034bda8 Jim Quinlan            2019-12-16  1216  
3cf0eead9fb895d Dejin Zheng            2020-07-08  1217  	pcie->base = devm_platform_ioremap_resource(pdev, 0);
c0452137034bda8 Jim Quinlan            2019-12-16  1218  	if (IS_ERR(pcie->base))
c0452137034bda8 Jim Quinlan            2019-12-16  1219  		return PTR_ERR(pcie->base);
c0452137034bda8 Jim Quinlan            2019-12-16  1220  
c0452137034bda8 Jim Quinlan            2019-12-16  1221  	pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
c0452137034bda8 Jim Quinlan            2019-12-16  1222  	if (IS_ERR(pcie->clk))
c0452137034bda8 Jim Quinlan            2019-12-16  1223  		return PTR_ERR(pcie->clk);
c0452137034bda8 Jim Quinlan            2019-12-16  1224  
c0452137034bda8 Jim Quinlan            2019-12-16  1225  	ret = of_pci_get_max_link_speed(np);
c0452137034bda8 Jim Quinlan            2019-12-16  1226  	pcie->gen = (ret < 0) ? 0 : ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1227  
c0452137034bda8 Jim Quinlan            2019-12-16  1228  	pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
c0452137034bda8 Jim Quinlan            2019-12-16  1229  
c0452137034bda8 Jim Quinlan            2019-12-16  1230  	ret = clk_prepare_enable(pcie->clk);
c0452137034bda8 Jim Quinlan            2019-12-16  1231  	if (ret) {
c0452137034bda8 Jim Quinlan            2019-12-16  1232  		dev_err(&pdev->dev, "could not enable clock\n");
c0452137034bda8 Jim Quinlan            2019-12-16  1233  		return ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1234  	}
b98f52bc6495110 Jim Quinlan            2020-09-11  1235  	pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
b98f52bc6495110 Jim Quinlan            2020-09-11  1236  	if (IS_ERR(pcie->rescal))
b98f52bc6495110 Jim Quinlan            2020-09-11  1237  		return PTR_ERR(pcie->rescal);
                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Smatch complains that some of these don't do a "goto fail;" should do
the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
clk is a devm_ clock.  Do devm_ clocks need to be unprepared?

b98f52bc6495110 Jim Quinlan            2020-09-11  1238  
b98f52bc6495110 Jim Quinlan            2020-09-11  1239  	ret = reset_control_deassert(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1240  	if (ret)
b98f52bc6495110 Jim Quinlan            2020-09-11  1241  		dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
b98f52bc6495110 Jim Quinlan            2020-09-11  1242  
b98f52bc6495110 Jim Quinlan            2020-09-11  1243  	ret = brcm_phy_start(pcie);
b98f52bc6495110 Jim Quinlan            2020-09-11  1244  	if (ret) {
b98f52bc6495110 Jim Quinlan            2020-09-11  1245  		reset_control_assert(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1246  		return ret;
b98f52bc6495110 Jim Quinlan            2020-09-11  1247  	}
c0452137034bda8 Jim Quinlan            2019-12-16  1248  
c0452137034bda8 Jim Quinlan            2019-12-16  1249  	ret = brcm_pcie_setup(pcie);
c0452137034bda8 Jim Quinlan            2019-12-16  1250  	if (ret)
c0452137034bda8 Jim Quinlan            2019-12-16  1251  		goto fail;
c0452137034bda8 Jim Quinlan            2019-12-16  1252  
40ca1bf580ef24d Jim Quinlan            2019-12-16  1253  	msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
40ca1bf580ef24d Jim Quinlan            2019-12-16  1254  	if (pci_msi_enabled() && msi_np == pcie->np) {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1255  		ret = brcm_pcie_enable_msi(pcie);
40ca1bf580ef24d Jim Quinlan            2019-12-16  1256  		if (ret) {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1257  			dev_err(pcie->dev, "probe of internal MSI failed");
40ca1bf580ef24d Jim Quinlan            2019-12-16  1258  			goto fail;
40ca1bf580ef24d Jim Quinlan            2019-12-16  1259  		}
40ca1bf580ef24d Jim Quinlan            2019-12-16  1260  	}
40ca1bf580ef24d Jim Quinlan            2019-12-16  1261  
c0452137034bda8 Jim Quinlan            2019-12-16  1262  	bridge->ops = &brcm_pcie_ops;
c0452137034bda8 Jim Quinlan            2019-12-16  1263  	bridge->sysdata = pcie;
c0452137034bda8 Jim Quinlan            2019-12-16  1264  
c0452137034bda8 Jim Quinlan            2019-12-16  1265  	platform_set_drvdata(pdev, pcie);
c0452137034bda8 Jim Quinlan            2019-12-16  1266  
a37571fa9c04a9e Rob Herring            2020-05-22  1267  	return pci_host_probe(bridge);
c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
c0452137034bda8 Jim Quinlan            2019-12-16  1269  	__brcm_pcie_remove(pcie);
c0452137034bda8 Jim Quinlan            2019-12-16 @1270  	return ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1271  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36574 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
  2020-09-30  6:10 ` Dan Carpenter
  (?)
@ 2020-09-30 20:50 ` Jim Quinlan
  2020-10-01 12:47   ` Lorenzo Pieralisi
  -1 siblings, 1 reply; 8+ messages in thread
From: Jim Quinlan @ 2020-09-30 20:50 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 10441 bytes --]

On Wed, Sep 30, 2020 at 2:12 AM Dan Carpenter <dan.carpenter@oracle.com> wrote:
>
> Hi Jim,
>
> First bad commit (maybe != root cause):
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   49e7e3e905e437a02782019570f70997e2da9101
> commit: 5d98ac4e2823dcfd5e8a2ac3c71ec1ed6cdd1f54 [9468/11956] PCI: brcmstb: Set additional internal memory DMA viewport sizes
> config: arm64-randconfig-m031-20200929 (attached as .config)
> compiler: aarch64-linux-gcc (GCC) 9.3.0
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp@intel.com>
> Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

Hi Dan & Lorenzo,

I  have a concern:  will my PCIe commits eventually be merged with
Christoph's and myself's DMA commits (see
https://lkml.org/lkml/2020/9/16/80, my commit is 6/6), as the former
commits depend on the latter?

Regardless, I will send a fix soon.

Thanks,
Jim

>
> smatch warnings:
> drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
>
> vim +1270 drivers/pci/controller/pcie-brcmstb.c
>
> c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
> c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1178         struct device_node *np = pdev->dev.of_node, *msi_np;
> c0452137034bda8 Jim Quinlan            2019-12-16  1179         struct pci_host_bridge *bridge;
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180         struct device_node *fw_np;
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181         const struct pcie_cfg_data *data;
> c0452137034bda8 Jim Quinlan            2019-12-16  1182         struct brcm_pcie *pcie;
> c0452137034bda8 Jim Quinlan            2019-12-16  1183         int ret;
> c0452137034bda8 Jim Quinlan            2019-12-16  1184
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185         /*
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186          * We have to wait for Raspberry Pi's firmware interface to be up as a
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187          * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188          * probe can race with the firmware interface's (see
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189          * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190          */
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191         fw_np = of_find_compatible_node(NULL, NULL,
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192                                         "raspberrypi,bcm2835-firmware");
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193         if (fw_np && !rpi_firmware_get(fw_np)) {
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194                 of_node_put(fw_np);
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195                 return -EPROBE_DEFER;
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196         }
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197         of_node_put(fw_np);
> 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198
> c0452137034bda8 Jim Quinlan            2019-12-16  1199         bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
> c0452137034bda8 Jim Quinlan            2019-12-16  1200         if (!bridge)
> c0452137034bda8 Jim Quinlan            2019-12-16  1201                 return -ENOMEM;
> c0452137034bda8 Jim Quinlan            2019-12-16  1202
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203         data = of_device_get_match_data(&pdev->dev);
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204         if (!data) {
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205                 pr_err("failed to look up compatible string\n");
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206                 return -EINVAL;
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207         }
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208
> c0452137034bda8 Jim Quinlan            2019-12-16  1209         pcie = pci_host_bridge_priv(bridge);
> c0452137034bda8 Jim Quinlan            2019-12-16  1210         pcie->dev = &pdev->dev;
> c0452137034bda8 Jim Quinlan            2019-12-16  1211         pcie->np = np;
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212         pcie->reg_offsets = data->offsets;
> 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213         pcie->type = data->type;
> 04356ac30771091 Jim Quinlan            2020-09-11  1214         pcie->perst_set = data->perst_set;
> 04356ac30771091 Jim Quinlan            2020-09-11  1215         pcie->bridge_sw_init_set = data->bridge_sw_init_set;
> c0452137034bda8 Jim Quinlan            2019-12-16  1216
> 3cf0eead9fb895d Dejin Zheng            2020-07-08  1217         pcie->base = devm_platform_ioremap_resource(pdev, 0);
> c0452137034bda8 Jim Quinlan            2019-12-16  1218         if (IS_ERR(pcie->base))
> c0452137034bda8 Jim Quinlan            2019-12-16  1219                 return PTR_ERR(pcie->base);
> c0452137034bda8 Jim Quinlan            2019-12-16  1220
> c0452137034bda8 Jim Quinlan            2019-12-16  1221         pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
> c0452137034bda8 Jim Quinlan            2019-12-16  1222         if (IS_ERR(pcie->clk))
> c0452137034bda8 Jim Quinlan            2019-12-16  1223                 return PTR_ERR(pcie->clk);
> c0452137034bda8 Jim Quinlan            2019-12-16  1224
> c0452137034bda8 Jim Quinlan            2019-12-16  1225         ret = of_pci_get_max_link_speed(np);
> c0452137034bda8 Jim Quinlan            2019-12-16  1226         pcie->gen = (ret < 0) ? 0 : ret;
> c0452137034bda8 Jim Quinlan            2019-12-16  1227
> c0452137034bda8 Jim Quinlan            2019-12-16  1228         pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
> c0452137034bda8 Jim Quinlan            2019-12-16  1229
> c0452137034bda8 Jim Quinlan            2019-12-16  1230         ret = clk_prepare_enable(pcie->clk);
> c0452137034bda8 Jim Quinlan            2019-12-16  1231         if (ret) {
> c0452137034bda8 Jim Quinlan            2019-12-16  1232                 dev_err(&pdev->dev, "could not enable clock\n");
> c0452137034bda8 Jim Quinlan            2019-12-16  1233                 return ret;
> c0452137034bda8 Jim Quinlan            2019-12-16  1234         }
> b98f52bc6495110 Jim Quinlan            2020-09-11  1235         pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
> b98f52bc6495110 Jim Quinlan            2020-09-11  1236         if (IS_ERR(pcie->rescal))
> b98f52bc6495110 Jim Quinlan            2020-09-11  1237                 return PTR_ERR(pcie->rescal);
>                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Smatch complains that some of these don't do a "goto fail;" should do
> the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
> clk is a devm_ clock.  Do devm_ clocks need to be unprepared?
>
> b98f52bc6495110 Jim Quinlan            2020-09-11  1238
> b98f52bc6495110 Jim Quinlan            2020-09-11  1239         ret = reset_control_deassert(pcie->rescal);
> b98f52bc6495110 Jim Quinlan            2020-09-11  1240         if (ret)
> b98f52bc6495110 Jim Quinlan            2020-09-11  1241                 dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
> b98f52bc6495110 Jim Quinlan            2020-09-11  1242
> b98f52bc6495110 Jim Quinlan            2020-09-11  1243         ret = brcm_phy_start(pcie);
> b98f52bc6495110 Jim Quinlan            2020-09-11  1244         if (ret) {
> b98f52bc6495110 Jim Quinlan            2020-09-11  1245                 reset_control_assert(pcie->rescal);
> b98f52bc6495110 Jim Quinlan            2020-09-11  1246                 return ret;
> b98f52bc6495110 Jim Quinlan            2020-09-11  1247         }
> c0452137034bda8 Jim Quinlan            2019-12-16  1248
> c0452137034bda8 Jim Quinlan            2019-12-16  1249         ret = brcm_pcie_setup(pcie);
> c0452137034bda8 Jim Quinlan            2019-12-16  1250         if (ret)
> c0452137034bda8 Jim Quinlan            2019-12-16  1251                 goto fail;
> c0452137034bda8 Jim Quinlan            2019-12-16  1252
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1253         msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1254         if (pci_msi_enabled() && msi_np == pcie->np) {
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1255                 ret = brcm_pcie_enable_msi(pcie);
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1256                 if (ret) {
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1257                         dev_err(pcie->dev, "probe of internal MSI failed");
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1258                         goto fail;
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1259                 }
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1260         }
> 40ca1bf580ef24d Jim Quinlan            2019-12-16  1261
> c0452137034bda8 Jim Quinlan            2019-12-16  1262         bridge->ops = &brcm_pcie_ops;
> c0452137034bda8 Jim Quinlan            2019-12-16  1263         bridge->sysdata = pcie;
> c0452137034bda8 Jim Quinlan            2019-12-16  1264
> c0452137034bda8 Jim Quinlan            2019-12-16  1265         platform_set_drvdata(pdev, pcie);
> c0452137034bda8 Jim Quinlan            2019-12-16  1266
> a37571fa9c04a9e Rob Herring            2020-05-22  1267         return pci_host_probe(bridge);
> c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
> c0452137034bda8 Jim Quinlan            2019-12-16  1269         __brcm_pcie_remove(pcie);
> c0452137034bda8 Jim Quinlan            2019-12-16 @1270         return ret;
> c0452137034bda8 Jim Quinlan            2019-12-16  1271  }
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 4167 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
  2020-09-30 20:50 ` Jim Quinlan
@ 2020-10-01 12:47   ` Lorenzo Pieralisi
  2020-10-01 14:15     ` Jim Quinlan
  0 siblings, 1 reply; 8+ messages in thread
From: Lorenzo Pieralisi @ 2020-10-01 12:47 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 10958 bytes --]

On Wed, Sep 30, 2020 at 04:50:05PM -0400, Jim Quinlan wrote:
> On Wed, Sep 30, 2020 at 2:12 AM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> >
> > Hi Jim,
> >
> > First bad commit (maybe != root cause):
> >
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > head:   49e7e3e905e437a02782019570f70997e2da9101
> > commit: 5d98ac4e2823dcfd5e8a2ac3c71ec1ed6cdd1f54 [9468/11956] PCI: brcmstb: Set additional internal memory DMA viewport sizes
> > config: arm64-randconfig-m031-20200929 (attached as .config)
> > compiler: aarch64-linux-gcc (GCC) 9.3.0
> >
> > If you fix the issue, kindly add following tag as appropriate
> > Reported-by: kernel test robot <lkp@intel.com>
> > Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> 
> Hi Dan & Lorenzo,
> 
> I  have a concern:  will my PCIe commits eventually be merged with
> Christoph's and myself's DMA commits (see
> https://lkml.org/lkml/2020/9/16/80, my commit is 6/6), as the former
> commits depend on the latter?

What do you mean by "merged" ? If what you are saying is that there
are dependencies (build or functional) we may have to coordinate the
PCI PR and Christoph's.

Lorenzo

> Regardless, I will send a fix soon.
> 
> Thanks,
> Jim
> 
> >
> > smatch warnings:
> > drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
> >
> > vim +1270 drivers/pci/controller/pcie-brcmstb.c
> >
> > c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
> > c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1178         struct device_node *np = pdev->dev.of_node, *msi_np;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1179         struct pci_host_bridge *bridge;
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180         struct device_node *fw_np;
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181         const struct pcie_cfg_data *data;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1182         struct brcm_pcie *pcie;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1183         int ret;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1184
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185         /*
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186          * We have to wait for Raspberry Pi's firmware interface to be up as a
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187          * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188          * probe can race with the firmware interface's (see
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189          * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190          */
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191         fw_np = of_find_compatible_node(NULL, NULL,
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192                                         "raspberrypi,bcm2835-firmware");
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193         if (fw_np && !rpi_firmware_get(fw_np)) {
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194                 of_node_put(fw_np);
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195                 return -EPROBE_DEFER;
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196         }
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197         of_node_put(fw_np);
> > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198
> > c0452137034bda8 Jim Quinlan            2019-12-16  1199         bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
> > c0452137034bda8 Jim Quinlan            2019-12-16  1200         if (!bridge)
> > c0452137034bda8 Jim Quinlan            2019-12-16  1201                 return -ENOMEM;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1202
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203         data = of_device_get_match_data(&pdev->dev);
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204         if (!data) {
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205                 pr_err("failed to look up compatible string\n");
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206                 return -EINVAL;
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207         }
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208
> > c0452137034bda8 Jim Quinlan            2019-12-16  1209         pcie = pci_host_bridge_priv(bridge);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1210         pcie->dev = &pdev->dev;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1211         pcie->np = np;
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212         pcie->reg_offsets = data->offsets;
> > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213         pcie->type = data->type;
> > 04356ac30771091 Jim Quinlan            2020-09-11  1214         pcie->perst_set = data->perst_set;
> > 04356ac30771091 Jim Quinlan            2020-09-11  1215         pcie->bridge_sw_init_set = data->bridge_sw_init_set;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1216
> > 3cf0eead9fb895d Dejin Zheng            2020-07-08  1217         pcie->base = devm_platform_ioremap_resource(pdev, 0);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1218         if (IS_ERR(pcie->base))
> > c0452137034bda8 Jim Quinlan            2019-12-16  1219                 return PTR_ERR(pcie->base);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1220
> > c0452137034bda8 Jim Quinlan            2019-12-16  1221         pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
> > c0452137034bda8 Jim Quinlan            2019-12-16  1222         if (IS_ERR(pcie->clk))
> > c0452137034bda8 Jim Quinlan            2019-12-16  1223                 return PTR_ERR(pcie->clk);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1224
> > c0452137034bda8 Jim Quinlan            2019-12-16  1225         ret = of_pci_get_max_link_speed(np);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1226         pcie->gen = (ret < 0) ? 0 : ret;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1227
> > c0452137034bda8 Jim Quinlan            2019-12-16  1228         pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
> > c0452137034bda8 Jim Quinlan            2019-12-16  1229
> > c0452137034bda8 Jim Quinlan            2019-12-16  1230         ret = clk_prepare_enable(pcie->clk);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1231         if (ret) {
> > c0452137034bda8 Jim Quinlan            2019-12-16  1232                 dev_err(&pdev->dev, "could not enable clock\n");
> > c0452137034bda8 Jim Quinlan            2019-12-16  1233                 return ret;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1234         }
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1235         pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1236         if (IS_ERR(pcie->rescal))
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1237                 return PTR_ERR(pcie->rescal);
> >                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > Smatch complains that some of these don't do a "goto fail;" should do
> > the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
> > clk is a devm_ clock.  Do devm_ clocks need to be unprepared?
> >
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1238
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1239         ret = reset_control_deassert(pcie->rescal);
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1240         if (ret)
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1241                 dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1242
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1243         ret = brcm_phy_start(pcie);
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1244         if (ret) {
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1245                 reset_control_assert(pcie->rescal);
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1246                 return ret;
> > b98f52bc6495110 Jim Quinlan            2020-09-11  1247         }
> > c0452137034bda8 Jim Quinlan            2019-12-16  1248
> > c0452137034bda8 Jim Quinlan            2019-12-16  1249         ret = brcm_pcie_setup(pcie);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1250         if (ret)
> > c0452137034bda8 Jim Quinlan            2019-12-16  1251                 goto fail;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1252
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1253         msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1254         if (pci_msi_enabled() && msi_np == pcie->np) {
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1255                 ret = brcm_pcie_enable_msi(pcie);
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1256                 if (ret) {
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1257                         dev_err(pcie->dev, "probe of internal MSI failed");
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1258                         goto fail;
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1259                 }
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1260         }
> > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1261
> > c0452137034bda8 Jim Quinlan            2019-12-16  1262         bridge->ops = &brcm_pcie_ops;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1263         bridge->sysdata = pcie;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1264
> > c0452137034bda8 Jim Quinlan            2019-12-16  1265         platform_set_drvdata(pdev, pcie);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1266
> > a37571fa9c04a9e Rob Herring            2020-05-22  1267         return pci_host_probe(bridge);
> > c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
> > c0452137034bda8 Jim Quinlan            2019-12-16  1269         __brcm_pcie_remove(pcie);
> > c0452137034bda8 Jim Quinlan            2019-12-16 @1270         return ret;
> > c0452137034bda8 Jim Quinlan            2019-12-16  1271  }
> >
> > ---
> > 0-DAY CI Kernel Test Service, Intel Corporation
> > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
  2020-10-01 12:47   ` Lorenzo Pieralisi
@ 2020-10-01 14:15     ` Jim Quinlan
  2020-10-09  8:58       ` Lorenzo Pieralisi
  0 siblings, 1 reply; 8+ messages in thread
From: Jim Quinlan @ 2020-10-01 14:15 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 12298 bytes --]

On Thu, Oct 1, 2020 at 8:47 AM Lorenzo Pieralisi
<lorenzo.pieralisi@arm.com> wrote:
>
> On Wed, Sep 30, 2020 at 04:50:05PM -0400, Jim Quinlan wrote:
> > On Wed, Sep 30, 2020 at 2:12 AM Dan Carpenter <dan.carpenter@oracle.com> wrote:
> > >
> > > Hi Jim,
> > >
> > > First bad commit (maybe != root cause):
> > >
> > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > > head:   49e7e3e905e437a02782019570f70997e2da9101
> > > commit: 5d98ac4e2823dcfd5e8a2ac3c71ec1ed6cdd1f54 [9468/11956] PCI: brcmstb: Set additional internal memory DMA viewport sizes
> > > config: arm64-randconfig-m031-20200929 (attached as .config)
> > > compiler: aarch64-linux-gcc (GCC) 9.3.0
> > >
> > > If you fix the issue, kindly add following tag as appropriate
> > > Reported-by: kernel test robot <lkp@intel.com>
> > > Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
> >
> > Hi Dan & Lorenzo,
> >
> > I  have a concern:  will my PCIe commits eventually be merged with
> > Christoph's and myself's DMA commits (see
> > https://lkml.org/lkml/2020/9/16/80, my commit is 6/6), as the former
> > commits depend on the latter?
>
> What do you mean by "merged" ? If what you are saying is that there
> are dependencies (build or functional) we may have to coordinate the
> PCI PR and Christoph's.

Hi Lorenzo,

Originally the BrcmSTB PCIe PR contained a commit that changed how
dma-ranges were collected and stored.  Since this commit affected many
files as well as the DMA subsystem and took on a life of its own, we
broke it off from the other  PCIe commits.  Christoph also added a
number of other DMA commits to my sole DMA commit.

I do not believe that there are any build dependencies between the
PCIe PR and the DMA PR.  I believe that the RaspberryPi will work
with the current PCIe PR  even if the DMA PR is not present.  But the
BrcmSTB driver will not function for any non RaspberryPi Broadcom STB
chips without the DMA PR.

Of course this PCIe driver did not previously work for these Broadcom
STB chips, but now, w/o the DMA PR,  the PCIe probe() will be called
and the driver will fail in ways I haven't tested.

I apologize for not making this clear sooner but I assumed you were
aware of the dependence.

Regards,
Jim
>
> Lorenzo
>
> > Regardless, I will send a fix soon.
> >
> > Thanks,
> > Jim
> >
> > >
> > > smatch warnings:
> > > drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
> > >
> > > vim +1270 drivers/pci/controller/pcie-brcmstb.c
> > >
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1178         struct device_node *np = pdev->dev.of_node, *msi_np;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1179         struct pci_host_bridge *bridge;
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180         struct device_node *fw_np;
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181         const struct pcie_cfg_data *data;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1182         struct brcm_pcie *pcie;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1183         int ret;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1184
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185         /*
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186          * We have to wait for Raspberry Pi's firmware interface to be up as a
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187          * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188          * probe can race with the firmware interface's (see
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189          * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190          */
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191         fw_np = of_find_compatible_node(NULL, NULL,
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192                                         "raspberrypi,bcm2835-firmware");
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193         if (fw_np && !rpi_firmware_get(fw_np)) {
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194                 of_node_put(fw_np);
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195                 return -EPROBE_DEFER;
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196         }
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197         of_node_put(fw_np);
> > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1199         bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1200         if (!bridge)
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1201                 return -ENOMEM;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1202
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203         data = of_device_get_match_data(&pdev->dev);
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204         if (!data) {
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205                 pr_err("failed to look up compatible string\n");
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206                 return -EINVAL;
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207         }
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1209         pcie = pci_host_bridge_priv(bridge);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1210         pcie->dev = &pdev->dev;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1211         pcie->np = np;
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212         pcie->reg_offsets = data->offsets;
> > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213         pcie->type = data->type;
> > > 04356ac30771091 Jim Quinlan            2020-09-11  1214         pcie->perst_set = data->perst_set;
> > > 04356ac30771091 Jim Quinlan            2020-09-11  1215         pcie->bridge_sw_init_set = data->bridge_sw_init_set;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1216
> > > 3cf0eead9fb895d Dejin Zheng            2020-07-08  1217         pcie->base = devm_platform_ioremap_resource(pdev, 0);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1218         if (IS_ERR(pcie->base))
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1219                 return PTR_ERR(pcie->base);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1220
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1221         pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1222         if (IS_ERR(pcie->clk))
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1223                 return PTR_ERR(pcie->clk);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1224
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1225         ret = of_pci_get_max_link_speed(np);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1226         pcie->gen = (ret < 0) ? 0 : ret;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1227
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1228         pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1229
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1230         ret = clk_prepare_enable(pcie->clk);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1231         if (ret) {
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1232                 dev_err(&pdev->dev, "could not enable clock\n");
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1233                 return ret;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1234         }
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1235         pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1236         if (IS_ERR(pcie->rescal))
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1237                 return PTR_ERR(pcie->rescal);
> > >                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > Smatch complains that some of these don't do a "goto fail;" should do
> > > the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
> > > clk is a devm_ clock.  Do devm_ clocks need to be unprepared?
> > >
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1238
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1239         ret = reset_control_deassert(pcie->rescal);
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1240         if (ret)
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1241                 dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1242
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1243         ret = brcm_phy_start(pcie);
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1244         if (ret) {
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1245                 reset_control_assert(pcie->rescal);
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1246                 return ret;
> > > b98f52bc6495110 Jim Quinlan            2020-09-11  1247         }
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1248
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1249         ret = brcm_pcie_setup(pcie);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1250         if (ret)
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1251                 goto fail;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1252
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1253         msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1254         if (pci_msi_enabled() && msi_np == pcie->np) {
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1255                 ret = brcm_pcie_enable_msi(pcie);
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1256                 if (ret) {
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1257                         dev_err(pcie->dev, "probe of internal MSI failed");
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1258                         goto fail;
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1259                 }
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1260         }
> > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1261
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1262         bridge->ops = &brcm_pcie_ops;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1263         bridge->sysdata = pcie;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1264
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1265         platform_set_drvdata(pdev, pcie);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1266
> > > a37571fa9c04a9e Rob Herring            2020-05-22  1267         return pci_host_probe(bridge);
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1269         __brcm_pcie_remove(pcie);
> > > c0452137034bda8 Jim Quinlan            2019-12-16 @1270         return ret;
> > > c0452137034bda8 Jim Quinlan            2019-12-16  1271  }
> > >
> > > ---
> > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
>
>

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 4167 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
  2020-10-01 14:15     ` Jim Quinlan
@ 2020-10-09  8:58       ` Lorenzo Pieralisi
  2020-10-09 17:42         ` Jim Quinlan
  0 siblings, 1 reply; 8+ messages in thread
From: Lorenzo Pieralisi @ 2020-10-09  8:58 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 10818 bytes --]

On Thu, Oct 01, 2020 at 10:15:12AM -0400, Jim Quinlan wrote:
> Of course this PCIe driver did not previously work for these Broadcom
> STB chips, but now, w/o the DMA PR,  the PCIe probe() will be called
> and the driver will fail in ways I haven't tested.

Can you test this please ? It is just a matter of merging the PCI
changes and test them without DMA code. Just to understand if there
is really anything we need to do.

Thanks,
Lorenzo

> I apologize for not making this clear sooner but I assumed you were
> aware of the dependence.
> 
> Regards,
> Jim
> >
> > Lorenzo
> >
> > > Regardless, I will send a fix soon.
> > >
> > > Thanks,
> > > Jim
> > >
> > > >
> > > > smatch warnings:
> > > > drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
> > > >
> > > > vim +1270 drivers/pci/controller/pcie-brcmstb.c
> > > >
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1178         struct device_node *np = pdev->dev.of_node, *msi_np;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1179         struct pci_host_bridge *bridge;
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180         struct device_node *fw_np;
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181         const struct pcie_cfg_data *data;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1182         struct brcm_pcie *pcie;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1183         int ret;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1184
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185         /*
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186          * We have to wait for Raspberry Pi's firmware interface to be up as a
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187          * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188          * probe can race with the firmware interface's (see
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189          * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190          */
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191         fw_np = of_find_compatible_node(NULL, NULL,
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192                                         "raspberrypi,bcm2835-firmware");
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193         if (fw_np && !rpi_firmware_get(fw_np)) {
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194                 of_node_put(fw_np);
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195                 return -EPROBE_DEFER;
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196         }
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197         of_node_put(fw_np);
> > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1199         bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1200         if (!bridge)
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1201                 return -ENOMEM;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1202
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203         data = of_device_get_match_data(&pdev->dev);
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204         if (!data) {
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205                 pr_err("failed to look up compatible string\n");
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206                 return -EINVAL;
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207         }
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1209         pcie = pci_host_bridge_priv(bridge);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1210         pcie->dev = &pdev->dev;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1211         pcie->np = np;
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212         pcie->reg_offsets = data->offsets;
> > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213         pcie->type = data->type;
> > > > 04356ac30771091 Jim Quinlan            2020-09-11  1214         pcie->perst_set = data->perst_set;
> > > > 04356ac30771091 Jim Quinlan            2020-09-11  1215         pcie->bridge_sw_init_set = data->bridge_sw_init_set;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1216
> > > > 3cf0eead9fb895d Dejin Zheng            2020-07-08  1217         pcie->base = devm_platform_ioremap_resource(pdev, 0);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1218         if (IS_ERR(pcie->base))
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1219                 return PTR_ERR(pcie->base);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1220
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1221         pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1222         if (IS_ERR(pcie->clk))
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1223                 return PTR_ERR(pcie->clk);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1224
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1225         ret = of_pci_get_max_link_speed(np);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1226         pcie->gen = (ret < 0) ? 0 : ret;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1227
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1228         pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1229
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1230         ret = clk_prepare_enable(pcie->clk);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1231         if (ret) {
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1232                 dev_err(&pdev->dev, "could not enable clock\n");
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1233                 return ret;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1234         }
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1235         pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1236         if (IS_ERR(pcie->rescal))
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1237                 return PTR_ERR(pcie->rescal);
> > > >                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > > Smatch complains that some of these don't do a "goto fail;" should do
> > > > the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
> > > > clk is a devm_ clock.  Do devm_ clocks need to be unprepared?
> > > >
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1238
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1239         ret = reset_control_deassert(pcie->rescal);
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1240         if (ret)
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1241                 dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1242
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1243         ret = brcm_phy_start(pcie);
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1244         if (ret) {
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1245                 reset_control_assert(pcie->rescal);
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1246                 return ret;
> > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1247         }
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1248
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1249         ret = brcm_pcie_setup(pcie);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1250         if (ret)
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1251                 goto fail;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1252
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1253         msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1254         if (pci_msi_enabled() && msi_np == pcie->np) {
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1255                 ret = brcm_pcie_enable_msi(pcie);
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1256                 if (ret) {
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1257                         dev_err(pcie->dev, "probe of internal MSI failed");
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1258                         goto fail;
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1259                 }
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1260         }
> > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1261
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1262         bridge->ops = &brcm_pcie_ops;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1263         bridge->sysdata = pcie;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1264
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1265         platform_set_drvdata(pdev, pcie);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1266
> > > > a37571fa9c04a9e Rob Herring            2020-05-22  1267         return pci_host_probe(bridge);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1269         __brcm_pcie_remove(pcie);
> > > > c0452137034bda8 Jim Quinlan            2019-12-16 @1270         return ret;
> > > > c0452137034bda8 Jim Quinlan            2019-12-16  1271  }
> > > >
> > > > ---
> > > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> >
> >


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
  2020-10-09  8:58       ` Lorenzo Pieralisi
@ 2020-10-09 17:42         ` Jim Quinlan
  0 siblings, 0 replies; 8+ messages in thread
From: Jim Quinlan @ 2020-10-09 17:42 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 11596 bytes --]

On Fri, Oct 9, 2020 at 4:58 AM Lorenzo Pieralisi
<lorenzo.pieralisi@arm.com> wrote:
>
> On Thu, Oct 01, 2020 at 10:15:12AM -0400, Jim Quinlan wrote:
> > Of course this PCIe driver did not previously work for these Broadcom
> > STB chips, but now, w/o the DMA PR,  the PCIe probe() will be called
> > and the driver will fail in ways I haven't tested.
>
> Can you test this please ? It is just a matter of merging the PCI
> changes and test them without DMA code. Just to understand if there
> is really anything we need to do.

Hi Lorenzo,

I've tested this -- the PCIe driver fails to work properly in cases
where we need more than one DMA-offset, as only one DMA offset is
allowed w/o Christoph's patchset.    But it does not panic or anything
like that, and the bottom line is that it doesn't break any PCIe
behavior that was already working.  So I don't think it is that big of
an issue.

Regards,
Jim Quinlan
Broadcom STB
>
> Thanks,
> Lorenzo
>
> > I apologize for not making this clear sooner but I assumed you were
> > aware of the dependence.
> >
> > Regards,
> > Jim
> > >
> > > Lorenzo
> > >
> > > > Regardless, I will send a fix soon.
> > > >
> > > > Thanks,
> > > > Jim
> > > >
> > > > >
> > > > > smatch warnings:
> > > > > drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
> > > > >
> > > > > vim +1270 drivers/pci/controller/pcie-brcmstb.c
> > > > >
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1178         struct device_node *np = pdev->dev.of_node, *msi_np;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1179         struct pci_host_bridge *bridge;
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180         struct device_node *fw_np;
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181         const struct pcie_cfg_data *data;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1182         struct brcm_pcie *pcie;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1183         int ret;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1184
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185         /*
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186          * We have to wait for Raspberry Pi's firmware interface to be up as a
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187          * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188          * probe can race with the firmware interface's (see
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189          * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190          */
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191         fw_np = of_find_compatible_node(NULL, NULL,
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192                                         "raspberrypi,bcm2835-firmware");
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193         if (fw_np && !rpi_firmware_get(fw_np)) {
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194                 of_node_put(fw_np);
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195                 return -EPROBE_DEFER;
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196         }
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197         of_node_put(fw_np);
> > > > > 44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1199         bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1200         if (!bridge)
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1201                 return -ENOMEM;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1202
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203         data = of_device_get_match_data(&pdev->dev);
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204         if (!data) {
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205                 pr_err("failed to look up compatible string\n");
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206                 return -EINVAL;
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207         }
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1209         pcie = pci_host_bridge_priv(bridge);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1210         pcie->dev = &pdev->dev;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1211         pcie->np = np;
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212         pcie->reg_offsets = data->offsets;
> > > > > 1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213         pcie->type = data->type;
> > > > > 04356ac30771091 Jim Quinlan            2020-09-11  1214         pcie->perst_set = data->perst_set;
> > > > > 04356ac30771091 Jim Quinlan            2020-09-11  1215         pcie->bridge_sw_init_set = data->bridge_sw_init_set;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1216
> > > > > 3cf0eead9fb895d Dejin Zheng            2020-07-08  1217         pcie->base = devm_platform_ioremap_resource(pdev, 0);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1218         if (IS_ERR(pcie->base))
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1219                 return PTR_ERR(pcie->base);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1220
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1221         pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1222         if (IS_ERR(pcie->clk))
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1223                 return PTR_ERR(pcie->clk);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1224
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1225         ret = of_pci_get_max_link_speed(np);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1226         pcie->gen = (ret < 0) ? 0 : ret;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1227
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1228         pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1229
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1230         ret = clk_prepare_enable(pcie->clk);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1231         if (ret) {
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1232                 dev_err(&pdev->dev, "could not enable clock\n");
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1233                 return ret;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1234         }
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1235         pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1236         if (IS_ERR(pcie->rescal))
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1237                 return PTR_ERR(pcie->rescal);
> > > > >                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > > > Smatch complains that some of these don't do a "goto fail;" should do
> > > > > the clk_disable_unprepare(pcie->clk); from __brcm_pcie_remove().  The
> > > > > clk is a devm_ clock.  Do devm_ clocks need to be unprepared?
> > > > >
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1238
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1239         ret = reset_control_deassert(pcie->rescal);
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1240         if (ret)
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1241                 dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1242
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1243         ret = brcm_phy_start(pcie);
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1244         if (ret) {
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1245                 reset_control_assert(pcie->rescal);
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1246                 return ret;
> > > > > b98f52bc6495110 Jim Quinlan            2020-09-11  1247         }
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1248
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1249         ret = brcm_pcie_setup(pcie);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1250         if (ret)
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1251                 goto fail;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1252
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1253         msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1254         if (pci_msi_enabled() && msi_np == pcie->np) {
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1255                 ret = brcm_pcie_enable_msi(pcie);
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1256                 if (ret) {
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1257                         dev_err(pcie->dev, "probe of internal MSI failed");
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1258                         goto fail;
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1259                 }
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1260         }
> > > > > 40ca1bf580ef24d Jim Quinlan            2019-12-16  1261
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1262         bridge->ops = &brcm_pcie_ops;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1263         bridge->sysdata = pcie;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1264
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1265         platform_set_drvdata(pdev, pcie);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1266
> > > > > a37571fa9c04a9e Rob Herring            2020-05-22  1267         return pci_host_probe(bridge);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1269         __brcm_pcie_remove(pcie);
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16 @1270         return ret;
> > > > > c0452137034bda8 Jim Quinlan            2019-12-16  1271  }
> > > > >
> > > > > ---
> > > > > 0-DAY CI Kernel Test Service, Intel Corporation
> > > > > https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
> > >
> > >
>
>

[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 4167 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.
@ 2020-09-29 21:34 kernel test robot
  0 siblings, 0 replies; 8+ messages in thread
From: kernel test robot @ 2020-09-29 21:34 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 9550 bytes --]

CC: kbuild-all(a)lists.01.org
TO: Jim Quinlan <james.quinlan@broadcom.com>
CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
CC: Rob Herring <robh@kernel.org>

Hi Jim,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   49e7e3e905e437a02782019570f70997e2da9101
commit: 5d98ac4e2823dcfd5e8a2ac3c71ec1ed6cdd1f54 [9468/11956] PCI: brcmstb: Set additional internal memory DMA viewport sizes
:::::: branch date: 12 hours ago
:::::: commit date: 7 days ago
config: arm64-randconfig-m031-20200929 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

smatch warnings:
drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237.

vim +1270 drivers/pci/controller/pcie-brcmstb.c

1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1175  
c0452137034bda8 Jim Quinlan            2019-12-16  1176  static int brcm_pcie_probe(struct platform_device *pdev)
c0452137034bda8 Jim Quinlan            2019-12-16  1177  {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1178  	struct device_node *np = pdev->dev.of_node, *msi_np;
c0452137034bda8 Jim Quinlan            2019-12-16  1179  	struct pci_host_bridge *bridge;
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1180  	struct device_node *fw_np;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1181  	const struct pcie_cfg_data *data;
c0452137034bda8 Jim Quinlan            2019-12-16  1182  	struct brcm_pcie *pcie;
c0452137034bda8 Jim Quinlan            2019-12-16  1183  	int ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1184  
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1185  	/*
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1186  	 * We have to wait for Raspberry Pi's firmware interface to be up as a
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1187  	 * PCI fixup, rpi_firmware_init_vl805(), depends on it. This driver's
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1188  	 * probe can race with the firmware interface's (see
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1189  	 * drivers/firmware/raspberrypi.c) and potentially break the PCI fixup.
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1190  	 */
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1191  	fw_np = of_find_compatible_node(NULL, NULL,
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1192  					"raspberrypi,bcm2835-firmware");
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1193  	if (fw_np && !rpi_firmware_get(fw_np)) {
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1194  		of_node_put(fw_np);
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1195  		return -EPROBE_DEFER;
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1196  	}
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1197  	of_node_put(fw_np);
44331189f9082c7 Nicolas Saenz Julienne 2020-05-05  1198  
c0452137034bda8 Jim Quinlan            2019-12-16  1199  	bridge = devm_pci_alloc_host_bridge(&pdev->dev, sizeof(*pcie));
c0452137034bda8 Jim Quinlan            2019-12-16  1200  	if (!bridge)
c0452137034bda8 Jim Quinlan            2019-12-16  1201  		return -ENOMEM;
c0452137034bda8 Jim Quinlan            2019-12-16  1202  
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1203  	data = of_device_get_match_data(&pdev->dev);
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1204  	if (!data) {
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1205  		pr_err("failed to look up compatible string\n");
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1206  		return -EINVAL;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1207  	}
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1208  
c0452137034bda8 Jim Quinlan            2019-12-16  1209  	pcie = pci_host_bridge_priv(bridge);
c0452137034bda8 Jim Quinlan            2019-12-16  1210  	pcie->dev = &pdev->dev;
c0452137034bda8 Jim Quinlan            2019-12-16  1211  	pcie->np = np;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1212  	pcie->reg_offsets = data->offsets;
1cf1b0a6dd95250 Jim Quinlan            2020-09-11  1213  	pcie->type = data->type;
04356ac30771091 Jim Quinlan            2020-09-11  1214  	pcie->perst_set = data->perst_set;
04356ac30771091 Jim Quinlan            2020-09-11  1215  	pcie->bridge_sw_init_set = data->bridge_sw_init_set;
c0452137034bda8 Jim Quinlan            2019-12-16  1216  
3cf0eead9fb895d Dejin Zheng            2020-07-08  1217  	pcie->base = devm_platform_ioremap_resource(pdev, 0);
c0452137034bda8 Jim Quinlan            2019-12-16  1218  	if (IS_ERR(pcie->base))
c0452137034bda8 Jim Quinlan            2019-12-16  1219  		return PTR_ERR(pcie->base);
c0452137034bda8 Jim Quinlan            2019-12-16  1220  
c0452137034bda8 Jim Quinlan            2019-12-16  1221  	pcie->clk = devm_clk_get_optional(&pdev->dev, "sw_pcie");
c0452137034bda8 Jim Quinlan            2019-12-16  1222  	if (IS_ERR(pcie->clk))
c0452137034bda8 Jim Quinlan            2019-12-16  1223  		return PTR_ERR(pcie->clk);
c0452137034bda8 Jim Quinlan            2019-12-16  1224  
c0452137034bda8 Jim Quinlan            2019-12-16  1225  	ret = of_pci_get_max_link_speed(np);
c0452137034bda8 Jim Quinlan            2019-12-16  1226  	pcie->gen = (ret < 0) ? 0 : ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1227  
c0452137034bda8 Jim Quinlan            2019-12-16  1228  	pcie->ssc = of_property_read_bool(np, "brcm,enable-ssc");
c0452137034bda8 Jim Quinlan            2019-12-16  1229  
c0452137034bda8 Jim Quinlan            2019-12-16  1230  	ret = clk_prepare_enable(pcie->clk);
c0452137034bda8 Jim Quinlan            2019-12-16  1231  	if (ret) {
c0452137034bda8 Jim Quinlan            2019-12-16  1232  		dev_err(&pdev->dev, "could not enable clock\n");
c0452137034bda8 Jim Quinlan            2019-12-16  1233  		return ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1234  	}
b98f52bc6495110 Jim Quinlan            2020-09-11  1235  	pcie->rescal = devm_reset_control_get_optional_shared(&pdev->dev, "rescal");
b98f52bc6495110 Jim Quinlan            2020-09-11  1236  	if (IS_ERR(pcie->rescal))
b98f52bc6495110 Jim Quinlan            2020-09-11  1237  		return PTR_ERR(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1238  
b98f52bc6495110 Jim Quinlan            2020-09-11  1239  	ret = reset_control_deassert(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1240  	if (ret)
b98f52bc6495110 Jim Quinlan            2020-09-11  1241  		dev_err(&pdev->dev, "failed to deassert 'rescal'\n");
b98f52bc6495110 Jim Quinlan            2020-09-11  1242  
b98f52bc6495110 Jim Quinlan            2020-09-11  1243  	ret = brcm_phy_start(pcie);
b98f52bc6495110 Jim Quinlan            2020-09-11  1244  	if (ret) {
b98f52bc6495110 Jim Quinlan            2020-09-11  1245  		reset_control_assert(pcie->rescal);
b98f52bc6495110 Jim Quinlan            2020-09-11  1246  		return ret;
b98f52bc6495110 Jim Quinlan            2020-09-11  1247  	}
c0452137034bda8 Jim Quinlan            2019-12-16  1248  
c0452137034bda8 Jim Quinlan            2019-12-16  1249  	ret = brcm_pcie_setup(pcie);
c0452137034bda8 Jim Quinlan            2019-12-16  1250  	if (ret)
c0452137034bda8 Jim Quinlan            2019-12-16  1251  		goto fail;
c0452137034bda8 Jim Quinlan            2019-12-16  1252  
40ca1bf580ef24d Jim Quinlan            2019-12-16  1253  	msi_np = of_parse_phandle(pcie->np, "msi-parent", 0);
40ca1bf580ef24d Jim Quinlan            2019-12-16  1254  	if (pci_msi_enabled() && msi_np == pcie->np) {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1255  		ret = brcm_pcie_enable_msi(pcie);
40ca1bf580ef24d Jim Quinlan            2019-12-16  1256  		if (ret) {
40ca1bf580ef24d Jim Quinlan            2019-12-16  1257  			dev_err(pcie->dev, "probe of internal MSI failed");
40ca1bf580ef24d Jim Quinlan            2019-12-16  1258  			goto fail;
40ca1bf580ef24d Jim Quinlan            2019-12-16  1259  		}
40ca1bf580ef24d Jim Quinlan            2019-12-16  1260  	}
40ca1bf580ef24d Jim Quinlan            2019-12-16  1261  
c0452137034bda8 Jim Quinlan            2019-12-16  1262  	bridge->ops = &brcm_pcie_ops;
c0452137034bda8 Jim Quinlan            2019-12-16  1263  	bridge->sysdata = pcie;
c0452137034bda8 Jim Quinlan            2019-12-16  1264  
c0452137034bda8 Jim Quinlan            2019-12-16  1265  	platform_set_drvdata(pdev, pcie);
c0452137034bda8 Jim Quinlan            2019-12-16  1266  
a37571fa9c04a9e Rob Herring            2020-05-22  1267  	return pci_host_probe(bridge);
c0452137034bda8 Jim Quinlan            2019-12-16  1268  fail:
c0452137034bda8 Jim Quinlan            2019-12-16  1269  	__brcm_pcie_remove(pcie);
c0452137034bda8 Jim Quinlan            2019-12-16 @1270  	return ret;
c0452137034bda8 Jim Quinlan            2019-12-16  1271  }
c0452137034bda8 Jim Quinlan            2019-12-16  1272  

:::::: The code at line 1270 was first introduced by commit
:::::: c0452137034bda8f686dd9a2e167949bfffd6776 PCI: brcmstb: Add Broadcom STB PCIe host controller driver

:::::: TO: Jim Quinlan <james.quinlan@broadcom.com>
:::::: CC: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 36574 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-10-09 17:42 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-30  6:10 [linux-next:master 9468/11956] drivers/pci/controller/pcie-brcmstb.c:1270 brcm_pcie_probe() warn: 'pcie->clk' not released on lines: 1237 Dan Carpenter
2020-09-30  6:10 ` Dan Carpenter
2020-09-30 20:50 ` Jim Quinlan
2020-10-01 12:47   ` Lorenzo Pieralisi
2020-10-01 14:15     ` Jim Quinlan
2020-10-09  8:58       ` Lorenzo Pieralisi
2020-10-09 17:42         ` Jim Quinlan
  -- strict thread matches above, loose matches on Subject: below --
2020-09-29 21:34 kernel test robot

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.