From nobody Tue Jul 02 08:06:20 2024 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4WCwTn3V5pz5Phdl; Tue, 02 Jul 2024 08:06:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4WCwTn1336z4JL7; Tue, 2 Jul 2024 08:06:21 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1719907581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=upWoWTuyJ8DuY+SbB6YIacyqTcOe7vL8jxYP/brOpgQ=; b=yNhacZXSN+lGBXCib+wP+ZScYedXhFE9S6QkokwyJPdFpeFZlFz90Tjf1GmqAqIInJkCRA Dt6WHwJvZBCdmbe32mHyLY/zMEioGWzKDPsLDKzDsUPrPL24fGSk/B9/IDBCl2rb1TxQ/B 34QcDvPntBGjsZOREdaVpo3nuTytz26jFXsXHkdsvojF1n1MMZEYLffizpMlxcuMrYuYEN 5MAEFHzOeHVmW+h8eNgqFQmzI/FERBogugjWCUr2aKsl7uqwJpvVOTqjlA2KsSOtVDUZN3 QSvJPzd0UQ1yuPaQ9+fTXPATb/HSSYH3PzRwU1GxA4439kTm40PTbfDxa7MitQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1719907581; a=rsa-sha256; cv=none; b=k8x8uMbZP+VHP8n2jfoAGIZ9kH20Oir8AjivS+yc9qC9l7U5tG7oDNfUXpQcV7sno2keeo /bWOGEYsDuydZQNzNp/A5z2IDxnqYOiUjAmXudwi/l/aQejwAHSahS4veX+3tUuyhWfgmJ 3MK38NGlV2wGMzekfeRBfmBY2NxQaHn4U+BsOtTX6oQtzneK11j2kjKzpIYAHN9PMwTn0J OocgXXgEe/ZsoR1WDT11K9EWhvZ+TYMkVv4b0CYdBJVdaY3WcDkbXgEn5j/om46YqvoPce WtsYajuSqCmiY8vjZz4SJ8QzekYueFToBU0bxmg6YVJ/K0yNr1O2eVj0HFyoFw== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1719907581; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=upWoWTuyJ8DuY+SbB6YIacyqTcOe7vL8jxYP/brOpgQ=; b=a61EwWhb5fnCGS4EYqux/3Wctdc6V2cbZJD9utc8Z0EJvoSEJmvn8ad/ub9pVA+tpda/56 X6XnUtKpZ3/obC8rqIJgqTtvRRHfHnHL1A1P2NX27POAmNqsm1VOo0B2XSlipmy2vgRNEq YA0cH0+Tyt0M8HiV7JlWYYs/PY6Iy6XiU890KDaOlqGzAGab1RQjEskKhlpiBWTtPYCCyp zzRADaflAUBRTVmBYTMJgxwlEQjnvI0hLuu4x0/3oySYAxsNcyOByqj93PPsE7pTgTYxiZ hwvs6wTq6LSTTy/ehHkH1hEyUFGdz3GhbJi+cbhOB0spAHSqRrXB43BOc7mbzg== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4WCwTn0gTvzgGR; Tue, 2 Jul 2024 08:06:21 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 46286K82083131; Tue, 2 Jul 2024 08:06:20 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 46286KYN083122; Tue, 2 Jul 2024 08:06:20 GMT (envelope-from git) Date: Tue, 2 Jul 2024 08:06:20 GMT Message-Id: <202407020806.46286KYN083122@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Kristof Provost Subject: git: 45b7dd043630 - stable/14 - cxgbe(4): New knob to limit driver to the specified types of doorbells. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: kp X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 45b7dd0436309efcecbf0866011dcab1ed74bb51 Auto-Submitted: auto-generated The branch stable/14 has been updated by kp: URL: https://cgit.FreeBSD.org/src/commit/?id=45b7dd0436309efcecbf0866011dcab1ed74bb51 commit 45b7dd0436309efcecbf0866011dcab1ed74bb51 Author: Navdeep Parhar AuthorDate: 2024-06-13 17:22:03 +0000 Commit: Kristof Provost CommitDate: 2024-07-01 16:07:57 +0000 cxgbe(4): New knob to limit driver to the specified types of doorbells. hw.cxgbe.doorbells_allowed="0xf" The adapter's doorbells bitmap is clipped to the value specified in the tunable, which is meant for debug and workarounds only. There is no change in default behavior. MFC after: 1 week Sponsored by: Chelsio Communications (cherry picked from commit ba95b4aea78909bca972239afcbd51538c4b37c1) --- sys/dev/cxgbe/adapter.h | 1 + sys/dev/cxgbe/t4_main.c | 21 +++++++++++++++++++++ sys/dev/cxgbe/t4_vf.c | 4 ++++ 3 files changed, 26 insertions(+) diff --git a/sys/dev/cxgbe/adapter.h b/sys/dev/cxgbe/adapter.h index b9780809421f..498d80654c71 100644 --- a/sys/dev/cxgbe/adapter.h +++ b/sys/dev/cxgbe/adapter.h @@ -1363,6 +1363,7 @@ void t4_add_adapter(struct adapter *); int t4_detach_common(device_t); int t4_map_bars_0_and_4(struct adapter *); int t4_map_bar_2(struct adapter *); +int t4_adj_doorbells(struct adapter *); int t4_setup_intr_handlers(struct adapter *); void t4_sysctls(struct adapter *); int begin_synchronized_op(struct adapter *, struct vi_info *, int, char *); diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c index f3bee2bbda3f..28119bd419bb 100644 --- a/sys/dev/cxgbe/t4_main.c +++ b/sys/dev/cxgbe/t4_main.c @@ -604,6 +604,11 @@ static int t5_write_combine = 0; SYSCTL_INT(_hw_cxl, OID_AUTO, write_combine, CTLFLAG_RDTUN, &t5_write_combine, 0, "Use WC instead of UC for BAR2"); +/* From t4_sysctls: doorbells = {"\20\1UDB\2WCWR\3UDBWC\4KDB"} */ +static int t4_doorbells_allowed = 0xf; +SYSCTL_INT(_hw_cxgbe, OID_AUTO, doorbells_allowed, CTLFLAG_RDTUN, + &t4_doorbells_allowed, 0, "Limit tx queues to these doorbells"); + static int t4_num_vis = 1; SYSCTL_INT(_hw_cxgbe, OID_AUTO, num_vis, CTLFLAG_RDTUN, &t4_num_vis, 0, "Number of VIs per port"); @@ -1348,6 +1353,10 @@ t4_attach(device_t dev) if (rc != 0) goto done; /* error message displayed already */ + rc = t4_adj_doorbells(sc); + if (rc != 0) + goto done; /* error message displayed already */ + rc = t4_create_dma_tag(sc); if (rc != 0) goto done; /* error message displayed already */ @@ -3765,6 +3774,18 @@ t4_map_bar_2(struct adapter *sc) return (0); } +int +t4_adj_doorbells(struct adapter *sc) +{ + if ((sc->doorbells & t4_doorbells_allowed) != 0) { + sc->doorbells &= t4_doorbells_allowed; + return (0); + } + CH_ERR(sc, "No usable doorbell (available = 0x%x, allowed = 0x%x).\n", + sc->doorbells, t4_doorbells_allowed); + return (EINVAL); +} + struct memwin_init { uint32_t base; uint32_t aperture; diff --git a/sys/dev/cxgbe/t4_vf.c b/sys/dev/cxgbe/t4_vf.c index a4a611ed645c..24c80aaa7b2d 100644 --- a/sys/dev/cxgbe/t4_vf.c +++ b/sys/dev/cxgbe/t4_vf.c @@ -589,6 +589,10 @@ t4vf_attach(device_t dev) if (rc != 0) goto done; /* error message displayed already */ + rc = t4_adj_doorbells(sc); + if (rc != 0) + goto done; /* error message displayed already */ + rc = t4_create_dma_tag(sc); if (rc != 0) goto done; /* error message displayed already */