* Jens Axboe <[EMAIL PROTECTED]> wrote:

> Signed-off-by: Jens Axboe <[EMAIL PROTECTED]>
> ---
>  arch/x86/kernel/smp_32.c                   |   15 +++++++++++++++
>  arch/x86/kernel/smpboot_32.c               |    3 +++
>  include/asm-x86/hw_irq_32.h                |    1 +
>  include/asm-x86/mach-default/entry_arch.h  |    1 +
>  include/asm-x86/mach-default/irq_vectors.h |    1 +
>  5 files changed, 21 insertions(+), 0 deletions(-)
> 
> diff --git a/arch/x86/kernel/smp_32.c b/arch/x86/kernel/smp_32.c
> index dc0cde9..668b8a4 100644
> --- a/arch/x86/kernel/smp_32.c
> +++ b/arch/x86/kernel/smp_32.c
> @@ -672,6 +672,21 @@ void smp_call_function_interrupt(struct pt_regs *regs)
>       }
>  }
>  
> +fastcall void smp_raise_block_softirq(struct pt_regs *regs)

small detail: there's no fastcall used in arch/x86 anymore.

> +{
> +     unsigned long flags;
> +
> +     ack_APIC_irq();
> +     local_irq_save(flags);
> +     raise_softirq_irqoff(BLOCK_SOFTIRQ);
> +     local_irq_restore(flags);
> +}

if then this should be a general facility to trigger any softirq - not 
just the block one.

>  #define CALL_FUNCTION_VECTOR 0xfb
> +#define BLOCK_SOFTIRQ_VECTOR 0xfa

this wastes another irq vector and is very special-purpose. Why not make 
the smp_call_function() one more scalable instead?

on the more conceptual level, shouldnt we just move to threads instead 
of softirqs? That way you can become affine to any CPU and can do 
cross-CPU wakeups anytime - which will be nice and fast via the 
smp_reschedule_interrupt() facility.

        Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to