Received: by 2002:a05:6a10:9848:0:0:0:0 with SMTP id x8csp3404613pxf; Mon, 22 Mar 2021 05:49:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJytRUsMeSceroTEQ7w5IGn1RJtGg+rLC8Ume+9iobjWe9VdE2RnYAW/gxdDqneTmprANH19 X-Received: by 2002:a50:f9c8:: with SMTP id a8mr25642823edq.270.1616417354845; Mon, 22 Mar 2021 05:49:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1616417354; cv=none; d=google.com; s=arc-20160816; b=Vul7nshArRLU9MaQCbw53zLWOwJ6oewZi0oOlfVa+GwI9NDDJGMcClJBc/aCRWiwJs XFDL246199G47286aU+5OI9zzzj5li8a+5OVTJMH28FsAxGuWr0NVvT+vFGxOrwacWur Mu3uHMt3Ld8FsPulhnxFV77y73U0qbW9MOoDecdKSnYULMB+b/muUtMpJ8WvBAhLTdkg bnxydGyEccTfG3KJaFIMES3VmAIyU647QLLQYELU98iNN8nI4amFBPDxb0RHzlt6Qsve ktKdSZE6tCCLybviTLSwSJVNO0gS/kY431EdO5u9r1iOdsFc4104YSmM0MoXJYUVTlru rJpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=j1g0xNu+GZ9ayl2f05AdqwntNFT7VBAl4If1AQXaFKA=; b=lUWTciXVxboOvcbbtEswQSPCXbeH7BSzGFvtW1/1wW52M11JUfZ+gQpYZLZ1y7FPVO pDFnHTmCd6wQrE1eHVN1CH5+t3bKfjEQfjmEgiCz3qqQkP3IysIOcJo3Y6GM7keeM3J0 tJGe3+kz6Wmi1StjMk0hLi0eM4rLkuVbRnGV5H9vEdV1IPXA+WJvZq8a68KjNY6zTvjB DVFVhDX/ACXCLn36a5RZPMeYGZ8Y/PuE2fKiIq0dyk9eKzHfd1RJHZpwC+8NCPgsgXtm rCroANDATdfY/RB/KE1r7CfuaGLQLYhbMWcSiu6sQnLHp7ClgGOp7NATtudOocxYzOMs Q3NA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=aXzqREBB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q20si5548051ejb.289.2021.03.22.05.48.51; Mon, 22 Mar 2021 05:49:14 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=aXzqREBB; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232387AbhCVMrd (ORCPT + 99 others); Mon, 22 Mar 2021 08:47:33 -0400 Received: from mail.kernel.org ([198.145.29.99]:33602 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231963AbhCVMjZ (ORCPT ); Mon, 22 Mar 2021 08:39:25 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 3F20C619C4; Mon, 22 Mar 2021 12:38:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1616416693; bh=GaYubZUfGfHNa855R3fiJFI6qyDaYzuNHGaK9TiWbuc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aXzqREBB3Brk87pTKn2BnQgLLvTmkMC3qm2knhfBmKZBsc49TU/3xOr0jZWjcEYeG GpvH2hVgnuUCI7u9RgrAq6M7odM0cenJ1uXERVTiToxDFyPm13QQFeY8nlfjjmxqn8 l5yegfPPOdfcXL70EO1JH4GcitsdxSi4D8UjsDSQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mark Bloch , Maor Gottlieb , Leon Romanovsky , Jason Gunthorpe , Sasha Levin Subject: [PATCH 5.10 085/157] RDMA/mlx5: Allow creating all QPs even when non RDMA profile is used Date: Mon, 22 Mar 2021 13:27:22 +0100 Message-Id: <20210322121936.486843189@linuxfoundation.org> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20210322121933.746237845@linuxfoundation.org> References: <20210322121933.746237845@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mark Bloch [ Upstream commit 2614488d1f3cd5989375042286b11424208e20c8 ] The cited commit disallowed creating any QP which isn't raw ethernet, reg umr or the special UD qp for testing WC, this proved too strict. While modify can't be done (no GIDS/GID table for example) just creating a QP is okay. This patch partially reverts the bellow mentioned commit and places the restriction at the modify QP stage and not at the creation. DEVX commands should be used to manipulate such QPs. Fixes: 42caf9cb5937 ("RDMA/mlx5: Allow only raw Ethernet QPs when RoCE isn't enabled") Link: https://lore.kernel.org/r/20210125120709.836718-1-leon@kernel.org Signed-off-by: Mark Bloch Reviewed-by: Maor Gottlieb Signed-off-by: Leon Romanovsky Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/hw/mlx5/qp.c | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c index 600e056798c0..75caeec378bd 100644 --- a/drivers/infiniband/hw/mlx5/qp.c +++ b/drivers/infiniband/hw/mlx5/qp.c @@ -2458,8 +2458,6 @@ static int check_qp_type(struct mlx5_ib_dev *dev, struct ib_qp_init_attr *attr, case MLX5_IB_QPT_HW_GSI: case IB_QPT_DRIVER: case IB_QPT_GSI: - if (dev->profile == &raw_eth_profile) - goto out; case IB_QPT_RAW_PACKET: case IB_QPT_UD: case MLX5_IB_QPT_REG_UMR: @@ -2654,10 +2652,6 @@ static int process_create_flags(struct mlx5_ib_dev *dev, struct mlx5_ib_qp *qp, int create_flags = attr->create_flags; bool cond; - if (qp->type == IB_QPT_UD && dev->profile == &raw_eth_profile) - if (create_flags & ~MLX5_IB_QP_CREATE_WC_TEST) - return -EINVAL; - if (qp_type == MLX5_IB_QPT_DCT) return (create_flags) ? -EINVAL : 0; @@ -4235,6 +4229,23 @@ static int mlx5_ib_modify_dct(struct ib_qp *ibqp, struct ib_qp_attr *attr, return 0; } +static bool mlx5_ib_modify_qp_allowed(struct mlx5_ib_dev *dev, + struct mlx5_ib_qp *qp, + enum ib_qp_type qp_type) +{ + if (dev->profile != &raw_eth_profile) + return true; + + if (qp_type == IB_QPT_RAW_PACKET || qp_type == MLX5_IB_QPT_REG_UMR) + return true; + + /* Internal QP used for wc testing, with NOPs in wq */ + if (qp->flags & MLX5_IB_QP_CREATE_WC_TEST) + return true; + + return false; +} + int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask, struct ib_udata *udata) { @@ -4247,6 +4258,9 @@ int mlx5_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int err = -EINVAL; int port; + if (!mlx5_ib_modify_qp_allowed(dev, qp, ibqp->qp_type)) + return -EOPNOTSUPP; + if (ibqp->rwq_ind_tbl) return -ENOSYS; -- 2.30.1