19 May, 2008

36 commits

  • Make almost all list mutation primitives use rcu_assign_pointer().

    The main point of this being readability improvement.

    Signed-off-by: Franck Bui-Huu
    Cc: "Paul E. McKenney"
    Cc: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Franck Bui-Huu
     
  • Move rcu-protected lists from list.h into a new header file rculist.h.

    This is done because list are a very used primitive structure all over the
    kernel and it's currently impossible to include other header files in this
    list.h without creating some circular dependencies.

    For example, list.h implements rcu-protected list and uses rcu_dereference()
    without including rcupdate.h. It actually compiles because users of
    rcu_dereference() are macros. Others RCU functions could be used too but
    aren't probably because of this.

    Therefore this patch creates rculist.h which includes rcupdates without to
    many changes/troubles.

    Signed-off-by: Franck Bui-Huu
    Acked-by: Paul E. McKenney
    Acked-by: Josh Triplett
    Signed-off-by: Andrew Morton
    Signed-off-by: Ingo Molnar

    Franck Bui-Huu
     
  • Long-delayed update to the RCU documentation, including adding the new
    call_rcu_sched() and rcu_barrier_sched() APIs.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Paul E. McKenney
     
  • Add entry to rcu_torture_ops allowing the correct barrier function to
    be used upon exit from rcutorture. Also add torture options for the
    new call_rcu_sched() API.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Paul E. McKenney
     
  • Add rcu_barrier_sched() and rcu_barrier_bh(). With these in place,
    rcutorture no longer gives the occasional oops when repeatedly starting
    and stopping torturing rcu_bh. Also adds the API needed to flush out
    pre-existing call_rcu_sched() callbacks.

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Paul E. McKenney
     
  • Add comments to the logic that infers quiescent states when interrupting
    from either user mode or the idle loop. Also add a memory barrier: it
    appears that James Huang was in fact onto something, as the scheduler
    is much less synchronization happy than it once was, so we can no longer
    rely on its memory barriers in all cases.

    Signed-off-by: Paul E. McKenney
    Reported-by: James Huang
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Paul E. McKenney
     
  • Fourth cut of patch to provide the call_rcu_sched(). This is again to
    synchronize_sched() as call_rcu() is to synchronize_rcu().

    Should be fine for experimental and -rt use, but not ready for inclusion.
    With some luck, I will be able to tell Andrew to come out of hiding on
    the next round.

    Passes multi-day rcutorture sessions with concurrent CPU hotplugging.

    Fixes since the first version include a bug that could result in
    indefinite blocking (spotted by Gautham Shenoy), better resiliency
    against CPU-hotplug operations, and other minor fixes.

    Fixes since the second version include reworking grace-period detection
    to avoid deadlocks that could happen when running concurrently with
    CPU hotplug, adding Mathieu's fix to avoid the softlockup messages,
    as well as Mathieu's fix to allow use earlier in boot.

    Fixes since the third version include a wrong-CPU bug spotted by
    Andrew, getting rid of the obsolete synchronize_kernel API that somehow
    snuck back in, merging spin_unlock() and local_irq_restore() in a
    few places, commenting the code that checks for quiescent states based
    on interrupting from user-mode execution or the idle loop, removing
    some inline attributes, and some code-style changes.

    Known/suspected shortcomings:

    o I still do not entirely trust the sleep/wakeup logic. Next step
    will be to use a private snapshot of the CPU online mask in
    rcu_sched_grace_period() -- if the CPU wasn't there at the start
    of the grace period, we don't need to hear from it. And the
    bit about accounting for changes in online CPUs inside of
    rcu_sched_grace_period() is ugly anyway.

    o It might be good for rcu_sched_grace_period() to invoke
    resched_cpu() when a given CPU wasn't responding quickly,
    but resched_cpu() is declared static...

    This patch also fixes a long-standing bug in the earlier preemptable-RCU
    implementation of synchronize_rcu() that could result in loss of
    concurrent external changes to a task's CPU affinity mask. I still cannot
    remember who reported this...

    Signed-off-by: Paul E. McKenney
    Signed-off-by: Mathieu Desnoyers
    Signed-off-by: Ingo Molnar
    Signed-off-by: Thomas Gleixner

    Paul E. McKenney
     
  • rcu_batches_completed and rcu_patches_completed_bh are both declared
    in rcuclassic.h and rcupreempt.h. This patch removes the extra
    prototypes for them from rcupdate.h.

    rcu_batches_completed_bh is defined as a static inline in the rcupreempt.h
    header file. Trying to export this as EXPORT_SYMBOL_GPL causes linking problems
    with the powerpc linker. There's no need to export a static inlined function.

    Modules must be compiled with the same type of RCU implementation as the
    kernel they are for.

    Signed-off-by: Steven Rostedt
    Signed-off-by: Ingo Molnar

    Steven Rostedt
     
  • Linus Torvalds
     
  • * 'i2c-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6:
    i2c/max6875: Really prevent 24RF08 corruption
    i2c-amd756: Fix functionality flags
    i2c: Kill the old driver matching scheme
    i2c: Convert remaining new-style drivers to use module aliasing
    i2c: Switch pasemi to the new device/driver matching scheme
    i2c: Clean up Blackfin BF527 I2C device declarations
    i2c-nforce2: Disable the second SMBus channel on the DFI Lanparty NF4 Expert
    i2c: New co-maintainer

    Linus Torvalds
     
  • Add multi_defconfig, to build a kernel for all supported m68k platforms,
    excluding Sun 3 (Sun 3 kernels are incompatible with all other m68k platforms)

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Update the m68k defconfigs

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • m68k: Correctly handle multi-ISA at runtime in multi-platform kernels

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • The *_ISA type defines are quite generic and cause namespace conflicts
    (e.g. with `AMIGAHW_DECLARE(GG2_ISA)' in ) for some kernel
    configurations. Use ISA_TYPE_* to avoid such conflicts.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • UIO needs m68k_mmutype:

    ERROR: "m68k_mmutype" [drivers/uio/uio.ko] undefined!

    (noticed by Christian T. Steigies)

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Mark Q40/Q60 floppy support broken:

    arch/m68k/q40/q40ints.c: In function 'q40_irq_handler':
    arch/m68k/q40/q40ints.c:214: error: implicit declaration of function 'floppy_hardint'

    Including doesn't help, as it causes a lot of additional error
    messages (cfr. Sun 3x).

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • According to the tests in do_initcalls(), the proper error code in case no
    device is found is -ENODEV, not -ENXIO or -EIO.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Some input drivers do not check whether they're actually running on the
    correct platform, causing multi-platform kernels to crash if they are not.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Some network drivers do not check whether they're actually running on the
    correct platform, causing multi-platform kernels to crash if they are not.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • The Apollo frame buffer device driver (dnfb) doesn't check whether it's
    actually running on Apollo hardware, causing a crash if it isn't.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • The Macintosh IDE driver (macide) doesn't check whether it's actually running
    on Mac hardware, causing a crash if it isn't.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • When running a HP300-enabled kernel on non-HP300 hardware, a test in the early
    startup code jumps to the wrong label, causing a double bus fault.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Use `__builtin_trap()' instead of `asm volatile("illegal")' in the m68k BUG()
    macros (as suggested by Andrew Pinski), to kill warnings in code that assumes
    BUG() does not return.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • m68k vme_scc:
    - make scc_ports[] static
    - kill unused global scc_initialized

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • The Hisoft Whippet PCMCIA serial driver has been removed a long time ago, but
    it's Kconfig symbol still existed.

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Correct FB_HP300 dependencies:
    - FB_HP300 doesn't depend only on HP300, but also on DIO (which depends on
    HP300)
    - FB_HP300 does not need FB_CFB_FILLRECT

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • CONFIG_FB_DAFB is a leftover from pre-Kconfig

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • Convert access_ok() from a macro to an inline function, so the compiler no
    longer complains about unused variables:

    fs/read_write.c: In function 'rw_copy_check_uvector':
    fs/read_write.c:556: warning: unused variable 'buf'

    Signed-off-by: Geert Uytterhoeven
    Signed-off-by: Linus Torvalds

    Geert Uytterhoeven
     
  • i2c-core takes care of the possible corruption of 24RF08 chips for
    quite some times, so device devices no longer need to do it. And they
    really should not, as applying the prevention twice voids it.

    I thought that I had fixed all drivers long ago but apparently I had
    missed that one.

    Signed-off-by: Jean Delvare
    Cc: Ben Gardner

    Jean Delvare
     
  • The i2c-amd756 driver pretends to support SMBus process call
    transactions but actually does not. Fix it.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Remove the old driver_name/type scheme for i2c driver matching. Only the
    standard aliasing model will be used from now on.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Update all the remaining new-style i2c drivers to use standard module
    aliasing instead of the old driver_name/type driver matching scheme.

    Note that the tuner driver is a bit quirky at the moment, as it
    overwrites i2c_client.name with arbitrary strings. We write "tuner"
    back on remove, to make sure that driver cycling will work properly,
    but there may still be troublesome corner cases.

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • The old device/driver matching scheme is going away so stop using it.

    Signed-off-by: Jean Delvare
    Acked-by: Olof Johansson

    Jean Delvare
     
  • I2C_BOARD_INFO() now sets the type field so no need to set it
    separatetly.

    Signed-off-by: Jean Delvare
    Cc: Bryan Wu

    Jean Delvare
     
  • There is a strange chip at 0x2e on the second SMBus channel of the
    DFI Lanparty NF4 Expert motherboard. Accessing the chip reboots the
    system. As there's nothing interesting on this SMBus channel, the
    easiest and safest thing to do is to disable it on that board.

    This is a better fix to bug #5889 than the it87 driver update that was
    done originally:
    http://bugzilla.kernel.org/show_bug.cgi?id=5889

    Signed-off-by: Jean Delvare

    Jean Delvare
     
  • Ben Dooks agreed to become my co-maintainer for the i2c subsystem. In
    particular, Ben will help with drivers for embedded systems, of which
    my experience is inexistent. Thanks Ben and welcome on board!

    Signed-off-by: Jean Delvare
    Acked-by: Ben Dooks

    Jean Delvare
     

18 May, 2008

4 commits