09 May, 2007

3 commits

  • i386:

    Rearrange the cmpxchg code to allow atomic.h to get it without needing to
    include system.h. This kills warnings in the UML build from atomic.h about
    implicit declarations of cmpxchg symbols. The i386 build presumably isn't
    seeing this because a separate inclusion of system.h is covering it over.

    The cmpxchg stuff is moved to asm-i386/cmpxchg.h, with an include left in
    system.h for the benefit of generic code which expects cmpxchg there.

    Meanwhile, atomic.h includes cmpxchg.h.

    This causes no noticable damage to the i386 build.

    x86_64:

    Move cmpxchg into its own header. atomic.h already included system.h, so
    this is changed to include cmpxchg.h.

    This is purely cleanup - it's not fixing any warnings - so if the x86_64
    system.h isn't considered as cleanup-worthy as i386, then this can be
    dropped.

    It causes no noticable damage to the x86_64 build.

    uml:

    The i386 and x86_64 cmpxchg patches require an asm-um/cmpxchg.h for the
    UML build.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • atomic_add_unless as inline. Remove system.h atomic.h circular dependency.
    I agree (with Andi Kleen) this typeof is not needed and more error
    prone. All the original atomic.h code that uses cmpxchg (which includes
    the atomic_add_unless) uses defines instead of inline functions,
    probably to circumvent a circular dependency between system.h and
    atomic.h on powerpc (which my patch addresses). Therefore, it makes
    sense to use inline functions that will provide type checking.

    atomic_add_unless as inline. Remove system.h atomic.h circular dependency.
    Digging into the FRV architecture shows me that it is also affected by
    such a circular dependency. Here is the diff applying this against the
    rest of my atomic.h patches.

    It applies over the atomic.h standardization patches.

    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • Signed-off-by: Mathieu Desnoyers
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     

08 Dec, 2006

1 commit

  • * 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (156 commits)
    [PATCH] x86-64: Export smp_call_function_single
    [PATCH] i386: Clean up smp_tune_scheduling()
    [PATCH] unwinder: move .eh_frame to RODATA
    [PATCH] unwinder: fully support linker generated .eh_frame_hdr section
    [PATCH] x86-64: don't use set_irq_regs()
    [PATCH] x86-64: check vector in setup_ioapic_dest to verify if need setup_IO_APIC_irq
    [PATCH] x86-64: Make ix86 default to HIGHMEM4G instead of NOHIGHMEM
    [PATCH] i386: replace kmalloc+memset with kzalloc
    [PATCH] x86-64: remove remaining pc98 code
    [PATCH] x86-64: remove unused variable
    [PATCH] x86-64: Fix constraints in atomic_add_return()
    [PATCH] x86-64: fix asm constraints in i386 atomic_add_return
    [PATCH] x86-64: Correct documentation for bzImage protocol v2.05
    [PATCH] x86-64: replace kmalloc+memset with kzalloc in MTRR code
    [PATCH] x86-64: Fix numaq build error
    [PATCH] x86-64: include/asm-x86_64/cpufeature.h isn't a userspace header
    [PATCH] unwinder: Add debugging output to the Dwarf2 unwinder
    [PATCH] x86-64: Clarify error message in GART code
    [PATCH] x86-64: Fix interrupt race in idle callback (3rd try)
    [PATCH] x86-64: Remove unwind stack pointer alignment forcing again
    ...

    Fixed conflict in include/linux/uaccess.h manually

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

07 Dec, 2006

2 commits


27 Jun, 2006

1 commit

  • Changes are largely identical to the i386 version:

    * alternative #define are moved to the new alternative.h file.
    * one new elf section with pointers to the lock prefixes which can be
    nop'ed out for non-smp.
    * two new elf sections simliar to the "classic" alternatives to
    replace SMP code with simpler UP code.
    * fixup headers to use alternative.h instead of defining their own
    LOCK / LOCK_PREFIX macros.

    The patch reuses the i386 version of the alternatives code to avoid code
    duplication. The code in alternatives.c was shuffled around a bit to
    reduce the number of #ifdefs needed. It also got some tweaks needed for
    x86_64 (vsyscall page handling) and new features (noreplacement option
    which was x86_64 only up to now). Debug printk's are changed from
    compile-time to runtime.

    Loosely based on a early version from Bastian Blank

    Signed-off-by: Gerd Hoffmann
    Signed-off-by: Andi Kleen
    Signed-off-by: Linus Torvalds

    Gerd Hoffmann
     

26 Apr, 2006

1 commit


23 Mar, 2006

1 commit

  • Without branch hints, the very unlikely chance of the loop repeating due to
    cmpxchg failure is unrolled with gcc-4 that I have tested.

    Improve this for architectures with a native cas/cmpxchg. llsc archs
    should try to implement this natively.

    Signed-off-by: Nick Piggin
    Cc: Andi Kleen
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: "David S. Miller"
    Cc: Roman Zippel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

19 Jan, 2006

2 commits

  • This is a subset of the bluesmoke project core code, stripped of the NMI work
    which isn't ready to merge and some of the "interesting" proc functionality
    that needs reworking or just has no place in kernel. It requires no core
    kernel changes except the added scrub functions already posted.

    The goal is to merge further functionality only after the core code is
    accepted and proven in the base kernel, and only at the point the upstream
    extras are really ready to merge.

    From: doug thompson

    This converts EDAC to sysfs and is the final chunk neccessary before EDAC
    has a stable user space API and can be considered for submission into the
    base kernel.

    Signed-off-by: Alan Cox
    Signed-off-by: Adrian Bunk
    Signed-off-by: Jesper Juhl
    Signed-off-by: doug thompson
    Signed-off-by: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     
  • EDAC requires a way to scrub memory if an ECC error is found and the chipset
    does not do the work automatically. That means rewriting memory locations
    atomically with respect to all CPUs _and_ bus masters. That means we can't
    use atomic_add(foo, 0) as it gets optimised for non-SMP

    This adds a function to include/asm-foo/atomic.h for the platforms currently
    supported which implements a scrub of a mapped block.

    It also adjusts a few other files include order where atomic.h is included
    before types.h as this now causes an error as atomic_scrub uses u32.

    Signed-off-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alan Cox
     

12 Jan, 2006

1 commit


10 Jan, 2006

1 commit


07 Jan, 2006

1 commit

  • Several counters already have the need to use 64 atomic variables on 64 bit
    platforms (see mm_counter_t in sched.h). We have to do ugly ifdefs to fall
    back to 32 bit atomic on 32 bit platforms.

    The VM statistics patch that I am working on will also make more extensive
    use of atomic64.

    This patch introduces a new type atomic_long_t by providing definitions in
    asm-generic/atomic.h that works similar to the c "long" type. Its 32 bits
    on 32 bit platforms and 64 bits on 64 bit platforms.

    Also cleans up the determination of the mm_counter_t in sched.h.

    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

24 Nov, 2005

1 commit

  • alpha, sparc64, x86_64 are each missing some primitives from their atomic64
    support: fill in the gaps I've noticed by extrapolating asm, follow the
    groupings in each file. But powerpc and parisc still lack atomic64.

    Signed-off-by: Hugh Dickins
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: "David S. Miller"
    Cc: Andi Kleen
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     

14 Nov, 2005

2 commits

  • Introduce an atomic_inc_not_zero operation. Make this a special case of
    atomic_add_unless because lockless pagecache actually wants
    atomic_inc_not_negativeone due to its offset refcount.

    Signed-off-by: Nick Piggin
    Cc: "Paul E. McKenney"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     
  • Introduce an atomic_cmpxchg operation.

    Signed-off-by: Nick Piggin
    Cc: "Paul E. McKenney"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds