<feed xmlns='http://www.w3.org/2005/Atom'>
<title>user/sven/linux.git/kernel, branch v3.0-rc2</title>
<subtitle>Linux Kernel
</subtitle>
<id>https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.0-rc2</id>
<link rel='self' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/atom?h=v3.0-rc2'/>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/'/>
<updated>2011-05-31T08:01:48Z</updated>
<entry>
<title>rcu: Cure load woes</title>
<updated>2011-05-31T08:01:48Z</updated>
<author>
<name>Peter Zijlstra</name>
<email>peterz@infradead.org</email>
</author>
<published>2011-05-30T11:34:51Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=d72bce0e67e8afc6eb959f656013cbb577426f1e'/>
<id>urn:sha1:d72bce0e67e8afc6eb959f656013cbb577426f1e</id>
<content type='text'>
Commit cc3ce5176d83 (rcu: Start RCU kthreads in TASK_INTERRUPTIBLE
state) fudges a sleeping task' state, resulting in the scheduler seeing
a TASK_UNINTERRUPTIBLE task going to sleep, but a TASK_INTERRUPTIBLE
task waking up. The result is unbalanced load calculation.

The problem that patch tried to address is that the RCU threads could
stay in UNINTERRUPTIBLE state for quite a while and triggering the hung
task detector due to on-demand wake-ups.

Cure the problem differently by always giving the tasks at least one
wake-up once the CPU is fully up and running, this will kick them out of
the initial UNINTERRUPTIBLE state and into the regular INTERRUPTIBLE
wait state.

[ The alternative would be teaching kthread_create() to start threads as
  INTERRUPTIBLE but that needs a tad more thought. ]

Reported-by: Damien Wyart &lt;damien.wyart@free.fr&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Acked-by: Paul E. McKenney &lt;paul.mckenney@linaro.org&gt;
Link: http://lkml.kernel.org/r/1306755291.1200.2872.camel@twins
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>mm: Fix boot crash in mm_alloc()</title>
<updated>2011-05-29T18:32:28Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-29T18:32:28Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=6345d24daf0c1fffe6642081d783cdf653ebaa5c'/>
<id>urn:sha1:6345d24daf0c1fffe6642081d783cdf653ebaa5c</id>
<content type='text'>
Thomas Gleixner reports that we now have a boot crash triggered by
CONFIG_CPUMASK_OFFSTACK=y:

    BUG: unable to handle kernel NULL pointer dereference at   (null)
    IP: [&lt;c11ae035&gt;] find_next_bit+0x55/0xb0
    Call Trace:
     [&lt;c11addda&gt;] cpumask_any_but+0x2a/0x70
     [&lt;c102396b&gt;] flush_tlb_mm+0x2b/0x80
     [&lt;c1022705&gt;] pud_populate+0x35/0x50
     [&lt;c10227ba&gt;] pgd_alloc+0x9a/0xf0
     [&lt;c103a3fc&gt;] mm_init+0xec/0x120
     [&lt;c103a7a3&gt;] mm_alloc+0x53/0xd0

which was introduced by commit de03c72cfce5 ("mm: convert
mm-&gt;cpu_vm_cpumask into cpumask_var_t"), and is due to wrong ordering of
mm_init() vs mm_init_cpumask

Thomas wrote a patch to just fix the ordering of initialization, but I
hate the new double allocation in the fork path, so I ended up instead
doing some more radical surgery to clean it all up.

Reported-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Reported-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Cc: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
</entry>
<entry>
<title>Merge branch 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6</title>
<updated>2011-05-29T18:18:09Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-29T18:18:09Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=f310642123e0d32d919c60ca3fab5acd130c4ba3'/>
<id>urn:sha1:f310642123e0d32d919c60ca3fab5acd130c4ba3</id>
<content type='text'>
* 'idle-release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-idle-2.6:
  x86 idle: deprecate mwait_idle() and "idle=mwait" cmdline param
  x86 idle: deprecate "no-hlt" cmdline param
  x86 idle APM: deprecate CONFIG_APM_CPU_IDLE
  x86 idle floppy: deprecate disable_hlt()
  x86 idle: EXPORT_SYMBOL(default_idle, pm_idle) only when APM demands it
  x86 idle: clarify AMD erratum 400 workaround
  idle governor: Avoid lock acquisition to read pm_qos before entering idle
  cpuidle: menu: fixed wrapping timers at 4.294 seconds
</content>
</entry>
<entry>
<title>idle governor: Avoid lock acquisition to read pm_qos before entering idle</title>
<updated>2011-05-29T04:50:59Z</updated>
<author>
<name>Tim Chen</name>
<email>tim.c.chen@linux.intel.com</email>
</author>
<published>2011-02-11T20:49:04Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=333c5ae9948194428fe6c5ef5c088304fc98263b'/>
<id>urn:sha1:333c5ae9948194428fe6c5ef5c088304fc98263b</id>
<content type='text'>
Thanks to the reviews and comments by Rafael, James, Mark and Andi.
Here's version 2 of the patch incorporating your comments and also some
update to my previous patch comments.

I noticed that before entering idle state, the menu idle governor will
look up the current pm_qos target value according to the list of qos
requests received.  This look up currently needs the acquisition of a
lock to access the list of qos requests to find the qos target value,
slowing down the entrance into idle state due to contention by multiple
cpus to access this list.  The contention is severe when there are a lot
of cpus waking and going into idle.  For example, for a simple workload
that has 32 pair of processes ping ponging messages to each other, where
64 cpu cores are active in test system, I see the following profile with
37.82% of cpu cycles spent in contention of pm_qos_lock:

-     37.82%          swapper  [kernel.kallsyms]          [k]
_raw_spin_lock_irqsave
   - _raw_spin_lock_irqsave
      - 95.65% pm_qos_request
           menu_select
           cpuidle_idle_call
         - cpu_idle
              99.98% start_secondary

A better approach will be to cache the updated pm_qos target value so
reading it does not require lock acquisition as in the patch below.
With this patch the contention for pm_qos_lock is removed and I saw a
2.2X increase in throughput for my message passing workload.

cc: stable@kernel.org
Signed-off-by: Tim Chen &lt;tim.c.chen@linux.intel.com&gt;
Acked-by: Andi Kleen &lt;ak@linux.intel.com&gt;
Acked-by: James Bottomley &lt;James.Bottomley@suse.de&gt;
Acked-by: mark gross &lt;markgross@thegnar.org&gt;
Signed-off-by: Len Brown &lt;len.brown@intel.com&gt;
</content>
</entry>
<entry>
<title>Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2011-05-28T19:56:46Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-28T19:56:46Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=08a8b79600101fd6e13dcf05409b330e7f5b0478'/>
<id>urn:sha1:08a8b79600101fd6e13dcf05409b330e7f5b0478</id>
<content type='text'>
* 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  cpuset: Fix cpuset_cpus_allowed_fallback(), don't update tsk-&gt;rt.nr_cpus_allowed
  sched: Fix -&gt;min_vruntime calculation in dequeue_entity()
  sched: Fix ttwu() for __ARCH_WANT_INTERRUPTS_ON_CTXSW
  sched: More sched_domain iterations fixes
</content>
</entry>
<entry>
<title>Merge branch 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2011-05-28T19:56:32Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-28T19:56:32Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=1ba4b8cb94e59b17fd0142a509eb583695c36db6'/>
<id>urn:sha1:1ba4b8cb94e59b17fd0142a509eb583695c36db6</id>
<content type='text'>
* 'core-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  rcu: Start RCU kthreads in TASK_INTERRUPTIBLE state
  rcu: Remove waitqueue usage for cpu, node, and boost kthreads
  rcu: Avoid acquiring rcu_node locks in timer functions
  atomic: Add atomic_or()
  Documentation: Add statistics about nested locks
  rcu: Decrease memory-barrier usage based on semi-formal proof
  rcu: Make rcu_enter_nohz() pay attention to nesting
  rcu: Don't do reschedule unless in irq
  rcu: Remove old memory barriers from rcu_process_callbacks()
  rcu: Add memory barriers
  rcu: Fix unpaired rcu_irq_enter() from locking selftests
</content>
</entry>
<entry>
<title>Merge branch 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2011-05-28T19:55:55Z</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-05-28T19:55:55Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=c4a227d89f758e582fd167bb15245f2704de99ef'/>
<id>urn:sha1:c4a227d89f758e582fd167bb15245f2704de99ef</id>
<content type='text'>
* 'perf-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (25 commits)
  perf: Fix SIGIO handling
  perf top: Don't stop if no kernel symtab is found
  perf top: Handle kptr_restrict
  perf top: Remove unused macro
  perf events: initialize fd array to -1 instead of 0
  perf tools: Make sure kptr_restrict warnings fit 80 col terms
  perf tools: Fix build on older systems
  perf symbols: Handle /proc/sys/kernel/kptr_restrict
  perf: Remove duplicate headers
  ftrace: Add internal recursive checks
  tracing: Update btrfs's tracepoints to use u64 interface
  tracing: Add __print_symbolic_u64 to avoid warnings on 32bit machine
  ftrace: Set ops-&gt;flag to enabled even on static function tracing
  tracing: Have event with function tracer check error return
  ftrace: Have ftrace_startup() return failure code
  jump_label: Check entries limit in __jump_label_update
  ftrace/recordmcount: Avoid STT_FUNC symbols as base on ARM
  scripts/tags.sh: Add magic for trace-events for etags too
  scripts/tags.sh: Fix ctags for DEFINE_EVENT()
  x86/ftrace: Fix compiler warning in ftrace.c
  ...
</content>
</entry>
<entry>
<title>rcu: Start RCU kthreads in TASK_INTERRUPTIBLE state</title>
<updated>2011-05-28T15:41:56Z</updated>
<author>
<name>Paul E. McKenney</name>
<email>paul.mckenney@linaro.org</email>
</author>
<published>2011-05-25T20:42:06Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=cc3ce5176d83cd8ae1134f86e208ea758d6cb78e'/>
<id>urn:sha1:cc3ce5176d83cd8ae1134f86e208ea758d6cb78e</id>
<content type='text'>
Upon creation, kthreads are in TASK_UNINTERRUPTIBLE state, which can
result in softlockup warnings.  Because some of RCU's kthreads can
legitimately be idle indefinitely, start them in TASK_INTERRUPTIBLE
state in order to avoid those warnings.

Suggested-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Paul E. McKenney &lt;paul.mckenney@linaro.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Tested-by: Yinghai Lu &lt;yinghai@kernel.org&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>rcu: Remove waitqueue usage for cpu, node, and boost kthreads</title>
<updated>2011-05-28T15:41:52Z</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2011-05-20T23:06:29Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=08bca60a6912ad225254250c0a9c3a05b4152cfa'/>
<id>urn:sha1:08bca60a6912ad225254250c0a9c3a05b4152cfa</id>
<content type='text'>
It is not necessary to use waitqueues for the RCU kthreads because
we always know exactly which thread is to be awakened.  In addition,
wake_up() only issues an actual wakeup when there is a thread waiting on
the queue, which was why there was an extra explicit wake_up_process()
to get the RCU kthreads started.

Eliminating the waitqueues (and wake_up()) in favor of wake_up_process()
eliminates the need for the initial wake_up_process() and also shrinks
the data structure size a bit.  The wakeup logic is placed in a new
rcu_wait() macro.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
<entry>
<title>rcu: Avoid acquiring rcu_node locks in timer functions</title>
<updated>2011-05-28T15:41:49Z</updated>
<author>
<name>Paul E. McKenney</name>
<email>paul.mckenney@linaro.org</email>
</author>
<published>2011-05-11T12:41:41Z</published>
<link rel='alternate' type='text/html' href='https://git.stealer.net/cgit.cgi/user/sven/linux.git/commit/?id=8826f3b0397562eee6f8785d548be9dfdb169100'/>
<id>urn:sha1:8826f3b0397562eee6f8785d548be9dfdb169100</id>
<content type='text'>
This commit switches manipulations of the rcu_node -&gt;wakemask field
to atomic operations, which allows rcu_cpu_kthread_timer() to avoid
acquiring the rcu_node lock.  This should avoid the following lockdep
splat reported by Valdis Kletnieks:

[   12.872150] usb 1-4: new high speed USB device number 3 using ehci_hcd
[   12.986667] usb 1-4: New USB device found, idVendor=413c, idProduct=2513
[   12.986679] usb 1-4: New USB device strings: Mfr=0, Product=0, SerialNumber=0
[   12.987691] hub 1-4:1.0: USB hub found
[   12.987877] hub 1-4:1.0: 3 ports detected
[   12.996372] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input10
[   13.071471] udevadm used greatest stack depth: 3984 bytes left
[   13.172129]
[   13.172130] =======================================================
[   13.172425] [ INFO: possible circular locking dependency detected ]
[   13.172650] 2.6.39-rc6-mmotm0506 #1
[   13.172773] -------------------------------------------------------
[   13.172997] blkid/267 is trying to acquire lock:
[   13.173009]  (&amp;p-&gt;pi_lock){-.-.-.}, at: [&lt;ffffffff81032d8f&gt;] try_to_wake_up+0x29/0x1aa
[   13.173009]
[   13.173009] but task is already holding lock:
[   13.173009]  (rcu_node_level_0){..-...}, at: [&lt;ffffffff810901cc&gt;] rcu_cpu_kthread_timer+0x27/0x58
[   13.173009]
[   13.173009] which lock already depends on the new lock.
[   13.173009]
[   13.173009]
[   13.173009] the existing dependency chain (in reverse order) is:
[   13.173009]
[   13.173009] -&gt; #2 (rcu_node_level_0){..-...}:
[   13.173009]        [&lt;ffffffff810679b9&gt;] check_prevs_add+0x8b/0x104
[   13.173009]        [&lt;ffffffff81067da1&gt;] validate_chain+0x36f/0x3ab
[   13.173009]        [&lt;ffffffff8106846b&gt;] __lock_acquire+0x369/0x3e2
[   13.173009]        [&lt;ffffffff81068a0f&gt;] lock_acquire+0xfc/0x14c
[   13.173009]        [&lt;ffffffff815697f1&gt;] _raw_spin_lock+0x36/0x45
[   13.173009]        [&lt;ffffffff81090794&gt;] rcu_read_unlock_special+0x8c/0x1d5
[   13.173009]        [&lt;ffffffff8109092c&gt;] __rcu_read_unlock+0x4f/0xd7
[   13.173009]        [&lt;ffffffff81027bd3&gt;] rcu_read_unlock+0x21/0x23
[   13.173009]        [&lt;ffffffff8102cc34&gt;] cpuacct_charge+0x6c/0x75
[   13.173009]        [&lt;ffffffff81030cc6&gt;] update_curr+0x101/0x12e
[   13.173009]        [&lt;ffffffff810311d0&gt;] check_preempt_wakeup+0xf7/0x23b
[   13.173009]        [&lt;ffffffff8102acb3&gt;] check_preempt_curr+0x2b/0x68
[   13.173009]        [&lt;ffffffff81031d40&gt;] ttwu_do_wakeup+0x76/0x128
[   13.173009]        [&lt;ffffffff81031e49&gt;] ttwu_do_activate.constprop.63+0x57/0x5c
[   13.173009]        [&lt;ffffffff81031e96&gt;] scheduler_ipi+0x48/0x5d
[   13.173009]        [&lt;ffffffff810177d5&gt;] smp_reschedule_interrupt+0x16/0x18
[   13.173009]        [&lt;ffffffff815710f3&gt;] reschedule_interrupt+0x13/0x20
[   13.173009]        [&lt;ffffffff810b66d1&gt;] rcu_read_unlock+0x21/0x23
[   13.173009]        [&lt;ffffffff810b739c&gt;] find_get_page+0xa9/0xb9
[   13.173009]        [&lt;ffffffff810b8b48&gt;] filemap_fault+0x6a/0x34d
[   13.173009]        [&lt;ffffffff810d1a25&gt;] __do_fault+0x54/0x3e6
[   13.173009]        [&lt;ffffffff810d447a&gt;] handle_pte_fault+0x12c/0x1ed
[   13.173009]        [&lt;ffffffff810d48f7&gt;] handle_mm_fault+0x1cd/0x1e0
[   13.173009]        [&lt;ffffffff8156cfee&gt;] do_page_fault+0x42d/0x5de
[   13.173009]        [&lt;ffffffff8156a75f&gt;] page_fault+0x1f/0x30
[   13.173009]
[   13.173009] -&gt; #1 (&amp;rq-&gt;lock){-.-.-.}:
[   13.173009]        [&lt;ffffffff810679b9&gt;] check_prevs_add+0x8b/0x104
[   13.173009]        [&lt;ffffffff81067da1&gt;] validate_chain+0x36f/0x3ab
[   13.173009]        [&lt;ffffffff8106846b&gt;] __lock_acquire+0x369/0x3e2
[   13.173009]        [&lt;ffffffff81068a0f&gt;] lock_acquire+0xfc/0x14c
[   13.173009]        [&lt;ffffffff815697f1&gt;] _raw_spin_lock+0x36/0x45
[   13.173009]        [&lt;ffffffff81027e19&gt;] __task_rq_lock+0x8b/0xd3
[   13.173009]        [&lt;ffffffff81032f7f&gt;] wake_up_new_task+0x41/0x108
[   13.173009]        [&lt;ffffffff810376c3&gt;] do_fork+0x265/0x33f
[   13.173009]        [&lt;ffffffff81007d02&gt;] kernel_thread+0x6b/0x6d
[   13.173009]        [&lt;ffffffff8153a9dd&gt;] rest_init+0x21/0xd2
[   13.173009]        [&lt;ffffffff81b1db4f&gt;] start_kernel+0x3bb/0x3c6
[   13.173009]        [&lt;ffffffff81b1d29f&gt;] x86_64_start_reservations+0xaf/0xb3
[   13.173009]        [&lt;ffffffff81b1d393&gt;] x86_64_start_kernel+0xf0/0xf7
[   13.173009]
[   13.173009] -&gt; #0 (&amp;p-&gt;pi_lock){-.-.-.}:
[   13.173009]        [&lt;ffffffff81067788&gt;] check_prev_add+0x68/0x20e
[   13.173009]        [&lt;ffffffff810679b9&gt;] check_prevs_add+0x8b/0x104
[   13.173009]        [&lt;ffffffff81067da1&gt;] validate_chain+0x36f/0x3ab
[   13.173009]        [&lt;ffffffff8106846b&gt;] __lock_acquire+0x369/0x3e2
[   13.173009]        [&lt;ffffffff81068a0f&gt;] lock_acquire+0xfc/0x14c
[   13.173009]        [&lt;ffffffff815698ea&gt;] _raw_spin_lock_irqsave+0x44/0x57
[   13.173009]        [&lt;ffffffff81032d8f&gt;] try_to_wake_up+0x29/0x1aa
[   13.173009]        [&lt;ffffffff81032f3c&gt;] wake_up_process+0x10/0x12
[   13.173009]        [&lt;ffffffff810901e9&gt;] rcu_cpu_kthread_timer+0x44/0x58
[   13.173009]        [&lt;ffffffff81045286&gt;] call_timer_fn+0xac/0x1e9
[   13.173009]        [&lt;ffffffff8104556d&gt;] run_timer_softirq+0x1aa/0x1f2
[   13.173009]        [&lt;ffffffff8103e487&gt;] __do_softirq+0x109/0x26a
[   13.173009]        [&lt;ffffffff8157144c&gt;] call_softirq+0x1c/0x30
[   13.173009]        [&lt;ffffffff81003207&gt;] do_softirq+0x44/0xf1
[   13.173009]        [&lt;ffffffff8103e8b9&gt;] irq_exit+0x58/0xc8
[   13.173009]        [&lt;ffffffff81017f5a&gt;] smp_apic_timer_interrupt+0x79/0x87
[   13.173009]        [&lt;ffffffff81570fd3&gt;] apic_timer_interrupt+0x13/0x20
[   13.173009]        [&lt;ffffffff810bd51a&gt;] get_page_from_freelist+0x2aa/0x310
[   13.173009]        [&lt;ffffffff810bdf03&gt;] __alloc_pages_nodemask+0x178/0x243
[   13.173009]        [&lt;ffffffff8101fe2f&gt;] pte_alloc_one+0x1e/0x3a
[   13.173009]        [&lt;ffffffff810d27fe&gt;] __pte_alloc+0x22/0x14b
[   13.173009]        [&lt;ffffffff810d48a8&gt;] handle_mm_fault+0x17e/0x1e0
[   13.173009]        [&lt;ffffffff8156cfee&gt;] do_page_fault+0x42d/0x5de
[   13.173009]        [&lt;ffffffff8156a75f&gt;] page_fault+0x1f/0x30
[   13.173009]
[   13.173009] other info that might help us debug this:
[   13.173009]
[   13.173009] Chain exists of:
[   13.173009]   &amp;p-&gt;pi_lock --&gt; &amp;rq-&gt;lock --&gt; rcu_node_level_0
[   13.173009]
[   13.173009]  Possible unsafe locking scenario:
[   13.173009]
[   13.173009]        CPU0                    CPU1
[   13.173009]        ----                    ----
[   13.173009]   lock(rcu_node_level_0);
[   13.173009]                                lock(&amp;rq-&gt;lock);
[   13.173009]                                lock(rcu_node_level_0);
[   13.173009]   lock(&amp;p-&gt;pi_lock);
[   13.173009]
[   13.173009]  *** DEADLOCK ***
[   13.173009]
[   13.173009] 3 locks held by blkid/267:
[   13.173009]  #0:  (&amp;mm-&gt;mmap_sem){++++++}, at: [&lt;ffffffff8156cdb4&gt;] do_page_fault+0x1f3/0x5de
[   13.173009]  #1:  (&amp;yield_timer){+.-...}, at: [&lt;ffffffff810451da&gt;] call_timer_fn+0x0/0x1e9
[   13.173009]  #2:  (rcu_node_level_0){..-...}, at: [&lt;ffffffff810901cc&gt;] rcu_cpu_kthread_timer+0x27/0x58
[   13.173009]
[   13.173009] stack backtrace:
[   13.173009] Pid: 267, comm: blkid Not tainted 2.6.39-rc6-mmotm0506 #1
[   13.173009] Call Trace:
[   13.173009]  &lt;IRQ&gt;  [&lt;ffffffff8154a529&gt;] print_circular_bug+0xc8/0xd9
[   13.173009]  [&lt;ffffffff81067788&gt;] check_prev_add+0x68/0x20e
[   13.173009]  [&lt;ffffffff8100c861&gt;] ? save_stack_trace+0x28/0x46
[   13.173009]  [&lt;ffffffff810679b9&gt;] check_prevs_add+0x8b/0x104
[   13.173009]  [&lt;ffffffff81067da1&gt;] validate_chain+0x36f/0x3ab
[   13.173009]  [&lt;ffffffff8106846b&gt;] __lock_acquire+0x369/0x3e2
[   13.173009]  [&lt;ffffffff81032d8f&gt;] ? try_to_wake_up+0x29/0x1aa
[   13.173009]  [&lt;ffffffff81068a0f&gt;] lock_acquire+0xfc/0x14c
[   13.173009]  [&lt;ffffffff81032d8f&gt;] ? try_to_wake_up+0x29/0x1aa
[   13.173009]  [&lt;ffffffff810901a5&gt;] ? rcu_check_quiescent_state+0x82/0x82
[   13.173009]  [&lt;ffffffff815698ea&gt;] _raw_spin_lock_irqsave+0x44/0x57
[   13.173009]  [&lt;ffffffff81032d8f&gt;] ? try_to_wake_up+0x29/0x1aa
[   13.173009]  [&lt;ffffffff81032d8f&gt;] try_to_wake_up+0x29/0x1aa
[   13.173009]  [&lt;ffffffff810901a5&gt;] ? rcu_check_quiescent_state+0x82/0x82
[   13.173009]  [&lt;ffffffff81032f3c&gt;] wake_up_process+0x10/0x12
[   13.173009]  [&lt;ffffffff810901e9&gt;] rcu_cpu_kthread_timer+0x44/0x58
[   13.173009]  [&lt;ffffffff810901a5&gt;] ? rcu_check_quiescent_state+0x82/0x82
[   13.173009]  [&lt;ffffffff81045286&gt;] call_timer_fn+0xac/0x1e9
[   13.173009]  [&lt;ffffffff810451da&gt;] ? del_timer+0x75/0x75
[   13.173009]  [&lt;ffffffff810901a5&gt;] ? rcu_check_quiescent_state+0x82/0x82
[   13.173009]  [&lt;ffffffff8104556d&gt;] run_timer_softirq+0x1aa/0x1f2
[   13.173009]  [&lt;ffffffff8103e487&gt;] __do_softirq+0x109/0x26a
[   13.173009]  [&lt;ffffffff8106365f&gt;] ? tick_dev_program_event+0x37/0xf6
[   13.173009]  [&lt;ffffffff810a0e4a&gt;] ? time_hardirqs_off+0x1b/0x2f
[   13.173009]  [&lt;ffffffff8157144c&gt;] call_softirq+0x1c/0x30
[   13.173009]  [&lt;ffffffff81003207&gt;] do_softirq+0x44/0xf1
[   13.173009]  [&lt;ffffffff8103e8b9&gt;] irq_exit+0x58/0xc8
[   13.173009]  [&lt;ffffffff81017f5a&gt;] smp_apic_timer_interrupt+0x79/0x87
[   13.173009]  [&lt;ffffffff81570fd3&gt;] apic_timer_interrupt+0x13/0x20
[   13.173009]  &lt;EOI&gt;  [&lt;ffffffff810bd384&gt;] ? get_page_from_freelist+0x114/0x310
[   13.173009]  [&lt;ffffffff810bd51a&gt;] ? get_page_from_freelist+0x2aa/0x310
[   13.173009]  [&lt;ffffffff812220e7&gt;] ? clear_page_c+0x7/0x10
[   13.173009]  [&lt;ffffffff810bd1ef&gt;] ? prep_new_page+0x14c/0x1cd
[   13.173009]  [&lt;ffffffff810bd51a&gt;] get_page_from_freelist+0x2aa/0x310
[   13.173009]  [&lt;ffffffff810bdf03&gt;] __alloc_pages_nodemask+0x178/0x243
[   13.173009]  [&lt;ffffffff810d46b9&gt;] ? __pmd_alloc+0x87/0x99
[   13.173009]  [&lt;ffffffff8101fe2f&gt;] pte_alloc_one+0x1e/0x3a
[   13.173009]  [&lt;ffffffff810d46b9&gt;] ? __pmd_alloc+0x87/0x99
[   13.173009]  [&lt;ffffffff810d27fe&gt;] __pte_alloc+0x22/0x14b
[   13.173009]  [&lt;ffffffff810d48a8&gt;] handle_mm_fault+0x17e/0x1e0
[   13.173009]  [&lt;ffffffff8156cfee&gt;] do_page_fault+0x42d/0x5de
[   13.173009]  [&lt;ffffffff810d915f&gt;] ? sys_brk+0x32/0x10c
[   13.173009]  [&lt;ffffffff810a0e4a&gt;] ? time_hardirqs_off+0x1b/0x2f
[   13.173009]  [&lt;ffffffff81065c4f&gt;] ? trace_hardirqs_off_caller+0x3f/0x9c
[   13.173009]  [&lt;ffffffff812235dd&gt;] ? trace_hardirqs_off_thunk+0x3a/0x3c
[   13.173009]  [&lt;ffffffff8156a75f&gt;] page_fault+0x1f/0x30
[   14.010075] usb 5-1: new full speed USB device number 2 using uhci_hcd

Reported-by: Valdis Kletnieks &lt;Valdis.Kletnieks@vt.edu&gt;
Signed-off-by: Paul E. McKenney &lt;paul.mckenney@linaro.org&gt;
Signed-off-by: Paul E. McKenney &lt;paulmck@linux.vnet.ibm.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
</entry>
</feed>
