1. 10 May, 2013 12 commits
    • Masami Hiramatsu's avatar
      tracing/kprobes: Pass trace_probe directly from dispatcher · 2b106aab
      Masami Hiramatsu authored
      Pass the pointer of struct trace_probe directly from probe
      dispatcher to handlers. This removes redundant container_of
      macro uses. Same thing has already done in trace_uprobe.
      
      Link: http://lkml.kernel.org/r/20130509054441.30398.69112.stgit@mhiramat-M0-7522
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      2b106aab
    • Masami Hiramatsu's avatar
      tracing/kprobes: Increment probe hit-count even if it is used by perf · 48182bd2
      Masami Hiramatsu authored
      Increment probe hit-count for profiling even if it is used
      by perf tool. Same thing has already done in trace_uprobe.
      
      Link: http://lkml.kernel.org/r/20130509054436.30398.21133.stgit@mhiramat-M0-7522
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      48182bd2
    • Masami Hiramatsu's avatar
      tracing/kprobes: Use bool for retprobe checker · db02038f
      Masami Hiramatsu authored
      Use bool instead of int for kretprobe checker.
      
      Link: http://lkml.kernel.org/r/20130509054431.30398.38561.stgit@mhiramat-M0-7522
      
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      db02038f
    • Steven Rostedt (Red Hat)'s avatar
      ftrace: Fix function probe when more than one probe is added · 19dd603e
      Steven Rostedt (Red Hat) authored
      When the first function probe is added and the function tracer
      is updated the functions are modified to call the probe.
      But when a second function is added, it updates the function
      records to have the second function also update, but it fails
      to update the actual function itself.
      
      This prevents the second (or third or forth and so on) probes
      from having their functions called.
      
        # echo vfs_symlink:enable_event:sched:sched_switch > set_ftrace_filter
        # echo vfs_unlink:enable_event:sched:sched_switch > set_ftrace_filter
        # cat trace
       # tracer: nop
       #
       # entries-in-buffer/entries-written: 0/0   #P:4
       #
       #                              _-----=> irqs-off
       #                             / _----=> need-resched
       #                            | / _---=> hardirq/softirq
       #                            || / _--=> preempt-depth
       #                            ||| /     delay
       #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
       #              | |       |   ||||       |         |
        # touch /tmp/a
        # rm /tmp/a
        # cat trace
       # tracer: nop
       #
       # entries-in-buffer/entries-written: 0/0   #P:4
       #
       #                              _-----=> irqs-off
       #                             / _----=> need-resched
       #                            | / _---=> hardirq/softirq
       #                            || / _--=> preempt-depth
       #                            ||| /     delay
       #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
       #              | |       |   ||||       |         |
        # ln -s /tmp/a
        # cat trace
       # tracer: nop
       #
       # entries-in-buffer/entries-written: 414/414   #P:4
       #
       #                              _-----=> irqs-off
       #                             / _----=> need-resched
       #                            | / _---=> hardirq/softirq
       #                            || / _--=> preempt-depth
       #                            ||| /     delay
       #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION
       #              | |       |   ||||       |         |
                 <idle>-0     [000] d..3  2847.923031: sched_switch: prev_comm=swapper/0 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=bash next_pid=2786 next_prio=120
                  <...>-3114  [001] d..4  2847.923035: sched_switch: prev_comm=ln prev_pid=3114 prev_prio=120 prev_state=x ==> next_comm=swapper/1 next_pid=0 next_prio=120
                   bash-2786  [000] d..3  2847.923535: sched_switch: prev_comm=bash prev_pid=2786 prev_prio=120 prev_state=S ==> next_comm=kworker/0:1 next_pid=34 next_prio=120
            kworker/0:1-34    [000] d..3  2847.923552: sched_switch: prev_comm=kworker/0:1 prev_pid=34 prev_prio=120 prev_state=S ==> next_comm=swapper/0 next_pid=0 next_prio=120
                 <idle>-0     [002] d..3  2847.923554: sched_switch: prev_comm=swapper/2 prev_pid=0 prev_prio=120 prev_state=R ==> next_comm=sshd next_pid=2783 next_prio=120
                   sshd-2783  [002] d..3  2847.923660: sched_switch: prev_comm=sshd prev_pid=2783 prev_prio=120 prev_state=S ==> next_comm=swapper/2 next_pid=0 next_prio=120
      
      Still need to update the functions even though the probe itself
      does not need to be registered again when added a new probe.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      19dd603e
    • Steven Rostedt (Red Hat)'s avatar
      ftrace: Fix the output of enabled_functions debug file · 23ea9c4d
      Steven Rostedt (Red Hat) authored
      The enabled_functions debugfs file was created to be able to see
      what functions have been modified from nops to calling a tracer.
      
      The current method uses the counter in the function record.
      As when a ftrace_ops is registered to a function, its count
      increases. But that doesn't mean that the function is actively
      being traced. /proc/sys/kernel/ftrace_enabled can be set to zero
      which would disable it, as well as something can go wrong and
      we can think its enabled when only the counter is set.
      
      The record's FTRACE_FL_ENABLED flag is set or cleared when its
      function is modified. That is a much more accurate way of knowing
      what function is enabled or not.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      23ea9c4d
    • Steven Rostedt (Red Hat)'s avatar
      ftrace: Fix locking in register_ftrace_function_probe() · 5ae0bf59
      Steven Rostedt (Red Hat) authored
      The iteration of the ftrace function list and the call to
      ftrace_match_record() need to be protected by the ftrace_lock.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      5ae0bf59
    • Steven Rostedt (Red Hat)'s avatar
      tracing: Add helper function trace_create_new_event() to remove duplicate code · da511bf3
      Steven Rostedt (Red Hat) authored
      Both __trace_add_new_event() and __trace_early_add_new_event() do
      basically the same thing, except that __trace_add_new_event() does
      a little more.
      
      Instead of having duplicate code between the two functions, add
      a helper function trace_create_new_event() that both can use.
      This will help against having bugs fixed in one function but not
      the other.
      
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      da511bf3
    • Masami Hiramatsu's avatar
      tracing: Modify soft-mode only if there's no other referrer · 1cf4c073
      Masami Hiramatsu authored
      Modify soft-mode flag only if no other soft-mode referrer
      (currently only the ftrace triggers) by using a reference
      counter in each ftrace_event_file.
      
      Without this fix, adding and removing several different
      enable/disable_event triggers on the same event clear
      soft-mode bit from the ftrace_event_file. This also
      happens with a typo of glob on setting triggers.
      
      e.g.
      
       # echo vfs_symlink:enable_event:net:netif_rx > set_ftrace_filter
       # cat events/net/netif_rx/enable
       0*
       # echo typo_func:enable_event:net:netif_rx > set_ftrace_filter
       # cat events/net/netif_rx/enable
       0
       # cat set_ftrace_filter
       #### all functions enabled ####
       vfs_symlink:enable_event:net:netif_rx:unlimited
      
      As above, we still have a trigger, but soft-mode is gone.
      
      Link: http://lkml.kernel.org/r/20130509054429.30398.7464.stgit@mhiramat-M0-7522
      
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: David Sharp <dhsharp@google.com>
      Cc: Hiraku Toyooka <hiraku.toyooka.gu@hitachi.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      1cf4c073
    • Masami Hiramatsu's avatar
      tracing: Indicate enabled soft-mode in enable file · 30052170
      Masami Hiramatsu authored
      Indicate enabled soft-mode event as "1*" in "enable" file
      for each event, because it can be soft-disabled when disable_event
      trigger is hit.
      
      Link: http://lkml.kernel.org/r/20130509054426.30398.28202.stgit@mhiramat-M0-7522
      
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      30052170
    • Masami Hiramatsu's avatar
      tracing/kprobes: Fix to increment return event probe hit-count · cce2c8f2
      Masami Hiramatsu authored
      Fix to increment probe hit-count for function return event.
      
      Link: http://lkml.kernel.org/r/20130509054424.30398.34058.stgit@mhiramat-M0-7522
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      cce2c8f2
    • Masami Hiramatsu's avatar
      ftrace: Cleanup regex_lock and ftrace_lock around hash updating · 3f2367ba
      Masami Hiramatsu authored
      Cleanup regex_lock and ftrace_lock locking points around
      ftrace_ops hash update code.
      
      The new rule is that regex_lock protects ops->*_hash
      read-update-write code for each ftrace_ops. Usually,
      hash update is done by following sequence.
      
      1. allocate a new local hash and copy the original hash.
      2. update the local hash.
      3. move(actually, copy) back the local hash to ftrace_ops.
      4. update ftrace entries if needed.
      5. release the local hash.
      
      This makes regex_lock protect #1-#4, and ftrace_lock
      to protect #3, #4 and adding and removing ftrace_ops from the
      ftrace_ops_list. The ftrace_lock protects #3 as well because
      the move functions update the entries too.
      
      Link: http://lkml.kernel.org/r/20130509054421.30398.83411.stgit@mhiramat-M0-7522
      
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      3f2367ba
    • Masami Hiramatsu's avatar
      ftrace, kprobes: Fix a deadlock on ftrace_regex_lock · f04f24fb
      Masami Hiramatsu authored
      Fix a deadlock on ftrace_regex_lock which happens when setting
      an enable_event trigger on dynamic kprobe event as below.
      
      ----
      sh-2.05b# echo p vfs_symlink > kprobe_events
      sh-2.05b# echo vfs_symlink:enable_event:kprobes:p_vfs_symlink_0 > set_ftrace_filter
      
      =============================================
      [ INFO: possible recursive locking detected ]
      3.9.0+ #35 Not tainted
      ---------------------------------------------
      sh/72 is trying to acquire lock:
       (ftrace_regex_lock){+.+.+.}, at: [<ffffffff810ba6c1>] ftrace_set_hash+0x81/0x1f0
      
      but task is already holding lock:
       (ftrace_regex_lock){+.+.+.}, at: [<ffffffff810b7cbd>] ftrace_regex_write.isra.29.part.30+0x3d/0x220
      
      other info that might help us debug this:
       Possible unsafe locking scenario:
      
             CPU0
             ----
        lock(ftrace_regex_lock);
        lock(ftrace_regex_lock);
      
       *** DEADLOCK ***
      ----
      
      To fix that, this introduces a finer regex_lock for each ftrace_ops.
      ftrace_regex_lock is too big of a lock which protects all
      filter/notrace_hash operations, but it doesn't need to be a global
      lock after supporting multiple ftrace_ops because each ftrace_ops
      has its own filter/notrace_hash.
      
      Link: http://lkml.kernel.org/r/20130509054417.30398.84254.stgit@mhiramat-M0-7522
      
      Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Tom Zanussi <tom.zanussi@intel.com>
      Signed-off-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      [ Added initialization flag and automate mutex initialization for
        non ftrace.c ftrace_probes. ]
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      f04f24fb
  2. 09 May, 2013 3 commits
  3. 03 May, 2013 1 commit
  4. 30 Apr, 2013 24 commits
    • Steven Rostedt's avatar
      tracing: Fix small merge bug · 6c24499f
      Steven Rostedt authored
      During the 3.10 merge, a conflict happened and the resolution was
      almost, but not quite, correct. An if statement was reversed.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      [ Duh. That was just silly of me  - Linus ]
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6c24499f
    • Linus Torvalds's avatar
      Merge tag 'localmodconfig-v3.10' of... · 500fcbc4
      Linus Torvalds authored
      Merge tag 'localmodconfig-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-kconfig
      
      Pull localmodconfig changes from Steven Rostedt:
       "A bug was recently found in the make localmodconfig where it would
        miss dependencies of config files are include in other config files
        inside an if statement.
      
        Also added a debug print that helped in solving this bug."
      
      * tag 'localmodconfig-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-kconfig:
        localmodconfig: Process source kconfig files as they are found
        localmodconfig: Add debug prints for dependencies of module configs
      500fcbc4
    • Linus Torvalds's avatar
      Merge branch 'akpm' (incoming from Andrew) · 56847d85
      Linus Torvalds authored
      Merge second batch of fixes from Andrew Morton:
      
       - various misc bits
      
       - some printk updates
      
       - a new "SRAM" driver.
      
       - MAINTAINERS updates
      
       - the backlight driver queue
      
       - checkpatch updates
      
       - a few init/ changes
      
       - a huge number of drivers/rtc changes
      
       - fatfs updates
      
       - some lib/idr.c work
      
       - some renaming of the random driver interfaces
      
      * emailed patches from Andrew Morton <akpm@linux-foundation.org>: (285 commits)
        net: rename random32 to prandom
        net/core: remove duplicate statements by do-while loop
        net/core: rename random32() to prandom_u32()
        net/netfilter: rename random32() to prandom_u32()
        net/sched: rename random32() to prandom_u32()
        net/sunrpc: rename random32() to prandom_u32()
        scsi: rename random32() to prandom_u32()
        lguest: rename random32() to prandom_u32()
        uwb: rename random32() to prandom_u32()
        video/uvesafb: rename random32() to prandom_u32()
        mmc: rename random32() to prandom_u32()
        drbd: rename random32() to prandom_u32()
        kernel/: rename random32() to prandom_u32()
        mm/: rename random32() to prandom_u32()
        lib/: rename random32() to prandom_u32()
        x86: rename random32() to prandom_u32()
        x86: pageattr-test: remove srandom32 call
        uuid: use prandom_bytes()
        raid6test: use prandom_bytes()
        sctp: convert sctp_assoc_set_id() to use idr_alloc_cyclic()
        ...
      56847d85
    • Linus Torvalds's avatar
      Merge branch 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup · 191a7120
      Linus Torvalds authored
      Pull cgroup updates from Tejun Heo:
      
       - Fixes and a lot of cleanups.  Locking cleanup is finally complete.
         cgroup_mutex is no longer exposed to individual controlelrs which
         used to cause nasty deadlock issues.  Li fixed and cleaned up quite a
         bit including long standing ones like racy cgroup_path().
      
       - device cgroup now supports proper hierarchy thanks to Aristeu.
      
       - perf_event cgroup now supports proper hierarchy.
      
       - A new mount option "__DEVEL__sane_behavior" is added.  As indicated
         by the name, this option is to be used for development only at this
         point and generates a warning message when used.  Unfortunately,
         cgroup interface currently has too many brekages and inconsistencies
         to implement a consistent and unified hierarchy on top.  The new flag
         is used to collect the behavior changes which are necessary to
         implement consistent unified hierarchy.  It's likely that this flag
         won't be used verbatim when it becomes ready but will be enabled
         implicitly along with unified hierarchy.
      
         The option currently disables some of broken behaviors in cgroup core
         and also .use_hierarchy switch in memcg (will be routed through -mm),
         which can be used to make very unusual hierarchy where nesting is
         partially honored.  It will also be used to implement hierarchy
         support for blk-throttle which would be impossible otherwise without
         introducing a full separate set of control knobs.
      
         This is essentially versioning of interface which isn't very nice but
         at this point I can't see any other options which would allow keeping
         the interface the same while moving towards hierarchy behavior which
         is at least somewhat sane.  The planned unified hierarchy is likely
         to require some level of adaptation from userland anyway, so I think
         it'd be best to take the chance and update the interface such that
         it's supportable in the long term.
      
         Maintaining the existing interface does complicate cgroup core but
         shouldn't put too much strain on individual controllers and I think
         it'd be manageable for the foreseeable future.  Maybe we'll be able
         to drop it in a decade.
      
      Fix up conflicts (including a semantic one adding a new #include to ppc
      that was uncovered by header the file changes) as per Tejun.
      
      * 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup: (45 commits)
        cpuset: fix compile warning when CONFIG_SMP=n
        cpuset: fix cpu hotplug vs rebuild_sched_domains() race
        cpuset: use rebuild_sched_domains() in cpuset_hotplug_workfn()
        cgroup: restore the call to eventfd->poll()
        cgroup: fix use-after-free when umounting cgroupfs
        cgroup: fix broken file xattrs
        devcg: remove parent_cgroup.
        memcg: force use_hierarchy if sane_behavior
        cgroup: remove cgrp->top_cgroup
        cgroup: introduce sane_behavior mount option
        move cgroupfs_root to include/linux/cgroup.h
        cgroup: convert cgroupfs_root flag bits to masks and add CGRP_ prefix
        cgroup: make cgroup_path() not print double slashes
        Revert "cgroup: remove bind() method from cgroup_subsys."
        perf: make perf_event cgroup hierarchical
        cgroup: implement cgroup_is_descendant()
        cgroup: make sure parent won't be destroyed before its children
        cgroup: remove bind() method from cgroup_subsys.
        devcg: remove broken_hierarchy tag
        cgroup: remove cgroup_lock_is_held()
        ...
      191a7120
    • Linus Torvalds's avatar
      Merge branch 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · 46d9be3e
      Linus Torvalds authored
      Pull workqueue updates from Tejun Heo:
       "A lot of activities on workqueue side this time.  The changes achieve
        the followings.
      
         - WQ_UNBOUND workqueues - the workqueues which are per-cpu - are
           updated to be able to interface with multiple backend worker pools.
           This involved a lot of churning but the end result seems actually
           neater as unbound workqueues are now a lot closer to per-cpu ones.
      
         - The ability to interface with multiple backend worker pools are
           used to implement unbound workqueues with custom attributes.
           Currently the supported attributes are the nice level and CPU
           affinity.  It may be expanded to include cgroup association in
           future.  The attributes can be specified either by calling
           apply_workqueue_attrs() or through /sys/bus/workqueue/WQ_NAME/* if
           the workqueue in question is exported through sysfs.
      
           The backend worker pools are keyed by the actual attributes and
           shared by any workqueues which share the same attributes.  When
           attributes of a workqueue are changed, the workqueue binds to the
           worker pool with the specified attributes while leaving the work
           items which are already executing in its previous worker pools
           alone.
      
           This allows converting custom worker pool implementations which
           want worker attribute tuning to use workqueues.  The writeback pool
           is already converted in block tree and there are a couple others
           are likely to follow including btrfs io workers.
      
         - WQ_UNBOUND's ability to bind to multiple worker pools is also used
           to make it NUMA-aware.  Because there's no association between work
           item issuer and the specific worker assigned to execute it, before
           this change, using unbound workqueue led to unnecessary cross-node
           bouncing and it couldn't be helped by autonuma as it requires tasks
           to have implicit node affinity and workers are assigned randomly.
      
           After these changes, an unbound workqueue now binds to multiple
           NUMA-affine worker pools so that queued work items are executed in
           the same node.  This is turned on by default but can be disabled
           system-wide or for individual workqueues.
      
           Crypto was requesting NUMA affinity as encrypting data across
           different nodes can contribute noticeable overhead and doing it
           per-cpu was too limiting for certain cases and IO throughput could
           be bottlenecked by one CPU being fully occupied while others have
           idle cycles.
      
        While the new features required a lot of changes including
        restructuring locking, it didn't complicate the execution paths much.
        The unbound workqueue handling is now closer to per-cpu ones and the
        new features are implemented by simply associating a workqueue with
        different sets of backend worker pools without changing queue,
        execution or flush paths.
      
        As such, even though the amount of change is very high, I feel
        relatively safe in that it isn't likely to cause subtle issues with
        basic correctness of work item execution and handling.  If something
        is wrong, it's likely to show up as being associated with worker pools
        with the wrong attributes or OOPS while workqueue attributes are being
        changed or during CPU hotplug.
      
        While this creates more backend worker pools, it doesn't add too many
        more workers unless, of course, there are many workqueues with unique
        combinations of attributes.  Assuming everything else is the same,
        NUMA awareness costs an extra worker pool per NUMA node with online
        CPUs.
      
        There are also a couple things which are being routed outside the
        workqueue tree.
      
         - block tree pulled in workqueue for-3.10 so that writeback worker
           pool can be converted to unbound workqueue with sysfs control
           exposed.  This simplifies the code, makes writeback workers
           NUMA-aware and allows tuning nice level and CPU affinity via sysfs.
      
         - The conversion to workqueue means that there's no 1:1 association
           between a specific worker, which makes writeback folks unhappy as
           they want to be able to tell which filesystem caused a problem from
           backtrace on systems with many filesystems mounted.  This is
           resolved by allowing work items to set debug info string which is
           printed when the task is dumped.  As this change involves unifying
           implementations of dump_stack() and friends in arch codes, it's
           being routed through Andrew's -mm tree."
      
      * 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (84 commits)
        workqueue: use kmem_cache_free() instead of kfree()
        workqueue: avoid false negative WARN_ON() in destroy_workqueue()
        workqueue: update sysfs interface to reflect NUMA awareness and a kernel param to disable NUMA affinity
        workqueue: implement NUMA affinity for unbound workqueues
        workqueue: introduce put_pwq_unlocked()
        workqueue: introduce numa_pwq_tbl_install()
        workqueue: use NUMA-aware allocation for pool_workqueues
        workqueue: break init_and_link_pwq() into two functions and introduce alloc_unbound_pwq()
        workqueue: map an unbound workqueues to multiple per-node pool_workqueues
        workqueue: move hot fields of workqueue_struct to the end
        workqueue: make workqueue->name[] fixed len
        workqueue: add workqueue->unbound_attrs
        workqueue: determine NUMA node of workers accourding to the allowed cpumask
        workqueue: drop 'H' from kworker names of unbound worker pools
        workqueue: add wq_numa_tbl_len and wq_numa_possible_cpumask[]
        workqueue: move pwq_pool_locking outside of get/put_unbound_pool()
        workqueue: fix memory leak in apply_workqueue_attrs()
        workqueue: fix unbound workqueue attrs hashing / comparison
        workqueue: fix race condition in unbound workqueue free path
        workqueue: remove pwq_lock which is no longer used
        ...
      46d9be3e
    • Linus Torvalds's avatar
      Merge branch 'for-3.10-async' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq · ce8aa489
      Linus Torvalds authored
      Pull async update from Tejun Heo:
       "This contains three cleanup patches for async from Lai.  All three
        patches are essentially cosmetic."
      
      * 'for-3.10-async' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
        async: rename and redefine async_func_ptr
        async: remove unused @node from struct async_domain
        async: simplify lowest_in_progress()
      ce8aa489
    • Linus Torvalds's avatar
      Merge branch 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu · b97db075
      Linus Torvalds authored
      Pull percpu patch from Tejun Heo:
       "A puny pull request for percpu.  We were expecting more cleanup
        patches but didn't happen this time, so just a single patch adding
        documentation from Christoph."
      
      * 'for-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
        percpu: add documentation on this_cpu operations
      b97db075
    • Akinobu Mita's avatar
      net: rename random32 to prandom · 8d564368
      Akinobu Mita authored
      Commit 496f2f93 ("random32: rename random32 to prandom") renamed
      random32() and srandom32() to prandom_u32() and prandom_seed()
      respectively.
      
      net_random() and net_srandom() need to be redefined with prandom_* in
      order to finish the naming transition.
      
      While I'm at it, enclose macro argument of net_srandom() with parenthesis.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8d564368
    • Akinobu Mita's avatar
      net/core: remove duplicate statements by do-while loop · 70e3ba72
      Akinobu Mita authored
      Remove duplicate statements by using do-while loop instead of while loop.
      
      - A;
      - while (e) {
      + do {
      	A;
      - }
      + } while (e);
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      70e3ba72
    • Akinobu Mita's avatar
      net/core: rename random32() to prandom_u32() · 33d7c5e5
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      33d7c5e5
    • Akinobu Mita's avatar
      net/netfilter: rename random32() to prandom_u32() · ca3d41a5
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Pablo Neira Ayuso <pablo@netfilter.org>
      Cc: Patrick McHardy <kaber@trash.net>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ca3d41a5
    • Akinobu Mita's avatar
      net/sched: rename random32() to prandom_u32() · 5106f3bd
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Stephen Hemminger <shemminger@vyatta.com>
      Cc: Jamal Hadi Salim <jhs@mojatatu.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5106f3bd
    • Akinobu Mita's avatar
      net/sunrpc: rename random32() to prandom_u32() · c86d2dde
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: "J. Bruce Fields" <bfields@fieldses.org>
      Acked-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      c86d2dde
    • Akinobu Mita's avatar
      scsi: rename random32() to prandom_u32() · 3b60a64f
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: "James E.J. Bottomley" <JBottomley@parallels.com>
      Cc: Robert Love <robert.w.love@intel.com>
      Cc: James Smart <james.smart@emulex.com>
      Cc: Andrew Vasquez <andrew.vasquez@qlogic.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      3b60a64f
    • Akinobu Mita's avatar
      lguest: rename random32() to prandom_u32() · 10fdc141
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Acked-by: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      10fdc141
    • Akinobu Mita's avatar
      uwb: rename random32() to prandom_u32() · 78782023
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      78782023
    • Akinobu Mita's avatar
      video/uvesafb: rename random32() to prandom_u32() · 314f8477
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Michal Januszewski <spock@gentoo.org>
      Cc: Florian Tobias Schandinat <FlorianSchandinat@gmx.de>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      314f8477
    • Akinobu Mita's avatar
      mmc: rename random32() to prandom_u32() · 2e744fcb
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Chris Ball <cjb@laptop.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2e744fcb
    • Akinobu Mita's avatar
      drbd: rename random32() to prandom_u32() · 38b682b2
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Cc: Jens Axboe <axboe@kernel.dk>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      38b682b2
    • Akinobu Mita's avatar
      kernel/: rename random32() to prandom_u32() · 6d65df33
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6d65df33
    • Akinobu Mita's avatar
      mm/: rename random32() to prandom_u32() · d3d30417
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d3d30417
    • Akinobu Mita's avatar
      lib/: rename random32() to prandom_u32() · f39fee5f
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f39fee5f
    • Akinobu Mita's avatar
      x86: rename random32() to prandom_u32() · 56a1ba5f
      Akinobu Mita authored
      Use preferable function name which implies using a pseudo-random
      number generator.
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Acked-by: default avatarH. Peter Anvin <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      56a1ba5f
    • Akinobu Mita's avatar
      x86: pageattr-test: remove srandom32 call · 4a7b4d23
      Akinobu Mita authored
      pageattr-test calls srandom32() once every test iteration.  But calling
      srandom32() after late_initcalls is not meaningfull.  Because the random
      states for random32() is mixed by good random numbers in late_initcall
      prandom_reseed().
      
      So this removes the call to srandom32().
      Signed-off-by: default avatarAkinobu Mita <akinobu.mita@gmail.com>
      Acked-by: default avatarH. Peter Anvin <hpa@zytor.com>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: "H. Peter Anvin" <hpa@zytor.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4a7b4d23