Received: by 2002:a25:f815:0:0:0:0:0 with SMTP id u21csp2235325ybd; Mon, 24 Jun 2019 03:03:45 -0700 (PDT) X-Google-Smtp-Source: APXvYqxBiYNV0q4MHtdrTdD/YO8bYlasRE4K2W9Yy6Xi4yfaZjA6NKstxZfU1nsrlbWt7WhC34Ke X-Received: by 2002:a17:902:d887:: with SMTP id b7mr40403569plz.28.1561370625450; Mon, 24 Jun 2019 03:03:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1561370625; cv=none; d=google.com; s=arc-20160816; b=R35STG04e/L9yoIkCY5lhqopEJ0wsoziINMJK7NCOJZ6dShsNXnohq/77LTsNewxD1 iW5yBr9FGWYADUtQKr0GDaB88LL7JRIxH3tbx6CL0MQ2r6aM5r7p4c9tZx+JrXMbcFl0 yHA4ujtlkNp8mvk9TTetuV7Bm4vuy5zB3XOj3bxz+9tmI8i34iSyFP140k1lMQrhUsct 1rKHOaIcXvc0LCO6W7nHUDlbtnwjUFp7RgCxlf8FAYpSclEsDHOfv1DGIGiRAzWL/W3D T7LHLbULj3S9cKqa/5+Xu8y+o+XkzKaJvfyNyU/YtC6W6mCpzvwtGjqkQDp5QB6fnP4y Uanw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=KprFIGl1Lcpf4AkoHretUhl8kYu2XB3wJn9llpMdGgU=; b=ciOCbsMKCn6+7yWKsxJDJ8tfY1WDfcGBwgYTB2CT9vqoPAMDDRNL+WdaX5aPY4mGF4 GUfMedO6S4eYpApLjoNGU/Ab4r8kLyW3p/j/yTzh3En/unJ9t1cvqBa670YCmo9nGSdo 8w5W8iCCqHWfx9h4S5jJzshLKtuDgX7fja0kIUeFMtktAv00mcIbUa2j7L3WDlgadFGl FYDj6LcKgtUGL59h4OTVNTEbXxQaYpNTaEl9VY3awWCL0S08KicbuNa+hRXoslB7mCh6 dJZVsBSdlb+OfD3ojN9vUP4idfqgTzHmgYEtMJHCMrGarAGvU4kvB82yFCuIdixpoESy D53Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=uNFraNmh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m18si10310069pjv.101.2019.06.24.03.03.28; Mon, 24 Jun 2019 03:03:45 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=uNFraNmh; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728933AbfFXJ6L (ORCPT + 99 others); Mon, 24 Jun 2019 05:58:11 -0400 Received: from mail.kernel.org ([198.145.29.99]:56466 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727730AbfFXJ6G (ORCPT ); Mon, 24 Jun 2019 05:58:06 -0400 Received: from localhost (f4.8f.5177.ip4.static.sl-reverse.com [119.81.143.244]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 26BF92133F; Mon, 24 Jun 2019 09:58:05 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1561370285; bh=bEHHrYkQbw1vBG4lqYRQmMIy7a27mNWZcIwa2xrVEWo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=uNFraNmhTHiuYWeKe+SgzcmGQwgIpLyr/Uk8q76fOSJ6ECWI2C/fcUSRtRkzCFYfH gzDZtGXvckLdzGcdmlur6K21gOR7SQ8EqkkehpeGRD1+G19h9UNu0oGd+8pcw3CNiY SptkJe/6lTq35dpBUTD78tH2qPPYFDYUeio22YyA= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kaike Wan , Mike Marciniszyn , Dennis Dalessandro , Jason Gunthorpe , Sasha Levin Subject: [PATCH 4.14 17/51] IB/rdmavt: Fix alloc_qpn() WARN_ON() Date: Mon, 24 Jun 2019 17:56:35 +0800 Message-Id: <20190624092308.275443094@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190624092305.919204959@linuxfoundation.org> References: <20190624092305.919204959@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 2abae62a26a265129b364d8c1ef3be55e2c01309 ] The qpn allocation logic has a WARN_ON() that intends to detect the use of an index that will introduce bits in the lower order bits of the QOS bits in the QPN. Unfortunately, it has the following bugs: - it misfires when wrapping QPN allocation for non-QOS - it doesn't correctly detect low order QOS bits (despite the comment) The WARN_ON() should not be applied to non-QOS (qos_shift == 1). Additionally, it SHOULD test the qpn bits per the table below: 2 data VLs: [qp7, qp6, qp5, qp4, qp3, qp2, qp1] ^ [ 0, 0, 0, 0, 0, 0, sc0], qp bit 1 always 0* 3-4 data VLs: [qp7, qp6, qp5, qp4, qp3, qp2, qp1] ^ [ 0, 0, 0, 0, 0, sc1, sc0], qp bits [21] always 0 5-8 data VLs: [qp7, qp6, qp5, qp4, qp3, qp2, qp1] ^ [ 0, 0, 0, 0, sc2, sc1, sc0] qp bits [321] always 0 Fix by qualifying the warning for qos_shift > 1 and producing the correct mask to insure the above bits are zero without generating a superfluous warning. Fixes: 501edc42446e ("IB/rdmavt: Correct warning during QPN allocation") Reviewed-by: Kaike Wan Signed-off-by: Mike Marciniszyn Signed-off-by: Dennis Dalessandro Signed-off-by: Jason Gunthorpe Signed-off-by: Sasha Levin --- drivers/infiniband/sw/rdmavt/qp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c index 22df09ae809e..b0309876f4bb 100644 --- a/drivers/infiniband/sw/rdmavt/qp.c +++ b/drivers/infiniband/sw/rdmavt/qp.c @@ -412,7 +412,8 @@ static int alloc_qpn(struct rvt_dev_info *rdi, struct rvt_qpn_table *qpt, offset = qpt->incr | ((offset & 1) ^ 1); } /* there can be no set bits in low-order QoS bits */ - WARN_ON(offset & (BIT(rdi->dparms.qos_shift) - 1)); + WARN_ON(rdi->dparms.qos_shift > 1 && + offset & ((BIT(rdi->dparms.qos_shift - 1) - 1) << 1)); qpn = mk_qpn(qpt, map, offset); } -- 2.20.1