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
prev 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®