lkml.org 
[lkml]   [2008]   [Feb]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH 4/8] x86: add support for remotely triggering the block softirq

    * Jens Axboe <jens.axboe@oracle.com> wrote:

    > Signed-off-by: Jens Axboe <jens.axboe@oracle.com>
    > ---
    > 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


    \
     
     \ /
      Last update: 2008-02-07 11:11    [W:0.024 / U:154.892 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site