11 Aug, 2010

2 commits

  • * 'for-linus' of git://neil.brown.name/md: (24 commits)
    md: clean up do_md_stop
    md: fix another deadlock with removing sysfs attributes.
    md: move revalidate_disk() back outside open_mutex
    md/raid10: fix deadlock with unaligned read during resync
    md/bitmap: separate out loading a bitmap from initialising the structures.
    md/bitmap: prepare for storing write-intent-bitmap via dm-dirty-log.
    md/bitmap: optimise scanning of empty bitmaps.
    md/bitmap: clean up plugging calls.
    md/bitmap: reduce dependence on sysfs.
    md/bitmap: white space clean up and similar.
    md/raid5: export raid5 unplugging interface.
    md/plug: optionally use plugger to unplug an array during resync/recovery.
    md/raid5: add simple plugging infrastructure.
    md/raid5: export is_congested test
    raid5: Don't set read-ahead when there is no queue
    md: add support for raising dm events.
    md: export various start/stop interfaces
    md: split out md_rdev_init
    md: be more careful setting MD_CHANGE_CLEAN
    md/raid5: ensure we create a unique name for kmem_cache when mddev has no gendisk
    ...

    Linus Torvalds
     
  • * 'kmemleak' of git://git.kernel.org/pub/scm/linux/kernel/git/cmarinas/linux-2.6-cm:
    kmemleak: Fix typo in the comment
    lib/scatterlist: Hook sg_kmalloc into kmemleak (v2)
    kmemleak: Add DocBook style comments to kmemleak.c
    kmemleak: Introduce a default off mode for kmemleak
    kmemleak: Show more information for objects found by alias

    Linus Torvalds
     

10 Aug, 2010

11 commits

  • More code can be pushed from rwsem_down_read_failed and
    rwsem_down_write_failed into rwsem_down_failed_common.

    Following change adding down_read_critical infrastructure support also
    enjoys having flags available in a register rather than having to fish it
    out in the struct rwsem_waiter...

    Signed-off-by: Michel Lespinasse
    Acked-by: David Howells
    Cc: Mike Waychison
    Cc: Suleiman Souhlal
    Cc: Ying Han
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • This change addresses the following situation:

    - Thread A acquires the rwsem for read
    - Thread B tries to acquire the rwsem for write, notices there is already
    an active owner for the rwsem.
    - Thread C tries to acquire the rwsem for read, notices that thread B already
    tried to acquire it.
    - Thread C grabs the spinlock and queues itself on the wait queue.
    - Thread B grabs the spinlock and queues itself behind C. At this point A is
    the only remaining active owner on the rwsem.

    In this situation thread B could notice that it was the last active writer
    on the rwsem, and decide to wake C to let it proceed in parallel with A
    since they both only want the rwsem for read.

    Signed-off-by: Michel Lespinasse
    Acked-by: David Howells
    Cc: Mike Waychison
    Cc: Suleiman Souhlal
    Cc: Ying Han
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Previously each waiting thread added a bias of RWSEM_WAITING_BIAS. With
    this change, the bias is added only once to indicate that the wait list is
    non-empty.

    This has a few nice properties which will be used in following changes:
    - when the spinlock is held and the waiter list is known to be non-empty,
    count < RWSEM_WAITING_BIAS there is an active writer on that sem
    - count == RWSEM_WAITING_BIAS there are waiting threads and no
    active readers/writers on that sem

    Signed-off-by: Michel Lespinasse
    Acked-by: David Howells
    Cc: Mike Waychison
    Cc: Suleiman Souhlal
    Cc: Ying Han
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • In __rwsem_do_wake(), we can skip the active count check unless we come
    there from up_xxxx(). Also when checking the active count, it is not
    actually necessary to increment it; this allows us to get rid of the read
    side undo code and simplify the calculation of the final rwsem count
    adjustment once we've counted the reader threads to wake.

    The basic observation is the following. When there are waiter threads on
    a rwsem and the spinlock is held, other threads can only increment the
    active count by trying to grab the rwsem in down_xxxx(). However
    down_xxxx() will notice there are waiter threads and take the down_failed
    path, blocking to acquire the spinlock on the way there. Therefore, a
    thread observing an active count of zero with waiters queued and the
    spinlock held, is protected against other threads acquiring the rwsem
    until it wakes the last waiter or releases the spinlock.

    Signed-off-by: Michel Lespinasse
    Acked-by: David Howells
    Cc: Mike Waychison
    Cc: Suleiman Souhlal
    Cc: Ying Han
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • This is in preparation for later changes in the series.

    In __rwsem_do_wake(), the first queued waiter is checked first in order to
    determine whether it's a writer or a reader. The code paths diverge at
    this point. The code that checks and increments the rwsem active count is
    duplicated on both sides - the point is that later changes in the series
    will be able to independently modify both sides.

    Signed-off-by: Michel Lespinasse
    Acked-by: David Howells
    Cc: Mike Waychison
    Cc: Suleiman Souhlal
    Cc: Ying Han
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: "H. Peter Anvin"
    Cc: Peter Zijlstra
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michel Lespinasse
     
  • Getting and putting arrays of pointers with flex arrays is a PITA. You
    have to remember to pass &ptr to the _put and you have to do weird and
    wacky casting to get the ptr back from the _get. Add two functions
    flex_array_get_ptr() and flex_array_put_ptr() to handle all of the magic.

    [akpm@linux-foundation.org: simplification suggested by Joe]
    Signed-off-by: Eric Paris
    Cc: David Rientjes
    Cc: Dave Hansen
    Cc: Joe Perches
    Cc: James Morris
    Cc: Joe Perches
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Paris
     
  • The strict_strtoul() and strict_strtoull() functions used strlen() to
    check argument's length in a situation where it wasn't strictly necessary

    Signed-off-by: Michal Nazarewicz
    Cc: "Yi Yang"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Nazarewicz
     
  • Use the magic LIST_POISON* values to detect an incorrect use of list_del
    on a deleted entry. This DEBUG_LIST specific warning is easier to
    understand than the generic Oops message caused by LIST_POISON
    dereference.

    Signed-off-by: Baruch Siach
    Cc: Dave Jones
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Baruch Siach
     
  • A profile of a network benchmark showed iommu_num_pages rather high up:

    0.52% iommu_num_pages

    Looking at the profile, an integer divide is taking almost all of the time:

    %
    : c000000000376ea4 :
    1.93 : c000000000376ea4: fb e1 ff f8 std r31,-8(r1)
    0.00 : c000000000376ea8: f8 21 ff c1 stdu r1,-64(r1)
    0.00 : c000000000376eac: 7c 3f 0b 78 mr r31,r1
    3.86 : c000000000376eb0: 38 84 ff ff addi r4,r4,-1
    0.00 : c000000000376eb4: 38 05 ff ff addi r0,r5,-1
    0.00 : c000000000376eb8: 7c 84 2a 14 add r4,r4,r5
    46.95 : c000000000376ebc: 7c 00 18 38 and r0,r0,r3
    45.66 : c000000000376ec0: 7c 84 02 14 add r4,r4,r0
    0.00 : c000000000376ec4: 7c 64 2b 92 divdu r3,r4,r5
    0.00 : c000000000376ec8: 38 3f 00 40 addi r1,r31,64
    0.00 : c000000000376ecc: eb e1 ff f8 ld r31,-8(r1)
    1.61 : c000000000376ed0: 4e 80 00 20 blr

    Since every caller of iommu_num_pages passes in a constant power of two
    we can inline this such that the divide is replaced by a shift. The
    entire function is only a few instructions once optimised, so it is
    a good candidate for inlining overall.

    Signed-off-by: Anton Blanchard
    Cc: Akinobu Mita
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Anton Blanchard
     
  • Implement function for setting one tag if another tag is set for each item
    in given range.

    Signed-off-by: Jan Kara
    Cc: Dave Chinner
    Cc: Nick Piggin
    Cc: Chris Mason
    Cc: Theodore Ts'o
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Kara
     
  • Add percpu_counter_compare that allows for a quick but accurate comparison
    of percpu_counter with a given value.

    A rough count is provided by the count field in percpu_counter structure,
    without accounting for the other values stored in individual cpu counters.

    The actual count is a sum of count and the cpu counters. However, count
    field is never different from the actual value by a factor of
    batch*num_online_cpu. We do not need to get actual count for comparison
    if count is different from the given value by this factor and allows for
    quick comparison without summing up all the per cpu counters.

    Signed-off-by: Tim Chen
    Cc: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Tim Chen
     

09 Aug, 2010

1 commit


07 Aug, 2010

4 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core-2.6: (28 commits)
    driver core: device_rename's new_name can be const
    sysfs: Remove owner field from sysfs struct attribute
    powerpc/pci: Remove owner field from attribute initialization in PCI bridge init
    regulator: Remove owner field from attribute initialization in regulator core driver
    leds: Remove owner field from attribute initialization in bd2802 driver
    scsi: Remove owner field from attribute initialization in ARCMSR driver
    scsi: Remove owner field from attribute initialization in LPFC driver
    cgroupfs: create /sys/fs/cgroup to mount cgroupfs on
    Driver core: Add BUS_NOTIFY_BIND_DRIVER
    driver core: fix memory leak on one error path in bus_register()
    debugfs: no longer needs to depend on SYSFS
    sysfs: Fix one more signature discrepancy between sysfs implementation and docs.
    sysfs: fix discrepancies between implementation and documentation
    dcdbas: remove a redundant smi_data_buf_free in dcdbas_exit
    dmi-id: fix a memory leak in dmi_id_init error path
    sysfs: sysfs_chmod_file's attr can be const
    firmware: Update hotplug script
    Driver core: move platform device creation helpers to .init.text (if MODULE=n)
    Driver core: reduce duplicated code for platform_device creation
    Driver core: use kmemdup in platform_device_add_resources
    ...

    Linus Torvalds
     
  • * 'x86-mm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Ioremap: fix wrong physical address handling in PAT code
    x86, tlb: Clean up and correct used type
    x86, iomap: Fix wrong page aligned size calculation in ioremapping code
    x86, mm: Create symbolic index into address_markers array
    x86, ioremap: Fix normal ram range check
    x86, ioremap: Fix incorrect physical address handling in PAE mode
    x86-64, mm: Initialize VDSO earlier on 64 bits
    x86, kmmio/mmiotrace: Fix double free of kmmio_fault_pages

    Linus Torvalds
     
  • …git/tip/linux-2.6-tip

    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (162 commits)
    tracing/kprobes: unregister_trace_probe needs to be called under mutex
    perf: expose event__process function
    perf events: Fix mmap offset determination
    perf, powerpc: fsl_emb: Restore setting perf_sample_data.period
    perf, powerpc: Convert the FSL driver to use local64_t
    perf tools: Don't keep unreferenced maps when unmaps are detected
    perf session: Invalidate last_match when removing threads from rb_tree
    perf session: Free the ref_reloc_sym memory at the right place
    x86,mmiotrace: Add support for tracing STOS instruction
    perf, sched migration: Librarize task states and event headers helpers
    perf, sched migration: Librarize the GUI class
    perf, sched migration: Make the GUI class client agnostic
    perf, sched migration: Make it vertically scrollable
    perf, sched migration: Parameterize cpu height and spacing
    perf, sched migration: Fix key bindings
    perf, sched migration: Ignore unhandled task states
    perf, sched migration: Handle ignored migrate out events
    perf: New migration tool overview
    tracing: Drop cpparg() macro
    perf: Use tracepoint_synchronize_unregister() to flush any pending tracepoint call
    ...

    Fix up trivial conflicts in Makefile and drivers/cpufreq/cpufreq.c

    Linus Torvalds
     
  • * 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    Revert "net: Make accesses to ->br_port safe for sparse RCU"
    mce: convert to rcu_dereference_index_check()
    net: Make accesses to ->br_port safe for sparse RCU
    vfs: add fs.h to define struct file
    lockdep: Add an in_workqueue_context() lockdep-based test function
    rcu: add __rcu API for later sparse checking
    rcu: add an rcu_dereference_index_check()
    tree/tiny rcu: Add debug RCU head objects
    mm: remove all rcu head initializations
    fs: remove all rcu head initializations, except on_stack initializations
    powerpc: remove all rcu head initializations

    Linus Torvalds
     

06 Aug, 2010

2 commits

  • * 'kbuild' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild-2.6:
    modpost: support objects with more than 64k sections
    trivial: fix a typo in a filename
    frv: clean up arch/frv/Makefile
    kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line
    kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line
    Kbuild: Add option to set -femit-struct-debug-baseonly
    Makefile: "make kernelrelease" should show the correct full kernel version
    Makefile.build: make KBUILD_SYMTYPES work again

    Linus Torvalds
     
  • debugfs no longer uses 'kernel_subsys' (which is gone), and other
    kernel/ksysfs.c code is always built, so DEBUG_FS does not need
    to depend on SYSFS.

    Fixes this kconfig warning:

    warning: (TREE_RCU_TRACE || AMD_IOMMU_STATS && AMD_IOMMU || MTD_UBI_DEBUG && MTD && SYSFS && MTD_UBI || UBIFS_FS_DEBUG && MISC_FILESYSTEMS && UBIFS_FS || DEBUG_KMEMLEAK && DEBUG_KERNEL && EXPERIMENTAL && !MEMORY_HOTPLUG && (X86 || ARM || PPC || S390 || SPARC64 || SUPERH || MICROBLAZE) && SYSFS || TRACING || X86_PTDUMP && DEBUG_KERNEL || BLK_DEV_IO_TRACE && TRACING_SUPPORT && FTRACE && SYSFS && BLOCK) selects DEBUG_FS which has unmet direct dependencies (SYSFS)

    Signed-off-by: Randy Dunlap
    Signed-off-by: Greg Kroah-Hartman

    Randy Dunlap
     

05 Aug, 2010

5 commits

  • * 'for-linus' of git://git.monstr.eu/linux-2.6-microblaze: (49 commits)
    microblaze: Add KGDB support
    microblaze: Support brki rX, 0x18 for user application debugging
    microblaze: Remove nop after MSRCLR/SET, MTS, MFS instructions
    microblaze: Simplify syscall rutine
    microblaze: Move PT_MODE saving to delay slot
    microblaze: Fix _interrupt function
    microblaze: Fix _user_exception function
    microblaze: Put together addik instructions
    microblaze: Use delay slot in syscall macros
    microblaze: Save kernel mode in delay slot
    microblaze: Do not mix register saving and mode setting
    microblaze: Move SAVE_STATE upward
    microblaze: entry.S: Macro optimization
    microblaze: Optimize hw exception rutine
    microblaze: Implement clear_ums macro and fix SAVE_STATE macro
    microblaze: Remove additional setup for kernel_mode
    microblaze: Optimize SAVE_STATE macro
    microblaze: Remove additional loading
    microblaze: Completely remove working with R11 register
    microblaze: Do not setup BIP in _debug_exception
    ...

    Linus Torvalds
     
  • Conflicts:
    kernel/Makefile

    Merge reason: Add the now complete topic, fix the conflict.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (48 commits)
    Documentation: update broken web addresses.
    fix comment typo "choosed" -> "chosen"
    hostap:hostap_hw.c Fix typo in comment
    Fix spelling contorller -> controller in comments
    Kconfig.debug: FAIL_IO_TIMEOUT: typo Faul -> Fault
    fs/Kconfig: Fix typo Userpace -> Userspace
    Removing dead MACH_U300_BS26
    drivers/infiniband: Remove unnecessary casts of private_data
    fs/ocfs2: Remove unnecessary casts of private_data
    libfc: use ARRAY_SIZE
    scsi: bfa: use ARRAY_SIZE
    drm: i915: use ARRAY_SIZE
    drm: drm_edid: use ARRAY_SIZE
    synclink: use ARRAY_SIZE
    block: cciss: use ARRAY_SIZE
    comment typo fixes: charater => character
    fix comment typos concerning "challenge"
    arm: plat-spear: fix typo in kerneldoc
    reiserfs: typo comment fix
    update email address
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1443 commits)
    phy/marvell: add 88ec048 support
    igb: Program MDICNFG register prior to PHY init
    e1000e: correct MAC-PHY interconnect register offset for 82579
    hso: Add new product ID
    can: Add driver for esd CAN-USB/2 device
    l2tp: fix export of header file for userspace
    can-raw: Fix skb_orphan_try handling
    Revert "net: remove zap_completion_queue"
    net: cleanup inclusion
    phy/marvell: add 88e1121 interface mode support
    u32: negative offset fix
    net: Fix a typo from "dev" to "ndev"
    igb: Use irq_synchronize per vector when using MSI-X
    ixgbevf: fix null pointer dereference due to filter being set for VLAN 0
    e1000e: Fix irq_synchronize in MSI-X case
    e1000e: register pm_qos request on hardware activation
    ip_fragment: fix subtracting PPPOE_SES_HLEN from mtu twice
    net: Add getsockopt support for TCP thin-streams
    cxgb4: update driver version
    cxgb4: add new PCI IDs
    ...

    Manually fix up conflicts in:
    - drivers/net/e1000e/netdev.c: due to pm_qos registration
    infrastructure changes
    - drivers/net/phy/marvell.c: conflict between adding 88ec048 support
    and cleaning up the IDs
    - drivers/net/wireless/ipw2x00/ipw2100.c: trivial ipw2100_pm_qos_req
    conflict (registration change vs marking it static)

    Linus Torvalds
     
  • …/git/konrad/swiotlb-2.6

    * 'stable/swiotlb-0.8.3' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/swiotlb-2.6:
    swiotlb: Make swiotlb bookkeeping functions visible in the header file.
    swiotlb: search and replace "int dir" with "enum dma_data_direction dir"
    swiotlb: Make internal bookkeeping functions have 'swiotlb_tbl' prefix.
    swiotlb: add the swiotlb initialization function with iotlb memory
    swiotlb: add swiotlb_tbl_map_single library function

    Linus Torvalds
     

04 Aug, 2010

3 commits


29 Jul, 2010

1 commit

  • kmemleak ignores page_alloc() and so believes the final sub-page
    allocation using the plain kmalloc is decoupled and lost. This leads to
    lots of false-positives with code that uses scatterlists.

    The options seem to be either to tell kmemleak that the kmalloc is not
    leaked or to notify kmemleak of the page allocations. The danger of the
    first approach is that we may hide a real leak, so choose the latter
    approach (of which I am not sure of the downsides).

    v2: Added comments on the suggestion of Catalin.

    Signed-off-by: Chris Wilson
    Cc: Tejun Heo
    Cc: Jens Axboe
    Signed-off-by: Catalin Marinas

    Chris Wilson
     

27 Jul, 2010

1 commit


21 Jul, 2010

1 commit


19 Jul, 2010

1 commit

  • Introduce a new DEBUG_KMEMLEAK_DEFAULT_OFF config parameter that allows
    kmemleak to be disabled by default, but enabled on the command line
    via: kmemleak=on. Although a reboot is required to turn it on, its still
    useful to not require a re-compile.

    Signed-off-by: Jason Baron
    Signed-off-by: Catalin Marinas
    Acked-by: Pekka Enberg

    Jason Baron
     

14 Jul, 2010

2 commits

  • Newer gcc has a -femit-struct-debug-baseonly option that dramatically
    reduces the size of object files with debug info. What it does
    is to only emit type information for structures when the structures
    are defined in the same file or in a header file.

    This means the type information for most headers are not included.
    This is not good when the type information is actually
    needed (e.g. with kgdb or systemtap)

    But often kernel hackers only care about line numbers and don't
    need all the type information anyways. In this case setting
    the option can be a big win:

    A build dir for a specific x86-64 configuration with gcc 4.5
    shrunk from 2.3G to 1.2G. The compilation was also nearly a minute
    faster.

    Signed-off-by: Andi Kleen
    [mmarek: reformatted help text]
    Signed-off-by: Michal Marek

    Andi Kleen
     
  • via following scripts

    FILES=$(find * -type f | grep -vE 'oprofile|[^K]config')

    sed -i \
    -e 's/lmb/memblock/g' \
    -e 's/LMB/MEMBLOCK/g' \
    $FILES

    for N in $(find . -name lmb.[ch]); do
    M=$(echo $N | sed 's/lmb/memblock/g')
    mv $N $M
    done

    and remove some wrong change like lmbench and dlmb etc.

    also move memblock.c from lib/ to mm/

    Suggested-by: Ingo Molnar
    Acked-by: "H. Peter Anvin"
    Acked-by: Benjamin Herrenschmidt
    Acked-by: Linus Torvalds
    Signed-off-by: Yinghai Lu
    Signed-off-by: Benjamin Herrenschmidt

    Yinghai Lu
     

12 Jul, 2010

1 commit


10 Jul, 2010

1 commit

  • Current x86 ioremap() doesn't handle physical address higher than
    32-bit properly in X86_32 PAE mode. When physical address higher than
    32-bit is passed to ioremap(), higher 32-bits in physical address is
    cleared wrongly. Due to this bug, ioremap() can map wrong address to
    linear address space.

    In my case, 64-bit MMIO region was assigned to a PCI device (ioat
    device) on my system. Because of the ioremap()'s bug, wrong physical
    address (instead of MMIO region) was mapped to linear address space.
    Because of this, loading ioatdma driver caused unexpected behavior
    (kernel panic, kernel hangup, ...).

    Signed-off-by: Kenji Kaneshige
    LKML-Reference:
    Signed-off-by: H. Peter Anvin

    Kenji Kaneshige
     

07 Jul, 2010

1 commit


05 Jul, 2010

3 commits

  • Reimplement augmented RB-trees without sprinkling extra branches
    all over the RB-tree code (which lives in the scheduler hot path).

    This approach is 'borrowed' from Fabio's BFQ implementation and
    relies on traversing the rebalance path after the RB-tree-op to
    correct the heap property for insertion/removal and make up for
    the damage done by the tree rotations.

    For insertion the rebalance path is trivially that from the new
    node upwards to the root, for removal it is that from the deepest
    node in the path from the to be removed node that will still
    be around after the removal.

    [ This patch also fixes a video driver regression reported by
    Ali Gholami Rudi - the memtype->subtree_max_end was updated
    incorrectly. ]

    Acked-by: Suresh Siddha
    Acked-by: Venkatesh Pallipadi
    Signed-off-by: Peter Zijlstra
    Tested-by: Ali Gholami Rudi
    Cc: Fabio Checconi
    Cc: "H. Peter Anvin"
    Cc: Andrew Morton
    Cc: Linus Torvalds
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Peter Zijlstra
     
  • We should initialize the module dynamic debug datastructures
    only after determining that the module is not loaded yet. This
    fixes a bug that introduced in 2.6.35-rc2, where when a trying
    to load a module twice, we also load it's dynamic printing data
    twice which causes all sorts of nasty issues. Also handle
    the dynamic debug cleanup later on failure.

    Signed-off-by: Yehuda Sadeh
    Signed-off-by: Rusty Russell (removed a #ifdef)
    Signed-off-by: Linus Torvalds

    Yehuda Sadeh
     
  • Add the ability to print a format and va_list from a structure pointer

    Allows __dev_printk to be implemented as a single printk while
    minimizing string space duplication.

    %pV should not be used without some mechanism to verify the
    format and argument use ala __attribute__(format (printf(...))).

    Signed-off-by: Joe Perches
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: David S. Miller

    Joe Perches