From: kernel test robot <lkp@intel.com>
To: Maulik Shah <maulik.shah@oss.qualcomm.com>
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org,
Thomas Gleixner <tglx@kernel.org>,
Sneh Mankad <sneh.mankad@oss.qualcomm.com>
Subject: drivers/irqchip/qcom-pdc.c:719: undefined reference to `qcom_scm_is_available'
Date: Tue, 13 Oct 2026 21:48:59 +0200 [thread overview]
Message-ID: <202610132148.dsoLTiBa-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 24a19b953e2a3d0ea5a8c4951a0ab8f32720c907
commit: ad01c2b2f29163ca0bbe1fd4f9343fbc5119c239 irqchip/qcom-pdc: Configure PDC to pass through mode
date: 3 months ago
config: arm64-randconfig-r2200-20261013 (https://download.01.org/0day-ci/archive/20261013/202610132148.dsoLTiBa-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9187-g5189e3fb
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20261013/202610132148.dsoLTiBa-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
| Fixes: ad01c2b2f291 ("irqchip/qcom-pdc: Configure PDC to pass through mode")
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202610132148.dsoLTiBa-lkp@intel.com/
All errors (new ones prefixed by >>):
aarch64-linux-ld: Unexpected GOT/PLT entries detected!
aarch64-linux-ld: Unexpected run-time procedure linkages detected!
aarch64-linux-ld: drivers/irqchip/qcom-pdc.o: in function `qcom_pdc_probe':
>> drivers/irqchip/qcom-pdc.c:719: undefined reference to `qcom_scm_is_available'
>> aarch64-linux-ld: drivers/irqchip/qcom-pdc.c:722: undefined reference to `qcom_scm_io_writel'
vim +719 drivers/irqchip/qcom-pdc.c
654
655 static int qcom_pdc_probe(struct platform_device *pdev, struct device_node *parent)
656 {
657 struct irq_domain *parent_domain, *pdc_domain;
658 struct device_node *node = pdev->dev.of_node;
659 struct device *dev = &pdev->dev;
660 resource_size_t res_size;
661 struct resource res;
662 u32 irq_param;
663 int ret;
664
665 /* compat with old sm8150 DT which had very small region for PDC */
666 if (of_address_to_resource(node, 0, &res))
667 return -EINVAL;
668
669 res_size = max_t(resource_size_t, resource_size(&res), PDC_DRV_SIZE);
670 if (res_size > resource_size(&res))
671 pr_warn("%pOF: invalid reg size, please fix DT\n", node);
672
673 pdc = devm_kzalloc(dev, sizeof(*pdc), GFP_KERNEL);
674 if (!pdc)
675 return -ENOMEM;
676
677 pdc->base = devm_ioremap(dev, res.start, res_size);
678 if (!pdc->base) {
679 pr_err("%pOF: unable to map PDC registers\n", node);
680 return -ENXIO;
681 }
682
683 pdc->version = pdc_reg_read(PDC_VERSION_REG, 0);
684
685 if (pdc->version >= PDC_VERSION_3_2) {
686 pdc->cfg_fields = &pdc_cfg_v3_2;
687 pdc->regs = &pdc_v3_2;
688 pdc->enable_intr = pdc_enable_intr_cfg;
689 } else if (pdc->version >= PDC_VERSION_3_0) {
690 pdc->cfg_fields = &pdc_cfg_v3_0;
691 pdc->regs = &pdc_v3_0;
692 pdc->enable_intr = pdc_enable_intr_bank;
693 } else {
694 pdc->cfg_fields = &pdc_cfg_v2_7;
695 pdc->regs = &pdc_v2_7;
696 pdc->enable_intr = pdc_enable_intr_bank;
697 }
698
699 pdc->mode = PDC_PASS_THROUGH_MODE;
700
701 /*
702 * PDC has multiple DRV regions, each one provides the same set of
703 * registers for a particular client in the system. Due to a hardware
704 * bug on X1E, some writes to the IRQ_ENABLE_BANK register must be
705 * issued inside the previous region. This region belongs to
706 * a different client and is not described in the device tree. Map the
707 * region with the expected offset to preserve support for old DTs.
708 */
709 if (of_device_is_compatible(node, "qcom,x1e80100-pdc")) {
710 pdc->prev_base = devm_ioremap(dev, res.start - PDC_DRV_SIZE,
711 pdc->regs->irq_en_reg + IRQ_ENABLE_BANK_MAX);
712 if (!pdc->prev_base) {
713 pr_err("%pOF: unable to map previous PDC DRV region\n", node);
714 return -ENXIO;
715 }
716
717 pdc->x1e_quirk = true;
718
> 719 if (!qcom_scm_is_available())
720 return -EPROBE_DEFER;
721
> 722 ret = qcom_scm_io_writel(PDC_GPIO_INT_CTL_ENABLE, PDC_PASS_THROUGH_MODE);
723 if (ret) {
724 pdc->mode = PDC_SECONDARY_MODE;
725 pdc->unmask_gpio = pdc_unmask_gpio_cfg;
726 pdc->clear_gpio = pdc_clear_gpio_cfg;
727 }
728 }
729
730 irq_param = pdc_reg_read(pdc->regs->irq_param_reg, 0);
731 pdc->num_spis = FIELD_GET(GENMASK(7, 0), irq_param);
732
733 parent_domain = irq_find_host(parent);
734 if (!parent_domain) {
735 pr_err("%pOF: unable to find PDC's parent domain\n", node);
736 return -ENXIO;
737 }
738
739 raw_spin_lock_init(&pdc->lock);
740
741 ret = pdc_setup_pin_mapping(dev);
742 if (ret) {
743 pr_err("%pOF: failed to init PDC pin-hwirq mapping\n", node);
744 return ret;
745 }
746
747 pdc_domain = irq_domain_create_hierarchy(parent_domain, IRQ_DOMAIN_FLAG_QCOM_PDC_WAKEUP,
748 PDC_MAX_IRQS, of_fwnode_handle(node),
749 &qcom_pdc_ops, NULL);
750 if (!pdc_domain) {
751 pr_err("%pOF: PDC domain add failed\n", node);
752 return -ENOMEM;
753 }
754
755 irq_domain_update_bus_token(pdc_domain, DOMAIN_BUS_WAKEUP);
756
757 return 0;
758 }
759
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-10-13 19:49 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202610132148.dsoLTiBa-lkp@intel.com \
--to=lkp@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maulik.shah@oss.qualcomm.com \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=sneh.mankad@oss.qualcomm.com \
--cc=tglx@kernel.org \
/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.