31 Oct, 2011

2 commits

  • Up until now, this file was getting percpu.h because nearly every
    file was implicitly getting module.h (and all its sub-includes).
    But we want to clean that up, so call out percpu.h explicitly.
    Otherwise we'll get things like this on an ARM build:

    kernel/irq_work.c:48: error: expected declaration specifiers or '...' before 'irq_work_list'
    kernel/irq_work.c:48: warning: type defaults to 'int' in declaration of 'DEFINE_PER_CPU'

    The same thing was happening for builds on ARM for asm/processor.h

    kernel/irq_work.c: In function 'irq_work_sync':
    kernel/irq_work.c:166: error: implicit declaration of function 'cpu_relax'

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     
  • The changed files were only including linux/module.h for the
    EXPORT_SYMBOL infrastructure, and nothing else. Revector them
    onto the isolated export header for faster compile times.

    Nothing to see here but a whole lot of instances of:

    -#include
    +#include

    This commit is only changing the kernel dir; next targets
    will probably be mm, fs, the arch dirs, etc.

    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

04 Oct, 2011

2 commits

  • So we don't have to expose the struct list_node member.

    Cc: Huang Ying
    Cc: Andrew Morton
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315836348.26517.41.camel@twins
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • Use llist in irq_work instead of the lock-less linked list
    implementation in irq_work to avoid the code duplication.

    Signed-off-by: Huang Ying
    Signed-off-by: Peter Zijlstra
    Link: http://lkml.kernel.org/r/1315461646-1379-6-git-send-email-ying.huang@intel.com
    Signed-off-by: Ingo Molnar

    Huang Ying
     

18 Dec, 2010

1 commit

  • The irq work queue is a per cpu object and it is sufficient for
    synchronization if per cpu atomics are used. Doing so simplifies
    the code and reduces the overhead of the code.

    Before:

    christoph@linux-2.6$ size kernel/irq_work.o
    text data bss dec hex filename
    451 8 1 460 1cc kernel/irq_work.o

    After:

    christoph@linux-2.6$ size kernel/irq_work.o
    text data bss dec hex filename
    438 8 1 447 1bf kernel/irq_work.o

    Cc: Peter Zijlstra
    Signed-off-by: Christoph Lameter

    Christoph Lameter
     

18 Nov, 2010

1 commit

  • The compiler warned us about:

    kernel/irq_work.c: In function 'irq_work_run':
    kernel/irq_work.c:148: warning: value computed is not used

    Dropping the cmpxchg() result is indeed weird, but correct -
    so annotate away the warning.

    Signed-off-by: Sergio Aguirre
    Cc: Huang Ying
    Cc: Martin Schwidefsky
    Cc: Kyle McMartin
    Signed-off-by: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Sergio Aguirre
     

19 Oct, 2010

1 commit

  • Provide a mechanism that allows running code in IRQ context. It is
    most useful for NMI code that needs to interact with the rest of the
    system -- like wakeup a task to drain buffers.

    Perf currently has such a mechanism, so extract that and provide it as
    a generic feature, independent of perf so that others may also
    benefit.

    The IRQ context callback is generated through self-IPIs where
    possible, or on architectures like powerpc the decrementer (the
    built-in timer facility) is set to generate an interrupt immediately.

    Architectures that don't have anything like this get to do with a
    callback from the timer tick. These architectures can call
    irq_work_run() at the tail of any IRQ handlers that might enqueue such
    work (like the perf IRQ handler) to avoid undue latencies in
    processing the work.

    Signed-off-by: Peter Zijlstra
    Acked-by: Kyle McMartin
    Acked-by: Martin Schwidefsky
    [ various fixes ]
    Signed-off-by: Huang Ying
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra