From patchwork Thu Jan 17 18:54:59 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Devesh Sharma X-Patchwork-Id: 10768799 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 186DC91E for ; Thu, 17 Jan 2019 18:55:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 09CC52ACFF for ; Thu, 17 Jan 2019 18:55:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F285C2B5B7; Thu, 17 Jan 2019 18:55:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.0 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 89BA02ACFF for ; Thu, 17 Jan 2019 18:55:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727565AbfAQSz3 (ORCPT ); Thu, 17 Jan 2019 13:55:29 -0500 Received: from mail-pf1-f193.google.com ([209.85.210.193]:33305 "EHLO mail-pf1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727396AbfAQSz3 (ORCPT ); Thu, 17 Jan 2019 13:55:29 -0500 Received: by mail-pf1-f193.google.com with SMTP id c123so5277979pfb.0 for ; Thu, 17 Jan 2019 10:55:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=R6HNdDGYmQplzy6smC9LsIQ0GTpxOis+DNRs5x2YRzs=; b=WOYdfUTzMZIQ+4pUJm9uQ8ckqoTpx+612zWlczW/+B6Xg6qX4qJUm7zr5QBOaRGVj9 +YxLL0s1l6eeJQFcABDc2BYgre3ylYtjpW675Jnc972aGR9/L+DxeJr1Zsf+6cUqsJqy Y+c6RbXZSQ+gMludchUqOtqEQteCvKTNB4XOA= 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; bh=R6HNdDGYmQplzy6smC9LsIQ0GTpxOis+DNRs5x2YRzs=; b=QKp8dWLP9X9TVpXdxoE+vs9OhquzCL6DukvKskVBo7htlAfwTPct4pDCzBLLkq/MLu SJK16VlVGEMOz40S9CMFTSW7vvEuLZ69xcwxL+Yj/zzXqA7ZAV/bB3V9/F7ib6fp3QK5 Ijs6VqlXs5HCCq0tZtG+RbtrV8CC711og2n/AfoNLAXaxP/dR5nOgOhu3p2l5TQq8exK tPevFXwDBEJLDK9jbw40zuH/10aSzNz1uA/hIcAzDhW8zhhYJUoDxG2kQaUTylM4RUiL oy2cqgkFa0WouLjEA2KhAqHG6boa1ecu4NEUMS4xfaUfOeejUPvmVlKjtoo1rs038+F8 IfPw== X-Gm-Message-State: AJcUukdK6C3JRUbKwkMfVnLotttU4TO6FNqpC7QbncrpSz4Pwp9uVYLg G5RuUozgly36ispFB1UTW+Rv4D4cPqaykIuWWp3DqF8csx5sV0AxAmKcOEIKKQ01LndZtzV66/R Vp5BhK4wsSfzIXKdW6vMhew0J0siROay+B2aQTfwJKM7D5L7rw9LkPM6T/yF4PRJQ4ggIJlpsoA apYg0= X-Google-Smtp-Source: ALg8bN5SE+UDm9r5MnC8xcK8YGbE10bt34pT488gnV4l8oL6cMYbBHHMiBqo7YBD/fQTYVUnJEAPTA== X-Received: by 2002:a63:554b:: with SMTP id f11mr14885094pgm.37.1547751327832; Thu, 17 Jan 2019 10:55:27 -0800 (PST) Received: from neo00-el73.dhcp.broadcom.net ([192.19.234.250]) by smtp.gmail.com with ESMTPSA id y191sm5882258pfg.56.2019.01.17.10.55.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 17 Jan 2019 10:55:27 -0800 (PST) From: Devesh Sharma To: linux-rdma@vger.kernel.org Cc: dledford@redhat.com, jgg@mellanox.com, Devesh Sharma Subject: [for-next V3 6/7] RDMA/bnxt_re: Update kernel user abi to pass chip context Date: Thu, 17 Jan 2019 13:54:59 -0500 Message-Id: <1547751300-23887-7-git-send-email-devesh.sharma@broadcom.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1547751300-23887-1-git-send-email-devesh.sharma@broadcom.com> References: <1547751300-23887-1-git-send-email-devesh.sharma@broadcom.com> Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP User space verbs provider library would need chip context. Changing the ABI to add chip version details in structure. Furthermore, changing the kernel driver ucontext allocation code to initialize the abi structure with appropriate values. As suggested by community, appended the new fields at the bottom of the ABI structure and retaining to older fields as those were in the older versions. Keeping the ABI version at 1 and adding a new field in the ucontext response structure to hold the component mask. The user space library should check pre-defined flags to figure out if a certain feature is supported on not. Signed-off-by: Devesh Sharma --- drivers/infiniband/hw/bnxt_re/ib_verbs.c | 15 +++++++++++++-- include/uapi/rdma/bnxt_re-abi.h | 11 +++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c index 08c1725..c817b82 100644 --- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c @@ -3692,9 +3692,10 @@ struct ib_ucontext *bnxt_re_alloc_ucontext(struct ib_device *ibdev, struct ib_udata *udata) { struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibdev, ibdev); + struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr; struct bnxt_re_uctx_resp resp; struct bnxt_re_ucontext *uctx; - struct bnxt_qplib_dev_attr *dev_attr = &rdev->dev_attr; + u32 chip_met_rev_num = 0; int rc; dev_dbg(rdev_to_dev(rdev), "ABI version requested %d", @@ -3719,7 +3720,17 @@ struct ib_ucontext *bnxt_re_alloc_ucontext(struct ib_device *ibdev, } spin_lock_init(&uctx->sh_lock); - resp.dev_id = rdev->en_dev->pdev->devfn; /*Temp, Use idr_alloc instead*/ + resp.comp_mask |= BNXT_RE_UCNTX_CMASK_HAVE_CCTX; + chip_met_rev_num = rdev->chip_ctx.chip_num; + chip_met_rev_num |= ((u32)rdev->chip_ctx.chip_rev & 0xFF) << + BNXT_RE_CHIP_ID0_CHIP_REV_SFT; + chip_met_rev_num |= ((u32)rdev->chip_ctx.chip_metal & 0xFF) << + BNXT_RE_CHIP_ID0_CHIP_MET_SFT; + resp.chip_id0 = chip_met_rev_num; + /* Future extension of chip info */ + resp.chip_id1 = 0; + /*Temp, Use idr_alloc instead */ + resp.dev_id = rdev->en_dev->pdev->devfn; resp.max_qp = rdev->qplib_ctx.qpc_count; resp.pg_size = PAGE_SIZE; resp.cqe_sz = sizeof(struct cq_base); diff --git a/include/uapi/rdma/bnxt_re-abi.h b/include/uapi/rdma/bnxt_re-abi.h index a7a6111..92887f8 100644 --- a/include/uapi/rdma/bnxt_re-abi.h +++ b/include/uapi/rdma/bnxt_re-abi.h @@ -44,6 +44,14 @@ #define BNXT_RE_ABI_VERSION 1 +#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00 +#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10 +#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18 + +enum bnxt_re_comp_mask { + BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL +}; + struct bnxt_re_uctx_resp { __u32 dev_id; __u32 max_qp; @@ -51,6 +59,9 @@ struct bnxt_re_uctx_resp { __u32 cqe_sz; __u32 max_cqd; __u32 rsvd; + __u64 comp_mask; + __u32 chip_id0; + __u32 chip_id1; }; /*