linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mailbox: tegra: Fix superfluous IRQ error message
@ 2019-10-11  8:34 Jon Hunter
  2019-10-14  8:14 ` kbuild test robot
  2019-10-14 13:24 ` Thierry Reding
  0 siblings, 2 replies; 5+ messages in thread
From: Jon Hunter @ 2019-10-11  8:34 UTC (permalink / raw)
  To: Jassi Brar, Thierry Reding; +Cc: linux-kernel, linux-tegra, Jon Hunter

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(-)

diff --git a/drivers/mailbox/tegra-hsp.c b/drivers/mailbox/tegra-hsp.c
index 4c5ba35d48d4..834b35dc3b13 100644
--- a/drivers/mailbox/tegra-hsp.c
+++ b/drivers/mailbox/tegra-hsp.c
@@ -657,7 +657,7 @@ static int tegra_hsp_probe(struct platform_device *pdev)
 	hsp->num_db = (value >> HSP_nDB_SHIFT) & HSP_nINT_MASK;
 	hsp->num_si = (value >> HSP_nSI_SHIFT) & HSP_nINT_MASK;
 
-	err = platform_get_irq_byname(pdev, "doorbell");
+	err = platform_get_irq_byname_optional(pdev, "doorbell");
 	if (err >= 0)
 		hsp->doorbell_irq = err;
 
@@ -677,7 +677,7 @@ static int tegra_hsp_probe(struct platform_device *pdev)
 			if (!name)
 				return -ENOMEM;
 
-			err = platform_get_irq_byname(pdev, name);
+			err = platform_get_irq_byname_optional(pdev, name);
 			if (err >= 0) {
 				hsp->shared_irqs[i] = err;
 				count++;
-- 
2.17.1


^ permalink raw reply related	[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
  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

* Re: [PATCH] mailbox: tegra: Fix superfluous IRQ error message
  2019-10-14 13:24 ` Thierry Reding
@ 2019-11-12 12:02   ` Jon Hunter
  2019-11-12 14:07     ` Greg Kroah-Hartman
  0 siblings, 1 reply; 5+ messages in thread
From: Jon Hunter @ 2019-11-12 12:02 UTC (permalink / raw)
  To: Thierry Reding, Greg Kroah-Hartman, Jassi Brar; +Cc: linux-kernel, linux-tegra

Hi Greg,

On 14/10/2019 14:24, Thierry Reding wrote:
> 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

Are you OK to pick this up? Do you need Jassi's ACK as well?

Thanks!
Jon

-- 
nvpublic

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH] mailbox: tegra: Fix superfluous IRQ error message
  2019-11-12 12:02   ` Jon Hunter
@ 2019-11-12 14:07     ` Greg Kroah-Hartman
  0 siblings, 0 replies; 5+ messages in thread
From: Greg Kroah-Hartman @ 2019-11-12 14:07 UTC (permalink / raw)
  To: Jon Hunter; +Cc: Thierry Reding, Jassi Brar, linux-kernel, linux-tegra

On Tue, Nov 12, 2019 at 12:02:02PM +0000, Jon Hunter wrote:
> Hi Greg,
> 
> On 14/10/2019 14:24, Thierry Reding wrote:
> > 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
> 
> Are you OK to pick this up? Do you need Jassi's ACK as well?

Sorry, I'll take it as-is, it should be fine.

greg k-h

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-11-12 14:07 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
2019-11-12 14:07     ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).