git: f88b31885c4f - main - cxgbe(4): meminfo should get the TLS region's limits from the hardware.

From: Navdeep Parhar <np_at_FreeBSD.org>
Date: Wed, 06 Apr 2022 20:18:00 UTC
The branch main has been updated by np:

URL: https://cgit.FreeBSD.org/src/commit/?id=f88b31885c4fd1f80bed2c3b3f2eb05f98367f31

commit f88b31885c4fd1f80bed2c3b3f2eb05f98367f31
Author:     Navdeep Parhar <np@FreeBSD.org>
AuthorDate: 2022-04-05 21:54:11 +0000
Commit:     Navdeep Parhar <np@FreeBSD.org>
CommitDate: 2022-04-06 20:15:25 +0000

    cxgbe(4): meminfo should get the TLS region's limits from the hardware.
    
    meminfo is meant for debugging and it should read hardware configuration
    directly when possible instead of relying on values queried from the
    firmware.  Rename the region to "TLSKey region" to match other drivers
    while here.
    
    MFC after:      1 week
    Sponsored by:   Chelsio Communications
---
 sys/dev/cxgbe/t4_main.c | 14 +++++---------
 1 file changed, 5 insertions(+), 9 deletions(-)

diff --git a/sys/dev/cxgbe/t4_main.c b/sys/dev/cxgbe/t4_main.c
index 898a1d1ca4f3..3b6b884f1077 100644
--- a/sys/dev/cxgbe/t4_main.c
+++ b/sys/dev/cxgbe/t4_main.c
@@ -9708,8 +9708,8 @@ sysctl_meminfo(SYSCTL_HANDLER_ARGS)
 		"Tx payload:", "Rx payload:", "LE hash:", "iSCSI region:",
 		"TDDP region:", "TPT region:", "STAG region:", "RQ region:",
 		"RQUDP region:", "PBL region:", "TXPBL region:",
-		"DBVFIFO region:", "ULPRX state:", "ULPTX state:",
-		"On-chip queues:", "TLS keys:",
+		"TLSKey region:", "DBVFIFO region:", "ULPRX state:",
+		"ULPTX state:", "On-chip queues:",
 	};
 	struct mem_desc avail[4];
 	struct mem_desc mem[nitems(region) + 3];	/* up to 3 holes */
@@ -9824,6 +9824,8 @@ sysctl_meminfo(SYSCTL_HANDLER_ARGS)
 	ulp_region(RX_RQUDP);
 	ulp_region(RX_PBL);
 	ulp_region(TX_PBL);
+	if (sc->cryptocaps & FW_CAPS_CONFIG_TLSKEYS)
+		ulp_region(RX_TLS_KEY);
 #undef ulp_region
 
 	md->base = 0;
@@ -9862,13 +9864,6 @@ sysctl_meminfo(SYSCTL_HANDLER_ARGS)
 		md->idx = nitems(region);  /* hide it */
 	md++;
 
-	md->base = sc->vres.key.start;
-	if (sc->vres.key.size)
-		md->limit = md->base + sc->vres.key.size - 1;
-	else
-		md->idx = nitems(region);  /* hide it */
-	md++;
-
 	/* add any address-space holes, there can be up to 3 */
 	for (n = 0; n < i - 1; n++)
 		if (avail[n].limit < avail[n + 1].base)
@@ -9877,6 +9872,7 @@ sysctl_meminfo(SYSCTL_HANDLER_ARGS)
 		(md++)->base = avail[n].limit;
 
 	n = md - mem;
+	MPASS(n <= nitems(mem));
 	qsort(mem, n, sizeof(struct mem_desc), mem_desc_cmp);
 
 	for (lo = 0; lo < i; lo++)