All of lore.kernel.org
 help / color / mirror / Atom feed
* [GIT PULL] workqueue: fixes for v2.6.36
@ 2010-08-09 21:54 Tejun Heo
  0 siblings, 0 replies; only message in thread
From: Tejun Heo @ 2010-08-09 21:54 UTC (permalink / raw)
  To: Linus Torvalds, lkml, namhyung, w41ter, Markus Trippelsdorf,
	David Airlie

Hello,

Please pull from the following branch to receive workqueue fixes for
v2.6.36.

  git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq.git for-linus

The branch contains three patches.  One is major and the other are
minor.

workqueue is now initialized during early_init and thus relies on
workqueue_cpu_callback() being called for non boot cpus during boot.
However, the cpu callback was registered as hotcpu_notifier and didn't
get called if CONFIG_CPU_HOTPLUG was disabled.  This is fixed by
changing it to cpu_notifier.

One of the minor two adds missing __percpu notation and the other
removes spurious warning messages caused by incorrect conversion from
slow-work to wq.

Thanks.

Namhyung Kim (1):
      workqueue: add missing __percpu markup in kernel/workqueue.c

Tejun Heo (2):
      workqueue: workqueue_cpu_callback() should be cpu_notifier instead of hotcpu_notifier
      drm: fix fallouts from slow-work -> wq conversion

 drivers/gpu/drm/drm_crtc_helper.c |   16 ++++------------
 kernel/workqueue.c                |    4 ++--
 2 files changed, 6 insertions(+), 14 deletions(-)

diff --git a/drivers/gpu/drm/drm_crtc_helper.c b/drivers/gpu/drm/drm_crtc_helper.c
index 4598130..b9e4dbf 100644
--- a/drivers/gpu/drm/drm_crtc_helper.c
+++ b/drivers/gpu/drm/drm_crtc_helper.c
@@ -839,7 +839,6 @@ static void output_poll_execute(struct work_struct *work)
 	struct drm_connector *connector;
 	enum drm_connector_status old_status, status;
 	bool repoll = false, changed = false;
-	int ret;

 	mutex_lock(&dev->mode_config.mutex);
 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
@@ -874,11 +873,8 @@ static void output_poll_execute(struct work_struct *work)
 			dev->mode_config.funcs->output_poll_changed(dev);
 	}

-	if (repoll) {
-		ret = queue_delayed_work(system_nrt_wq, delayed_work, DRM_OUTPUT_POLL_PERIOD);
-		if (ret)
-			DRM_ERROR("delayed enqueue failed %d\n", ret);
-	}
+	if (repoll)
+		queue_delayed_work(system_nrt_wq, delayed_work, DRM_OUTPUT_POLL_PERIOD);
 }

 void drm_kms_helper_poll_disable(struct drm_device *dev)
@@ -893,18 +889,14 @@ void drm_kms_helper_poll_enable(struct drm_device *dev)
 {
 	bool poll = false;
 	struct drm_connector *connector;
-	int ret;

 	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
 		if (connector->polled)
 			poll = true;
 	}

-	if (poll) {
-		ret = queue_delayed_work(system_nrt_wq, &dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD);
-		if (ret)
-			DRM_ERROR("delayed enqueue failed %d\n", ret);
-	}
+	if (poll)
+		queue_delayed_work(system_nrt_wq, &dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD);
 }
 EXPORT_SYMBOL(drm_kms_helper_poll_enable);

diff --git a/kernel/workqueue.c b/kernel/workqueue.c
index 9ca34cd..2994a0e 100644
--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -2568,7 +2568,7 @@ EXPORT_SYMBOL(schedule_delayed_work_on);
 int schedule_on_each_cpu(work_func_t func)
 {
 	int cpu;
-	struct work_struct *works;
+	struct work_struct __percpu *works;

 	works = alloc_percpu(struct work_struct);
 	if (!works)
@@ -3527,7 +3527,7 @@ static int __init init_workqueues(void)
 	unsigned int cpu;
 	int i;

-	hotcpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE);
+	cpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE);

 	/* initialize gcwqs */
 	for_each_gcwq_cpu(cpu) {

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2010-08-09 21:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-08-09 21:54 [GIT PULL] workqueue: fixes for v2.6.36 Tejun Heo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.