提交 e5149cc4 编写于 作者: L Linus Torvalds

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

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
  drm: fix fallouts from slow-work -> wq conversion
  workqueue: workqueue_cpu_callback() should be cpu_notifier instead of hotcpu_notifier
  workqueue: add missing __percpu markup in kernel/workqueue.c
...@@ -839,7 +839,6 @@ static void output_poll_execute(struct work_struct *work) ...@@ -839,7 +839,6 @@ static void output_poll_execute(struct work_struct *work)
struct drm_connector *connector; struct drm_connector *connector;
enum drm_connector_status old_status, status; enum drm_connector_status old_status, status;
bool repoll = false, changed = false; bool repoll = false, changed = false;
int ret;
mutex_lock(&dev->mode_config.mutex); mutex_lock(&dev->mode_config.mutex);
list_for_each_entry(connector, &dev->mode_config.connector_list, head) { list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
...@@ -874,11 +873,8 @@ static void output_poll_execute(struct work_struct *work) ...@@ -874,11 +873,8 @@ static void output_poll_execute(struct work_struct *work)
dev->mode_config.funcs->output_poll_changed(dev); dev->mode_config.funcs->output_poll_changed(dev);
} }
if (repoll) { if (repoll)
ret = queue_delayed_work(system_nrt_wq, delayed_work, DRM_OUTPUT_POLL_PERIOD); queue_delayed_work(system_nrt_wq, delayed_work, DRM_OUTPUT_POLL_PERIOD);
if (ret)
DRM_ERROR("delayed enqueue failed %d\n", ret);
}
} }
void drm_kms_helper_poll_disable(struct drm_device *dev) void drm_kms_helper_poll_disable(struct drm_device *dev)
...@@ -893,18 +889,14 @@ void drm_kms_helper_poll_enable(struct drm_device *dev) ...@@ -893,18 +889,14 @@ void drm_kms_helper_poll_enable(struct drm_device *dev)
{ {
bool poll = false; bool poll = false;
struct drm_connector *connector; struct drm_connector *connector;
int ret;
list_for_each_entry(connector, &dev->mode_config.connector_list, head) { list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
if (connector->polled) if (connector->polled)
poll = true; poll = true;
} }
if (poll) { if (poll)
ret = queue_delayed_work(system_nrt_wq, &dev->mode_config.output_poll_work, DRM_OUTPUT_POLL_PERIOD); 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);
}
} }
EXPORT_SYMBOL(drm_kms_helper_poll_enable); EXPORT_SYMBOL(drm_kms_helper_poll_enable);
......
...@@ -2568,7 +2568,7 @@ EXPORT_SYMBOL(schedule_delayed_work_on); ...@@ -2568,7 +2568,7 @@ EXPORT_SYMBOL(schedule_delayed_work_on);
int schedule_on_each_cpu(work_func_t func) int schedule_on_each_cpu(work_func_t func)
{ {
int cpu; int cpu;
struct work_struct *works; struct work_struct __percpu *works;
works = alloc_percpu(struct work_struct); works = alloc_percpu(struct work_struct);
if (!works) if (!works)
...@@ -3527,7 +3527,7 @@ static int __init init_workqueues(void) ...@@ -3527,7 +3527,7 @@ static int __init init_workqueues(void)
unsigned int cpu; unsigned int cpu;
int i; int i;
hotcpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE); cpu_notifier(workqueue_cpu_callback, CPU_PRI_WORKQUEUE);
/* initialize gcwqs */ /* initialize gcwqs */
for_each_gcwq_cpu(cpu) { for_each_gcwq_cpu(cpu) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册