02 Jul, 2009

6 commits

  • Add infrastructure for module path discovery and section load addresses.

    Signed-off-by: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Mike Galbraith
     
  • perf_counter tools: Make symbol loading consistently return number of loaded symbols.

    Signed-off-by: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Mike Galbraith
     
  • Building builtin-stat.c reports the following errors:

    cc1: warnings being treated as errors
    builtin-stat.c: In function ‘run_perf_stat’:
    builtin-stat.c:242: erreur: ignoring return value of ‘read’, declared with attribute warn_unused_result
    builtin-stat.c:255: erreur: ignoring return value of ‘read’, declared with attribute warn_unused_result
    make: *** [builtin-stat.o] Erreur 1

    This patch handles the possible pipe read failures.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Anton Blanchard
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • About every callchains recorded with perf record are filled up
    including the internal perfcounter nmi frame:

    perf_callchain
    perf_counter_overflow
    intel_pmu_handle_irq
    perf_counter_nmi_handler
    notifier_call_chain
    atomic_notifier_call_chain
    notify_die
    do_nmi
    nmi

    We want ignore this frame as it's not interesting for
    instrumentation. To solve this, we simply ignore every frames
    from nmi context.

    New example of "perf report -s sym -c" after this patch:

    9.59% [k] search_by_key
    4.88%
    search_by_key
    reiserfs_read_locked_inode
    reiserfs_iget
    reiserfs_lookup
    do_lookup
    __link_path_walk
    path_walk
    do_path_lookup
    user_path_at
    vfs_fstatat
    vfs_lstat
    sys_newlstat
    system_call_fastpath
    __lxstat
    0x406fb1

    3.19%
    search_by_key
    search_by_entry_key
    reiserfs_find_entry
    reiserfs_lookup
    do_lookup
    __link_path_walk
    path_walk
    do_path_lookup
    user_path_at
    vfs_fstatat
    vfs_lstat
    sys_newlstat
    system_call_fastpath
    __lxstat
    0x406fb1
    [...]

    For now this patch only solves the problem in x86-64.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Anton Blanchard
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • The copy we were using came from another copy I did for the dwarves
    (pahole) package, that came from the kernel years ago.

    The only function that is used by the perf tools and that isn't in the
    kernel is list_del_range, that I'm leaving in the perf tools only for
    now.

    Signed-off-by: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Arnaldo Carvalho de Melo
     
  • The tools/perf/util/rbtree.c copy already drifted by three
    csets:

    4b324126e0c6c3a5080ca3ec0981e8766ed6f1ee
    4c60117811171d867d4f27f17ea07d7419d45dae
    16c047add3ceaf0ab882e3e094d1ec904d02312d

    So remove the copy and use the lib/rbtree.c directly, sharing
    the source code while still generating a separate object file,
    since tools/perf uses a far more agressive -O6 switch.

    Signed-off-by: Arnaldo Carvalho de Melo
    Cc: Mike Galbraith
    Cc: Peter Zijlstra
    Cc: Paul Mackerras
    Cc: Frederic Weisbecker
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Arnaldo Carvalho de Melo
     

01 Jul, 2009

34 commits

  • After:

    $ ./perf list

    List of pre-defined events (to be used in -e):

    cpu-cycles OR cycles [Hardware event]
    instructions [Hardware event]
    cache-references [Hardware event]
    cache-misses [Hardware event]
    branch-instructions OR branches [Hardware event]
    branch-misses [Hardware event]
    bus-cycles [Hardware event]

    cpu-clock [Software event]
    task-clock [Software event]
    page-faults OR faults [Software event]
    minor-faults [Software event]
    major-faults [Software event]
    context-switches OR cs [Software event]
    cpu-migrations OR migrations [Software event]

    L1-d$-loads [Hardware cache event]
    L1-d$-load-misses [Hardware cache event]
    L1-d$-stores [Hardware cache event]
    L1-d$-store-misses [Hardware cache event]
    L1-d$-prefetches [Hardware cache event]
    L1-d$-prefetch-misses [Hardware cache event]
    L1-i$-loads [Hardware cache event]
    L1-i$-load-misses [Hardware cache event]
    L1-i$-prefetches [Hardware cache event]
    L1-i$-prefetch-misses [Hardware cache event]
    LLC-loads [Hardware cache event]
    LLC-load-misses [Hardware cache event]
    LLC-stores [Hardware cache event]
    LLC-store-misses [Hardware cache event]
    LLC-prefetches [Hardware cache event]
    LLC-prefetch-misses [Hardware cache event]
    dTLB-loads [Hardware cache event]
    dTLB-load-misses [Hardware cache event]
    dTLB-stores [Hardware cache event]
    dTLB-store-misses [Hardware cache event]
    dTLB-prefetches [Hardware cache event]
    dTLB-prefetch-misses [Hardware cache event]
    iTLB-loads [Hardware cache event]
    iTLB-load-misses [Hardware cache event]
    branch-loads [Hardware cache event]
    branch-load-misses [Hardware cache event]

    rNNN [raw hardware event descriptor]

    Signed-off-by: Jaswinder Singh Rajput
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Jaswinder Singh Rajput
     
  • MATCH_EVENT is useful:

    1. for multiple attrs checking
    2. avoid repetition of PERF_TYPE_ and PERF_COUNT_ and save space
    3. avoids line breakage

    Signed-off-by: Jaswinder Singh Rajput
    Cc: Peter Zijlstra
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Jaswinder Singh Rajput
     
  • Enable -Wextra. This found a few real bugs plus a number
    of signed/unsigned type mismatches/uncleanlinesses. It
    also required a few annotations

    All things considered it was still worth it so lets try with
    this enabled for now.

    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • Fix:

    builtin-report.c: In function ‘hist_entry__add’:
    builtin-report.c:1015: error: case label not within a switch statement
    builtin-report.c:1017: error: break statement not within loop or switch

    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • This reworks the parser for event descriptors to make it more
    consistent in what it accepts. It is now structured as a
    recursive descent parser for the following grammar:

    events ::= event ( ("," | space) space* event )*
    event ::= ( raw_event | numeric_event | symbolic_event |
    generic_hw_event ) [ event_modifier ]
    raw_event ::= "r" hex_number
    numeric_event ::= number ":" number
    number ::= decimal_number | "0x" hex_number | "0" octal_number
    symbolic_event ::= string_from_event_symbols_array
    generic_hw_event::= cache_type ( "-" ( cache_op | cache_result ) )*
    event_modifier ::= ":" ( "u" | "k" | "h" )+

    with the extra restriction that you can have at most one
    cache_op and at most one cache_result.

    We pass the current string pointer by reference (i.e. as a
    const char **) to the various parsing functions so that they
    can advance the pointer to indicate how much they consumed.
    They return 0 if they didn't recognize the thing at the pointer
    or 1 if they did (and advance the pointer past it).

    This also fixes parse_aliases to take the longest matching
    alias from the table, not the first one. Otherwise "l1-data"
    would match the "l1-d" alias and the "ata" would not be
    consumed.

    This allows event modifiers indicating what processor modes to
    count in to be applied to any event, not just numeric events,
    and adds a ":h" modifier to indicate counting in hypervisor
    mode. Specifying ":u" now sets both exclude_kernel and
    exclude_hv, and so on. Multiple modes can be specified, e.g.
    ":uk" will count in user or hypervisor mode (i.e. only
    exclude_kernel will be set).

    Signed-off-by: Paul Mackerras
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Arnaldo Carvalho de Melo
    Cc: Frederic Weisbecker
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Paul Mackerras
     
  • POWER7 has the same PR/HV bit layout as POWER6, so set the flag.

    Signed-off-by: Anton Blanchard
    Acked-by: Paul Mackerras
    Cc: a.p.zijlstra@chello.nl
    Cc: benh@kernel.crashing.org
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Anton Blanchard
     
  • The symbol resolving has of course revealed some bugs in the
    callchain tree handling. This patch fixes some of them,
    including:

    - inherit the children from the parents while splitting a node
    - fix list range moving
    - fix indexes setting in callchains
    - create a child on the current node if the path doesn't match in
    the existent children (was only done on the root)
    - compare using symbols when possible so that we can match a function
    using any ip inside by referring to its start address.

    The practical effects are:

    - remove double callchains
    - fix upside down or any random order of callchains
    - fix wrong paths
    - fix bad hits and percentage accounts

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Anton Blanchard
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • This patch resolves the names, when possible, of each ip
    present in the callchains while using the -c option with perf
    report.

    Example:

    5.40% [k] __d_lookup
    5.37%
    perf_callchain
    perf_counter_overflow
    intel_pmu_handle_irq
    perf_counter_nmi_handler
    notifier_call_chain
    atomic_notifier_call_chain
    notify_die
    do_nmi
    nmi
    do_lookup
    __link_path_walk
    path_walk
    do_path_lookup
    user_path_at
    sys_faccessat
    sys_access
    system_call_fastpath
    0x7fb609846f77

    0.01%
    perf_callchain
    perf_counter_overflow
    intel_pmu_handle_irq
    perf_counter_nmi_handler
    notifier_call_chain
    atomic_notifier_call_chain
    notify_die
    do_nmi
    nmi
    do_lookup
    __link_path_walk
    path_walk
    do_path_lookup
    user_path_at
    sys_faccessat

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Anton Blanchard
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • Fix a confusion while giving the size of a callchain list
    during its allocation. We are using the wrong structure size.

    Signed-off-by: Frederic Weisbecker
    Cc: Peter Zijlstra
    Cc: Mike Galbraith
    Cc: Paul Mackerras
    Cc: Anton Blanchard
    Cc: Arnaldo Carvalho de Melo
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Frederic Weisbecker
     
  • Merge reason: this branch was on a .30-ish base before, update
    it to an almost-.31-rc2 upstream base to pick up fixes.

    Signed-off-by: Ingo Molnar

    Ingo Molnar
     
  • * 'kmemleak' of git://linux-arm.org/linux-2.6:
    kmemleak: Inform kmemleak about pid_hash
    kmemleak: Do not warn if an unknown object is freed
    kmemleak: Do not report new leaked objects if the scanning was stopped
    kmemleak: Slightly change the policy on newly allocated objects
    kmemleak: Do not trigger a scan when reading the debug/kmemleak file
    kmemleak: Simplify the reports logged by the scanning thread
    kmemleak: Enable task stacks scanning by default
    kmemleak: Allow the early log buffer to be configurable.

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/agk/linux-2.6-dm:
    dm table: fix blk_stack_limits arg to use bytes not sectors
    dm exception store: really fix type lookup

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

    * 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (47 commits)
    perf report: Add --symbols parameter
    perf report: Add --comms parameter
    perf report: Add --dsos parameter
    perf_counter tools: Adjust only prelinked symbol's addresses
    perf_counter: Provide a way to enable counters on exec
    perf_counter tools: Reduce perf stat measurement overhead/skew
    perf stat: Use percentages for scaling output
    perf_counter, x86: Update x86_pmu after WARN()
    perf stat: Micro-optimize the code: memcpy is only required if no event is selected and !null_run
    perf stat: Improve output
    perf stat: Fix multi-run stats
    perf stat: Add -n/--null option to run without counters
    perf_counter tools: Remove dead code
    perf_counter: Complete counter swap
    perf report: Print sorted callchains per histogram entries
    perf_counter tools: Prepare a small callchain framework
    perf record: Fix unhandled io return value
    perf_counter tools: Add alias for 'l1d' and 'l1i'
    perf-report: Add bare minimum PERF_EVENT_READ parsing
    perf-report: Add modes for inherited stats and no-samples
    ...

    Linus Torvalds
     
  • * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6:
    Add Fenghua Yu as temporary co-maintainer for ia64
    [IA64] address compiler warnings perfmon.c/salinfo.c
    [IA64] Remove unnecessary semicolons
    [IA64] sprintf should not be used with same source & destination address

    Linus Torvalds
     
  • Wire up new syscalls rt_tgsigqueueinfo and perf_counter_open.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Wire up new syscalls rt_tgsigqueueinfo and perf_counter_open.

    Signed-off-by: David Howells
    Signed-off-by: Linus Torvalds

    David Howells
     
  • Maximum file size for hostfs mounts defaults to 2GB, so bigger files cannot be
    read/written through hostfs. This patch initializes the maximum file size to
    MAX_LFS_SIZE.

    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=13531

    Signed-off-by: Wolfgang Illmeyer
    Cc: Jeff Dike
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Wolfgang Illmeyer
     
  • A crappy macro prevents us unlocking on a fail path.

    Expand the macro and unlock appropriatelly.

    Signed-off-by: Jiri Slaby
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jiri Slaby
     
  • Make sure we do not actually request the RTC IRQ until the device driver
    is fully ready to handle and process any interrupt. This way a spurious
    interrupt won't crash the system (which may happen if the bootloader was
    poking the RTC right before booting Linux).

    Signed-off-by: Mike Frysinger
    Signed-off-by: Alessandro Zummo
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     
  • Block writes require 64 byte alignment. Since block writes could be used
    with SGRAM or WRAM also refine the memory type detection to check for
    either type before deciding to use the 64 byte alignment.

    Signed-off-by: Ville Syrjala
    Tested-by: Mikulas Patocka
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ville Syrjala
     
  • Apparently HP OmniBook 500's BIOS doesn't like the way atyfb reprograms
    the hardware. The BIOS will simply hang after a reboot. Fix the problem
    by restoring the hardware to it's original state on reboot.

    Signed-off-by: Ville Syrjala
    Cc: Mikulas Patocka
    Cc: Krzysztof Helt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ville Syrjala
     
  • IRQ handling is wrong for any GPIO >= PL061_GPIO_NR.

    Fix this by implementing and using a proper .to_irq method.

    Signed-off-by: Baruch Siach
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Baruch Siach
     
  • Note that IRQ has not been initialized when kmalloc() fails.

    Also, use DECLARE_BITMAP() to make the code clearer.

    Signed-off-by: Baruch Siach
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Baruch Siach
     
  • Nathan reported that

    | commit 73d60b7f747176dbdff826c4127d22e1fd3f9f74
    | Author: Yinghai Lu
    | Date: Tue Jun 16 15:33:00 2009 -0700
    |
    | page-allocator: clear N_HIGH_MEMORY map before we set it again
    |
    | SRAT tables may contains nodes of very small size. The arch code may
    | decide to not activate such a node. However, currently the early boot
    | code sets N_HIGH_MEMORY for such nodes. These nodes therefore seem to be
    | active although these nodes have no present pages.
    |
    | For 64bit N_HIGH_MEMORY == N_NORMAL_MEMORY, so that works for 64 bit too

    unintentionally and incorrectly clears the cpuset.mems cgroup attribute on
    an i386 kvm guest, meaning that cpuset.mems can not be used.

    Fix this by only clearing node_states[N_NORMAL_MEMORY] for 64bit only.
    and need to do save/restore for that in find_zone_movable_pfn

    Reported-by: Nathan Lynch
    Tested-by: Nathan Lynch
    Signed-off-by: Yinghai Lu
    Cc: Christoph Lameter
    Cc: Ingo Molnar ,
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Yinghai Lu
     
  • By writing a tasks's pid to the file, a process adds that task to that
    cgroup/cpuset. But to add a cpu/mem to a cpuset, the new list of cpus
    should be written to the cpuset.mems file which would replace the old list
    of cpus. Make this clearer in the documentation.

    Signed-off-by: Nikanth Karthikesan
    Signed-off-by: Li Zefan
    Acked-by: Paul Menage
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nikanth Karthikesan
     
  • balance_dirty_pages can overreact and move all of the dirty pages to
    writeback unnecessarily.

    balance_dirty_pages makes its decision to throttle based on the number of
    dirty plus writeback pages that are over the calculated limit,so it will
    continue to move pages even when there are plenty of pages in writeback
    and less than the threshold still dirty.

    This allows it to overshoot its limits and move all the dirty pages to
    writeback while waiting for the drives to catch up and empty the writeback
    list.

    A simple fio test easily demonstrates this problem.

    fio --name=f1 --directory=/disk1 --size=2G -rw=write --name=f2 --directory=/disk2 --size=1G --rw=write --startdelay=10

    This is the simplest fix I could find, but I'm not entirely sure that it
    alone will be enough for all cases. But it certainly is an improvement on
    my desktop machine writing to 2 disks.

    Do we need something more for machines with large arrays where
    bdi_threshold * number_of_drives is greater than the dirty_ratio ?

    Signed-off-by: Richard Kennedy
    Acked-by: Peter Zijlstra
    Cc: Jens Axboe
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Richard Kennedy
     
  • The file opened in acct_on and freshly stored in the ns->bacct struct can
    be closed in acct_file_reopen by a concurrent call after we release
    acct_lock and before we call mntput(file->f_path.mnt).

    Record file->f_path.mnt in a local variable and use this variable only.

    Signed-off-by: Renaud Lottiaux
    Signed-off-by: Louis Rilling
    Cc: Al Viro
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Renaud Lottiaux
     
  • Ion's cs.columbia.edu email address no longer works.

    Signed-off-by: Joe Perches
    Acked-by: Ion Badulescu
    Cc: "David S. Miller"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joe Perches
     
  • When the 32-bit signed quantities get assigned to the u64 resource_size_t,
    they are incorrectly sign-extended.

    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=13253
    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=9905

    Signed-off-by: Zhang Rui
    Reported-by: Leann Ogasawara
    Cc: Pierre Ossman
    Reported-by:
    Tested-by:
    Cc:
    Cc: Jesse Barnes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zhang Rui
     
  • Bugfix to spi_bitbang infrastructure: make sure to always set transfer
    parameters on the first pass through the message's per-transfer loop.
    This can matter with drivers that replace the per-word or per-buffer
    transfer primitives, on busses with multiple SPI devices.

    Previously, this could have started messages using the settings left after
    previous messages. The problem was observed when a high speed chip
    (m25p80 type flash) was running very slowly because a low speed device
    (avr8 microcontroller) had previously used the bus. Similar faults could
    have driven the low speed device too fast, or used an unexpected word
    size.

    Acked-by: Steven A. Falco
    Signed-off-by: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Add a mutex to avoid a circular locking problem between the mm layer
    semaphore and fbdev ioctl mutex through the fb_mmap() call.

    Also, add mutex to all places where smem_start and smem_len fields change
    so the mutex inside the fb_mmap() is actually used. Changing of these
    fields before calling the framebuffer_register() are not mutexed.

    This is 2.6.31 material. It removes one lockdep (fb_mmap() and
    register_framebuffer()) but there is still another one (fb_release() and
    register_framebuffer()). It also cleans up handling of the smem_start and
    smem_len fields used by mutexed section of the fb_mmap().

    Signed-off-by: Krzysztof Helt
    Cc: Peter Zijlstra
    Cc: "Rafael J. Wysocki"
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krzysztof Helt
     
  • Add a new spi_master.flags word listing constraints relevant to that
    controller. Define the first constraint bit: a half duplex restriction.
    Include that constraint in the OMAP1 MicroWire controller driver.

    Have the mmc_spi host be the first customer of this flag. Its coding
    relies heavily on full duplex transfers, so it must fail when the
    underlying controller driver won't perform them.

    (The spi_write_then_read routine could use it too: use the
    temporarily-withdrawn full-duplex speedup unless this flag is set, in
    which case the existing code applies. Similarly, any spi_master
    implementing only SPI_3WIRE should set the flag.)

    Signed-off-by: David Brownell
    Cc: Marek Szyprowski
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • Add two new spi_device.mode bits to accomodate more protocol options, and
    pass them through to usermode drivers:

    * SPI_NO_CS ... a second 3-wire variant, where the chipselect
    line is removed instead of a data line; transfers are still
    full duplex.

    This obviously has STRONG protocol implications since the
    chipselect transitions can't be used to synchronize state
    transitions with the SPI master.

    * SPI_READY ... defines open drain signal that's pulled low
    to pause the clock. This defines a 5-wire variant (normal
    4-wire SPI plus READY) and two 4-wire variants (READY plus
    each of the 3-wire flavors).

    Such hardware flow control can be a big win. There are ADC
    converters and flash chips that expose READY signals, but not
    many host controllers support it today.

    The spi_bitbang code should be changed to use SPI_NO_CS instead of its
    current nonportable hack. That's a mode most hardware can easily support
    (unlike SPI_READY).

    Signed-off-by: David Brownell
    Cc: "Paulraj, Sandeep"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Brownell
     
  • show_pools() walks the page_list of a pool w/o protection against the list
    modifications in alloc/free. Take pool->lock to avoid stomping into
    nirvana.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Matthew Wilcox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner