aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/firewire/ohci.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/firewire/ohci.c b/drivers/firewire/ohci.c
index 80830d6fe46b..6aa8a86cb83b 100644
--- a/drivers/firewire/ohci.c
+++ b/drivers/firewire/ohci.c
@@ -242,6 +242,8 @@ struct fw_ohci {
242 u32 self_id_buffer[512]; 242 u32 self_id_buffer[512];
243}; 243};
244 244
245static struct workqueue_struct *selfid_workqueue;
246
245static inline struct fw_ohci *fw_ohci(struct fw_card *card) 247static inline struct fw_ohci *fw_ohci(struct fw_card *card)
246{ 248{
247 return container_of(card, struct fw_ohci, card); 249 return container_of(card, struct fw_ohci, card);
@@ -2087,7 +2089,7 @@ static irqreturn_t irq_handler(int irq, void *data)
2087 log_irqs(ohci, event); 2089 log_irqs(ohci, event);
2088 2090
2089 if (event & OHCI1394_selfIDComplete) 2091 if (event & OHCI1394_selfIDComplete)
2090 queue_work(fw_workqueue, &ohci->bus_reset_work); 2092 queue_work(selfid_workqueue, &ohci->bus_reset_work);
2091 2093
2092 if (event & OHCI1394_RQPkt) 2094 if (event & OHCI1394_RQPkt)
2093 tasklet_schedule(&ohci->ar_request_ctx.tasklet); 2095 tasklet_schedule(&ohci->ar_request_ctx.tasklet);
@@ -3872,12 +3874,17 @@ static struct pci_driver fw_ohci_pci_driver = {
3872 3874
3873static int __init fw_ohci_init(void) 3875static int __init fw_ohci_init(void)
3874{ 3876{
3877 selfid_workqueue = alloc_workqueue(KBUILD_MODNAME, WQ_MEM_RECLAIM, 0);
3878 if (!selfid_workqueue)
3879 return -ENOMEM;
3880
3875 return pci_register_driver(&fw_ohci_pci_driver); 3881 return pci_register_driver(&fw_ohci_pci_driver);
3876} 3882}
3877 3883
3878static void __exit fw_ohci_cleanup(void) 3884static void __exit fw_ohci_cleanup(void)
3879{ 3885{
3880 pci_unregister_driver(&fw_ohci_pci_driver); 3886 pci_unregister_driver(&fw_ohci_pci_driver);
3887 destroy_workqueue(selfid_workqueue);
3881} 3888}
3882 3889
3883module_init(fw_ohci_init); 3890module_init(fw_ohci_init);