From: kernel test robot <lkp@intel.com>
To: Takashi Sakamoto <o-takashi@sakamocchi.jp>,
linux1394-devel@lists.sourceforge.net,
linux-kernel@vger.kernel.org
Cc: oe-kbuild-all@lists.linux.dev, adamg@pobox.com,
stable@vger.kernel.org, Jiri Slaby <jirislaby@kernel.org>,
Mario Limonciello <mario.limonciello@amd.com>,
Tobias Gruetzmacher <tobias-lists@23.gs>
Subject: Re: [PATCH] firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards
Date: Sat, 30 Dec 2023 06:56:40 +0800 [thread overview]
Message-ID: <202312300612.hrtBWbnp-lkp@intel.com> (raw)
In-Reply-To: <20231229035735.11127-1-o-takashi@sakamocchi.jp>
Hi Takashi,
kernel test robot noticed the following build errors:
[auto build test ERROR on ieee1394-linux1394/for-next]
[also build test ERROR on ieee1394-linux1394/for-linus linus/master v6.7-rc7 next-20231222]
[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/Takashi-Sakamoto/firewire-ohci-suppress-unexpected-system-reboot-in-AMD-Ryzen-machines-and-ASM108x-VT630x-PCIe-cards/20231229-120311
base: https://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git for-next
patch link: https://lore.kernel.org/r/20231229035735.11127-1-o-takashi%40sakamocchi.jp
patch subject: [PATCH] firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards
config: loongarch-randconfig-r081-20231229 (https://download.01.org/0day-ci/archive/20231230/202312300612.hrtBWbnp-lkp@intel.com/config)
compiler: loongarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231230/202312300612.hrtBWbnp-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/202312300612.hrtBWbnp-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/firewire/ohci.c: In function 'pci_probe':
>> drivers/firewire/ohci.c:3679:70: error: macro "detect_vt630x_with_asm1083_on_amd_ryzen_machine" passed 2 arguments, but takes just 1
3679 | if (detect_vt630x_with_asm1083_on_amd_ryzen_machine(dev, ohci))
| ^
drivers/firewire/ohci.c:3573: note: macro "detect_vt630x_with_asm1083_on_amd_ryzen_machine" defined here
3573 | #define detect_vt630x_with_asm1083_on_amd_ryzen_machine(pdev) false
|
>> drivers/firewire/ohci.c:3679:13: error: 'detect_vt630x_with_asm1083_on_amd_ryzen_machine' undeclared (first use in this function)
3679 | if (detect_vt630x_with_asm1083_on_amd_ryzen_machine(dev, ohci))
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/firewire/ohci.c:3679:13: note: each undeclared identifier is reported only once for each function it appears in
vim +/detect_vt630x_with_asm1083_on_amd_ryzen_machine +3679 drivers/firewire/ohci.c
3617
3618 static int pci_probe(struct pci_dev *dev,
3619 const struct pci_device_id *ent)
3620 {
3621 struct fw_ohci *ohci;
3622 u32 bus_options, max_receive, link_speed, version;
3623 u64 guid;
3624 int i, err;
3625 size_t size;
3626
3627 if (dev->vendor == PCI_VENDOR_ID_PINNACLE_SYSTEMS) {
3628 dev_err(&dev->dev, "Pinnacle MovieBoard is not yet supported\n");
3629 return -ENOSYS;
3630 }
3631
3632 ohci = devres_alloc(release_ohci, sizeof(*ohci), GFP_KERNEL);
3633 if (ohci == NULL)
3634 return -ENOMEM;
3635 fw_card_initialize(&ohci->card, &ohci_driver, &dev->dev);
3636 pci_set_drvdata(dev, ohci);
3637 pmac_ohci_on(dev);
3638 devres_add(&dev->dev, ohci);
3639
3640 err = pcim_enable_device(dev);
3641 if (err) {
3642 dev_err(&dev->dev, "failed to enable OHCI hardware\n");
3643 return err;
3644 }
3645
3646 pci_set_master(dev);
3647 pci_write_config_dword(dev, OHCI1394_PCI_HCI_Control, 0);
3648
3649 spin_lock_init(&ohci->lock);
3650 mutex_init(&ohci->phy_reg_mutex);
3651
3652 INIT_WORK(&ohci->bus_reset_work, bus_reset_work);
3653
3654 if (!(pci_resource_flags(dev, 0) & IORESOURCE_MEM) ||
3655 pci_resource_len(dev, 0) < OHCI1394_REGISTER_SIZE) {
3656 ohci_err(ohci, "invalid MMIO resource\n");
3657 return -ENXIO;
3658 }
3659
3660 err = pcim_iomap_regions(dev, 1 << 0, ohci_driver_name);
3661 if (err) {
3662 ohci_err(ohci, "request and map MMIO resource unavailable\n");
3663 return -ENXIO;
3664 }
3665 ohci->registers = pcim_iomap_table(dev)[0];
3666
3667 for (i = 0; i < ARRAY_SIZE(ohci_quirks); i++)
3668 if ((ohci_quirks[i].vendor == dev->vendor) &&
3669 (ohci_quirks[i].device == (unsigned short)PCI_ANY_ID ||
3670 ohci_quirks[i].device == dev->device) &&
3671 (ohci_quirks[i].revision == (unsigned short)PCI_ANY_ID ||
3672 ohci_quirks[i].revision >= dev->revision)) {
3673 ohci->quirks = ohci_quirks[i].flags;
3674 break;
3675 }
3676 if (param_quirks)
3677 ohci->quirks = param_quirks;
3678
> 3679 if (detect_vt630x_with_asm1083_on_amd_ryzen_machine(dev, ohci))
3680 ohci->quirks |= QUIRK_REBOOT_BY_CYCLE_TIMER_READ;
3681
3682 /*
3683 * Because dma_alloc_coherent() allocates at least one page,
3684 * we save space by using a common buffer for the AR request/
3685 * response descriptors and the self IDs buffer.
3686 */
3687 BUILD_BUG_ON(AR_BUFFERS * sizeof(struct descriptor) > PAGE_SIZE/4);
3688 BUILD_BUG_ON(SELF_ID_BUF_SIZE > PAGE_SIZE/2);
3689 ohci->misc_buffer = dmam_alloc_coherent(&dev->dev, PAGE_SIZE, &ohci->misc_buffer_bus,
3690 GFP_KERNEL);
3691 if (!ohci->misc_buffer)
3692 return -ENOMEM;
3693
3694 err = ar_context_init(&ohci->ar_request_ctx, ohci, 0,
3695 OHCI1394_AsReqRcvContextControlSet);
3696 if (err < 0)
3697 return err;
3698
3699 err = ar_context_init(&ohci->ar_response_ctx, ohci, PAGE_SIZE/4,
3700 OHCI1394_AsRspRcvContextControlSet);
3701 if (err < 0)
3702 return err;
3703
3704 err = context_init(&ohci->at_request_ctx, ohci,
3705 OHCI1394_AsReqTrContextControlSet, handle_at_packet);
3706 if (err < 0)
3707 return err;
3708
3709 err = context_init(&ohci->at_response_ctx, ohci,
3710 OHCI1394_AsRspTrContextControlSet, handle_at_packet);
3711 if (err < 0)
3712 return err;
3713
3714 reg_write(ohci, OHCI1394_IsoRecvIntMaskSet, ~0);
3715 ohci->ir_context_channels = ~0ULL;
3716 ohci->ir_context_support = reg_read(ohci, OHCI1394_IsoRecvIntMaskSet);
3717 reg_write(ohci, OHCI1394_IsoRecvIntMaskClear, ~0);
3718 ohci->ir_context_mask = ohci->ir_context_support;
3719 ohci->n_ir = hweight32(ohci->ir_context_mask);
3720 size = sizeof(struct iso_context) * ohci->n_ir;
3721 ohci->ir_context_list = devm_kzalloc(&dev->dev, size, GFP_KERNEL);
3722 if (!ohci->ir_context_list)
3723 return -ENOMEM;
3724
3725 reg_write(ohci, OHCI1394_IsoXmitIntMaskSet, ~0);
3726 ohci->it_context_support = reg_read(ohci, OHCI1394_IsoXmitIntMaskSet);
3727 /* JMicron JMB38x often shows 0 at first read, just ignore it */
3728 if (!ohci->it_context_support) {
3729 ohci_notice(ohci, "overriding IsoXmitIntMask\n");
3730 ohci->it_context_support = 0xf;
3731 }
3732 reg_write(ohci, OHCI1394_IsoXmitIntMaskClear, ~0);
3733 ohci->it_context_mask = ohci->it_context_support;
3734 ohci->n_it = hweight32(ohci->it_context_mask);
3735 size = sizeof(struct iso_context) * ohci->n_it;
3736 ohci->it_context_list = devm_kzalloc(&dev->dev, size, GFP_KERNEL);
3737 if (!ohci->it_context_list)
3738 return -ENOMEM;
3739
3740 ohci->self_id = ohci->misc_buffer + PAGE_SIZE/2;
3741 ohci->self_id_bus = ohci->misc_buffer_bus + PAGE_SIZE/2;
3742
3743 bus_options = reg_read(ohci, OHCI1394_BusOptions);
3744 max_receive = (bus_options >> 12) & 0xf;
3745 link_speed = bus_options & 0x7;
3746 guid = ((u64) reg_read(ohci, OHCI1394_GUIDHi) << 32) |
3747 reg_read(ohci, OHCI1394_GUIDLo);
3748
3749 if (!(ohci->quirks & QUIRK_NO_MSI))
3750 pci_enable_msi(dev);
3751 err = devm_request_irq(&dev->dev, dev->irq, irq_handler,
3752 pci_dev_msi_enabled(dev) ? 0 : IRQF_SHARED, ohci_driver_name, ohci);
3753 if (err < 0) {
3754 ohci_err(ohci, "failed to allocate interrupt %d\n", dev->irq);
3755 goto fail_msi;
3756 }
3757
3758 err = fw_card_add(&ohci->card, max_receive, link_speed, guid);
3759 if (err)
3760 goto fail_msi;
3761
3762 version = reg_read(ohci, OHCI1394_Version) & 0x00ff00ff;
3763 ohci_notice(ohci,
3764 "added OHCI v%x.%x device as card %d, "
3765 "%d IR + %d IT contexts, quirks 0x%x%s\n",
3766 version >> 16, version & 0xff, ohci->card.index,
3767 ohci->n_ir, ohci->n_it, ohci->quirks,
3768 reg_read(ohci, OHCI1394_PhyUpperBound) ?
3769 ", physUB" : "");
3770
3771 return 0;
3772
3773 fail_msi:
3774 pci_disable_msi(dev);
3775
3776 return err;
3777 }
3778
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2023-12-29 22:56 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-29 3:57 [PATCH] firewire: ohci: suppress unexpected system reboot in AMD Ryzen machines and ASM108x/VT630x PCIe cards Takashi Sakamoto
2023-12-29 22:56 ` kernel test robot [this message]
2023-12-30 2:30 ` Mario Limonciello
2024-01-02 3:55 ` Takashi Sakamoto
2023-12-30 8:43 ` kernel test robot
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=202312300612.hrtBWbnp-lkp@intel.com \
--to=lkp@intel.com \
--cc=adamg@pobox.com \
--cc=jirislaby@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux1394-devel@lists.sourceforge.net \
--cc=mario.limonciello@amd.com \
--cc=o-takashi@sakamocchi.jp \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=stable@vger.kernel.org \
--cc=tobias-lists@23.gs \
/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 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.