Commit 45141eea authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'for-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq

Pull workqueue updates from Tejun Heo:
 "Workqueue now prints debug information at the end of sysrq-t which
  should be helpful when tracking down suspected workqueue stalls.  It
  only prints out the ones with something currently going on so it
  shouldn't add much output in most cases"

* 'for-4.1' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  workqueue: Reorder sysfs code
  percpu: Fix trivial typos in comments
  workqueue: dump workqueues on sysrq-t
  workqueue: keep track of the flushing task and pool manager
  workqueue: make the workqueues list RCU walkable
parents 8954672d 6ba94429
...@@ -275,6 +275,7 @@ static struct sysrq_key_op sysrq_showregs_op = { ...@@ -275,6 +275,7 @@ static struct sysrq_key_op sysrq_showregs_op = {
static void sysrq_handle_showstate(int key) static void sysrq_handle_showstate(int key)
{ {
show_state(); show_state();
show_workqueue_state();
} }
static struct sysrq_key_op sysrq_showstate_op = { static struct sysrq_key_op sysrq_showstate_op = {
.handler = sysrq_handle_showstate, .handler = sysrq_handle_showstate,
......
...@@ -454,6 +454,7 @@ extern bool workqueue_congested(int cpu, struct workqueue_struct *wq); ...@@ -454,6 +454,7 @@ extern bool workqueue_congested(int cpu, struct workqueue_struct *wq);
extern unsigned int work_busy(struct work_struct *work); extern unsigned int work_busy(struct work_struct *work);
extern __printf(1, 2) void set_worker_desc(const char *fmt, ...); extern __printf(1, 2) void set_worker_desc(const char *fmt, ...);
extern void print_worker_info(const char *log_lvl, struct task_struct *task); extern void print_worker_info(const char *log_lvl, struct task_struct *task);
extern void show_workqueue_state(void);
/** /**
* queue_work - queue work on a workqueue * queue_work - queue work on a workqueue
......
This diff is collapsed.
...@@ -1310,7 +1310,7 @@ bool is_kernel_percpu_address(unsigned long addr) ...@@ -1310,7 +1310,7 @@ bool is_kernel_percpu_address(unsigned long addr)
* and, from the second one, the backing allocator (currently either vm or * and, from the second one, the backing allocator (currently either vm or
* km) provides translation. * km) provides translation.
* *
* The addr can be tranlated simply without checking if it falls into the * The addr can be translated simply without checking if it falls into the
* first chunk. But the current code reflects better how percpu allocator * first chunk. But the current code reflects better how percpu allocator
* actually works, and the verification can discover both bugs in percpu * actually works, and the verification can discover both bugs in percpu
* allocator itself and per_cpu_ptr_to_phys() callers. So we keep current * allocator itself and per_cpu_ptr_to_phys() callers. So we keep current
...@@ -1762,7 +1762,7 @@ early_param("percpu_alloc", percpu_alloc_setup); ...@@ -1762,7 +1762,7 @@ early_param("percpu_alloc", percpu_alloc_setup);
* and other parameters considering needed percpu size, allocation * and other parameters considering needed percpu size, allocation
* atom size and distances between CPUs. * atom size and distances between CPUs.
* *
* Groups are always mutliples of atom size and CPUs which are of * Groups are always multiples of atom size and CPUs which are of
* LOCAL_DISTANCE both ways are grouped together and share space for * LOCAL_DISTANCE both ways are grouped together and share space for
* units in the same group. The returned configuration is guaranteed * units in the same group. The returned configuration is guaranteed
* to have CPUs on different nodes on different groups and >=75% usage * to have CPUs on different nodes on different groups and >=75% usage
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment