From nobody Mon Jan 23 19:52:45 2023 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 4P113d3XJFz3bFcD; Mon, 23 Jan 2023 19:52:45 +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 "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4P113d2jDJz4J2y; Mon, 23 Jan 2023 19:52:45 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674503565; 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=pnE0yBj9pTIHPJJezYEZIiyDOZBOK24L5ZXlDmP4Cws=; b=X/yOBmwUI3cb9810BhMTLLCO/2g7wgv/4Lyesa3q4SlRz5taU/yXKc6XOo6kk/St4qYbcO CL37hdCPOYk75V+MKPOxvGV4xMqsTij1B0lp5LHaiVByA1GsdcGh/ZoRj5hyPSjpQXRXcq 6A53AgEr/tv/qm5+zWATV8ZbRmoOn6J3R3Ozb7YfpMpEUck7zVwQ+CdnsrupE6yBAip+XZ Xfz1tt+iJPCHrugBXDJtj1mlvi7rPDC8CTWa/w4o3ggPLjraMuybELB6HKYP9OpLhFGbYF V+vAE+I5GdHhmJ3vSYLrWqkRCPPmEI52aZvcqgdfG3mXpO8CXEoNhiqaUTDNWQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1674503565; 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=pnE0yBj9pTIHPJJezYEZIiyDOZBOK24L5ZXlDmP4Cws=; b=Ew9JVyEG2fZBn/Mh8jMS+26C7ekm8mQ1NTmXvIKpEFnSFypcbEyap6dT4fo1OW/+gArbeX +e+P6ExiXKcuUjNpskTD+Lm940cTQI6h/9NzTzflVbL/iHpt/UdIaWHIWOc35eY095GCdF c4IMo2TdPHXHvVMq2CisIso21sDLgIMr0eAcfKkGjR6TDnH+D4Bq9i1oM/yeJbea5GG0L/ /ydPO/Ll54PB7sGXsxT0HGH+lezwzajxOhO4bmqrZw6Ltwr44Fj9NZybPZjcRc7vVcPowQ 6WjblWaGdKNKRxOK+8AQQoilmjiWiG0JrWl9+1CD8Cz6WUCqdQzqiBgDABJA/w== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1674503565; a=rsa-sha256; cv=none; b=SZkXqljRtKIvF+vgtXaoWxSplsHy1vZt2KeiucbSooviexX2KnOt7wH1oiigEm6HLQm8n9 ZtIVZSCnIiTCl0ggrneALyzIqlFdW2dTM1eDMchyoN/P4ZRJHh7uyc57scvlMFQgXOsDTj /DU3Zke9Ni54LHIzMiVqSPN8d/UzbRXEmYQe0E+YtZnlcdoQ7FQLO6tfo0FjSf1w/FKInO lnlsIhVE9XDCAD3uP2KoFj/clKq5doa3DJ4fW2HjAinArW3kgZxCzy4mvUp2Igd2CEdAmv QeP5ZGCwuGWBHC7Q2M4ZV3v4zNtuJZqnfWdu+y7QAVUtWKiycBNK8299aXGj2w== 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 4P113d1lS3zhQf; Mon, 23 Jan 2023 19:52:45 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 30NJqjHb015478; Mon, 23 Jan 2023 19:52:45 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 30NJqjQD015477; Mon, 23 Jan 2023 19:52:45 GMT (envelope-from git) Date: Mon, 23 Jan 2023 19:52:45 GMT Message-Id: <202301231952.30NJqjQD015477@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Mark Johnston Subject: git: 56c438fcd4a7 - main - netmap: Tell the compiler to avoid reloading ring indices 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: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: markj X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 56c438fcd4a755f0abe8254779c39a0c4b530c75 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by markj: URL: https://cgit.FreeBSD.org/src/commit/?id=56c438fcd4a755f0abe8254779c39a0c4b530c75 commit 56c438fcd4a755f0abe8254779c39a0c4b530c75 Author: Mark Johnston AuthorDate: 2023-01-23 19:41:05 +0000 Commit: Mark Johnston CommitDate: 2023-01-23 19:41:05 +0000 netmap: Tell the compiler to avoid reloading ring indices Per the removed comments these fields should be loaded only once, since they can in principle be modified concurrently, though this would be a violation of the userspace contract with netmap. No functional change intended. Reviewed by: vmaffione MFC after: 1 week Sponsored by: Zenarmor Sponsored by: OPNsense Sponsored by: Klara, Inc. Differential Revision: https://reviews.freebsd.org/D38061 --- sys/dev/netmap/netmap.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sys/dev/netmap/netmap.c b/sys/dev/netmap/netmap.c index 4bafa507384d..448d9a81eefb 100644 --- a/sys/dev/netmap/netmap.c +++ b/sys/dev/netmap/netmap.c @@ -1710,8 +1710,8 @@ netmap_unget_na(struct netmap_adapter *na, struct ifnet *ifp) u_int nm_txsync_prologue(struct netmap_kring *kring, struct netmap_ring *ring) { - u_int head = ring->head; /* read only once */ - u_int cur = ring->cur; /* read only once */ + u_int head = NM_ACCESS_ONCE(ring->head); + u_int cur = NM_ACCESS_ONCE(ring->cur); u_int n = kring->nkr_num_slots; nm_prdis(5, "%s kcur %d ktail %d head %d cur %d tail %d", @@ -1788,8 +1788,8 @@ nm_rxsync_prologue(struct netmap_kring *kring, struct netmap_ring *ring) * - cur could in principle go back, however it does not matter * because we are processing a brand new rxsync() */ - cur = kring->rcur = ring->cur; /* read only once */ - head = kring->rhead = ring->head; /* read only once */ + cur = kring->rcur = NM_ACCESS_ONCE(ring->cur); + head = kring->rhead = NM_ACCESS_ONCE(ring->head); #if 1 /* kernel sanity checks */ NM_FAIL_ON(kring->nr_hwcur >= n || kring->nr_hwtail >= n); #endif /* kernel sanity checks */