* Re: [PATCH] mailbox: tegra: Fix superfluous IRQ error message
2019-10-11 8:34 [PATCH] mailbox: tegra: Fix superfluous IRQ error message Jon Hunter
@ 2019-10-14 8:14 ` kbuild test robot
2019-10-14 13:24 ` Thierry Reding
1 sibling, 0 replies; 5+ messages in thread
From: kbuild test robot @ 2019-10-14 8:14 UTC (permalink / raw)
To: Jon Hunter
Cc: kbuild-all, Jassi Brar, Thierry Reding, linux-kernel,
linux-tegra, Jon Hunter
[-- Attachment #1: Type: text/plain, Size: 6199 bytes --]
Hi Jon,
I love your patch! Yet something to improve:
[auto build test ERROR on tegra/for-next]
[cannot apply to v5.4-rc3 next-20191011]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Jon-Hunter/mailbox-tegra-Fix-superfluous-IRQ-error-message/20191014-052329
base: https://git.kernel.org/pub/scm/linux/kernel/git/tegra/linux.git for-next
config: arm-allmodconfig (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 7.4.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=7.4.0 make.cross ARCH=arm
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers//mailbox/tegra-hsp.c: In function 'tegra_hsp_probe':
>> drivers//mailbox/tegra-hsp.c:660:8: error: implicit declaration of function 'platform_get_irq_byname_optional'; did you mean 'platform_get_irq_optional'? [-Werror=implicit-function-declaration]
err = platform_get_irq_byname_optional(pdev, "doorbell");
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
platform_get_irq_optional
cc1: some warnings being treated as errors
vim +660 drivers//mailbox/tegra-hsp.c
630
631 static int tegra_hsp_probe(struct platform_device *pdev)
632 {
633 struct tegra_hsp *hsp;
634 struct resource *res;
635 unsigned int i;
636 u32 value;
637 int err;
638
639 hsp = devm_kzalloc(&pdev->dev, sizeof(*hsp), GFP_KERNEL);
640 if (!hsp)
641 return -ENOMEM;
642
643 hsp->dev = &pdev->dev;
644 hsp->soc = of_device_get_match_data(&pdev->dev);
645 INIT_LIST_HEAD(&hsp->doorbells);
646 spin_lock_init(&hsp->lock);
647
648 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
649 hsp->regs = devm_ioremap_resource(&pdev->dev, res);
650 if (IS_ERR(hsp->regs))
651 return PTR_ERR(hsp->regs);
652
653 value = tegra_hsp_readl(hsp, HSP_INT_DIMENSIONING);
654 hsp->num_sm = (value >> HSP_nSM_SHIFT) & HSP_nINT_MASK;
655 hsp->num_ss = (value >> HSP_nSS_SHIFT) & HSP_nINT_MASK;
656 hsp->num_as = (value >> HSP_nAS_SHIFT) & HSP_nINT_MASK;
657 hsp->num_db = (value >> HSP_nDB_SHIFT) & HSP_nINT_MASK;
658 hsp->num_si = (value >> HSP_nSI_SHIFT) & HSP_nINT_MASK;
659
> 660 err = platform_get_irq_byname_optional(pdev, "doorbell");
661 if (err >= 0)
662 hsp->doorbell_irq = err;
663
664 if (hsp->num_si > 0) {
665 unsigned int count = 0;
666
667 hsp->shared_irqs = devm_kcalloc(&pdev->dev, hsp->num_si,
668 sizeof(*hsp->shared_irqs),
669 GFP_KERNEL);
670 if (!hsp->shared_irqs)
671 return -ENOMEM;
672
673 for (i = 0; i < hsp->num_si; i++) {
674 char *name;
675
676 name = kasprintf(GFP_KERNEL, "shared%u", i);
677 if (!name)
678 return -ENOMEM;
679
680 err = platform_get_irq_byname_optional(pdev, name);
681 if (err >= 0) {
682 hsp->shared_irqs[i] = err;
683 count++;
684 }
685
686 kfree(name);
687 }
688
689 if (count == 0) {
690 devm_kfree(&pdev->dev, hsp->shared_irqs);
691 hsp->shared_irqs = NULL;
692 }
693 }
694
695 /* setup the doorbell controller */
696 hsp->mbox_db.of_xlate = tegra_hsp_db_xlate;
697 hsp->mbox_db.num_chans = 32;
698 hsp->mbox_db.dev = &pdev->dev;
699 hsp->mbox_db.ops = &tegra_hsp_db_ops;
700
701 hsp->mbox_db.chans = devm_kcalloc(&pdev->dev, hsp->mbox_db.num_chans,
702 sizeof(*hsp->mbox_db.chans),
703 GFP_KERNEL);
704 if (!hsp->mbox_db.chans)
705 return -ENOMEM;
706
707 if (hsp->doorbell_irq) {
708 err = tegra_hsp_add_doorbells(hsp);
709 if (err < 0) {
710 dev_err(&pdev->dev, "failed to add doorbells: %d\n",
711 err);
712 return err;
713 }
714 }
715
716 err = devm_mbox_controller_register(&pdev->dev, &hsp->mbox_db);
717 if (err < 0) {
718 dev_err(&pdev->dev, "failed to register doorbell mailbox: %d\n",
719 err);
720 return err;
721 }
722
723 /* setup the shared mailbox controller */
724 hsp->mbox_sm.of_xlate = tegra_hsp_sm_xlate;
725 hsp->mbox_sm.num_chans = hsp->num_sm;
726 hsp->mbox_sm.dev = &pdev->dev;
727 hsp->mbox_sm.ops = &tegra_hsp_sm_ops;
728
729 hsp->mbox_sm.chans = devm_kcalloc(&pdev->dev, hsp->mbox_sm.num_chans,
730 sizeof(*hsp->mbox_sm.chans),
731 GFP_KERNEL);
732 if (!hsp->mbox_sm.chans)
733 return -ENOMEM;
734
735 if (hsp->shared_irqs) {
736 err = tegra_hsp_add_mailboxes(hsp, &pdev->dev);
737 if (err < 0) {
738 dev_err(&pdev->dev, "failed to add mailboxes: %d\n",
739 err);
740 return err;
741 }
742 }
743
744 err = devm_mbox_controller_register(&pdev->dev, &hsp->mbox_sm);
745 if (err < 0) {
746 dev_err(&pdev->dev, "failed to register shared mailbox: %d\n",
747 err);
748 return err;
749 }
750
751 platform_set_drvdata(pdev, hsp);
752
753 if (hsp->doorbell_irq) {
754 err = devm_request_irq(&pdev->dev, hsp->doorbell_irq,
755 tegra_hsp_doorbell_irq, IRQF_NO_SUSPEND,
756 dev_name(&pdev->dev), hsp);
757 if (err < 0) {
758 dev_err(&pdev->dev,
759 "failed to request doorbell IRQ#%u: %d\n",
760 hsp->doorbell_irq, err);
761 return err;
762 }
763 }
764
765 if (hsp->shared_irqs) {
766 err = tegra_hsp_request_shared_irq(hsp);
767 if (err < 0)
768 return err;
769 }
770
771 return 0;
772 }
773
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 71975 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] mailbox: tegra: Fix superfluous IRQ error message
2019-10-11 8:34 [PATCH] mailbox: tegra: Fix superfluous IRQ error message Jon Hunter
2019-10-14 8:14 ` kbuild test robot
@ 2019-10-14 13:24 ` Thierry Reding
2019-11-12 12:02 ` Jon Hunter
1 sibling, 1 reply; 5+ messages in thread
From: Thierry Reding @ 2019-10-14 13:24 UTC (permalink / raw)
To: Jon Hunter, Greg Kroah-Hartman; +Cc: Jassi Brar, linux-kernel, linux-tegra
[-- Attachment #1: Type: text/plain, Size: 1514 bytes --]
On Fri, Oct 11, 2019 at 09:34:59AM +0100, Jon Hunter wrote:
> Commit 7723f4c5ecdb ("driver core: platform: Add an error message to
> platform_get_irq*()") added an error message to avoid drivers having
> to print an error message when IRQ lookup fails. However, there are
> some cases where IRQs are optional and so new optional versions of
> the platform_get_irq*() APIs have been added for these cases.
>
> The IRQs for Tegra HSP module are optional because not all instances
> of the module have the doorbell and all of the shared interrupts.
> Hence, since the above commit was applied the following error messages
> are now seen on Tegra194 ...
>
> ERR KERN tegra-hsp c150000.hsp: IRQ doorbell not found
> ERR KERN tegra-hsp c150000.hsp: IRQ shared0 not found
>
> The Tegra HSP driver deliberately does not fail if these are not found
> and so fix the above errors by updating the Tegra HSP driver to use
> the platform_get_irq_byname_optional() API.
>
> Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
> ---
> drivers/mailbox/tegra-hsp.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
Perhaps Greg should pick up this patch because he's carrying the patch
that adds the platform_get_irq_byname_optional() patch for v5.5.
Greg, would you prefer a copy of this in your mailbox, or does the
following patchwork link suffice:
http://patchwork.ozlabs.org/patch/1175012/
Either way, this patch:
Acked-by: Thierry Reding <treding@nvidia.com>
Thierry
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread