[PATCH] x86/apic: remove vector_lock from apic_retrigger_irq()

Luigi Rizzo posted 1 patch 1 month, 1 week ago
arch/x86/kernel/apic/vector.c | 3 ---
1 file changed, 3 deletions(-)
[PATCH] x86/apic: remove vector_lock from apic_retrigger_irq()
Posted by Luigi Rizzo 1 month, 1 week ago
apic_retrigger_irq() grabs vector_lock, but this is not needed because
any caller of this function holds the irqdesc lock, and that suffices to
protect apicd->vector.

Remove the unnecessary lock.

Thomas found this is a leftover from v2.6 when it was truly needed.

Signed-off-by: Luigi Rizzo <lrizzo@google.com>
---
 arch/x86/kernel/apic/vector.c | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c
index bddc544653999..fd0f133b379fd 100644
--- a/arch/x86/kernel/apic/vector.c
+++ b/arch/x86/kernel/apic/vector.c
@@ -1002,11 +1002,8 @@ static void apic_force_complete_move(struct irq_data *irqd)
 static int apic_retrigger_irq(struct irq_data *irqd)
 {
 	struct apic_chip_data *apicd = apic_chip_data(irqd);
-	unsigned long flags;
 
-	raw_spin_lock_irqsave(&vector_lock, flags);
 	__apic_send_IPI(apicd->cpu, apicd->vector);
-	raw_spin_unlock_irqrestore(&vector_lock, flags);
 
 	return 1;
 }
-- 
2.53.0.345.g96ddfc5eaa-goog
Re: [PATCH] x86/apic: remove vector_lock from apic_retrigger_irq()
Posted by Luigi Rizzo 3 weeks, 1 day ago
On Fri, Feb 20, 2026 at 4:12 PM Luigi Rizzo <lrizzo@google.com> wrote:
>
> apic_retrigger_irq() grabs vector_lock, but this is not needed because
> any caller of this function holds the irqdesc lock, and that suffices to
> protect apicd->vector.
>
> Remove the unnecessary lock.
>
> Thomas found this is a leftover from v2.6 when it was truly needed.
>
> Signed-off-by: Luigi Rizzo <lrizzo@google.com>
> ---
>  arch/x86/kernel/apic/vector.c | 3 ---
>  1 file changed, 3 deletions(-)
>
> diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c
> index bddc544653999..fd0f133b379fd 100644
> --- a/arch/x86/kernel/apic/vector.c
> +++ b/arch/x86/kernel/apic/vector.c
> @@ -1002,11 +1002,8 @@ static void apic_force_complete_move(struct irq_data *irqd)
>  static int apic_retrigger_irq(struct irq_data *irqd)
>  {
>         struct apic_chip_data *apicd = apic_chip_data(irqd);
> -       unsigned long flags;
>
> -       raw_spin_lock_irqsave(&vector_lock, flags);
>         __apic_send_IPI(apicd->cpu, apicd->vector);
> -       raw_spin_unlock_irqrestore(&vector_lock, flags);
>
>         return 1;
>  }
> --
> 2.53.0.345.g96ddfc5eaa-goog
>

Is there any concern with this proposed patch?

cheers
luigi