IB/hfi1: Create workqueue for link events
Currently, link down interrupts queue link entries on a workqueue intended for sending events only. Create a workqueue for queuing link events. Reviewed-by: Dean Luick <dean.luick@intel.com> Signed-off-by: Sebastian Sanchez <sebastian.sanchez@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Reviewed-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:

committato da
Doug Ledford

parent
3ffea7d8cd
commit
71d47008ca
@@ -660,6 +660,20 @@ static int create_workqueues(struct hfi1_devdata *dd)
|
||||
if (!ppd->hfi1_wq)
|
||||
goto wq_error;
|
||||
}
|
||||
if (!ppd->link_wq) {
|
||||
/*
|
||||
* Make the link workqueue single-threaded to enforce
|
||||
* serialization.
|
||||
*/
|
||||
ppd->link_wq =
|
||||
alloc_workqueue(
|
||||
"hfi_link_%d_%d",
|
||||
WQ_SYSFS | WQ_MEM_RECLAIM | WQ_UNBOUND,
|
||||
1, /* max_active */
|
||||
dd->unit, pidx);
|
||||
if (!ppd->link_wq)
|
||||
goto wq_error;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
wq_error:
|
||||
@@ -670,6 +684,10 @@ wq_error:
|
||||
destroy_workqueue(ppd->hfi1_wq);
|
||||
ppd->hfi1_wq = NULL;
|
||||
}
|
||||
if (ppd->link_wq) {
|
||||
destroy_workqueue(ppd->link_wq);
|
||||
ppd->link_wq = NULL;
|
||||
}
|
||||
}
|
||||
return -ENOMEM;
|
||||
}
|
||||
@@ -954,6 +972,10 @@ static void shutdown_device(struct hfi1_devdata *dd)
|
||||
destroy_workqueue(ppd->hfi1_wq);
|
||||
ppd->hfi1_wq = NULL;
|
||||
}
|
||||
if (ppd->link_wq) {
|
||||
destroy_workqueue(ppd->link_wq);
|
||||
ppd->link_wq = NULL;
|
||||
}
|
||||
}
|
||||
sdma_exit(dd);
|
||||
}
|
||||
@@ -1575,6 +1597,10 @@ static int init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
destroy_workqueue(ppd->hfi1_wq);
|
||||
ppd->hfi1_wq = NULL;
|
||||
}
|
||||
if (ppd->link_wq) {
|
||||
destroy_workqueue(ppd->link_wq);
|
||||
ppd->link_wq = NULL;
|
||||
}
|
||||
}
|
||||
if (!j)
|
||||
hfi1_device_remove(dd);
|
||||
|
Fai riferimento in un nuovo problema
Block a user