<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/kernel/workqueue.c, branch v3.2.9-rt16</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>hotplug-stuff.patch</title>
<updated>2012-03-06T16:17:59+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-11-04T17:58:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4f6a0c32d2f551fe7ab97d146622ff004004bad9'/>
<id>4f6a0c32d2f551fe7ab97d146622ff004004bad9</id>
<content type='text'>
Do not take lock for non handled cases (might be atomic context)

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Do not take lock for non handled cases (might be atomic context)

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>workqueue: Use get_cpu_light() in flush_gcwq()</title>
<updated>2012-03-06T16:17:59+00:00</updated>
<author>
<name>Yong Zhang</name>
<email>yong.zhang0@gmail.com</email>
</author>
<published>2011-10-16T10:56:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ea7ae22cdef5c8b7ff1cb272ad4f192d0cc2e2aa'/>
<id>ea7ae22cdef5c8b7ff1cb272ad4f192d0cc2e2aa</id>
<content type='text'>
BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
in_atomic(): 1, irqs_disabled(): 0, pid: 1739, name: bash
Pid: 1739, comm: bash Not tainted 3.0.6-rt17-00284-gb76d419 #3
Call Trace:
 [&lt;c06e3b5d&gt;] ? printk+0x1d/0x20
 [&lt;c01390b6&gt;] __might_sleep+0xe6/0x110
 [&lt;c06e633c&gt;] rt_spin_lock+0x1c/0x30
 [&lt;c01655a6&gt;] flush_gcwq+0x236/0x320
 [&lt;c021c651&gt;] ? kfree+0xe1/0x1a0
 [&lt;c05b7178&gt;] ? __cpufreq_remove_dev+0xf8/0x260
 [&lt;c0183fad&gt;] ? rt_down_write+0xd/0x10
 [&lt;c06cd91e&gt;] workqueue_cpu_down_callback+0x26/0x2d
 [&lt;c06e9d65&gt;] notifier_call_chain+0x45/0x60
 [&lt;c0171cfe&gt;] __raw_notifier_call_chain+0x1e/0x30
 [&lt;c014c9b4&gt;] __cpu_notify+0x24/0x40
 [&lt;c06cbc6f&gt;] _cpu_down+0xdf/0x330
 [&lt;c06cbef0&gt;] cpu_down+0x30/0x50
 [&lt;c06cd6b0&gt;] store_online+0x50/0xa7
 [&lt;c06cd660&gt;] ? acpi_os_map_memory+0xec/0xec
 [&lt;c04f2faa&gt;] sysdev_store+0x2a/0x40
 [&lt;c02887a4&gt;] sysfs_write_file+0xa4/0x100
 [&lt;c0229ab2&gt;] vfs_write+0xa2/0x170
 [&lt;c0288700&gt;] ? sysfs_poll+0x90/0x90
 [&lt;c0229d92&gt;] sys_write+0x42/0x70
 [&lt;c06ecedf&gt;] sysenter_do_call+0x12/0x2d
CPU 1 is now offline
SMP alternatives: switching to UP code
SMP alternatives: switching to SMP code
Booting Node 0 Processor 1 APIC 0x1
smpboot cpu 1: start_ip = 9b000
Initializing CPU#1
BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: kworker/0:0
Pid: 0, comm: kworker/0:0 Not tainted 3.0.6-rt17-00284-gb76d419 #3
Call Trace:
 [&lt;c06e3b5d&gt;] ? printk+0x1d/0x20
 [&lt;c01390b6&gt;] __might_sleep+0xe6/0x110
 [&lt;c06e633c&gt;] rt_spin_lock+0x1c/0x30
 [&lt;c06cd85b&gt;] workqueue_cpu_up_callback+0x56/0xf3
 [&lt;c06e9d65&gt;] notifier_call_chain+0x45/0x60
 [&lt;c0171cfe&gt;] __raw_notifier_call_chain+0x1e/0x30
 [&lt;c014c9b4&gt;] __cpu_notify+0x24/0x40
 [&lt;c014c9ec&gt;] cpu_notify+0x1c/0x20
 [&lt;c06e1d43&gt;] notify_cpu_starting+0x1e/0x20
 [&lt;c06e0aad&gt;] smp_callin+0xfb/0x10e
 [&lt;c06e0ad9&gt;] start_secondary+0x19/0xd7
NMI watchdog enabled, takes one hw-pmu counter.
Switched to NOHz mode on CPU #1

Signed-off-by: Yong Zhang &lt;yong.zhang0@gmail.com&gt;
Link: http://lkml.kernel.org/r/1318762607-2261-5-git-send-email-yong.zhang0@gmail.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
in_atomic(): 1, irqs_disabled(): 0, pid: 1739, name: bash
Pid: 1739, comm: bash Not tainted 3.0.6-rt17-00284-gb76d419 #3
Call Trace:
 [&lt;c06e3b5d&gt;] ? printk+0x1d/0x20
 [&lt;c01390b6&gt;] __might_sleep+0xe6/0x110
 [&lt;c06e633c&gt;] rt_spin_lock+0x1c/0x30
 [&lt;c01655a6&gt;] flush_gcwq+0x236/0x320
 [&lt;c021c651&gt;] ? kfree+0xe1/0x1a0
 [&lt;c05b7178&gt;] ? __cpufreq_remove_dev+0xf8/0x260
 [&lt;c0183fad&gt;] ? rt_down_write+0xd/0x10
 [&lt;c06cd91e&gt;] workqueue_cpu_down_callback+0x26/0x2d
 [&lt;c06e9d65&gt;] notifier_call_chain+0x45/0x60
 [&lt;c0171cfe&gt;] __raw_notifier_call_chain+0x1e/0x30
 [&lt;c014c9b4&gt;] __cpu_notify+0x24/0x40
 [&lt;c06cbc6f&gt;] _cpu_down+0xdf/0x330
 [&lt;c06cbef0&gt;] cpu_down+0x30/0x50
 [&lt;c06cd6b0&gt;] store_online+0x50/0xa7
 [&lt;c06cd660&gt;] ? acpi_os_map_memory+0xec/0xec
 [&lt;c04f2faa&gt;] sysdev_store+0x2a/0x40
 [&lt;c02887a4&gt;] sysfs_write_file+0xa4/0x100
 [&lt;c0229ab2&gt;] vfs_write+0xa2/0x170
 [&lt;c0288700&gt;] ? sysfs_poll+0x90/0x90
 [&lt;c0229d92&gt;] sys_write+0x42/0x70
 [&lt;c06ecedf&gt;] sysenter_do_call+0x12/0x2d
CPU 1 is now offline
SMP alternatives: switching to UP code
SMP alternatives: switching to SMP code
Booting Node 0 Processor 1 APIC 0x1
smpboot cpu 1: start_ip = 9b000
Initializing CPU#1
BUG: sleeping function called from invalid context at kernel/rtmutex.c:645
in_atomic(): 1, irqs_disabled(): 1, pid: 0, name: kworker/0:0
Pid: 0, comm: kworker/0:0 Not tainted 3.0.6-rt17-00284-gb76d419 #3
Call Trace:
 [&lt;c06e3b5d&gt;] ? printk+0x1d/0x20
 [&lt;c01390b6&gt;] __might_sleep+0xe6/0x110
 [&lt;c06e633c&gt;] rt_spin_lock+0x1c/0x30
 [&lt;c06cd85b&gt;] workqueue_cpu_up_callback+0x56/0xf3
 [&lt;c06e9d65&gt;] notifier_call_chain+0x45/0x60
 [&lt;c0171cfe&gt;] __raw_notifier_call_chain+0x1e/0x30
 [&lt;c014c9b4&gt;] __cpu_notify+0x24/0x40
 [&lt;c014c9ec&gt;] cpu_notify+0x1c/0x20
 [&lt;c06e1d43&gt;] notify_cpu_starting+0x1e/0x20
 [&lt;c06e0aad&gt;] smp_callin+0xfb/0x10e
 [&lt;c06e0ad9&gt;] start_secondary+0x19/0xd7
NMI watchdog enabled, takes one hw-pmu counter.
Switched to NOHz mode on CPU #1

Signed-off-by: Yong Zhang &lt;yong.zhang0@gmail.com&gt;
Link: http://lkml.kernel.org/r/1318762607-2261-5-git-send-email-yong.zhang0@gmail.com
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>workqueue: Fix PF_THREAD_BOUND abuse</title>
<updated>2012-03-06T16:17:59+00:00</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2011-10-03T10:43:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5402c88b7b0b1c724f0b5228693ce0526a4eaef8'/>
<id>5402c88b7b0b1c724f0b5228693ce0526a4eaef8</id>
<content type='text'>
PF_THREAD_BOUND is set by kthread_bind() and means the thread is bound
to a particular cpu for correctness. The workqueue code abuses this
flag and blindly sets it for all created threads, including those that
are free to migrate.

Restore the original semantics now that the worst abuse in the
cpu-hotplug path are gone. The only icky bit is the rescue thread for
per-cpu workqueues, this cannot use kthread_bind() but will use
set_cpus_allowed_ptr() to migrate itself to the desired cpu.

Set and clear PF_THREAD_BOUND manually here.

XXX: I think worker_maybe_bind_and_lock()/worker_unbind_and_unlock()
should also do a get_online_cpus(), this would likely allow us to
remove the while loop.

XXX: should probably repurpose GCWQ_DISASSOCIATED to warn on adding
works after CPU_DOWN_PREPARE -- its dual use to mark unbound gcwqs is
a tad annoying though.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
PF_THREAD_BOUND is set by kthread_bind() and means the thread is bound
to a particular cpu for correctness. The workqueue code abuses this
flag and blindly sets it for all created threads, including those that
are free to migrate.

Restore the original semantics now that the worst abuse in the
cpu-hotplug path are gone. The only icky bit is the rescue thread for
per-cpu workqueues, this cannot use kthread_bind() but will use
set_cpus_allowed_ptr() to migrate itself to the desired cpu.

Set and clear PF_THREAD_BOUND manually here.

XXX: I think worker_maybe_bind_and_lock()/worker_unbind_and_unlock()
should also do a get_online_cpus(), this would likely allow us to
remove the while loop.

XXX: should probably repurpose GCWQ_DISASSOCIATED to warn on adding
works after CPU_DOWN_PREPARE -- its dual use to mark unbound gcwqs is
a tad annoying though.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>workqueue: Fix cpuhotplug trainwreck</title>
<updated>2012-03-06T16:17:58+00:00</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2011-09-30T09:57:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=08ed6188e6e73c5558be17e527f84b10e0b95be9'/>
<id>08ed6188e6e73c5558be17e527f84b10e0b95be9</id>
<content type='text'>
The current workqueue code does crazy stuff on cpu unplug, it relies on
forced affine breakage, thereby violating per-cpu expectations. Worse,
it tries to re-attach to a cpu if the thing comes up again before all
previously queued works are finished. This breaks (admittedly bonkers)
cpu-hotplug use that relies on a down-up cycle to push all usage away.

Introduce a new WQ_NON_AFFINE flag that indicates a per-cpu workqueue
will not respect cpu affinity and use this to migrate all its pending
works to whatever cpu is doing cpu-down.

This also adds a warning for queue_on_cpu() users which warns when its
used on WQ_NON_AFFINE workqueues for the API implies you care about
what cpu things are ran on when such workqueues cannot guarantee this.

For the rest, simply flush all per-cpu works and don't mess about.
This also means that currently all workqueues that are manually
flushing things on cpu-down in order to provide the per-cpu guarantee
no longer need to do so.

In short, we tell the WQ what we want it to do, provide validation for
this and loose ~250 lines of code.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The current workqueue code does crazy stuff on cpu unplug, it relies on
forced affine breakage, thereby violating per-cpu expectations. Worse,
it tries to re-attach to a cpu if the thing comes up again before all
previously queued works are finished. This breaks (admittedly bonkers)
cpu-hotplug use that relies on a down-up cycle to push all usage away.

Introduce a new WQ_NON_AFFINE flag that indicates a per-cpu workqueue
will not respect cpu affinity and use this to migrate all its pending
works to whatever cpu is doing cpu-down.

This also adds a warning for queue_on_cpu() users which warns when its
used on WQ_NON_AFFINE workqueues for the API implies you care about
what cpu things are ran on when such workqueues cannot guarantee this.

For the rest, simply flush all per-cpu works and don't mess about.
This also means that currently all workqueues that are manually
flushing things on cpu-down in order to provide the per-cpu guarantee
no longer need to do so.

In short, we tell the WQ what we want it to do, provide validation for
this and loose ~250 lines of code.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>workqueue-use-get-cpu-light.patch</title>
<updated>2012-03-06T16:17:58+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-07-17T19:42:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=64c120f745313db167bcbf3035e169933ad663f8'/>
<id>64c120f745313db167bcbf3035e169933ad663f8</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>workqueue-avoid-the-lock-in-cpu-dying.patch</title>
<updated>2012-03-06T16:17:45+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-06-24T18:39:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=88967daf0665f0cf9d7f0e1b7d3f32a277a68a36'/>
<id>88967daf0665f0cf9d7f0e1b7d3f32a277a68a36</id>
<content type='text'>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>sched: Distangle worker accounting from rq-%3Elock</title>
<updated>2012-03-06T16:17:26+00:00</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2011-06-22T17:47:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=4617483f4e1a5b4ddc4c5eacfcc04efecc629ba1'/>
<id>4617483f4e1a5b4ddc4c5eacfcc04efecc629ba1</id>
<content type='text'>
The worker accounting for cpu bound workers is plugged into the core
scheduler code and the wakeup code. This is not a hard requirement and
can be avoided by keeping track of the state in the workqueue code
itself.

Keep track of the sleeping state in the worker itself and call the
notifier before entering the core scheduler. There might be false
positives when the task is woken between that call and actually
scheduling, but that's not really different from scheduling and being
woken immediately after switching away. There is also no harm from
updating nr_running when the task returns from scheduling instead of
accounting it in the wakeup code.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The worker accounting for cpu bound workers is plugged into the core
scheduler code and the wakeup code. This is not a hard requirement and
can be avoided by keeping track of the state in the workqueue code
itself.

Keep track of the sleeping state in the worker itself and call the
notifier before entering the core scheduler. There might be false
positives when the task is woken between that call and actually
scheduling, but that's not really different from scheduling and being
woken immediately after switching away. There is also no harm from
updating nr_running when the task returns from scheduling instead of
accounting it in the wakeup code.

Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Peter Zijlstra &lt;peterz@infradead.org&gt;
Cc: Tejun Heo &lt;tj@kernel.org&gt;
Cc: Jens Axboe &lt;axboe@kernel.dk&gt;
Cc: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Link: http://lkml.kernel.org/r/20110622174919.135236139@linutronix.de
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>kernel: Map most files to use export.h instead of module.h</title>
<updated>2011-10-31T13:20:12+00:00</updated>
<author>
<name>Paul Gortmaker</name>
<email>paul.gortmaker@windriver.com</email>
</author>
<published>2011-05-23T18:51:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9984de1a5a8a96275fcab818f7419af5a3c86e71'/>
<id>9984de1a5a8a96275fcab818f7419af5a3c86e71</id>
<content type='text'>
The changed files were only including linux/module.h for the
EXPORT_SYMBOL infrastructure, and nothing else.  Revector them
onto the isolated export header for faster compile times.

Nothing to see here but a whole lot of instances of:

  -#include &lt;linux/module.h&gt;
  +#include &lt;linux/export.h&gt;

This commit is only changing the kernel dir; next targets
will probably be mm, fs, the arch dirs, etc.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The changed files were only including linux/module.h for the
EXPORT_SYMBOL infrastructure, and nothing else.  Revector them
onto the isolated export header for faster compile times.

Nothing to see here but a whole lot of instances of:

  -#include &lt;linux/module.h&gt;
  +#include &lt;linux/export.h&gt;

This commit is only changing the kernel dir; next targets
will probably be mm, fs, the arch dirs, etc.

Signed-off-by: Paul Gortmaker &lt;paul.gortmaker@windriver.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>workqueue: lock cwq access in drain_workqueue</title>
<updated>2011-09-15T01:09:38+00:00</updated>
<author>
<name>Thomas Tuttle</name>
<email>ttuttle@chromium.org</email>
</author>
<published>2011-09-14T23:22:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fa2563e41c3d6d6e8af437643981ed28ae0cb56d'/>
<id>fa2563e41c3d6d6e8af437643981ed28ae0cb56d</id>
<content type='text'>
Take cwq-&gt;gcwq-&gt;lock to avoid racing between drain_workqueue checking to
make sure the workqueues are empty and cwq_dec_nr_in_flight decrementing
and then incrementing nr_active when it activates a delayed work.

We discovered this when a corner case in one of our drivers resulted in
us trying to destroy a workqueue in which the remaining work would
always requeue itself again in the same workqueue.  We would hit this
race condition and trip the BUG_ON on workqueue.c:3080.

Signed-off-by: Thomas Tuttle &lt;ttuttle@chromium.org&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Take cwq-&gt;gcwq-&gt;lock to avoid racing between drain_workqueue checking to
make sure the workqueues are empty and cwq_dec_nr_in_flight decrementing
and then incrementing nr_active when it activates a delayed work.

We discovered this when a corner case in one of our drivers resulted in
us trying to destroy a workqueue in which the remaining work would
always requeue itself again in the same workqueue.  We would hit this
race condition and trip the BUG_ON on workqueue.c:3080.

Signed-off-by: Thomas Tuttle &lt;ttuttle@chromium.org&gt;
Acked-by: Tejun Heo &lt;tj@kernel.org&gt;
Cc: &lt;stable@kernel.org&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Signed-off-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'for-3.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq</title>
<updated>2011-07-22T22:07:15+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2011-07-22T22:07:15+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5a791ea4fa4495f7136679cb5366f6544148e613'/>
<id>5a791ea4fa4495f7136679cb5366f6544148e613</id>
<content type='text'>
* 'for-3.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: separate out drain_workqueue() from destroy_workqueue()
  workqueue: remove cancel_rearming_delayed_work[queue]()
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'for-3.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: separate out drain_workqueue() from destroy_workqueue()
  workqueue: remove cancel_rearming_delayed_work[queue]()
</pre>
</div>
</content>
</entry>
</feed>
