diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/firewire/ohci.c | 9 |
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 | ||
245 | static struct workqueue_struct *selfid_workqueue; | ||
246 | |||
245 | static inline struct fw_ohci *fw_ohci(struct fw_card *card) | 247 | static 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 | ||
3873 | static int __init fw_ohci_init(void) | 3875 | static 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 | ||
3878 | static void __exit fw_ohci_cleanup(void) | 3884 | static 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 | ||
3883 | module_init(fw_ohci_init); | 3890 | module_init(fw_ohci_init); |