19 Mar, 2006

14 commits


18 Mar, 2006

1 commit


17 Mar, 2006

16 commits

  • Lee Revell reported 28ms latency when process with lots of swapped memory
    exits.

    2.6.15 introduced a latency regression when unmapping: in accounting the
    zap_work latency breaker, pte_none counted 1, pte_present PAGE_SIZE, but a
    swap entry counted nothing at all. We think of pages present as the slow
    case, but Lee's trace shows that free_swap_and_cache's radix tree lookup
    can make a lot of work - and we could have been doing it many thousands of
    times without a latency break.

    Move the zap_work update up to account swap entries like pages present.
    This does account non-linear pte_file entries, and unmap_mapping_range
    skipping over swap entries, by the same amount even though they're quick:
    but neither of those cases deserves complicating the code (and they're
    treated no worse than they were in 2.6.14).

    Signed-off-by: Hugh Dickins
    Acked-by: Nick Piggin
    Acked-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • Jiri Benc reported that modpost would stop with SIGABRT if
    used with long filepaths.
    The error looked like:
    > Building modules, stage 2.
    > MODPOST
    > *** glibc detected *** scripts/mod/modpost: realloc(): invalid next size:
    +0x0809f588 ***
    > [...]

    Fix this by allocating at least the required memory + SZ bytes each time.
    Before we sometimes ended up allocating too little memory resuting in the
    glibc detected bug above. Based on patch originally submitted by: Jiri
    Benc

    Signed-off-by: Sam Ravnborg
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Sam Ravnborg
     
  • A user can use nfsservctl() to spam the logs.

    This can happen because the arguments to the nfsservctl() system call are
    versioned. This is a good thing. However, when a bad version is detected,
    the kernel prints a message and then returns an error.

    Signed-off-by: Peter Staubach
    Cc: Trond Myklebust
    Cc: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Peter Staubach
     
  • We can call try_to_release_page() with PagePrivate off and a valid
    page->mapping This may cause all sorts of trouble for the filesystem
    *_releasepage() handlers. XFS bombs out in that case.

    Lock the page before checking for page private.

    Signed-off-by: Christoph Lameter
    Cc: Nick Piggin
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     
  • The dm-stripe target currently does not enforce that the size of a stripe
    device be a multiple of the chunk-size. Under certain conditions, this can
    lead to I/O requests going off the end of an underlying device. This
    test-case shows one example.

    echo "0 100 linear /dev/hdb1 0" | dmsetup create linear0
    echo "0 100 linear /dev/hdb1 100" | dmsetup create linear1
    echo "0 200 striped 2 32 /dev/mapper/linear0 0 /dev/mapper/linear1 0" | \
    dmsetup create stripe0
    dd if=/dev/zero of=/dev/mapper/stripe0 bs=1k

    This will produce the output:
    dd: writing '/dev/mapper/stripe0': Input/output error
    97+0 records in
    96+0 records out

    And in the kernel log will be:
    attempt to access beyond end of device
    dm-0: rw=0, want=104, limit=100

    The patch will check that the table size is a multiple of the stripe
    chunk-size when the table is created, which will prevent the above striped
    device from being created.

    This should not affect tools like LVM or EVMS, since in all the cases I can
    think of, striped devices are always created with the sizes being a
    multiple of the chunk-size.

    The size of a stripe device must be a multiple of its chunk-size.

    (akpm: that typecast is quite gratuitous)

    Signed-off-by: Kevin Corry
    Signed-off-by: Alasdair G Kergon
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kevin Corry
     
  • Bryce reported a bug wherein offlining CPU0 (on x86 box) and then
    subsequently onlining it resulted in a lockup.

    On x86, CPU0 is never offlined. The subsequent attempt to online CPU0
    doesn't take that into account. It actually tries to bootup the already
    booted CPU. Following patch fixes the problem (as acknowledged by Bryce).
    Please consider for inclusion in 2.6.16.

    Check if cpu is already online.

    Signed-off-by: Srivatsa Vaddagiri
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Srivatsa Vaddagiri
     
  • There is a d_drop in dir_release which caused problems as it invalidates
    dcache entries too soon. This was likely a part of the wierd cwd behavior
    folks were seeing.

    Signed-off-by: Eric Van Hensbergen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Van Hensbergen
     
  • When the posix-timer signal is ignored then the timer is rearmed by the
    callback function. The requeue pending accounting has to be fixed up else
    the state might be wrong.

    Signed-off-by: Roman Zippel
    Signed-off-by: Thomas Gleixner
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Roman Zippel
     
  • The pointer to the current time interpolator and the current list of time
    interpolators are typically only changed during bootup. Adding
    __read_mostly takes them away from possibly hot cachelines.

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

    Christoph Lameter
     
  • Currently the migration of anonymous pages will silently fail if no swap is
    setup. This patch makes page migration functions check for available swap
    and fail with -ENODEV if no swap space is available.

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

    Christoph Lameter
     
  • The sighand pointer only needs the rcu_read_lock on the
    read side. So only depending on task_lock protection
    when setting this pointer is not enough. We also need
    a memory barrier to ensure the initialization is seen first.

    Use rcu_assign_pointer as it does this for us, and clearly
    documents that we are setting an rcu readable pointer.

    Signed-off-by: Eric W. Biederman
    Acked-by: Paul E. McKenney
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     
  • Adrian Bunk wrote:
    > The Coverity checker spotted the following two array overflows in
    > drivers/net/chelsio/sge.c (in both cases, the arrays contain 3
    > elements):
    [snip]

    This is a bug. The array should contain 2 elements. Here is the fix.

    Signed-off-by: Scott Bardone
    Signed-off-by: Jeff Garzik

    Scott Bardone
     
  • return -E_NO_BIG_ENDIAN_TESTING;

    [E1000]: Fix 4 missed endianness conversions on RX descriptor fields.

    Signed-off-by: David S. Miller
    Signed-off-by: Jeff Garzik

    David S. Miller
     
  • Jeff Garzik
     
  • Jeff Garzik
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc-merge:
    powerpc: update defconfigs
    [PATCH] powerpc: properly configure DDR/P5IOC children devs
    [PATCH] powerpc: remove duplicate EXPORT_SYMBOLS
    [PATCH] powerpc: RTC memory corruption
    [PATCH] powerpc: enable NAP only on cpus who support it to avoid memory corruption
    [PATCH] powerpc: Clarify wording for CRASH_DUMP Kconfig option
    [PATCH] powerpc/64: enable CONFIG_BLK_DEV_SL82C105
    [PATCH] powerpc: correct cacheflush loop in zImage
    powerpc: Fix problem with time going backwards
    powerpc: Disallow lparcfg being a module

    Linus Torvalds
     

16 Mar, 2006

9 commits

  • Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • The dynamic add path for PCI Host Bridges can fail to configure children
    adapters under P5IOC controllers. It fails to properly fixup bus/device
    resources, and it fails to properly enable EEH. Both of these steps
    need to occur before any children devices are enabled in
    pci_bus_add_devices().

    Signed-off-by: John Rose
    Signed-off-by: Paul Mackerras

    John Rose
     
  • remove warnings when building a 64bit kernel.
    smp_call_function triggers also with 32bit kernel.

    WARNING: vmlinux: duplicate symbol 'smp_call_function' previous definition was in vmlinux
    arch/powerpc/kernel/ppc_ksyms.c:164:EXPORT_SYMBOL(smp_call_function);
    arch/powerpc/kernel/smp.c:300:EXPORT_SYMBOL(smp_call_function);

    WARNING: vmlinux: duplicate symbol 'ioremap' previous definition was in vmlinux
    arch/powerpc/kernel/ppc_ksyms.c:113:EXPORT_SYMBOL(ioremap);
    arch/powerpc/mm/pgtable_64.c:321:EXPORT_SYMBOL(ioremap);

    WARNING: vmlinux: duplicate symbol '__ioremap' previous definition was in vmlinux
    arch/powerpc/kernel/ppc_ksyms.c:117:EXPORT_SYMBOL(__ioremap);
    arch/powerpc/mm/pgtable_64.c:322:EXPORT_SYMBOL(__ioremap);

    WARNING: vmlinux: duplicate symbol 'iounmap' previous definition was in vmlinux
    arch/powerpc/kernel/ppc_ksyms.c:118:EXPORT_SYMBOL(iounmap);
    arch/powerpc/mm/pgtable_64.c:323:EXPORT_SYMBOL(iounmap);

    Signed-off-by: Olaf Hering
    Signed-off-by: Paul Mackerras

    Olaf Hering
     
  • We should be memset'ing the data we are pointing to, not the pointer
    itself. This is in an error path so we probably don't hit it much.

    Signed-off-by: Michael Neuling
    Signed-off-by: Paul Mackerras

    Michael Neuling
     
  • This patch fixes incorrect setting of powersave_nap to 1 on all
    PowerMacs, potentially causing memory corruption on some models. This
    bug was introuced by me during the 32/64 bits merge.

    Signed-off-by: Benjamin Herrenschmidt
    Signed-off-by: Paul Mackerras

    Benjamin Herrenschmidt
     
  • The wording of the CRASH_DUMP Kconfig option is not very clear. It gives you a
    kernel that can be used _as_ the kdump kernel, not a kernel that can boot into
    a kdump kernel.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Paul Mackerras

    Michael Ellerman
     
  • Enable the onboard IDE driver for p610, p615 and p630.
    They have the CD connected to this card. All other RS/6000 systems with this
    controller have no connectors and dont need this option.

    Signed-off-by: Olaf Hering
    Signed-off-by: Paul Mackerras

    Olaf Hering
     
  • Correct the loop for cacheflush. No idea where I copied the code from,
    but the original does not work correct. Maybe the flush is not needed.

    Signed-off-by: Olaf Hering
    Signed-off-by: Paul Mackerras

    Olaf Hering
     
  • The recent changes to keep gettimeofday in sync with xtime had the side
    effect that it was occasionally possible for the time reported by
    gettimeofday to go back by a microsecond. There were two reasons:
    (1) when we recalculated the offsets used by gettimeofday every 2^31
    timebase ticks, we lost an accumulated fractional microsecond, and
    (2) because the update is done some time after the notional start of
    jiffy, if ntp is slowing the clock, it is possible to see time go backwards
    when the timebase factor gets reduced.

    This fixes it by (a) slowing the gettimeofday clock by about 1us in
    2^31 timebase ticks (a factor of less than 1 in 3.7 million), and (b)
    adjusting the timebase offsets in the rare case that the gettimeofday
    result could possibly go backwards (i.e. when ntp is slowing the clock
    and the timer interrupt is late). In this case the adjustment will
    reduce to zero eventually because of (a).

    Signed-off-by: Paul Mackerras

    Paul Mackerras