14 Apr, 2012

1 commit


02 Apr, 2012

1 commit

  • Builds of the MIPS platform ip32_defconfig fails as of commit
    0195c00244dc ("Merge tag 'split-asm_system_h ...") because MIPS xchg()
    macro uses BUILD_BUG_ON and it was moved in commit b81947c646bf
    ("Disintegrate asm/system.h for MIPS").

    The root cause is that the system.h split wasn't tested on a baseline
    with commit 6c03438edeb5 ("kernel.h: doesn't explicitly use bug.h, so
    don't include it.")

    Since this file uses BUG code in several other places besides the xchg
    call, simply make the inclusion explicit.

    Signed-off-by: Paul Gortmaker
    Acked-by: David Howells
    Signed-off-by: Linus Torvalds

    Paul Gortmaker
     

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