Linux RDMA and InfiniBand development
 help / color / mirror / Atom feed
From: Gal Pressman <galpress@amazon.com>
To: Jason Gunthorpe <jgg@nvidia.com>, Doug Ledford <dledford@redhat.com>
Cc: <linux-rdma@vger.kernel.org>,
	Alexander Matushevsky <matua@amazon.com>,
	Gal Pressman <galpress@amazon.com>,
	Firas JahJah <firasj@amazon.com>,
	Leonid Feschuk <lfesch@amazon.com>,
	Yossi Leybovich <sleybo@amazon.com>
Subject: [PATCH for-next 1/2] RDMA/efa: Move host info set to first ucontext allocation
Date: Tue, 5 Jan 2021 12:43:25 +0200	[thread overview]
Message-ID: <20210105104326.67895-2-galpress@amazon.com> (raw)
In-Reply-To: <20210105104326.67895-1-galpress@amazon.com>

Downstream patch will require the userspace version which is passed as
part of ucontext allocation. Move the host info set there and make sure
it's only called once (on the first allocation).

Reviewed-by: Firas JahJah <firasj@amazon.com>
Reviewed-by: Leonid Feschuk <lfesch@amazon.com>
Signed-off-by: Gal Pressman <galpress@amazon.com>
---
 drivers/infiniband/hw/efa/efa.h       | 7 +++++++
 drivers/infiniband/hw/efa/efa_main.c  | 4 +---
 drivers/infiniband/hw/efa/efa_verbs.c | 3 +++
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/infiniband/hw/efa/efa.h b/drivers/infiniband/hw/efa/efa.h
index e5d9712e98c4..9c9cd5867489 100644
--- a/drivers/infiniband/hw/efa/efa.h
+++ b/drivers/infiniband/hw/efa/efa.h
@@ -45,6 +45,11 @@ struct efa_stats {
 	atomic64_t keep_alive_rcvd;
 };
 
+enum {
+	EFA_FLAGS_HOST_INFO_SET_BIT,
+	EFA_FLAGS_NUM,
+};
+
 struct efa_dev {
 	struct ib_device ibdev;
 	struct efa_com_dev edev;
@@ -62,6 +67,7 @@ struct efa_dev {
 	struct efa_irq admin_irq;
 
 	struct efa_stats stats;
+	DECLARE_BITMAP(flags, EFA_FLAGS_NUM);
 };
 
 struct efa_ucontext {
@@ -117,6 +123,7 @@ struct efa_ah {
 	u8 id[EFA_GID_SIZE];
 };
 
+void efa_set_host_info(struct efa_dev *dev);
 int efa_query_device(struct ib_device *ibdev,
 		     struct ib_device_attr *props,
 		     struct ib_udata *udata);
diff --git a/drivers/infiniband/hw/efa/efa_main.c b/drivers/infiniband/hw/efa/efa_main.c
index 0f578734bddb..90a033a6af6c 100644
--- a/drivers/infiniband/hw/efa/efa_main.c
+++ b/drivers/infiniband/hw/efa/efa_main.c
@@ -191,7 +191,7 @@ static void efa_stats_init(struct efa_dev *dev)
 		atomic64_set(s, 0);
 }
 
-static void efa_set_host_info(struct efa_dev *dev)
+void efa_set_host_info(struct efa_dev *dev)
 {
 	struct efa_admin_set_feature_resp resp = {};
 	struct efa_admin_set_feature_cmd cmd = {};
@@ -301,8 +301,6 @@ static int efa_ib_device_add(struct efa_dev *dev)
 	if (err)
 		goto err_release_doorbell_bar;
 
-	efa_set_host_info(dev);
-
 	dev->ibdev.node_type = RDMA_NODE_UNSPECIFIED;
 	dev->ibdev.phys_port_cnt = 1;
 	dev->ibdev.num_comp_vectors = 1;
diff --git a/drivers/infiniband/hw/efa/efa_verbs.c b/drivers/infiniband/hw/efa/efa_verbs.c
index 2fe5708b2d9d..5c12bdc28ef0 100644
--- a/drivers/infiniband/hw/efa/efa_verbs.c
+++ b/drivers/infiniband/hw/efa/efa_verbs.c
@@ -1695,6 +1695,9 @@ int efa_alloc_ucontext(struct ib_ucontext *ibucontext, struct ib_udata *udata)
 		goto err_out;
 	}
 
+	if (!test_and_set_bit(EFA_FLAGS_HOST_INFO_SET_BIT, dev->flags))
+		efa_set_host_info(dev);
+
 	err = efa_user_comp_handshake(ibucontext, &cmd);
 	if (err)
 		goto err_out;
-- 
2.30.0


  reply	other threads:[~2021-01-05 10:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-05 10:43 [PATCH for-next 0/2] Host information userspace version Gal Pressman
2021-01-05 10:43 ` Gal Pressman [this message]
2021-01-05 11:21   ` [PATCH for-next 1/2] RDMA/efa: Move host info set to first ucontext allocation Leon Romanovsky
2021-01-05 12:22     ` Gal Pressman
2021-01-05 12:40       ` Leon Romanovsky
2021-01-05 13:39         ` Gal Pressman
2021-01-05 10:43 ` [PATCH for-next 2/2] RDMA/efa: Report userspace version in host info Gal Pressman
2021-01-19  7:17 ` [PATCH for-next 0/2] Host information userspace version Gal Pressman
2021-01-19  8:46   ` Leon Romanovsky
2021-01-19  9:10     ` Gal Pressman
2021-01-19 11:58       ` Leon Romanovsky
2021-01-19 13:19         ` Gal Pressman
2021-01-19 13:34           ` Leon Romanovsky
2021-01-21 18:35   ` Jason Gunthorpe
2021-01-21 19:40     ` Gal Pressman
2021-01-27 16:57       ` Jason Gunthorpe
2021-01-27 17:53         ` Gal Pressman
2021-02-28  9:56           ` Gal Pressman
2021-03-02  0:04             ` Jason Gunthorpe

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=20210105104326.67895-2-galpress@amazon.com \
    --to=galpress@amazon.com \
    --cc=dledford@redhat.com \
    --cc=firasj@amazon.com \
    --cc=jgg@nvidia.com \
    --cc=lfesch@amazon.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=matua@amazon.com \
    --cc=sleybo@amazon.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox