From nobody Mon Sep 02 08:50:50 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 4Wy2XV50PXz5Mnyb; Mon, 02 Sep 2024 08:50:50 +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 4Wy2XV30hwz42QF; Mon, 2 Sep 2024 08:50:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1725267050; 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=Ek5YanpJxnukBV7V+v2Qwn/0+60xYAECF130XLZoC2A=; b=EZn9sd4i5H/Tw51vSRtx1YK3h7xCcLYTh5srX2qTTe2bnRtYTuNhtfgq/ZQSmLv1Ab4U8Y z3kG0acRA8JejPsD8a/MLj2rfMLeb2JqFYC3959jMwI2IBRMkrFLqOrXAP4cFaGkF32Bla eY+QNUCLsgbqtZkoK0eKZPqkdjHB+eJZkMTVCiLsUrPx60Kg0vkpyjS2SVv3m8cdA5Pljm FHIreNBsE8mV+6OHzv68o6SYiHpbkmEdLc2sWAiQ8mh0EQ8YL4QF83mRJ+DQ8Ysa0mRiyV heyzmj31kFmSYl6QymO36vvZ9c+A+73SlffSa00tYap3caRHs++fonJS/v5OCQ== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1725267050; a=rsa-sha256; cv=none; b=xoKRKrZoy1038x7v5kvRm1tZCgTkF71RrmOzpWPZw2oIorxO+4evTOqFZ5oIWbNE4+Vc5h UuoGh1Y9NuNMP35W1irAxpVrl9D41UMjuLmPwL28v73IED4u0jJM4wHqHh/dEcor5B2vAE dS13NzT3HD6Qi/OYvKmtAsLeZZ78HDP1YLrBV9W7IxidBMujIjTbFW40p6DIHhuzN467Je hdB4F9BzPssB6FG5BQ78/qwKpADrfaP3BuWYPAZryLJtA0ryiKSDEIaLpJGzLIZOWuT1tz sOflVEEmPd2uUTCZWSvqNXnD1iEIO/7qyQyJsljgDUpFRBJS/BFKaS9StuQm6A== 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=1725267050; 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=Ek5YanpJxnukBV7V+v2Qwn/0+60xYAECF130XLZoC2A=; b=MsFwqx328bm7Qp8wgDuN/X9WKyqDHQcQnAWwvVe2ZnsbyQ6Zh6M5PQ/nYgiJuqV1S/xcwi bVidz6Mf7nDMkRAdaCU7WVxyv7gg5zo7MnHSWKvZ1x0IFkDXqc2YA/ApLJVx6zi6TG1+rA tGlPmsF9LeyQVGSR/njrKmxkQbKZbZwrINySejH0HpHRwZh2w413McD6Vjh2i/MkT3QsoT 14Hg7ycsQ+m4rhDcbGjSyXdugJ6AbvqBTOUPEOG4/pa96TDl5iMTGzpZOZ188nqjUVd2a3 IBuwAQWPPis0kCK4P4mlMYONfO0dchZouk6PM0RXmxfeHFSCY4/KCBe/AyPaeg== 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 4Wy2XV2D2sz15LW; Mon, 2 Sep 2024 08:50:50 +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 4828ooKm007463; Mon, 2 Sep 2024 08:50:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 4828ooVJ007460; Mon, 2 Sep 2024 08:50:50 GMT (envelope-from git) Date: Mon, 2 Sep 2024 08:50:50 GMT Message-Id: <202409020850.4828ooVJ007460@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Andrew Turner Subject: git: 8ecb8e1c38e8 - stable/14 - buf_ring: Support DEBUG_BUFRING in userspace 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: andrew X-Git-Repository: src X-Git-Refname: refs/heads/stable/14 X-Git-Reftype: branch X-Git-Commit: 8ecb8e1c38e80ec2aae73536522fe2932af65ee8 Auto-Submitted: auto-generated The branch stable/14 has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=8ecb8e1c38e80ec2aae73536522fe2932af65ee8 commit 8ecb8e1c38e80ec2aae73536522fe2932af65ee8 Author: Andrew Turner AuthorDate: 2024-07-29 10:28:24 +0000 Commit: Andrew Turner CommitDate: 2024-09-02 08:49:38 +0000 buf_ring: Support DEBUG_BUFRING in userspace The only part of DEBUG_BUFRING we don't support in userspace is the mutex checks. Add _KERNEL checks around these so we can enable the extra debugging. Reviewed by: alc, imp, kib, markj Sponsored by: Arm Ltd Differential Revision: https://reviews.freebsd.org/D46149 (cherry picked from commit d3d34d56bee4222b3bf3ec26d7877998405115a3) --- sys/sys/buf_ring.h | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/sys/sys/buf_ring.h b/sys/sys/buf_ring.h index 6bd3b91dcd04..2d61f393712d 100644 --- a/sys/sys/buf_ring.h +++ b/sys/sys/buf_ring.h @@ -35,13 +35,9 @@ #include #include -#ifdef DEBUG_BUFRING -#ifdef _KERNEL +#if defined(DEBUG_BUFRING) && defined(_KERNEL) #include #include -#else -#error "DEBUG_BUFRING is only supported in kernel" -#endif #endif struct buf_ring { @@ -54,7 +50,7 @@ struct buf_ring { volatile uint32_t br_cons_tail; int br_cons_size; int br_cons_mask; -#ifdef DEBUG_BUFRING +#if defined(DEBUG_BUFRING) && defined(_KERNEL) struct mtx *br_lock; #endif void *br_ring[0] __aligned(CACHE_LINE_SIZE); @@ -210,8 +206,10 @@ buf_ring_dequeue_sc(struct buf_ring *br) #ifdef DEBUG_BUFRING br->br_ring[cons_head] = NULL; +#ifdef _KERNEL if (!mtx_owned(br->br_lock)) panic("lock not held on single consumer dequeue"); +#endif if (br->br_cons_tail != cons_head) panic("inconsistent list cons_tail=%d cons_head=%d", br->br_cons_tail, cons_head); @@ -277,7 +275,7 @@ static __inline void * buf_ring_peek(struct buf_ring *br) { -#ifdef DEBUG_BUFRING +#if defined(DEBUG_BUFRING) && defined(_KERNEL) if ((br->br_lock != NULL) && !mtx_owned(br->br_lock)) panic("lock not held on single consumer dequeue"); #endif @@ -296,9 +294,9 @@ buf_ring_peek(struct buf_ring *br) static __inline void * buf_ring_peek_clear_sc(struct buf_ring *br) { -#ifdef DEBUG_BUFRING void *ret; +#if defined(DEBUG_BUFRING) && defined(_KERNEL) if (!mtx_owned(br->br_lock)) panic("lock not held on single consumer dequeue"); #endif @@ -320,17 +318,15 @@ buf_ring_peek_clear_sc(struct buf_ring *br) atomic_thread_fence_acq(); #endif + ret = br->br_ring[br->br_cons_head]; #ifdef DEBUG_BUFRING /* * Single consumer, i.e. cons_head will not move while we are * running, so atomic_swap_ptr() is not necessary here. */ - ret = br->br_ring[br->br_cons_head]; br->br_ring[br->br_cons_head] = NULL; - return (ret); -#else - return (br->br_ring[br->br_cons_head]); #endif + return (ret); } static __inline int