| From 2315ec12ee8e8257bb335654c62e0cae71dc278d Mon Sep 17 00:00:00 2001 |
| From: Kaike Wan <kaike.wan@intel.com> |
| Date: Tue, 23 Jun 2020 16:40:53 -0400 |
| Subject: IB/hfi1: Do not destroy link_wq when the device is shut down |
| |
| From: Kaike Wan <kaike.wan@intel.com> |
| |
| commit 2315ec12ee8e8257bb335654c62e0cae71dc278d upstream. |
| |
| The workqueue link_wq should only be destroyed when the hfi1 driver is |
| unloaded, not when the device is shut down. |
| |
| Fixes: 71d47008ca1b ("IB/hfi1: Create workqueue for link events") |
| Link: https://lore.kernel.org/r/20200623204053.107638.70315.stgit@awfm-01.aw.intel.com |
| Cc: <stable@vger.kernel.org> |
| Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> |
| Signed-off-by: Kaike Wan <kaike.wan@intel.com> |
| Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> |
| Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/infiniband/hw/hfi1/init.c | 10 +++++----- |
| 1 file changed, 5 insertions(+), 5 deletions(-) |
| |
| --- a/drivers/infiniband/hw/hfi1/init.c |
| +++ b/drivers/infiniband/hw/hfi1/init.c |
| @@ -860,6 +860,10 @@ static void destroy_workqueues(struct hf |
| destroy_workqueue(ppd->hfi1_wq); |
| ppd->hfi1_wq = NULL; |
| } |
| + if (ppd->link_wq) { |
| + destroy_workqueue(ppd->link_wq); |
| + ppd->link_wq = NULL; |
| + } |
| } |
| } |
| |
| @@ -1136,14 +1140,10 @@ static void shutdown_device(struct hfi1_ |
| * We can't count on interrupts since we are stopping. |
| */ |
| hfi1_quiet_serdes(ppd); |
| - |
| if (ppd->hfi1_wq) |
| flush_workqueue(ppd->hfi1_wq); |
| - if (ppd->link_wq) { |
| + if (ppd->link_wq) |
| flush_workqueue(ppd->link_wq); |
| - destroy_workqueue(ppd->link_wq); |
| - ppd->link_wq = NULL; |
| - } |
| } |
| sdma_exit(dd); |
| } |