diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-16 11:20:19 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-03-16 11:20:19 -0400 |
commit | bd2895eeade5f11f3e5906283c630bbdb4b57454 (patch) | |
tree | 4d98f4fcd80c7d062afce28823d08aee53e66f82 /drivers/misc | |
parent | 016aa2ed1cc9cf704cf76d8df07751b6daa9750f (diff) | |
parent | 24d51add7438f9696a7205927bf9de3c5c787a58 (diff) |
Merge branch 'for-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
* 'for-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq:
workqueue: fix build failure introduced by s/freezeable/freezable/
workqueue: add system_freezeable_wq
rds/ib: use system_wq instead of rds_ib_fmr_wq
net/9p: replace p9_poll_task with a work
net/9p: use system_wq instead of p9_mux_wq
xfs: convert to alloc_workqueue()
reiserfs: make commit_wq use the default concurrency level
ocfs2: use system_wq instead of ocfs2_quota_wq
ext4: convert to alloc_workqueue()
scsi/scsi_tgt_lib: scsi_tgtd isn't used in memory reclaim path
scsi/be2iscsi,qla2xxx: convert to alloc_workqueue()
misc/iwmc3200top: use system_wq instead of dedicated workqueues
i2o: use alloc_workqueue() instead of create_workqueue()
acpi: kacpi*_wq don't need WQ_MEM_RECLAIM
fs/aio: aio_wq isn't used in memory reclaim path
input/tps6507x-ts: use system_wq instead of dedicated workqueue
cpufreq: use system_wq instead of dedicated workqueues
wireless/ipw2x00: use system_wq instead of dedicated workqueues
arm/omap: use system_wq in mailbox
workqueue: use WQ_MEM_RECLAIM instead of WQ_RESCUER
Diffstat (limited to 'drivers/misc')
-rw-r--r-- | drivers/misc/iwmc3200top/iwmc3200top.h | 4 | ||||
-rw-r--r-- | drivers/misc/iwmc3200top/main.c | 14 |
2 files changed, 6 insertions, 12 deletions
diff --git a/drivers/misc/iwmc3200top/iwmc3200top.h b/drivers/misc/iwmc3200top/iwmc3200top.h index 740ff0738ea8..620973ed8bf9 100644 --- a/drivers/misc/iwmc3200top/iwmc3200top.h +++ b/drivers/misc/iwmc3200top/iwmc3200top.h | |||
@@ -183,9 +183,7 @@ struct iwmct_priv { | |||
183 | u32 barker; | 183 | u32 barker; |
184 | struct iwmct_dbg dbg; | 184 | struct iwmct_dbg dbg; |
185 | 185 | ||
186 | /* drivers work queue */ | 186 | /* drivers work items */ |
187 | struct workqueue_struct *wq; | ||
188 | struct workqueue_struct *bus_rescan_wq; | ||
189 | struct work_struct bus_rescan_worker; | 187 | struct work_struct bus_rescan_worker; |
190 | struct work_struct isr_worker; | 188 | struct work_struct isr_worker; |
191 | 189 | ||
diff --git a/drivers/misc/iwmc3200top/main.c b/drivers/misc/iwmc3200top/main.c index c73cef2c3c5e..727af07f1fbd 100644 --- a/drivers/misc/iwmc3200top/main.c +++ b/drivers/misc/iwmc3200top/main.c | |||
@@ -89,7 +89,7 @@ static void op_top_message(struct iwmct_priv *priv, struct top_msg *msg) | |||
89 | switch (msg->hdr.opcode) { | 89 | switch (msg->hdr.opcode) { |
90 | case OP_OPR_ALIVE: | 90 | case OP_OPR_ALIVE: |
91 | LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n"); | 91 | LOG_INFO(priv, FW_MSG, "Got ALIVE from device, wake rescan\n"); |
92 | queue_work(priv->bus_rescan_wq, &priv->bus_rescan_worker); | 92 | schedule_work(&priv->bus_rescan_worker); |
93 | break; | 93 | break; |
94 | default: | 94 | default: |
95 | LOG_INFO(priv, FW_MSG, "Received msg opcode 0x%X\n", | 95 | LOG_INFO(priv, FW_MSG, "Received msg opcode 0x%X\n", |
@@ -360,7 +360,7 @@ static void iwmct_irq(struct sdio_func *func) | |||
360 | /* clear the function's interrupt request bit (write 1 to clear) */ | 360 | /* clear the function's interrupt request bit (write 1 to clear) */ |
361 | sdio_writeb(func, 1, IWMC_SDIO_INTR_CLEAR_ADDR, &ret); | 361 | sdio_writeb(func, 1, IWMC_SDIO_INTR_CLEAR_ADDR, &ret); |
362 | 362 | ||
363 | queue_work(priv->wq, &priv->isr_worker); | 363 | schedule_work(&priv->isr_worker); |
364 | 364 | ||
365 | LOG_TRACE(priv, IRQ, "exit iwmct_irq\n"); | 365 | LOG_TRACE(priv, IRQ, "exit iwmct_irq\n"); |
366 | 366 | ||
@@ -506,10 +506,6 @@ static int iwmct_probe(struct sdio_func *func, | |||
506 | priv->func = func; | 506 | priv->func = func; |
507 | sdio_set_drvdata(func, priv); | 507 | sdio_set_drvdata(func, priv); |
508 | 508 | ||
509 | |||
510 | /* create drivers work queue */ | ||
511 | priv->wq = create_workqueue(DRV_NAME "_wq"); | ||
512 | priv->bus_rescan_wq = create_workqueue(DRV_NAME "_rescan_wq"); | ||
513 | INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker); | 509 | INIT_WORK(&priv->bus_rescan_worker, iwmct_rescan_worker); |
514 | INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker); | 510 | INIT_WORK(&priv->isr_worker, iwmct_irq_read_worker); |
515 | 511 | ||
@@ -604,9 +600,9 @@ static void iwmct_remove(struct sdio_func *func) | |||
604 | sdio_release_irq(func); | 600 | sdio_release_irq(func); |
605 | sdio_release_host(func); | 601 | sdio_release_host(func); |
606 | 602 | ||
607 | /* Safely destroy osc workqueue */ | 603 | /* Make sure works are finished */ |
608 | destroy_workqueue(priv->bus_rescan_wq); | 604 | flush_work_sync(&priv->bus_rescan_worker); |
609 | destroy_workqueue(priv->wq); | 605 | flush_work_sync(&priv->isr_worker); |
610 | 606 | ||
611 | sdio_claim_host(func); | 607 | sdio_claim_host(func); |
612 | sdio_disable_func(func); | 608 | sdio_disable_func(func); |