From patchwork Sun Jul 18 21:27:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bob Pearson X-Patchwork-Id: 12384459 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C655BC636CA for ; Sun, 18 Jul 2021 21:27:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B190260FEA for ; Sun, 18 Jul 2021 21:27:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229697AbhGRVai (ORCPT ); Sun, 18 Jul 2021 17:30:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230225AbhGRVai (ORCPT ); Sun, 18 Jul 2021 17:30:38 -0400 Received: from mail-oi1-x22e.google.com (mail-oi1-x22e.google.com [IPv6:2607:f8b0:4864:20::22e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C0A8FC061762 for ; Sun, 18 Jul 2021 14:27:38 -0700 (PDT) Received: by mail-oi1-x22e.google.com with SMTP id y66so9011634oie.7 for ; Sun, 18 Jul 2021 14:27:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=7+cWWG+X6YgSz1Adp48PcDN3mkt0jili7TeJ8haPNl8=; b=kWS98M2tKZ8rTfv/bMYUZ9QpQaBkz7z8Dxznx3IV0xfPBmAy2YB0W+qjSZlQ8qZFi6 sZ9Oh/c82eT8uVyT/xnfEw8E/khAaXTAHX3i6JGY4+7IWpcYPf4BsXj80+sUAAIeYtF+ FzRy6jxLOWlPesD/CzWdlpXdECjzkE6qPqXeEk9hfmV6Z+oOSXc/QImxYFctnv4CAgX1 hZDrErRxj0FiG02lg2YqZho5uki29/MvgBrUAPcFCi8h9YNCn8lTGUjunXchbelVgWy9 xHyw2fWHi5GxYHRnUCrTYjBLnfJrrkLbg41N6foo43lJ2GFeAvJGiicPcaE03tgsVkvu DG6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=7+cWWG+X6YgSz1Adp48PcDN3mkt0jili7TeJ8haPNl8=; b=VD9zoEDIyWLv1dRMhqWZDrm9UrhGFYpiLjFK/AmdIfuzeEFO/wBDUaV6LZ+1pQa9Wv 5p/MN9chR3aeGeDvDDt6v0aW7OuEbHmxln1KdOH4cfvVtH+DimM/u2fkJdsNeP3bMCIy uPM5CUXl6iOpyLM1A2eNyjzI8U+V0rgclAOA6noPEZnxB7td04jGX+AEsFmpS0CG3RWm CFTK9eq2gvHGxfY9xFPuo6P29F65BqiK0G8liApxtfqN5MLfhfFzTJ2MGgg2Pxu9cLVN xbV/qd7khvdZ6XbsTxEqHf8mNYtOy2gpRnFVv8U+2yTQpTExjHuIk3pIVN5TtgJ5Qu7N oUpw== X-Gm-Message-State: AOAM532s4wqI6CBCE5IuAzl6KNCUNirOVlGz9esRPajnxeYcO8s2qHVx WBa4PceDnT9r5D3RQWAi3KE= X-Google-Smtp-Source: ABdhPJzdIH8XdH85GuWQceQWxsAaPrZDhTyRfu7fn5QwrvEicTPUbdT6navlyuXpWaB4boirEecyrg== X-Received: by 2002:a54:4109:: with SMTP id l9mr15795609oic.3.1626643658203; Sun, 18 Jul 2021 14:27:38 -0700 (PDT) Received: from localhost (2603-8081-140c-1a00-0284-9a3c-0f8a-4ac7.res6.spectrum.com. [2603:8081:140c:1a00:284:9a3c:f8a:4ac7]) by smtp.gmail.com with ESMTPSA id y5sm2601775otu.27.2021.07.18.14.27.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jul 2021 14:27:37 -0700 (PDT) From: Bob Pearson To: jgg@nvidia.com, zyjzyj2000@gmail.com, linux-rdma@vger.kernel.org Cc: Bob Pearson Subject: [PATCH for-next v2 1/5] RDMA/rxe: Change user/kernel API to allow indexing AH Date: Sun, 18 Jul 2021 16:27:00 -0500 Message-Id: <20210718212703.21471-2-rpearsonhpe@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210718212703.21471-1-rpearsonhpe@gmail.com> References: <20210718212703.21471-1-rpearsonhpe@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Make changes to rdma_user_rxe.h to allow indexing AH objects, passing the index in UD send WRs to the driver and returning the index to the rxe provider. This change will allow removing handling of the AV in the user space provider. In order to preserve ABI compatibility for old kernel and/or rdma-core code keep the AV in the WQE at the same offset but move to the UD specific part of the work request since that is the only case that uses it. Signed-off-by: Bob Pearson --- v2: Moved AV from rxe_send_wqe to rxe_wr. drivers/infiniband/sw/rxe/rxe_av.c | 2 +- drivers/infiniband/sw/rxe/rxe_verbs.c | 3 ++- include/uapi/rdma/rdma_user_rxe.h | 10 +++++++++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe_av.c b/drivers/infiniband/sw/rxe/rxe_av.c index da2e867a1ed9..85580ea5eed0 100644 --- a/drivers/infiniband/sw/rxe/rxe_av.c +++ b/drivers/infiniband/sw/rxe/rxe_av.c @@ -107,5 +107,5 @@ struct rxe_av *rxe_get_av(struct rxe_pkt_info *pkt) if (qp_type(pkt->qp) == IB_QPT_RC || qp_type(pkt->qp) == IB_QPT_UC) return &pkt->qp->pri_av; - return (pkt->wqe) ? &pkt->wqe->av : NULL; + return (pkt->wqe) ? &pkt->wqe->wr.wr.ud.av : NULL; } diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c index c223959ac174..4176fffa7fdc 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.c +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c @@ -605,7 +605,8 @@ static void init_send_wqe(struct rxe_qp *qp, const struct ib_send_wr *ibwr, if (qp_type(qp) == IB_QPT_UD || qp_type(qp) == IB_QPT_SMI || qp_type(qp) == IB_QPT_GSI) - memcpy(&wqe->av, &to_rah(ud_wr(ibwr)->ah)->av, sizeof(wqe->av)); + memcpy(&wqe->wr.wr.ud.av, &to_rah(ud_wr(ibwr)->ah)->av, + sizeof(struct rxe_av)); if (unlikely(ibwr->send_flags & IB_SEND_INLINE)) copy_inline_data_to_wqe(wqe, ibwr); diff --git a/include/uapi/rdma/rdma_user_rxe.h b/include/uapi/rdma/rdma_user_rxe.h index e283c2220aba..ad7da77dca04 100644 --- a/include/uapi/rdma/rdma_user_rxe.h +++ b/include/uapi/rdma/rdma_user_rxe.h @@ -98,6 +98,10 @@ struct rxe_send_wr { __u32 remote_qpn; __u32 remote_qkey; __u16 pkey_index; + __u16 reserved; + __u32 ah_num; + __u32 pad[4]; + struct rxe_av av; /* deprecated */ } ud; struct { __aligned_u64 addr; @@ -148,7 +152,6 @@ struct rxe_dma_info { struct rxe_send_wqe { struct rxe_send_wr wr; - struct rxe_av av; __u32 status; __u32 state; __aligned_u64 iova; @@ -168,6 +171,11 @@ struct rxe_recv_wqe { struct rxe_dma_info dma; }; +struct rxe_create_ah_resp { + __u32 ah_num; + __u32 reserved; +}; + struct rxe_create_cq_resp { struct mminfo mi; }; From patchwork Sun Jul 18 21:27:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bob Pearson X-Patchwork-Id: 12384457 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7FB59C636CB for ; Sun, 18 Jul 2021 21:27:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 6388560FEA for ; Sun, 18 Jul 2021 21:27:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231222AbhGRVai (ORCPT ); Sun, 18 Jul 2021 17:30:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57338 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229697AbhGRVah (ORCPT ); Sun, 18 Jul 2021 17:30:37 -0400 Received: from mail-oo1-xc34.google.com (mail-oo1-xc34.google.com [IPv6:2607:f8b0:4864:20::c34]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 66615C061764 for ; Sun, 18 Jul 2021 14:27:39 -0700 (PDT) Received: by mail-oo1-xc34.google.com with SMTP id 128-20020a4a11860000b029024b19a4d98eso3963758ooc.5 for ; Sun, 18 Jul 2021 14:27:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=f0Y/ocDdRQ4XTDM8mFWl3U3xVeDb3pxbEATe5M1rfu8=; b=P+Pcp6VV0oOVpwZb0Fhky3M1wT1jN4l5pZbXEN8C0C3iEn4v2W6MefSKfZUl7cjuJF r/nUkN402KNF/gnUHMXqc6kcBMEjdOnPMuTt0xUnPi2cc3ANMQ1MPfKsYOZeVbLOzwyP GiHwwLw3Tc8b1l5PmaPLDU1e9jHL9moB7WnibeMFloWm4ySnw1nKC/DiGkv5nhgTRgdt Us/XB7SlWo+k+wP4tSMgZMbKKdNfJMKx3HPaTFGco3E7Sc8vdNnuE4/z26M80A26DRG6 KztqxIQ0JNpAvzzZ2/3hlta/1t2SpD+YhSQ9MIiD0Vm3szCUroNrgTjoQKona0tu9Wq0 jZeQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=f0Y/ocDdRQ4XTDM8mFWl3U3xVeDb3pxbEATe5M1rfu8=; b=dlY/02MmqsOp/xdX4bDUxO81hV3vmIEgPGnIP3vrz/yOtU72X6OcFgM3R9ZQg1d9hm Cs1Z9h+vIIioT344EcAlcMQ1J6DyuqVoFjG7jE5lWB3kvzMxN8K7DvQ2Xc+yPFT/Ytd1 GTzog3x7fqvyXlQL4uy/Hz6NjEE5zsRaZGiP8a+cQMp/5GxfPq8pyHS4YGXBPKcPwyON 2qjOHhU9xe4BnIrcoiMHlL0cA9722nRBH7WY7WkB6hlcmcYk2/YKjhRGk0P9pwdbrjmv WZyC0fLqEiR7uqw3n3n8e2ESaQnH/qttKWstT0wQcaC98sD/tJUJ91eXjcVmuCeLtigw +ETw== X-Gm-Message-State: AOAM531NPZYGrVLkjuylnUjAaO3X7XePVckBhQR1TM/OnGYt0/BYCmaP +I6K9M6FwAeJW4dks6Hd5Zg= X-Google-Smtp-Source: ABdhPJxY7xmLVGJbCGK8eMs5AhMZ8dCBjWkjeSwyw9K2dIeNsPcbrdCEFGb03zxhvuPg+tylRvnEpw== X-Received: by 2002:a4a:98b0:: with SMTP id a45mr15598616ooj.22.1626643658863; Sun, 18 Jul 2021 14:27:38 -0700 (PDT) Received: from localhost (2603-8081-140c-1a00-0284-9a3c-0f8a-4ac7.res6.spectrum.com. [2603:8081:140c:1a00:284:9a3c:f8a:4ac7]) by smtp.gmail.com with ESMTPSA id z3sm1268376oti.29.2021.07.18.14.27.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jul 2021 14:27:38 -0700 (PDT) From: Bob Pearson To: jgg@nvidia.com, zyjzyj2000@gmail.com, linux-rdma@vger.kernel.org Cc: Bob Pearson Subject: [PATCH for-next v2 2/5] RDMA/rxe: Change AH objects to indexed Date: Sun, 18 Jul 2021 16:27:01 -0500 Message-Id: <20210718212703.21471-3-rpearsonhpe@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210718212703.21471-1-rpearsonhpe@gmail.com> References: <20210718212703.21471-1-rpearsonhpe@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Make changes to rxe_param.h and rxe_pool.c to allow indexing of AH objects. Valid indices are non-zero so older providers can be detected. Signed-off-by: Bob Pearson --- drivers/infiniband/sw/rxe/rxe_param.h | 4 +++- drivers/infiniband/sw/rxe/rxe_pool.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe_param.h b/drivers/infiniband/sw/rxe/rxe_param.h index 742e6ec93686..ec5c6331bee8 100644 --- a/drivers/infiniband/sw/rxe/rxe_param.h +++ b/drivers/infiniband/sw/rxe/rxe_param.h @@ -67,7 +67,9 @@ enum rxe_device_param { RXE_MAX_MCAST_GRP = 8192, RXE_MAX_MCAST_QP_ATTACH = 56, RXE_MAX_TOT_MCAST_QP_ATTACH = 0x70000, - RXE_MAX_AH = 100, + RXE_MAX_AH = 16383, + RXE_MIN_AH_INDEX = 1, + RXE_MAX_AH_INDEX = 16383, RXE_MAX_SRQ_WR = 0x4000, RXE_MIN_SRQ_WR = 1, RXE_MAX_SRQ_SGE = 27, diff --git a/drivers/infiniband/sw/rxe/rxe_pool.c b/drivers/infiniband/sw/rxe/rxe_pool.c index 0b8e7c6255a2..342f090152d1 100644 --- a/drivers/infiniband/sw/rxe/rxe_pool.c +++ b/drivers/infiniband/sw/rxe/rxe_pool.c @@ -26,7 +26,9 @@ struct rxe_type_info rxe_type_info[RXE_NUM_TYPES] = { .name = "rxe-ah", .size = sizeof(struct rxe_ah), .elem_offset = offsetof(struct rxe_ah, pelem), - .flags = RXE_POOL_NO_ALLOC, + .flags = RXE_POOL_INDEX | RXE_POOL_NO_ALLOC, + .min_index = RXE_MIN_AH_INDEX, + .max_index = RXE_MAX_AH_INDEX, }, [RXE_TYPE_SRQ] = { .name = "rxe-srq", From patchwork Sun Jul 18 21:27:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bob Pearson X-Patchwork-Id: 12384461 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 057C3C636CD for ; Sun, 18 Jul 2021 21:27:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DFD0260E09 for ; Sun, 18 Jul 2021 21:27:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231846AbhGRVaj (ORCPT ); Sun, 18 Jul 2021 17:30:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230225AbhGRVai (ORCPT ); Sun, 18 Jul 2021 17:30:38 -0400 Received: from mail-oo1-xc33.google.com (mail-oo1-xc33.google.com [IPv6:2607:f8b0:4864:20::c33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36C4FC061762 for ; Sun, 18 Jul 2021 14:27:40 -0700 (PDT) Received: by mail-oo1-xc33.google.com with SMTP id s11-20020a4ae48b0000b02902667598672bso45456oov.12 for ; Sun, 18 Jul 2021 14:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=YYx1T+4atNwsYAUkNYXAuWRC7vMHJzuHplwG+C79x20=; b=VhesS1YjmgIrkvbvvHGDLgJqgHkfuafzxO6MIYZf5Jd1xZPkJyMoIiO7lLn5NxQrqr Zz1sysUhyqXkS99HA0dA5mzp84hAfWJoVhdL3TcRKpFtIDEg/yh9QrYUSCoexrWqDcc7 UPNFtmrHGw6r66ArOrpr9vyrrXXmZUD3WreC11OgDcCr5DzxVVhwbG+bPLff/QkRAlNf Cjs9JJ2bxTbzgQYSnz4JQZr4RUZxAJKUCazxlNIivKWfkHJwskZYq8dxN5fzzSErI4EM 0F89n6QdsNKkrgWNxi5XEkFDYHSWcMPY98VNJdjqTXQcKpCqyhTVt0HP0TVgza2D+o53 B4Qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=YYx1T+4atNwsYAUkNYXAuWRC7vMHJzuHplwG+C79x20=; b=HMiRmX+uFXUvJU+04d9xCEhIWF/dZMrbzP+fX67MaqK39uteJyrjtTZdKhAbxK4VKT iSTuaw/0V5FxfFRrKoo4Ybhpyc+13y9XA21maqtLb7kcZFdL4qfaV2VtCHOcrcGYs3Ra 0OD2TWSx5DD++IuKJzWjazpgEuvQBQ0y2erUQEwNcw/dDMzXlLyR4IXa2I+sJtMh3j9f +cPea1ESYGeoaqtjo3vlzRVmxew3l8ulrbQySZLZfBkMe6vt73h3w5WvplBUokefnaG3 afZFhJYsvbny8y1yFwGnrlEMxNEmbZ/pncm743bAt1ZEMBmdckD3Tlu+7N1Buok+BNSW 2JOg== X-Gm-Message-State: AOAM530MEG3nKsxaDEusMKsW7bNSZSdXjmcoaR3luoW7yHGZ0vI1/gqh A4DGwamMrAUl7dh8yp7+PBOPYGp3lsQ= X-Google-Smtp-Source: ABdhPJxmTG/Hoy8x4SkaFgXWiI34fRoTcs5wVvpJU95JkI7V3G9xzyVxfo2Fu0+j9FhBXnXz2rDkYA== X-Received: by 2002:a4a:8241:: with SMTP id t1mr15425559oog.13.1626643659625; Sun, 18 Jul 2021 14:27:39 -0700 (PDT) Received: from localhost (2603-8081-140c-1a00-0284-9a3c-0f8a-4ac7.res6.spectrum.com. [2603:8081:140c:1a00:284:9a3c:f8a:4ac7]) by smtp.gmail.com with ESMTPSA id x73sm2967690oif.44.2021.07.18.14.27.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jul 2021 14:27:39 -0700 (PDT) From: Bob Pearson To: jgg@nvidia.com, zyjzyj2000@gmail.com, linux-rdma@vger.kernel.org Cc: Bob Pearson Subject: [PATCH for-next v2 3/5] RDMA/rxe: Create AH index and return to user space Date: Sun, 18 Jul 2021 16:27:02 -0500 Message-Id: <20210718212703.21471-4-rpearsonhpe@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210718212703.21471-1-rpearsonhpe@gmail.com> References: <20210718212703.21471-1-rpearsonhpe@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Modify rxe_create_ah() to add an index to AH when created and if called from a new user provider return it to user space. If called from an old provider mark the AH as not having a useful index. Modify rxe_destroy_ah to drop the index before deleting the object. Also use the PD in the core ib_ah struct instead of a duplicate copy in rxe_ah. Signed-off-by: Bob Pearson --- drivers/infiniband/sw/rxe/rxe_verbs.c | 31 ++++++++++++++++++++++++++- drivers/infiniband/sw/rxe/rxe_verbs.h | 8 ++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c index 4176fffa7fdc..1cc12c913e39 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.c +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c @@ -161,9 +161,19 @@ static int rxe_create_ah(struct ib_ah *ibah, struct ib_udata *udata) { - int err; struct rxe_dev *rxe = to_rdev(ibah->device); struct rxe_ah *ah = to_rah(ibah); + struct rxe_create_ah_resp __user *uresp = NULL; + int err; + + if (udata) { + /* test if new user provider */ + if (udata->outlen >= sizeof(*uresp)) + uresp = udata->outbuf; + ah->is_user = true; + } else { + ah->is_user = false; + } err = rxe_av_chk_attr(rxe, init_attr->ah_attr); if (err) @@ -173,6 +183,24 @@ static int rxe_create_ah(struct ib_ah *ibah, if (err) return err; + /* create index > 0 */ + rxe_add_index(ah); + ah->ah_num = ah->pelem.index; + + if (uresp) { + /* only if new user provider */ + err = copy_to_user(&uresp->ah_num, &ah->ah_num, + sizeof(uresp->ah_num)); + if (err) { + rxe_drop_index(ah); + rxe_drop_ref(ah); + return -EFAULT; + } + } else if (ah->is_user) { + /* only if old user provider */ + ah->ah_num = 0; + } + rxe_init_av(init_attr->ah_attr, &ah->av); return 0; } @@ -205,6 +233,7 @@ static int rxe_destroy_ah(struct ib_ah *ibah, u32 flags) { struct rxe_ah *ah = to_rah(ibah); + rxe_drop_index(ah); rxe_drop_ref(ah); return 0; } diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.h b/drivers/infiniband/sw/rxe/rxe_verbs.h index 959a3260fcab..fa234d7ad382 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.h +++ b/drivers/infiniband/sw/rxe/rxe_verbs.h @@ -46,8 +46,9 @@ struct rxe_pd { struct rxe_ah { struct ib_ah ibah; struct rxe_pool_entry pelem; - struct rxe_pd *pd; struct rxe_av av; + bool is_user; + int ah_num; }; struct rxe_cqe { @@ -469,6 +470,11 @@ static inline struct rxe_mw *to_rmw(struct ib_mw *mw) return mw ? container_of(mw, struct rxe_mw, ibmw) : NULL; } +static inline struct rxe_pd *ah_pd(struct rxe_ah *ah) +{ + return to_rpd(ah->ibah.pd); +} + static inline struct rxe_pd *mr_pd(struct rxe_mr *mr) { return to_rpd(mr->ibmr.pd); From patchwork Sun Jul 18 21:27:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bob Pearson X-Patchwork-Id: 12384463 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9DB0CC636CA for ; Sun, 18 Jul 2021 21:27:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7A36460FEA for ; Sun, 18 Jul 2021 21:27:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232895AbhGRVal (ORCPT ); Sun, 18 Jul 2021 17:30:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57352 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232896AbhGRVak (ORCPT ); Sun, 18 Jul 2021 17:30:40 -0400 Received: from mail-ot1-x329.google.com (mail-ot1-x329.google.com [IPv6:2607:f8b0:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DD750C061762 for ; Sun, 18 Jul 2021 14:27:40 -0700 (PDT) Received: by mail-ot1-x329.google.com with SMTP id 42-20020a9d012d0000b02904b98d90c82cso16169392otu.5 for ; Sun, 18 Jul 2021 14:27:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2uXvT2E/bOcgWhDkWg8W6+iY8xVb9gLWp8HbFjcf94g=; b=urOpH3RoYNLdLsmlTpU8Ooeo99rR/4YivbMmRVI17Bxq8j9IlYRa0r81dy6/ZoGIF4 FpHEiJsoM3KQWB1Lz9lvaV36oxy6e62bUOcSSZWwu3KpXbLDyC4QIXRE/yBoYTGi0J5n SuXmpr4ihJo/su5TNj6iIuCxb25MTOAsiWsKAsVDrj2vh/R+Xn9MrTHz2gGmpjl29/aG /ILF0g7dPha5GMkmWp0C3G/y5XVEfRM5kWiD60CjpxI5n2yOvLu5u3Wh+uk4VjXIUJkE 8ucaqKF13Rb4m7orshNOe4GnCNd1F+rW4H/8KEVxbNnPa8eKIYfXg9/7J2PhczRV4XyZ Z0nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2uXvT2E/bOcgWhDkWg8W6+iY8xVb9gLWp8HbFjcf94g=; b=RuRvA+ObIEyGkOYLuPaKElIHVf819elRWo69e7m+5URNg/a9AvBWqES0RhTkkjHRQM XuY6fgU32wc3VaG5Re9YEvOJ616WvPb6TNbwp98QjlByoCrlQ5Ac0alu3KNEKtkFoMkS PH9NIe/rvcj0ykJNLVHHa2eLvF9P9zej6rfv2K1z/ESNAM6to1KxePs5IIJQ6eqCElIq dpmMAmVo+AOE68cQ1Ovz8jbTgue9ctSimUM5EPk9BtZo3nSsSxRj555avA/2eUZLoFGJ pyhMmpEx9BNYbdEeQLNisOSJj4+vPfpX1OfIJ4Sj2NO97tnRlvX42I4H9eVuaovTyyfo RSSQ== X-Gm-Message-State: AOAM531zvJJVC5alnRpjg5JBo/+/RcfQejTTJW5QxJcQqTosf0wVtnPV T6+A/gR3kvbH26T9zPSc9Sw= X-Google-Smtp-Source: ABdhPJy17ljcIyPh8i8ZwvMXH5FbgwYuZjKZaYarGOoitC34QiS+Pr5VLsCBq0804dMvIvJUkfEHsw== X-Received: by 2002:a05:6830:120b:: with SMTP id r11mr16215104otp.173.1626643660366; Sun, 18 Jul 2021 14:27:40 -0700 (PDT) Received: from localhost (2603-8081-140c-1a00-0284-9a3c-0f8a-4ac7.res6.spectrum.com. [2603:8081:140c:1a00:284:9a3c:f8a:4ac7]) by smtp.gmail.com with ESMTPSA id n9sm3245067otn.54.2021.07.18.14.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jul 2021 14:27:40 -0700 (PDT) From: Bob Pearson To: jgg@nvidia.com, zyjzyj2000@gmail.com, linux-rdma@vger.kernel.org Cc: Bob Pearson Subject: [PATCH for-next v2 4/5] RDMA/rxe: Lookup kernel AH from ah index in UD WQEs Date: Sun, 18 Jul 2021 16:27:03 -0500 Message-Id: <20210718212703.21471-5-rpearsonhpe@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210718212703.21471-1-rpearsonhpe@gmail.com> References: <20210718212703.21471-1-rpearsonhpe@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Add code to rxe_get_av in rxe_av.c to use the AH index in UD send WQEs to lookup the kernel AH. For old user providers continue to use the AV passed in WQEs. Move setting pkt->rxe to before the call to rxe_get_av() to get access to the AH pool. Signed-off-by: Bob Pearson --- drivers/infiniband/sw/rxe/rxe_av.c | 20 +++++++++++++++++++- drivers/infiniband/sw/rxe/rxe_req.c | 8 +++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe_av.c b/drivers/infiniband/sw/rxe/rxe_av.c index 85580ea5eed0..38f75249588e 100644 --- a/drivers/infiniband/sw/rxe/rxe_av.c +++ b/drivers/infiniband/sw/rxe/rxe_av.c @@ -101,11 +101,29 @@ void rxe_av_fill_ip_info(struct rxe_av *av, struct rdma_ah_attr *attr) struct rxe_av *rxe_get_av(struct rxe_pkt_info *pkt) { + struct rxe_ah *ah; + u32 ah_num; + if (!pkt || !pkt->qp) return NULL; if (qp_type(pkt->qp) == IB_QPT_RC || qp_type(pkt->qp) == IB_QPT_UC) return &pkt->qp->pri_av; - return (pkt->wqe) ? &pkt->wqe->wr.wr.ud.av : NULL; + if (!pkt->wqe) + return NULL; + + ah_num = pkt->wqe->wr.wr.ud.ah_num; + if (ah_num) { + /* only new user provider or kernel client */ + ah = rxe_pool_get_index(&pkt->rxe->ah_pool, ah_num); + if (!ah || ah->ah_num != ah_num || ah_pd(ah) != pkt->qp->pd) { + pr_warn("Unable to find AH matching ah_num\n"); + return NULL; + } + return &ah->av; + } + + /* only old user provider for UD sends*/ + return &pkt->wqe->wr.wr.ud.av; } diff --git a/drivers/infiniband/sw/rxe/rxe_req.c b/drivers/infiniband/sw/rxe/rxe_req.c index c57699cc6578..01485de2cc7d 100644 --- a/drivers/infiniband/sw/rxe/rxe_req.c +++ b/drivers/infiniband/sw/rxe/rxe_req.c @@ -390,9 +390,8 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp, /* length from start of bth to end of icrc */ paylen = rxe_opcode[opcode].length + payload + pad + RXE_ICRC_SIZE; - /* pkt->hdr, rxe, port_num and mask are initialized in ifc - * layer - */ + /* pkt->hdr, port_num and mask are initialized in ifc layer */ + pkt->rxe = rxe; pkt->opcode = opcode; pkt->qp = qp; pkt->psn = qp->req.psn; @@ -402,6 +401,9 @@ static struct sk_buff *init_req_packet(struct rxe_qp *qp, /* init skb */ av = rxe_get_av(pkt); + if (!av) + return NULL; + skb = rxe_init_packet(rxe, av, paylen, pkt); if (unlikely(!skb)) return NULL; From patchwork Sun Jul 18 21:27:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Bob Pearson X-Patchwork-Id: 12384465 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id F2D43C636CB for ; Sun, 18 Jul 2021 21:27:43 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D401760E09 for ; Sun, 18 Jul 2021 21:27:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230225AbhGRVal (ORCPT ); Sun, 18 Jul 2021 17:30:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57358 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232898AbhGRVak (ORCPT ); Sun, 18 Jul 2021 17:30:40 -0400 Received: from mail-oi1-x231.google.com (mail-oi1-x231.google.com [IPv6:2607:f8b0:4864:20::231]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 91E1AC061764 for ; Sun, 18 Jul 2021 14:27:41 -0700 (PDT) Received: by mail-oi1-x231.google.com with SMTP id w194so18439797oie.5 for ; Sun, 18 Jul 2021 14:27:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=EFI/GfRFGOP1NZOrOUXrnngHrueYs1pXzobn8r6/VKQ=; b=Ph6HDs9svMcNdly1XHDgh8oyNxF/rS6Ivm2iTnO6h/77P7Q6HG/ERRG4FfM2cMO6Fe Qlen+01fNKyIRn7WYBhwJ2GWs8RdGcFCMTfEqAbtqkdi3VDFpVQsfHwVVYjUJU9VTzUX O5DEefBZk4uEJMG9FVzzKwRIfws64ik19uvp/qfNHEyIP0MywGF4z/N7eARNOEAyG7JZ Nf+KsIdxT3Kgw50I8kF0G/rq2amMiB90WD+E7PqkhAreHu9yoRNrKRlKJyUw7VOP4VoD m9I+TTlxdN7McvPQEUzBQrqVaEA2mvTqZmwd+pdM0inw/+kkmr+Z98v7M0UDSxcsxhCi VDYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=EFI/GfRFGOP1NZOrOUXrnngHrueYs1pXzobn8r6/VKQ=; b=ji0M8I+A63Q8/7Oomk3ldLW+Wt6Rr7tBOYos6LLrU+Eaj+Er+zH/4mV1th2Z3HkO/Z Dbkr+peyfC7dcaae+DsKLy7reITQ0CYnT3PDrFv7hR97TzUVHeKhUNuEC3rxg7Qkg0wc Om92pj7h8Cbj5Ku1ew6x7DCsGjt9C/LfzENJsYU4PQsEmBQiPcj/2hurT80n8JGE8JaJ eGlEvzDJqa9itPyrw0guAQDlp/eslrLAqBd/PMF8PYy/4ta1dzEKvu+WRfZ0NMd830dx k/qK5xqMqKJPVP7jz8iGJsCU6DElT7EsigItX3zk0677aXNevG3QSkoSas2dkVFyWR5d H/Og== X-Gm-Message-State: AOAM5336ZEBe+BlF0med79EYobqnGoDb5pzEiX73NpqDuelnCaCXdRF/ v2PvJbVvqIhZ1kkjqY3XLkw= X-Google-Smtp-Source: ABdhPJzWGiGx/mUiKnMxM4HKDBdAypS7x2lVRtJOPoL6H/jxgtZZqxPcuwAawyfCKdNeHOfPcrYwCg== X-Received: by 2002:a54:4094:: with SMTP id i20mr3698661oii.159.1626643661057; Sun, 18 Jul 2021 14:27:41 -0700 (PDT) Received: from localhost (2603-8081-140c-1a00-0284-9a3c-0f8a-4ac7.res6.spectrum.com. [2603:8081:140c:1a00:284:9a3c:f8a:4ac7]) by smtp.gmail.com with ESMTPSA id 39sm3199152otg.36.2021.07.18.14.27.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Jul 2021 14:27:40 -0700 (PDT) From: Bob Pearson To: jgg@nvidia.com, zyjzyj2000@gmail.com, linux-rdma@vger.kernel.org Cc: Bob Pearson Subject: [PATCH for-next v2 5/5] RDMA/rxe: Convert kernel UD post send to use ah_num Date: Sun, 18 Jul 2021 16:27:04 -0500 Message-Id: <20210718212703.21471-6-rpearsonhpe@gmail.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20210718212703.21471-1-rpearsonhpe@gmail.com> References: <20210718212703.21471-1-rpearsonhpe@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org Modify ib_post_send for kernel UD sends to put the AH index into the WQE instead of the address vector. Signed-off-by: Bob Pearson --- drivers/infiniband/sw/rxe/rxe_verbs.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/infiniband/sw/rxe/rxe_verbs.c b/drivers/infiniband/sw/rxe/rxe_verbs.c index 1cc12c913e39..5d63e276306c 100644 --- a/drivers/infiniband/sw/rxe/rxe_verbs.c +++ b/drivers/infiniband/sw/rxe/rxe_verbs.c @@ -558,8 +558,11 @@ static void init_send_wr(struct rxe_qp *qp, struct rxe_send_wr *wr, if (qp_type(qp) == IB_QPT_UD || qp_type(qp) == IB_QPT_SMI || qp_type(qp) == IB_QPT_GSI) { + struct ib_ah *ibah = ud_wr(ibwr)->ah; + wr->wr.ud.remote_qpn = ud_wr(ibwr)->remote_qpn; wr->wr.ud.remote_qkey = ud_wr(ibwr)->remote_qkey; + wr->wr.ud.ah_num = to_rah(ibah)->ah_num; if (qp_type(qp) == IB_QPT_GSI) wr->wr.ud.pkey_index = ud_wr(ibwr)->pkey_index; if (wr->opcode == IB_WR_SEND_WITH_IMM) @@ -631,12 +634,6 @@ static void init_send_wqe(struct rxe_qp *qp, const struct ib_send_wr *ibwr, return; } - if (qp_type(qp) == IB_QPT_UD || - qp_type(qp) == IB_QPT_SMI || - qp_type(qp) == IB_QPT_GSI) - memcpy(&wqe->wr.wr.ud.av, &to_rah(ud_wr(ibwr)->ah)->av, - sizeof(struct rxe_av)); - if (unlikely(ibwr->send_flags & IB_SEND_INLINE)) copy_inline_data_to_wqe(wqe, ibwr); else