2022-05-24 05:36:10

by Genjian

[permalink] [raw]
Subject: [PATCH v2] gpio: vr41xx: Use spurious_interrupt() and export it to modules

From: huhai <[email protected]>

modpost complains once these drivers become modules.
ERROR: modpost: "irq_err_count" [drivers/gpio/gpio-vr41xx.ko] undefined!

Fix it by use spurious_interrupt() and export spurious_interrupt() when
that symbol is =m.

Fixes: 27fdd325dace ("MIPS: Update VR41xx GPIO driver to use gpiolib")
Suggested-by: Thomas Bogendoerfer <[email protected]>
Reported-by: k2ci <[email protected]>
Signed-off-by: huhai <[email protected]>
---
arch/mips/kernel/irq.c | 3 +++
drivers/gpio/gpio-vr41xx.c | 2 +-
2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
index 5e11582fe308..69f9a46bf9e5 100644
--- a/arch/mips/kernel/irq.c
+++ b/arch/mips/kernel/irq.c
@@ -49,6 +49,9 @@ asmlinkage void spurious_interrupt(void)
{
atomic_inc(&irq_err_count);
}
+#ifdef CONFIG_GPIO_VR41XX_MODULE
+EXPORT_SYMBOL_GPL(spurious_interrupt);
+#endif

void __init init_IRQ(void)
{
diff --git a/drivers/gpio/gpio-vr41xx.c b/drivers/gpio/gpio-vr41xx.c
index 98cd715ccc33..8f27a0e0ad99 100644
--- a/drivers/gpio/gpio-vr41xx.c
+++ b/drivers/gpio/gpio-vr41xx.c
@@ -217,7 +217,7 @@ static int giu_get_irq(unsigned int irq)
printk(KERN_ERR "spurious GIU interrupt: %04x(%04x),%04x(%04x)\n",
maskl, pendl, maskh, pendh);

- atomic_inc(&irq_err_count);
+ spurious_interrupt();

return -EINVAL;
}
--
2.27.0



2022-05-25 05:00:31

by Florian Fainelli

[permalink] [raw]
Subject: Re: [PATCH v2] gpio: vr41xx: Use spurious_interrupt() and export it to modules

On 5/23/22 20:28, Genjian Zhang wrote:
> From: huhai <[email protected]>
>
> modpost complains once these drivers become modules.
> ERROR: modpost: "irq_err_count" [drivers/gpio/gpio-vr41xx.ko] undefined!
>
> Fix it by use spurious_interrupt() and export spurious_interrupt() when
> that symbol is =m.
>
> Fixes: 27fdd325dace ("MIPS: Update VR41xx GPIO driver to use gpiolib")
> Suggested-by: Thomas Bogendoerfer <[email protected]>
> Reported-by: k2ci <[email protected]>
> Signed-off-by: huhai <[email protected]>
> ---
> arch/mips/kernel/irq.c | 3 +++
> drivers/gpio/gpio-vr41xx.c | 2 +-
> 2 files changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c
> index 5e11582fe308..69f9a46bf9e5 100644
> --- a/arch/mips/kernel/irq.c
> +++ b/arch/mips/kernel/irq.c
> @@ -49,6 +49,9 @@ asmlinkage void spurious_interrupt(void)
> {
> atomic_inc(&irq_err_count);
> }
> +#ifdef CONFIG_GPIO_VR41XX_MODULE
> +EXPORT_SYMBOL_GPL(spurious_interrupt);
> +#endif

You should not be exporting for just a specific configuration, export it
unconditionally. The generic IRQ layer however prefers to use
handle_bad_irq() which is already exported, can you consider using that?
--
Florian