[PATCH] irqchip/gic-v3: Remove asmlinkage for gic_handle_irq()

Jinjie Ruan posted 1 patch 1 month, 1 week ago
drivers/irqchip/irq-gic-v3.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] irqchip/gic-v3: Remove asmlinkage for gic_handle_irq()
Posted by Jinjie Ruan 1 month, 1 week ago
Since commit 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C"),
the gic_handle_irq() is only called by C functions, so remove
the asmlinkage.

Fixes: 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 drivers/irqchip/irq-gic-v3.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index c19083bfb943..0efa3443c323 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -930,7 +930,7 @@ static void __gic_handle_irq_from_irqsoff(struct pt_regs *regs)
 	__gic_handle_nmi(irqnr, regs);
 }
 
-static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
+static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
 {
 	if (unlikely(gic_supports_nmi() && !interrupts_enabled(regs)))
 		__gic_handle_irq_from_irqsoff(regs);
-- 
2.34.1
Re: [PATCH] irqchip/gic-v3: Remove asmlinkage for gic_handle_irq()
Posted by Marc Zyngier 1 month, 1 week ago
On Sat, 27 Jul 2024 08:36:48 +0100,
Jinjie Ruan <ruanjinjie@huawei.com> wrote:
> 
> Since commit 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C"),
> the gic_handle_irq() is only called by C functions, so remove
> the asmlinkage.

You clearly haven't looked very far.

> 
> Fixes: 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> ---
>  drivers/irqchip/irq-gic-v3.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
> index c19083bfb943..0efa3443c323 100644
> --- a/drivers/irqchip/irq-gic-v3.c
> +++ b/drivers/irqchip/irq-gic-v3.c
> @@ -930,7 +930,7 @@ static void __gic_handle_irq_from_irqsoff(struct pt_regs *regs)
>  	__gic_handle_nmi(irqnr, regs);
>  }
>  
> -static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
> +static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
>  {
>  	if (unlikely(gic_supports_nmi() && !interrupts_enabled(regs)))
>  		__gic_handle_irq_from_irqsoff(regs);

$ git grep handle_arch_irq arch/arm/
arch/arm/kernel/entry-armv.S:   bl      generic_handle_arch_irq
arch/arm/kernel/entry-armv.S:   mov_l   r0, generic_handle_arch_irq

Until someone rewrites 32bit ARM to have all of its low-level
interrupt handling in C, this stays. This has no effect on arm64
anyway.

	M.

-- 
Without deviation from the norm, progress is not possible.
Re: [PATCH] irqchip/gic-v3: Remove asmlinkage for gic_handle_irq()
Posted by Marc Zyngier 1 month, 1 week ago
On Sat, 27 Jul 2024 10:35:45 +0100,
Marc Zyngier <maz@kernel.org> wrote:
> 
> On Sat, 27 Jul 2024 08:36:48 +0100,
> Jinjie Ruan <ruanjinjie@huawei.com> wrote:
> > 
> > Since commit 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C"),
> > the gic_handle_irq() is only called by C functions, so remove
> > the asmlinkage.
> 
> You clearly haven't looked very far.
> 
> > 
> > Fixes: 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C")
> > Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> > ---
> >  drivers/irqchip/irq-gic-v3.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
> > index c19083bfb943..0efa3443c323 100644
> > --- a/drivers/irqchip/irq-gic-v3.c
> > +++ b/drivers/irqchip/irq-gic-v3.c
> > @@ -930,7 +930,7 @@ static void __gic_handle_irq_from_irqsoff(struct pt_regs *regs)
> >  	__gic_handle_nmi(irqnr, regs);
> >  }
> >  
> > -static asmlinkage void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
> > +static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
> >  {
> >  	if (unlikely(gic_supports_nmi() && !interrupts_enabled(regs)))
> >  		__gic_handle_irq_from_irqsoff(regs);
> 
> $ git grep handle_arch_irq arch/arm/
> arch/arm/kernel/entry-armv.S:   bl      generic_handle_arch_irq
> arch/arm/kernel/entry-armv.S:   mov_l   r0, generic_handle_arch_irq
> 
> Until someone rewrites 32bit ARM to have all of its low-level
> interrupt handling in C, this stays. This has no effect on arm64
> anyway.

Scratch that, I misread it. We have an indirection, so this patch is fine.

Apologies for the noise.

	M.

-- 
Without deviation from the norm, progress is not possible.
Re: [PATCH] irqchip/gic-v3: Remove asmlinkage for gic_handle_irq()
Posted by Thomas Gleixner 1 month, 1 week ago
On Sat, Jul 27 2024 at 15:36, Jinjie Ruan wrote:
> Since commit 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C"),
> the gic_handle_irq() is only called by C functions, so remove
> the asmlinkage.
>
> Fixes: 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C")
> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>

Right. Can we please fix all of that and be done with it?

# git grep -l asmlinkage drivers/irqchip/ | xargs grep set_handle_irq

should find the remaining leftovers of asmlinkage.

Thanks,

        tglx
Re: [PATCH] irqchip/gic-v3: Remove asmlinkage for gic_handle_irq()
Posted by Jinjie Ruan 1 month, 1 week ago

On 2024/7/27 17:25, Thomas Gleixner wrote:
> On Sat, Jul 27 2024 at 15:36, Jinjie Ruan wrote:
>> Since commit 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C"),
>> the gic_handle_irq() is only called by C functions, so remove
>> the asmlinkage.
>>
>> Fixes: 064dbfb41691 ("arm64: entry: convert IRQ+FIQ handlers to C")
>> Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
> 
> Right. Can we please fix all of that and be done with it?
> 
> # git grep -l asmlinkage drivers/irqchip/ | xargs grep set_handle_irq
> 
> should find the remaining leftovers of asmlinkage.

You are right,handle_arch_irq() are all only called in C now, we can all
remove the asmlinkage.

> 
> Thanks,
> 
>         tglx