From: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
To: dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org
Cc: linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>,
Maor Gottlieb <maorg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Subject: [PATCH rdma-rc 08/12] IB/mlx5: Wait for all async command completions to complete
Date: Thu, 27 Oct 2016 16:36:43 +0300 [thread overview]
Message-ID: <1477575407-20562-9-git-send-email-leon@kernel.org> (raw)
In-Reply-To: <1477575407-20562-1-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
From: Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Wait before continuing unload till all pending mkey async creation requests
are done.
Fixes: e126ba97dba9 ('mlx5: Add driver for Mellanox Connect-IB adapters')
Signed-off-by: Eli Cohen <eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Signed-off-by: Maor Gottlieb <maorg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
Signed-off-by: Leon Romanovsky <leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
---
drivers/infiniband/hw/mlx5/mr.c | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index 4e90124..55e2fee 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -646,6 +646,33 @@ int mlx5_mr_cache_init(struct mlx5_ib_dev *dev)
return 0;
}
+static void wait_for_async_commands(struct mlx5_ib_dev *dev)
+{
+ struct mlx5_mr_cache *cache = &dev->cache;
+ struct mlx5_cache_ent *ent;
+ int total = 0;
+ int i;
+ int j;
+
+ for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
+ ent = &cache->ent[i];
+ for (j = 0 ; j < 1000; j++) {
+ if (!ent->pending)
+ break;
+ msleep(50);
+ }
+ }
+ for (i = 0; i < MAX_MR_CACHE_ENTRIES; i++) {
+ ent = &cache->ent[i];
+ total += ent->pending;
+ }
+
+ if (total)
+ mlx5_ib_warn(dev, "aborted while there are %d pending mr requests\n", total);
+ else
+ mlx5_ib_warn(dev, "done with all pending requests\n");
+}
+
int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev)
{
int i;
@@ -659,6 +686,7 @@ int mlx5_mr_cache_cleanup(struct mlx5_ib_dev *dev)
clean_keys(dev, i);
destroy_workqueue(dev->cache.wq);
+ wait_for_async_commands(dev);
del_timer_sync(&dev->delay_timer);
return 0;
--
2.7.4
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2016-10-27 13:36 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-27 13:36 [PATCH rdma-rc 00/12] First round of mlx5 fixes for 4.9 Leon Romanovsky
[not found] ` <1477575407-20562-1-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-10-27 13:36 ` [PATCH rdma-rc 01/12] IB/mlx5: Replace numerical constant with predefined MACRO Leon Romanovsky
[not found] ` <1477575407-20562-2-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-10-28 12:54 ` Or Gerlitz
[not found] ` <CAJ3xEMiNynmpbBt0M=k5qywrvnfAq+ogZLD2PUbHBvYVJ4pLyQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2016-10-28 14:55 ` Leon Romanovsky
[not found] ` <20161028145534.GM3617-2ukJVAZIZ/Y@public.gmane.org>
2016-10-28 16:48 ` Or Gerlitz
2016-10-27 13:36 ` [PATCH rdma-rc 02/12] IB/mlx5: Fix atomic cap in indirect UMR Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 03/12] IB/mlx5: Put non zero value in max_ah Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 04/12] IB/mlx5: Fix memory leak in query device Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 05/12] IB/mlx5: Validate requested RQT size Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 06/12] IB/mlx5: Use cache line size to select CQE stride Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 07/12] IB/mlx5: Resolve soft lock on massive reg MRs Leon Romanovsky
2016-10-27 13:36 ` Leon Romanovsky [this message]
[not found] ` <1477575407-20562-9-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-10-28 13:04 ` [PATCH rdma-rc 08/12] IB/mlx5: Wait for all async command completions to complete Or Gerlitz
2016-10-27 13:36 ` [PATCH rdma-rc 09/12] IB/mlx5: Fix fatal error dispatching Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 10/12] IB/mlx5: Fix reported max SGE calculation Leon Romanovsky
[not found] ` <1477575407-20562-11-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-11-17 22:36 ` Or Gerlitz
2016-10-27 13:36 ` [PATCH rdma-rc 11/12] IB/mlx5: Fix NULL pointer dereference on debug print Leon Romanovsky
2016-10-27 13:36 ` [PATCH rdma-rc 12/12] IB/mlx5: Limit mkey page size to 2GB Leon Romanovsky
[not found] ` <1477575407-20562-13-git-send-email-leon-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2016-10-28 13:02 ` Or Gerlitz
[not found] ` <31841A29-5CE1-45A9-999A-1FAAA3CDFD4F@mellanox.com>
[not found] ` <31841A29-5CE1-45A9-999A-1FAAA3CDFD4F-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2016-10-28 16:53 ` Or Gerlitz
2016-11-17 22:38 ` Or Gerlitz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1477575407-20562-9-git-send-email-leon@kernel.org \
--to=leon-dgejt+ai2ygdnm+yrofe0a@public.gmane.org \
--cc=dledford-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
--cc=eli-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
--cc=linux-rdma-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=maorg-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.