mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: "Guangshuo Li" <lgs201920130244@gmail.com>,
	"Marc Kleine-Budde" <mkl@pengutronix.de>,
	"Vincent Mailhol" <mailhol@kernel.org>,
	"Stéphane Grosjean" <s.grosjean@peak-system.fr>,
	"Kees Cook" <kees@kernel.org>,
	"Wolfgang Grandegger" <wg@grandegger.com>,
	linux-can@vger.kernel.org, linux-kernel@vger.kernel.org
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	stable@vger.kernel.org
Subject: Re: [PATCH] can: peak_pci: fix PCIeC cleanup on probe failure
Date: Thu, 17 Sep 2026 03:07:47 +0800	[thread overview]
Message-ID: <202609170334.HGvXQS1L-lkp@intel.com> (raw)
In-Reply-To: <20260915173157.2510375-1-lgs201920130244@gmail.com>

Hi Guangshuo,

kernel test robot noticed the following build warnings:

[auto build test WARNING on mkl-can-next/testing]
[also build test WARNING on linus/master v7.3-rc3 next-20260914]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url:    https://github.com/intel-lab-lkp/linux/commits/Guangshuo-Li/can-peak_pci-fix-PCIeC-cleanup-on-probe-failure/20260916-013157
base:   https://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git testing
patch link:    https://lore.kernel.org/r/20260915173157.2510375-1-lgs201920130244%40gmail.com
patch subject: [PATCH] can: peak_pci: fix PCIeC cleanup on probe failure
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20260917/202609170334.HGvXQS1L-lkp@intel.com/config)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260917/202609170334.HGvXQS1L-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202609170334.HGvXQS1L-lkp@intel.com/

All warnings (new ones prefixed by >>):

>> drivers/net/can/sja1000/peak_pci.c:702:2: warning: misleading indentation; statement is not part of the previous 'if' [-Wmisleading-indentation]
     702 |         pci_set_drvdata(pdev, chan->prev_dev);
         |         ^
   drivers/net/can/sja1000/peak_pci.c:700:1: note: previous statement is here
     700 | if (!chan->prev_dev && chan->pciec_card)
         | ^
   1 warning generated.


vim +/if +702 drivers/net/can/sja1000/peak_pci.c

38034518c086fc Wolfgang Grandegger  2011-09-12  550  
1dd06ae8db716e Greg Kroah-Hartman   2012-12-06  551  static int peak_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
38034518c086fc Wolfgang Grandegger  2011-09-12  552  {
38034518c086fc Wolfgang Grandegger  2011-09-12  553  	struct sja1000_priv *priv;
38034518c086fc Wolfgang Grandegger  2011-09-12  554  	struct peak_pci_chan *chan;
0b5a958cf4df3a Stéphane Grosjean    2014-05-20  555  	struct net_device *dev, *prev_dev;
38034518c086fc Wolfgang Grandegger  2011-09-12  556  	void __iomem *cfg_base, *reg_base;
38034518c086fc Wolfgang Grandegger  2011-09-12  557  	u16 sub_sys_id, icr;
38034518c086fc Wolfgang Grandegger  2011-09-12  558  	int i, err, channels;
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  559  	char fw_str[14] = "";
38034518c086fc Wolfgang Grandegger  2011-09-12  560  
38034518c086fc Wolfgang Grandegger  2011-09-12  561  	err = pci_enable_device(pdev);
38034518c086fc Wolfgang Grandegger  2011-09-12  562  	if (err)
38034518c086fc Wolfgang Grandegger  2011-09-12  563  		return err;
38034518c086fc Wolfgang Grandegger  2011-09-12  564  
38034518c086fc Wolfgang Grandegger  2011-09-12  565  	err = pci_request_regions(pdev, DRV_NAME);
38034518c086fc Wolfgang Grandegger  2011-09-12  566  	if (err)
38034518c086fc Wolfgang Grandegger  2011-09-12  567  		goto failure_disable_pci;
38034518c086fc Wolfgang Grandegger  2011-09-12  568  
38034518c086fc Wolfgang Grandegger  2011-09-12  569  	err = pci_read_config_word(pdev, 0x2e, &sub_sys_id);
38034518c086fc Wolfgang Grandegger  2011-09-12  570  	if (err)
38034518c086fc Wolfgang Grandegger  2011-09-12  571  		goto failure_release_regions;
38034518c086fc Wolfgang Grandegger  2011-09-12  572  
38034518c086fc Wolfgang Grandegger  2011-09-12  573  	dev_dbg(&pdev->dev, "probing device %04x:%04x:%04x\n",
38034518c086fc Wolfgang Grandegger  2011-09-12  574  		pdev->vendor, pdev->device, sub_sys_id);
38034518c086fc Wolfgang Grandegger  2011-09-12  575  
38034518c086fc Wolfgang Grandegger  2011-09-12  576  	err = pci_write_config_word(pdev, 0x44, 0);
38034518c086fc Wolfgang Grandegger  2011-09-12  577  	if (err)
38034518c086fc Wolfgang Grandegger  2011-09-12  578  		goto failure_release_regions;
38034518c086fc Wolfgang Grandegger  2011-09-12  579  
38034518c086fc Wolfgang Grandegger  2011-09-12  580  	if (sub_sys_id >= 12)
38034518c086fc Wolfgang Grandegger  2011-09-12  581  		channels = 4;
38034518c086fc Wolfgang Grandegger  2011-09-12  582  	else if (sub_sys_id >= 10)
38034518c086fc Wolfgang Grandegger  2011-09-12  583  		channels = 3;
38034518c086fc Wolfgang Grandegger  2011-09-12  584  	else if (sub_sys_id >= 4)
38034518c086fc Wolfgang Grandegger  2011-09-12  585  		channels = 2;
38034518c086fc Wolfgang Grandegger  2011-09-12  586  	else
38034518c086fc Wolfgang Grandegger  2011-09-12  587  		channels = 1;
38034518c086fc Wolfgang Grandegger  2011-09-12  588  
38034518c086fc Wolfgang Grandegger  2011-09-12  589  	cfg_base = pci_iomap(pdev, 0, PEAK_PCI_CFG_SIZE);
38034518c086fc Wolfgang Grandegger  2011-09-12  590  	if (!cfg_base) {
38034518c086fc Wolfgang Grandegger  2011-09-12  591  		dev_err(&pdev->dev, "failed to map PCI resource #0\n");
4a4bfdcd295728 Peter Senna Tschudin 2012-10-03  592  		err = -ENOMEM;
38034518c086fc Wolfgang Grandegger  2011-09-12  593  		goto failure_release_regions;
38034518c086fc Wolfgang Grandegger  2011-09-12  594  	}
38034518c086fc Wolfgang Grandegger  2011-09-12  595  
38034518c086fc Wolfgang Grandegger  2011-09-12  596  	reg_base = pci_iomap(pdev, 1, PEAK_PCI_CHAN_SIZE * channels);
38034518c086fc Wolfgang Grandegger  2011-09-12  597  	if (!reg_base) {
38034518c086fc Wolfgang Grandegger  2011-09-12  598  		dev_err(&pdev->dev, "failed to map PCI resource #1\n");
4a4bfdcd295728 Peter Senna Tschudin 2012-10-03  599  		err = -ENOMEM;
38034518c086fc Wolfgang Grandegger  2011-09-12  600  		goto failure_unmap_cfg_base;
38034518c086fc Wolfgang Grandegger  2011-09-12  601  	}
38034518c086fc Wolfgang Grandegger  2011-09-12  602  
38034518c086fc Wolfgang Grandegger  2011-09-12  603  	/* Set GPIO control register */
38034518c086fc Wolfgang Grandegger  2011-09-12  604  	writew(0x0005, cfg_base + PITA_GPIOICR + 2);
38034518c086fc Wolfgang Grandegger  2011-09-12  605  	/* Enable all channels of this card */
38034518c086fc Wolfgang Grandegger  2011-09-12  606  	writeb(0x00, cfg_base + PITA_GPIOICR);
38034518c086fc Wolfgang Grandegger  2011-09-12  607  	/* Toggle reset */
38034518c086fc Wolfgang Grandegger  2011-09-12  608  	writeb(0x05, cfg_base + PITA_MISC + 3);
276b7361bb1be3 Jia-Ju Bai           2018-04-11  609  	usleep_range(5000, 6000);
38034518c086fc Wolfgang Grandegger  2011-09-12  610  	/* Leave parport mux mode */
38034518c086fc Wolfgang Grandegger  2011-09-12  611  	writeb(0x04, cfg_base + PITA_MISC + 3);
38034518c086fc Wolfgang Grandegger  2011-09-12  612  
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  613  	/* FPGA equipped card if not 0 */
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  614  	if (readl(cfg_base + PEAK_VER_REG1)) {
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  615  		/* FPGA card: display version of the running firmware */
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  616  		u32 fw_ver = readl(cfg_base + PEAK_VER_REG2);
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  617  
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  618  		snprintf(fw_str, sizeof(fw_str), " FW v%u.%u.%u",
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  619  			 (fw_ver >> 12) & 0xf,
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  620  			 (fw_ver >> 8) & 0xf,
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  621  			 (fw_ver >> 4) & 0xf);
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  622  	}
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  623  
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  624  	/* Display commercial name (and, eventually, FW version) of the card */
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  625  	dev_info(&pdev->dev, "%ux CAN %s%s\n",
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  626  		 channels, (const char *)ent->driver_data, fw_str);
805ff68c8e7f4d Stéphane Grosjean    2021-06-07  627  
38034518c086fc Wolfgang Grandegger  2011-09-12  628  	icr = readw(cfg_base + PITA_ICR + 2);
38034518c086fc Wolfgang Grandegger  2011-09-12  629  
38034518c086fc Wolfgang Grandegger  2011-09-12  630  	for (i = 0; i < channels; i++) {
38034518c086fc Wolfgang Grandegger  2011-09-12  631  		dev = alloc_sja1000dev(sizeof(struct peak_pci_chan));
38034518c086fc Wolfgang Grandegger  2011-09-12  632  		if (!dev) {
38034518c086fc Wolfgang Grandegger  2011-09-12  633  			err = -ENOMEM;
38034518c086fc Wolfgang Grandegger  2011-09-12  634  			goto failure_remove_channels;
38034518c086fc Wolfgang Grandegger  2011-09-12  635  		}
38034518c086fc Wolfgang Grandegger  2011-09-12  636  
38034518c086fc Wolfgang Grandegger  2011-09-12  637  		priv = netdev_priv(dev);
38034518c086fc Wolfgang Grandegger  2011-09-12  638  		chan = priv->priv;
38034518c086fc Wolfgang Grandegger  2011-09-12  639  
38034518c086fc Wolfgang Grandegger  2011-09-12  640  		chan->cfg_base = cfg_base;
38034518c086fc Wolfgang Grandegger  2011-09-12  641  		priv->reg_base = reg_base + i * PEAK_PCI_CHAN_SIZE;
38034518c086fc Wolfgang Grandegger  2011-09-12  642  
38034518c086fc Wolfgang Grandegger  2011-09-12  643  		priv->read_reg = peak_pci_read_reg;
38034518c086fc Wolfgang Grandegger  2011-09-12  644  		priv->write_reg = peak_pci_write_reg;
38034518c086fc Wolfgang Grandegger  2011-09-12  645  		priv->post_irq = peak_pci_post_irq;
38034518c086fc Wolfgang Grandegger  2011-09-12  646  
38034518c086fc Wolfgang Grandegger  2011-09-12  647  		priv->can.clock.freq = PEAK_PCI_CAN_CLOCK;
38034518c086fc Wolfgang Grandegger  2011-09-12  648  		priv->ocr = PEAK_PCI_OCR;
38034518c086fc Wolfgang Grandegger  2011-09-12  649  		priv->cdr = PEAK_PCI_CDR;
38034518c086fc Wolfgang Grandegger  2011-09-12  650  		/* Neither a slave nor a single device distributes the clock */
38034518c086fc Wolfgang Grandegger  2011-09-12  651  		if (channels == 1 || i > 0)
38034518c086fc Wolfgang Grandegger  2011-09-12  652  			priv->cdr |= CDR_CLK_OFF;
38034518c086fc Wolfgang Grandegger  2011-09-12  653  
38034518c086fc Wolfgang Grandegger  2011-09-12  654  		/* Setup interrupt handling */
38034518c086fc Wolfgang Grandegger  2011-09-12  655  		priv->irq_flags = IRQF_SHARED;
38034518c086fc Wolfgang Grandegger  2011-09-12  656  		dev->irq = pdev->irq;
38034518c086fc Wolfgang Grandegger  2011-09-12  657  
38034518c086fc Wolfgang Grandegger  2011-09-12  658  		chan->icr_mask = peak_pci_icr_masks[i];
38034518c086fc Wolfgang Grandegger  2011-09-12  659  		icr |= chan->icr_mask;
38034518c086fc Wolfgang Grandegger  2011-09-12  660  
38034518c086fc Wolfgang Grandegger  2011-09-12  661  		SET_NETDEV_DEV(dev, &pdev->dev);
3e66d0138c05d9 Christopher R. Baker 2014-03-08  662  		dev->dev_id = i;
38034518c086fc Wolfgang Grandegger  2011-09-12  663  
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  664  		/* Create chain of SJA1000 devices */
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  665  		chan->prev_dev = pci_get_drvdata(pdev);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  666  		pci_set_drvdata(pdev, dev);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  667  
9b69aff9fd1a66 Marc Kleine-Budde    2021-06-11  668  		/* PCAN-ExpressCard needs some additional i2c init.
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  669  		 * This must be done *before* register_sja1000dev() but
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  670  		 * *after* devices linkage
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  671  		 */
4be0015c955a9a Oliver Hartkopp      2014-09-16  672  		if (pdev->device == PEAK_PCIEC_DEVICE_ID ||
4be0015c955a9a Oliver Hartkopp      2014-09-16  673  		    pdev->device == PEAK_PCIEC34_DEVICE_ID) {
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  674  			err = peak_pciec_probe(pdev, dev);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  675  			if (err) {
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  676  				dev_err(&pdev->dev,
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  677  					"failed to probe device (err %d)\n",
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  678  					err);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  679  				goto failure_free_dev;
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  680  			}
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  681  		}
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  682  
38034518c086fc Wolfgang Grandegger  2011-09-12  683  		err = register_sja1000dev(dev);
38034518c086fc Wolfgang Grandegger  2011-09-12  684  		if (err) {
38034518c086fc Wolfgang Grandegger  2011-09-12  685  			dev_err(&pdev->dev, "failed to register device\n");
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  686  			goto failure_free_dev;
38034518c086fc Wolfgang Grandegger  2011-09-12  687  		}
38034518c086fc Wolfgang Grandegger  2011-09-12  688  
38034518c086fc Wolfgang Grandegger  2011-09-12  689  		dev_info(&pdev->dev,
38034518c086fc Wolfgang Grandegger  2011-09-12  690  			 "%s at reg_base=0x%p cfg_base=0x%p irq=%d\n",
38034518c086fc Wolfgang Grandegger  2011-09-12  691  			 dev->name, priv->reg_base, chan->cfg_base, dev->irq);
38034518c086fc Wolfgang Grandegger  2011-09-12  692  	}
38034518c086fc Wolfgang Grandegger  2011-09-12  693  
38034518c086fc Wolfgang Grandegger  2011-09-12  694  	/* Enable interrupts */
38034518c086fc Wolfgang Grandegger  2011-09-12  695  	writew(icr, cfg_base + PITA_ICR + 2);
38034518c086fc Wolfgang Grandegger  2011-09-12  696  
38034518c086fc Wolfgang Grandegger  2011-09-12  697  	return 0;
38034518c086fc Wolfgang Grandegger  2011-09-12  698  
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  699  failure_free_dev:
d0c5c584fb3542 Guangshuo Li         2026-09-16  700  if (!chan->prev_dev && chan->pciec_card)
d0c5c584fb3542 Guangshuo Li         2026-09-16  701  	peak_pciec_remove(chan->pciec_card);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02 @702  	pci_set_drvdata(pdev, chan->prev_dev);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  703  	free_sja1000dev(dev);
e6d9c80b7ca150 Stéphane Grosjean    2012-03-02  704  
38034518c086fc Wolfgang Grandegger  2011-09-12  705  failure_remove_channels:
38034518c086fc Wolfgang Grandegger  2011-09-12  706  	/* Disable interrupts */
38034518c086fc Wolfgang Grandegger  2011-09-12  707  	writew(0x0, cfg_base + PITA_ICR + 2);
38034518c086fc Wolfgang Grandegger  2011-09-12  708  
0b5a958cf4df3a Stéphane Grosjean    2014-05-20  709  	for (dev = pci_get_drvdata(pdev); dev; dev = prev_dev) {
38034518c086fc Wolfgang Grandegger  2011-09-12  710  		priv = netdev_priv(dev);
38034518c086fc Wolfgang Grandegger  2011-09-12  711  		chan = priv->priv;
0b5a958cf4df3a Stéphane Grosjean    2014-05-20  712  		prev_dev = chan->prev_dev;
0b5a958cf4df3a Stéphane Grosjean    2014-05-20  713  
d0c5c584fb3542 Guangshuo Li         2026-09-16  714  		/* do that only for first channel */
d0c5c584fb3542 Guangshuo Li         2026-09-16  715  		if (!prev_dev && chan->pciec_card)
d0c5c584fb3542 Guangshuo Li         2026-09-16  716  			peak_pciec_remove(chan->pciec_card);
0b5a958cf4df3a Stéphane Grosjean    2014-05-20  717  		unregister_sja1000dev(dev);
0b5a958cf4df3a Stéphane Grosjean    2014-05-20  718  		free_sja1000dev(dev);
38034518c086fc Wolfgang Grandegger  2011-09-12  719  	}
38034518c086fc Wolfgang Grandegger  2011-09-12  720  
38034518c086fc Wolfgang Grandegger  2011-09-12  721  	pci_iounmap(pdev, reg_base);
38034518c086fc Wolfgang Grandegger  2011-09-12  722  
38034518c086fc Wolfgang Grandegger  2011-09-12  723  failure_unmap_cfg_base:
38034518c086fc Wolfgang Grandegger  2011-09-12  724  	pci_iounmap(pdev, cfg_base);
38034518c086fc Wolfgang Grandegger  2011-09-12  725  
38034518c086fc Wolfgang Grandegger  2011-09-12  726  failure_release_regions:
38034518c086fc Wolfgang Grandegger  2011-09-12  727  	pci_release_regions(pdev);
38034518c086fc Wolfgang Grandegger  2011-09-12  728  
38034518c086fc Wolfgang Grandegger  2011-09-12  729  failure_disable_pci:
38034518c086fc Wolfgang Grandegger  2011-09-12  730  	pci_disable_device(pdev);
38034518c086fc Wolfgang Grandegger  2011-09-12  731  
5c2cb02edf79ad Stéphane Grosjean    2017-11-23  732  	/* pci_xxx_config_word() return positive PCIBIOS_xxx error codes while
5c2cb02edf79ad Stéphane Grosjean    2017-11-23  733  	 * the probe() function must return a negative errno in case of failure
9b69aff9fd1a66 Marc Kleine-Budde    2021-06-11  734  	 * (err is unchanged if negative)
9b69aff9fd1a66 Marc Kleine-Budde    2021-06-11  735  	 */
5c2cb02edf79ad Stéphane Grosjean    2017-11-23  736  	return pcibios_err_to_errno(err);
38034518c086fc Wolfgang Grandegger  2011-09-12  737  }
38034518c086fc Wolfgang Grandegger  2011-09-12  738  

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

      parent reply	other threads:[~2026-09-16 19:08 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-15 17:31 Guangshuo Li
2026-09-16 17:30 ` kernel test robot
2026-09-16 19:07 ` kernel test robot [this message]

Reply instructions:

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

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

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

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

  git send-email \
    --in-reply-to=202609170334.HGvXQS1L-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kees@kernel.org \
    --cc=lgs201920130244@gmail.com \
    --cc=linux-can@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=mailhol@kernel.org \
    --cc=mkl@pengutronix.de \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=s.grosjean@peak-system.fr \
    --cc=stable@vger.kernel.org \
    --cc=wg@grandegger.com \
    /path/to/YOUR_REPLY

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

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

all inboxes | Powered by JetHome®