From nobody Tue Jul 26 19:33:25 2022 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 4LsnBt22Tpz4Wx8R; Tue, 26 Jul 2022 19:33:26 +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 4LsnBs5JBlz47Qw; Tue, 26 Jul 2022 19:33:25 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1658864005; 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=lirmA6Fq2WT3VkFZH5+45Cmr7iLVB1E2ThZGDHqqACw=; b=r0XZ+hgYJff4bdnc6tQ9TkzfkWcEKQKG/fXTkEG4EPJYnVglxY4JOGAHw0ot5jhFVKYxVC zYWKvVXGPExlR5U8QwOTgz4pd6msDrUml0IHOR6NgltTU+482406YehNKt9N+MRuFY+7HB UsmceOvtoji2Z8Ei4v7YXK/Hw5dpmP1/JJO3karMLRmwV19dAXgmnKWfJdoaXfuCBhfvmh cJqeO72A9RRxoK2b86LabXNHAtEdCLo7295Ucvxc1p3mrwZd10I6z3ZRAdb0uSf2JddI/w 8FPsymZW7gN/pK0LagbzlJRD+KhmRbA2WxkbtHAxeWKIday+T3MAdt2M8gmYYg== 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 4LsnBs1gBYzpHK; Tue, 26 Jul 2022 19:33:25 +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 26QJXPs1033827; Tue, 26 Jul 2022 19:33:25 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 26QJXP8e033826; Tue, 26 Jul 2022 19:33:25 GMT (envelope-from git) Date: Tue, 26 Jul 2022 19:33:25 GMT Message-Id: <202207261933.26QJXP8e033826@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Marcin Wojtas Subject: git: b423f9fd210a - stable/12 - ena: Use atomic_load/store functions for first_interrupt variable 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: mw X-Git-Repository: src X-Git-Refname: refs/heads/stable/12 X-Git-Reftype: branch X-Git-Commit: b423f9fd210a0bd337de2219ac5d4f24c3ce789c Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1658864005; 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=lirmA6Fq2WT3VkFZH5+45Cmr7iLVB1E2ThZGDHqqACw=; b=B8xW4vU2qrLwgFb+r5U7S/wyUcHLIUa/Lq/6myoA55tQx9Go+Ah0rKQg7yboOr8BfpXeDC Fs2RRSTEsL24zsRw02tNuVuE8diUKAiokndJ4FHmycD7Zi4OwQeBLUCvnJGT/DLkPonEj9 S2PwhD3Gd+lwIZvYmbd8Qqh6K33cT5yEtoJ1MDIEPTSXoS7oz+OacaBOZyyTJHBEjPXeJ0 nabSSXQi1gyQJ0O+dl8hjNKKGt7Fu1x64k4dZsI4qaPfqXoo3WJJoxB1gyOgxsnpCFKcgm 5TL4AT2C5Z5FDS57h6Xy036jYE1Xa1b9uwJeIXslKU0EEes5zuwjBFsI/6TXHA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1658864005; a=rsa-sha256; cv=none; b=vRK3jSVfgGLAWIr5MhJPVbBEBX+6bXnrnHwg6+jeQDOQuNCzXrCLhiM7kdVUrxtrSBMAXH s8MhZEssukijwu4WwtvYpB4uytI3MEu2nGhEJzdnuPwjP1c8HUw8XEXsxP671pO2Z3Fk8Y wpa1+X2IK1/iIKPw8X7+r9SzB28AbO+3xxRyxejeFgxhFBtvvUg0NCtgAqMefLzqzXPLkN mCVsYY+bBKgTjBMHedqsxn3/zcXhAtmEdQxllS47e585zfKXvZP2sBnx9MBlh6ti4BRJUn rNvXAEj8Gmjm6CUEN9uDNy4O/Xwe96VV1GHjcfmAlAohYswxqPrfdHcNG5Muww== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/12 has been updated by mw: URL: https://cgit.FreeBSD.org/src/commit/?id=b423f9fd210a0bd337de2219ac5d4f24c3ce789c commit b423f9fd210a0bd337de2219ac5d4f24c3ce789c Author: Dawid Gorecki AuthorDate: 2022-06-10 09:18:09 +0000 Commit: Marcin Wojtas CommitDate: 2022-07-26 19:33:03 +0000 ena: Use atomic_load/store functions for first_interrupt variable Surround cases of possible simultaneous access to the first_interrupt variable with atomic_load/store functions. Obtained from: Semihalf MFC after: 2 weeks Sponsored by: Amazon, Inc. (cherry picked from commit 0ac122c388d9a5e189e60378f1950b82a22bbdd1) --- sys/dev/ena/ena.c | 7 ++++--- sys/dev/ena/ena_datapath.c | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sys/dev/ena/ena.c b/sys/dev/ena/ena.c index 74dcd37973b5..82f8d42ea0b0 100644 --- a/sys/dev/ena/ena.c +++ b/sys/dev/ena/ena.c @@ -50,6 +50,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -381,7 +382,7 @@ ena_init_io_rings_common(struct ena_adapter *adapter, struct ena_ring *ring, ring->qid = qid; ring->adapter = adapter; ring->ena_dev = adapter->ena_dev; - ring->first_interrupt = false; + atomic_store_8(&ring->first_interrupt, false); ring->no_interrupt_event_cnt = 0; } @@ -2987,7 +2988,7 @@ static int check_for_rx_interrupt_queue(struct ena_adapter *adapter, struct ena_ring *rx_ring) { - if (likely(rx_ring->first_interrupt)) + if (likely(atomic_load_8(&rx_ring->first_interrupt))) return (0); if (ena_com_cq_empty(rx_ring->ena_com_io_cq)) @@ -3030,7 +3031,7 @@ check_missing_comp_in_tx_queue(struct ena_adapter *adapter, bintime_sub(&time, &tx_buf->timestamp); time_offset = bttosbt(time); - if (unlikely(!tx_ring->first_interrupt && + if (unlikely(!atomic_load_8(&tx_ring->first_interrupt) && time_offset > 2 * adapter->missing_tx_timeout)) { /* * If after graceful period interrupt is still not diff --git a/sys/dev/ena/ena_datapath.c b/sys/dev/ena/ena_datapath.c index 31de514d4b19..f17bad380c09 100644 --- a/sys/dev/ena/ena_datapath.c +++ b/sys/dev/ena/ena_datapath.c @@ -91,8 +91,8 @@ ena_cleanup(void *arg, int pending) ena_qid = ENA_IO_TXQ_IDX(qid); io_cq = &adapter->ena_dev->io_cq_queues[ena_qid]; - tx_ring->first_interrupt = true; - rx_ring->first_interrupt = true; + atomic_store_8(&tx_ring->first_interrupt, true); + atomic_store_8(&rx_ring->first_interrupt, true); for (i = 0; i < CLEAN_BUDGET; ++i) { rxc = ena_rx_cleanup(rx_ring);