29 Apr, 2008

5 commits

  • Due to the rcupreempt.h WARN_ON trigged, I got 2G syslog file. For some
    serious complaining of kernel, we need repeat the warnings, so here I isolate
    the ratelimit part of printk.c to a standalone file.

    Signed-off-by: Dave Young
    Acked-by: Paul E. McKenney
    Tested-by: Paul E. McKenney
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Dave Young
     
  • iommu_is_span_boundary in lib/iommu-helper.c was exported for PARISC IOMMUs
    (commit 3715863aa142c4f4c5208f5f3e5e9bac06006d2f). SWIOTLB can use it instead
    of the homegrown function.

    Signed-off-by: FUJITA Tomonori
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: H. Peter Anvin
    Cc: Tony Luck
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    FUJITA Tomonori
     
  • There's a pointlessly braced block of code in there. Remove the braces and
    save a tabstop.

    Cc: Andi Kleen
    Cc: FUJITA Tomonori
    Cc: Jan Beulich
    Cc: Tony Luck
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Almost all implementations of pci_iomap() in the kernel, including the generic
    lib/iomap.c one, copies the content of a struct resource into unsigned long's
    which will break on 32 bits platforms with 64 bits resources.

    This fixes all definitions of pci_iomap() to use resource_size_t. I also
    "fixed" the 64bits arch for consistency.

    Signed-off-by: Benjamin Herrenschmidt
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • lib/inflate.c (inflate_dynamic): Don't deref NULL upon failed malloc.

    Signed-off-by: Jim Meyering
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jim Meyering
     

28 Apr, 2008

2 commits

  • The following adds two more bitmap operators, bitmap_onto() and bitmap_fold(),
    with the usual cpumask and nodemask wrappers.

    The bitmap_onto() operator computes one bitmap relative to another. If the
    n-th bit in the origin mask is set, then the m-th bit of the destination mask
    will be set, where m is the position of the n-th set bit in the relative mask.

    The bitmap_fold() operator folds a bitmap into a second that has bit m set iff
    the input bitmap has some bit n set, where m == n mod sz, for the specified sz
    value.

    There are two substantive changes between this patch and its
    predecessor bitmap_relative:
    1) Renamed bitmap_relative() to be bitmap_onto().
    2) Added bitmap_fold().

    The essential motivation for bitmap_onto() is to provide a mechanism for
    converting a cpuset-relative CPU or Node mask to an absolute mask. Cpuset
    relative masks are written as if the current task were in a cpuset whose CPUs
    or Nodes were just the consecutive ones numbered 0..N-1, for some N. The
    bitmap_onto() operator is provided in anticipation of adding support for the
    first such cpuset relative mask, by the mbind() and set_mempolicy() system
    calls, using a planned flag of MPOL_F_RELATIVE_NODES. These bitmap operators
    (and their nodemask wrappers, in particular) will be used in code that
    converts the user specified cpuset relative memory policy to a specific system
    node numbered policy, given the current mems_allowed of the tasks cpuset.

    Such cpuset relative mempolicies will address two deficiencies
    of the existing interface between cpusets and mempolicies:
    1) A task cannot at present reliably establish a cpuset
    relative mempolicy because there is an essential race
    condition, in that the tasks cpuset may be changed in
    between the time the task can query its cpuset placement,
    and the time the task can issue the applicable mbind or
    set_memplicy system call.
    2) A task cannot at present establish what cpuset relative
    mempolicy it would like to have, if it is in a smaller
    cpuset than it might have mempolicy preferences for,
    because the existing interface only allows specifying
    mempolicies for nodes currently allowed by the cpuset.

    Cpuset relative mempolicies are useful for tasks that don't distinguish
    particularly between one CPU or Node and another, but only between how many of
    each are allowed, and the proper placement of threads and memory pages on the
    various CPUs and Nodes available.

    The motivation for the added bitmap_fold() can be seen in the following
    example.

    Let's say an application has specified some mempolicies that presume 16 memory
    nodes, including say a mempolicy that specified MPOL_F_RELATIVE_NODES (cpuset
    relative) nodes 12-15. Then lets say that application is crammed into a
    cpuset that only has 8 memory nodes, 0-7. If one just uses bitmap_onto(),
    this mempolicy, mapped to that cpuset, would ignore the requested relative
    nodes above 7, leaving it empty of nodes. That's not good; better to fold the
    higher nodes down, so that some nodes are included in the resulting mapped
    mempolicy. In this case, the mempolicy nodes 12-15 are taken modulo 8 (the
    weight of the mems_allowed of the confining cpuset), resulting in a mempolicy
    specifying nodes 4-7.

    Signed-off-by: Paul Jackson
    Signed-off-by: David Rientjes
    Cc: Christoph Lameter
    Cc: Andi Kleen
    Cc: Mel Gorman
    Cc: Lee Schermerhorn
    Cc:
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Jackson
     
  • Migrate flags must be set on slab creation as agreed upon when the antifrag
    logic was reviewed. Otherwise some slabs of a slabcache will end up in the
    unmovable and others in the reclaimable section depending on which flag was
    active when a new slab page was allocated.

    This likely slid in somehow when antifrag was merged. Remove it.

    The buffer_heads are always allocated with __GFP_RECLAIMABLE because the
    SLAB_RECLAIM_ACCOUNT option is set. The set_migrateflags() never had any
    effect there.

    Radix tree allocations are not directly reclaimable but they are allocated
    with __GFP_RECLAIMABLE set on each allocation. We now set
    SLAB_RECLAIM_ACCOUNT on radix tree slab creation making sure that radix
    tree slabs are consistently placed in the reclaimable section. Radix tree
    slabs will also be accounted as such.

    There is then no user left of set_migratepages. So remove it.

    Signed-off-by: Christoph Lameter
    Cc: Mel Gorman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

27 Apr, 2008

4 commits

  • Introduce GENERIC_FIND_FIRST_BIT and GENERIC_FIND_NEXT_BIT in
    lib/Kconfig, defaulting to off. An arch that wants to use the
    generic implementation now only has to use a select statement
    to include them.

    I added an always-y option (X86_CPU) to arch/x86/Kconfig.cpu
    and used that to select the generic search functions. This
    way ARCH=um SUBARCH=i386 automatically picks up the change
    too, and arch/um/Kconfig.i386 can therefore be simplified a
    bit. ARCH=um SUBARCH=x86_64 does things differently, but
    still compiles fine. It seems that a "def_bool y" always
    wins over a "def_bool n"?

    Signed-off-by: Alexander van Heukelum
    Signed-off-by: Ingo Molnar

    Alexander van Heukelum
     
  • Generic versions of __find_first_bit and __find_first_zero_bit
    are introduced as simplified versions of __find_next_bit and
    __find_next_zero_bit. Their compilation and use are guarded by
    a new config variable GENERIC_FIND_FIRST_BIT.

    The generic versions of find_first_bit and find_first_zero_bit
    are implemented in terms of the newly introduced __find_first_bit
    and __find_first_zero_bit.

    This patch does not remove the i386-specific implementation,
    but it does switch i386 to use the generic functions by setting
    GENERIC_FIND_FIRST_BIT=y for X86_32.

    Signed-off-by: Alexander van Heukelum
    Signed-off-by: Ingo Molnar

    Alexander van Heukelum
     
  • This moves an optimization for searching constant-sized small
    bitmaps form x86_64-specific to generic code.

    On an i386 defconfig (the x86#testing one), the size of vmlinux hardly
    changes with this applied. I have observed only four places where this
    optimization avoids a call into find_next_bit:

    In the functions return_unused_surplus_pages, alloc_fresh_huge_page,
    and adjust_pool_surplus, this patch avoids a call for a 1-bit bitmap.
    In __next_cpu a call is avoided for a 32-bit bitmap. That's it.

    On x86_64, 52 locations are optimized with a minimal increase in
    code size:

    Current #testing defconfig:
    146 x bsf, 27 x find_next_*bit
    text data bss dec hex filename
    5392637 846592 724424 6963653 6a41c5 vmlinux

    After removing the x86_64 specific optimization for find_next_*bit:
    94 x bsf, 79 x find_next_*bit
    text data bss dec hex filename
    5392358 846592 724424 6963374 6a40ae vmlinux

    After this patch (making the optimization generic):
    146 x bsf, 27 x find_next_*bit
    text data bss dec hex filename
    5392396 846592 724424 6963412 6a40d4 vmlinux

    [ tglx@linutronix.de: build fixes ]

    Signed-off-by: Ingo Molnar

    Alexander van Heukelum
     
  • The versions with inline assembly are in fact slower on the machines I
    tested them on (in userspace) (Athlon XP 2800+, p4-like Xeon 2.8GHz, AMD
    Opteron 270). The i386-version needed a fix similar to 06024f21 to avoid
    crashing the benchmark.

    Benchmark using: gcc -fomit-frame-pointer -Os. For each bitmap size
    1...512, for each possible bitmap with one bit set, for each possible
    offset: find the position of the first bit starting at offset. If you
    follow ;). Times include setup of the bitmap and checking of the
    results.

    Athlon Xeon Opteron 32/64bit
    x86-specific: 0m3.692s 0m2.820s 0m3.196s / 0m2.480s
    generic: 0m2.622s 0m1.662s 0m2.100s / 0m1.572s

    If the bitmap size is not a multiple of BITS_PER_LONG, and no set
    (cleared) bit is found, find_next_bit (find_next_zero_bit) returns a
    value outside of the range [0, size]. The generic version always returns
    exactly size. The generic version also uses unsigned long everywhere,
    while the x86 versions use a mishmash of int, unsigned (int), long and
    unsigned long.

    Using the generic version does give a slightly bigger kernel, though.

    defconfig: text data bss dec hex filename
    x86-specific: 4738555 481232 626688 5846475 5935cb vmlinux (32 bit)
    generic: 4738621 481232 626688 5846541 59360d vmlinux (32 bit)
    x86-specific: 5392395 846568 724424 6963387 6a40bb vmlinux (64 bit)
    generic: 5392458 846568 724424 6963450 6a40fa vmlinux (64 bit)

    Signed-off-by: Alexander van Heukelum
    Signed-off-by: Ingo Molnar

    Alexander van Heukelum
     

26 Apr, 2008

1 commit

  • Add option to enable -Wframe-larger-than= on gcc 4.4

    gcc mainline (upcoming 4.4) added a new -Wframe-larger-than=...
    option to warn at build time about too large stack frames. Add a config
    option to enable this warning, since this very useful for the kernel.

    I choose (somewhat arbitarily) 2048 as default warning threshold for 64bit
    and 1024 as default for 32bit architectures. With some research and
    fixing all the code for smaller values these defaults should be probably
    lowered.

    With the default allyesconfigs have some new warnings, but I think
    that is all code that should be just fixed.

    At some point (when gcc 4.4 is released and widely used) this should
    obsolete make checkstack

    Signed-off-by: Andi Kleen
    Signed-off-by: Sam Ravnborg

    Andi Kleen
     

24 Apr, 2008

1 commit

  • Changeset d9024df02ffe74d723d97d552f86de3b34beb8cc ("[LMB] Restructure
    allocation loops to avoid unsigned underflow") removed the alignment
    of the 'size' argument to call lmb_add_region() done by __lmb_alloc_base().

    In doing so it reintroduced the bug fixed by changeset
    eea89e13a9c61d3928223d2f9bf2295e22e0efb6 ("[LMB]: Fix bug in
    __lmb_alloc_base().").

    This puts it back.

    Signed-off-by: David S. Miller

    David S. Miller
     

22 Apr, 2008

4 commits

  • * 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (202 commits)
    [POWERPC] Fix compile breakage for 64-bit UP configs
    [POWERPC] Define copy_siginfo_from_user32
    [POWERPC] Add compat handler for PTRACE_GETSIGINFO
    [POWERPC] i2c: Fix build breakage introduced by OF helpers
    [POWERPC] Optimize fls64() on 64-bit processors
    [POWERPC] irqtrace support for 64-bit powerpc
    [POWERPC] Stacktrace support for lockdep
    [POWERPC] Move stackframe definitions to common header
    [POWERPC] Fix device-tree locking vs. interrupts
    [POWERPC] Make pci_bus_to_host()'s struct pci_bus * argument const
    [POWERPC] Remove unused __max_memory variable
    [POWERPC] Simplify xics direct/lpar irq_host setup
    [POWERPC] Use pseries_setup_i8259_cascade() in pseries_mpic_init_IRQ()
    [POWERPC] Turn xics_setup_8259_cascade() into a generic pseries_setup_i8259_cascade()
    [POWERPC] Move xics_setup_8259_cascade() into platforms/pseries/setup.c
    [POWERPC] Use asm-generic/bitops/find.h in bitops.h
    [POWERPC] 83xx: mpc8315 - fix USB UTMI Host setup
    [POWERPC] 85xx: Fix the size of qe muram for MPC8568E
    [POWERPC] 86xx: mpc86xx_hpcn - Temporarily accept old dts node identifier.
    [POWERPC] 86xx: mark functions static, other minor cleanups
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: (36 commits)
    SCSI: convert struct class_device to struct device
    DRM: remove unused dev_class
    IB: rename "dev" to "srp_dev" in srp_host structure
    IB: convert struct class_device to struct device
    memstick: convert struct class_device to struct device
    driver core: replace remaining __FUNCTION__ occurrences
    sysfs: refill attribute buffer when reading from offset 0
    PM: Remove destroy_suspended_device()
    Firmware: add iSCSI iBFT Support
    PM: Remove legacy PM (fix)
    Kobject: Replace list_for_each() with list_for_each_entry().
    SYSFS: Explicitly include required header file slab.h.
    Driver core: make device_is_registered() work for class devices
    PM: Convert wakeup flag accessors to inline functions
    PM: Make wakeup flags available whenever CONFIG_PM is set
    PM: Fix misuse of wakeup flag accessors in serial core
    Driver core: Call device_pm_add() after bus_add_device() in device_add()
    PM: Handle device registrations during suspend/resume
    block: send disk "change" event for rescan_partitions()
    sysdev: detect multiple driver registrations
    ...

    Fixed trivial conflict in include/linux/memory.h due to semaphore header
    file change (made irrelevant by the change to mutex).

    Linus Torvalds
     
  • * 'semaphore' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc:
    Deprecate the asm/semaphore.h files in feature-removal-schedule.
    Convert asm/semaphore.h users to linux/semaphore.h
    security: Remove unnecessary inclusions of asm/semaphore.h
    lib: Remove unnecessary inclusions of asm/semaphore.h
    kernel: Remove unnecessary inclusions of asm/semaphore.h
    include: Remove unnecessary inclusions of asm/semaphore.h
    fs: Remove unnecessary inclusions of asm/semaphore.h
    drivers: Remove unnecessary inclusions of asm/semaphore.h
    net: Remove unnecessary inclusions of asm/semaphore.h
    arch: Remove unnecessary inclusions of asm/semaphore.h

    Linus Torvalds
     
  • …linux-2.6-sched-devel

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-sched-devel: (62 commits)
    sched: build fix
    sched: better rt-group documentation
    sched: features fix
    sched: /debug/sched_features
    sched: add SCHED_FEAT_DEADLINE
    sched: debug: show a weight tree
    sched: fair: weight calculations
    sched: fair-group: de-couple load-balancing from the rb-trees
    sched: fair-group scheduling vs latency
    sched: rt-group: optimize dequeue_rt_stack
    sched: debug: add some debug code to handle the full hierarchy
    sched: fair-group: SMP-nice for group scheduling
    sched, cpuset: customize sched domains, core
    sched, cpuset: customize sched domains, docs
    sched: prepatory code movement
    sched: rt: multi level group constraints
    sched: task_group hierarchy
    sched: fix the task_group hierarchy for UID grouping
    sched: allow the group scheduler to have multiple levels
    sched: mix tasks and groups
    ...

    Linus Torvalds
     

20 Apr, 2008

3 commits


19 Apr, 2008

6 commits

  • There have been a few oopses caused by 'struct file's with NULL f_vfsmnts.
    There was also a set of potentially missed mnt_want_write()s from
    dentry_open() calls.

    This patch provides a very simple debugging framework to catch these kinds of
    bugs. It will WARN_ON() them, but should stop us from having any oopses or
    mnt_writer count imbalances.

    I'm quite convinced that this is a good thing because it found bugs in the
    stuff I was working on as soon as I wrote it.

    [hch: made it conditional on a debug option.
    But it's still a little bit too ugly]

    [hch: merged forced remount r/o fix from Dave and akpm's fix for the fix]

    Signed-off-by: Dave Hansen
    Acked-by: Al Viro
    Signed-off-by: Christoph Hellwig
    Signed-off-by: Andrew Morton
    Signed-off-by: Al Viro

    Dave Hansen
     
  • Signed-off-by: Matthew Wilcox

    Matthew Wilcox
     
  • reed_solomon doesn't use any of the functionality promised by
    asm/semaphore.h.

    Signed-off-by: Matthew Wilcox

    Matthew Wilcox
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6.26: (1090 commits)
    [NET]: Fix and allocate less memory for ->priv'less netdevices
    [IPV6]: Fix dangling references on error in fib6_add().
    [NETLABEL]: Fix NULL deref in netlbl_unlabel_staticlist_gen() if ifindex not found
    [PKT_SCHED]: Fix datalen check in tcf_simp_init().
    [INET]: Uninline the __inet_inherit_port call.
    [INET]: Drop the inet_inherit_port() call.
    SCTP: Initialize partial_bytes_acked to 0, when all of the data is acked.
    [netdrvr] forcedeth: internal simplifications; changelog removal
    phylib: factor out get_phy_id from within get_phy_device
    PHY: add BCM5464 support to broadcom PHY driver
    cxgb3: Fix __must_check warning with dev_dbg.
    tc35815: Statistics cleanup
    natsemi: fix MMIO for PPC 44x platforms
    [TIPC]: Cleanup of TIPC reference table code
    [TIPC]: Optimized initialization of TIPC reference table
    [TIPC]: Remove inlining of reference table locking routines
    e1000: convert uint16_t style integers to u16
    ixgb: convert uint16_t style integers to u16
    sb1000.c: make const arrays static
    sb1000.c: stop inlining largish static functions
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (137 commits)
    [SCSI] iscsi: bidi support for iscsi_tcp
    [SCSI] iscsi: bidi support at the generic libiscsi level
    [SCSI] iscsi: extended cdb support
    [SCSI] zfcp: Fix error handling for blocked unit for send FCP command
    [SCSI] zfcp: Remove zfcp_erp_wait from slave destory handler to fix deadlock
    [SCSI] zfcp: fix 31 bit compile warnings
    [SCSI] bsg: no need to set BSG_F_BLOCK bit in bsg_complete_all_commands
    [SCSI] bsg: remove minor in struct bsg_device
    [SCSI] bsg: use better helper list functions
    [SCSI] bsg: replace kobject_get with blk_get_queue
    [SCSI] bsg: takes a ref to struct device in fops->open
    [SCSI] qla1280: remove version check
    [SCSI] libsas: fix endianness bug in sas_ata
    [SCSI] zfcp: fix compiler warning caused by poking inside new semaphore (linux-next)
    [SCSI] aacraid: Do not describe check_reset parameter with its value
    [SCSI] aacraid: Fix down_interruptible() to check the return value
    [SCSI] sun3_scsi_vme: add MODULE_LICENSE
    [SCSI] st: rename flush_write_buffer()
    [SCSI] tgt: use KMEM_CACHE macro
    [SCSI] initio: fix big endian problems for auto request sense
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: (43 commits)
    firewire: cleanups
    firewire: fix synchronization of gap counts
    firewire: wait until PHY configuration packet was transmitted (fix bus reset loop)
    firewire: remove unused struct member
    firewire: use bitwise and to get reg in handle_registers
    firewire: replace more hex values with defined csr constants
    firewire: reread config ROM when device reset the bus
    firewire: replace static ROM cache by allocated cache
    firewire: fw-ohci: work around generation bug in TI controllers (fix AV/C and more)
    firewire: fw-ohci: extend logging of bus generations and node ID
    firewire: fw-ohci: conditionally log busReset interrupts
    firewire: fw-ohci: don't append to AT context when it's not active
    firewire: fw-ohci: log regAccessFail events
    firewire: fw-ohci: make sure HCControl register LPS bit is set
    firewire: fw-ohci: missing PPC PMac feature calls in failure path
    firewire: fw-ohci: untangle a mixed unsigned/signed expression
    firewire: debug interrupt events
    firewire: fw-ohci: catch self_id_count == 0
    firewire: fw-ohci: add self ID error check
    firewire: fw-ohci: refactor probe, remove, suspend, resume
    ...

    Linus Torvalds
     

18 Apr, 2008

7 commits

  • This way firewire-ohci can be used for remote debugging like ohci1394.
    Version with amendment from Fri, 11 Apr 2008 00:08:08 +0200.

    Signed-off-by: Stefan Richter
    Acked-by: Bernhard Kaindl

    Stefan Richter
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/mingo/linux-2.6-kgdb:
    kgdb: always use icache flush for sw breakpoints
    kgdb: fix SMP NMI kgdb_handle_exception exit race
    kgdb: documentation fixes
    kgdb: allow static kgdbts boot configuration
    kgdb: add documentation
    kgdb: Kconfig fix
    kgdb: add kgdb internal test suite
    kgdb: fix several kgdb regressions
    kgdb: kgdboc pl011 I/O module
    kgdb: fix optional arch functions and probe_kernel_*
    kgdb: add x86 HW breakpoints
    kgdb: print breakpoint removed on exception
    kgdb: clocksource watchdog
    kgdb: fix NMI hangs
    kgdb: fix kgdboc dynamic module configuration
    kgdb: document parameters
    x86: kgdb support
    consoles: polling support, kgdboc
    kgdb: core
    uaccess: add probe_kernel_write()

    Linus Torvalds
     
  • * 'semaphore' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc:
    Remove DEBUG_SEMAPHORE from Kconfig
    Improve semaphore documentation
    Simplify semaphore implementation
    Add down_timeout and change ACPI to use it
    Introduce down_killable()
    Generic semaphore implementation
    Add semaphore.h to kernel_lock.c
    Fix quota.h includes

    Linus Torvalds
     
  • David S. Miller
     
  • This patch adds in the ability to compile the kgdb internal test
    string into the kernel so as to run the tests at boot without changing
    the kernel boot arguments. This patch also changes all the error
    paths to invoke WARN_ON(1) which will emit the line number of the file
    and dump the kernel stack when an error occurs.

    You can disable the tests in a kernel that is built this way
    using "kgdbts="

    Signed-off-by: Jason Wessel
    Signed-off-by: Ingo Molnar

    Jason Wessel
     
  • This patch adds regression tests for testing the kgdb core and arch
    specific implementation.

    The kgdb test suite is designed to be built into the kernel and not as
    a module because it uses a number of low level kernel and kgdb
    primitives which should not be exported externally.

    The kgdb test suite is designed as a KGDB I/O module which
    simulates the communications that a debugger would have with kgdb.
    The tests are broken up in to a line by line and referenced here as
    a "get" which is kgdb requesting input and "put" which is kgdb
    sending a response.

    The kgdb suite can be invoked from the kernel command line
    arguments system or executed dynamically at run time. The test
    suite uses the variable "kgdbts" to obtain the information about
    which tests to run and to configure the verbosity level. The
    following are the various characters you can use with the kgdbts=
    line:

    When using the "kgdbts=" you only choose one of the following core
    test types:
    A = Run all the core tests silently
    V1 = Run all the core tests with minimal output
    V2 = Run all the core tests in debug mode

    You can also specify optional tests:
    N## = Go to sleep with interrupts of for ## seconds
    to test the HW NMI watchdog
    F## = Break at do_fork for ## iterations
    S## = Break at sys_open for ## iterations

    NOTE: that the do_fork and sys_open tests are mutually exclusive.

    To invoke the kgdb test suite from boot you use a kernel start
    argument as follows:
    kgdbts=V1 kgdbwait
    Or if you wanted to perform the NMI test for 6 seconds and do_fork
    test for 100 forks, you could use:
    kgdbts=V1N6F100 kgdbwait

    The test suite can also be invoked at run time with:
    echo kgdbts=V1N6F100 > /sys/module/kgdbts/parameters/kgdbts
    Or as another example:
    echo kgdbts=V2 > /sys/module/kgdbts/parameters/kgdbts

    When developing a new kgdb arch specific implementation or
    using these tests for the purpose of regression testing,
    several invocations are required.

    1) Boot with the test suite enabled by using the kernel arguments
    "kgdbts=V1F100 kgdbwait"
    ## If kgdb arch specific implementation has NMI use
    "kgdbts=V1N6F100

    2) After the system boot run the basic test.
    echo kgdbts=V1 > /sys/module/kgdbts/parameters/kgdbts

    3) Run the concurrency tests. It is best to use n+1
    while loops where n is the number of cpus you have
    in your system. The example below uses only two
    loops.

    ## This tests break points on sys_open
    while [ 1 ] ; do find / > /dev/null 2>&1 ; done &
    while [ 1 ] ; do find / > /dev/null 2>&1 ; done &
    echo kgdbts=V1S10000 > /sys/module/kgdbts/parameters/kgdbts
    fg # and hit control-c
    fg # and hit control-c
    ## This tests break points on do_fork
    while [ 1 ] ; do date > /dev/null ; done &
    while [ 1 ] ; do date > /dev/null ; done &
    echo kgdbts=V1F1000 > /sys/module/kgdbts/parameters/kgdbts
    fg # and hit control-c

    Signed-off-by: Jason Wessel
    Signed-off-by: Ingo Molnar

    Jason Wessel
     
  • kgdb core code. Handles the protocol and the arch details.

    [ mingo@elte.hu: heavily modified, simplified and cleaned up. ]
    [ xemul@openvz.org: use find_task_by_pid_ns ]

    Signed-off-by: Jason Wessel
    Signed-off-by: Ingo Molnar
    Signed-off-by: Jan Kiszka
    Reviewed-by: Thomas Gleixner

    Jason Wessel
     

17 Apr, 2008

3 commits

  • Alpha and FRV mutexes had an option to print lots of debugging messages
    in their semaphore implementation. This feature has not been carried
    over to the generic semaphores, so remove the stale Kconfig option.

    Signed-off-by: Matthew Wilcox

    Matthew Wilcox
     
  • Semaphores are no longer performance-critical, so a generic C
    implementation is better for maintainability, debuggability and
    extensibility. Thanks to Peter Zijlstra for fixing the lockdep
    warning. Thanks to Harvey Harrison for pointing out that the
    unlikely() was unnecessary.

    Signed-off-by: Matthew Wilcox
    Acked-by: Ingo Molnar

    Matthew Wilcox
     
  • kernel_lock.c uses DECLARE_MUTEX, up() and down() without explicitly
    including asm/semaphore.h. This is fragile and leaves it vulnerable
    to breakage during header reorganisations.

    Signed-off-by: Matthew Wilcox

    Matthew Wilcox
     

15 Apr, 2008

3 commits

  • There is a potential bug in __lmb_alloc_base where we subtract `size'
    from the base address of a reserved region without checking whether
    the subtraction could wrap around and produce a very large unsigned
    value. In fact it probably isn't possible to hit the bug in practice
    since it would only occur in the situation where we can't satisfy the
    allocation request and there is a reserved region starting at 0.

    This fixes the potential bug by breaking out of the loop when we get
    to the point where the base of the reserved region is less than the
    size requested. This also restructures the loop to be a bit easier to
    follow.

    The same logic got copied into lmb_alloc_nid_unreserved, so this makes
    a similar change there. Here the bug is more likely to be hit because
    the outer loop (in lmb_alloc_nid) goes through the memory regions in
    increasing order rather than decreasing order as __lmb_alloc_base
    does, and we are therefore more likely to hit the case where we are
    testing against a reserved region with a base address of 0.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • This makes no semantic changes. It fixes the whitespace and formatting
    a bit, gets rid of a local DBG macro and uses the equivalent pr_debug
    instead, and restructures one while loop that had a function call and
    assignment in the condition to be a bit more readable. Some comments
    about functions being called with relocation disabled were also removed
    as they would just be confusing to most readers now that the code is
    in lib/.

    Signed-off-by: Paul Mackerras

    Paul Mackerras
     
  • A variant of lmb_alloc() that tries to allocate memory on a specified
    NUMA node 'nid' but falls back to normal lmb_alloc() if that fails.

    The caller provides a 'nid_range' function pointer which assists the
    allocator. It is given args 'start', 'end', and pointer to integer
    'this_nid'.

    It places at 'this_nid' the NUMA node id that corresponds to 'start',
    and returns the end address within 'start' to 'end' at which memory
    assosciated with 'nid' ends.

    This callback allows a platform to use lmb_alloc_nid() in just
    about any context, even ones in which early_pfn_to_nid() might
    not be working yet.

    This function will be used by the NUMA setup code on sparc64, and also
    it can be used by powerpc, replacing it's hand crafted
    "careful_allocation()" function in arch/powerpc/mm/numa.c

    If x86 ever converts it's NUMA support over to using the LMB helpers,
    it can use this too as it has something entirely similar.

    Signed-off-by: David S. Miller
    Signed-off-by: Paul Mackerras

    David S. Miller
     

14 Apr, 2008

1 commit

  • count_partial() is used by both slabinfo and the sysfs proc support. Move
    the function directly before the beginning of the sysfs code so that it can
    be easily found. Rework the preprocessor conditional to take into account
    that slub sysfs support depends on CONFIG_SYSFS *and* CONFIG_SLUB_DEBUG.

    Make CONFIG_SLUB_STATS depend on CONFIG_SLUB_DEBUG and CONFIG_SYSFS. There
    is no point of keeping statistics if no one can restrive them.

    Signed-off-by: Christoph Lameter
    Signed-off-by: Pekka Enberg

    Christoph Lameter