From nobody Mon Feb 9 06:50:38 2026 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by smtp.subspace.kernel.org (Postfix) with ESMTP id A406B2BEFFB; Tue, 13 Jan 2026 03:06:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273564; cv=none; b=c6hbWaIp/IdyFHUyVDukhU0BBCa+wvxGmu2zgHCy5l1zgk+0CeO1UbjZx9NRV6zu27gvOBrAQ2zlr9FhrlRflsHD3U42MlyxK8di7lbqpB1LQ/AdCibLzbqC6yFQahMYfvXQiQJbrTOffkWZ1I6cnMp/jP8drlfTRv0ZD6S83FU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273564; c=relaxed/simple; bh=554NAZwFoUc3z7IJsJhZsee5G4Wiv+FZw6phGdg4r+g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fYwvdKQlu7MH5rfv4+7BG4/tfmUYeelVgBEB55Ct6saFkCD6+topYwQGYc8GSkLp/cxlI0SyDIE1B4/2+Rf+7Zf9Q9edGvf4fZhj9g1rmB6i5js3QUQSoigBqn3+YuJQYWnAkVa4V1GniteOpXXlaTciPxyA/uuBG/AitEWzdZk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=loongson.cn; spf=pass smtp.mailfrom=loongson.cn; arc=none smtp.client-ip=114.242.206.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=loongson.cn Received: from loongson.cn (unknown [10.2.5.213]) by gateway (Coremail) with SMTP id _____8AxScKYtmVpRTAIAA--.26215S3; Tue, 13 Jan 2026 11:06:00 +0800 (CST) Received: from localhost.localdomain (unknown [10.2.5.213]) by front1 (Coremail) with SMTP id qMiowJBxLMKVtmVp734cAA--.56671S3; Tue, 13 Jan 2026 11:05:59 +0800 (CST) From: Bibo Mao To: Gonglei , "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Herbert Xu , "David S . Miller" , wangyangxin Cc: virtualization@lists.linux.dev, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v5 1/3] crypto: virtio: Add spinlock protection with virtqueue notification Date: Tue, 13 Jan 2026 11:05:54 +0800 Message-Id: <20260113030556.3522533-2-maobibo@loongson.cn> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20260113030556.3522533-1-maobibo@loongson.cn> References: <20260113030556.3522533-1-maobibo@loongson.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxLMKVtmVp734cAA--.56671S3 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== Content-Type: text/plain; charset="utf-8" When VM boots with one virtio-crypto PCI device and builtin backend, run openssl benchmark command with multiple processes, such as openssl speed -evp aes-128-cbc -engine afalg -seconds 10 -multi 32 openssl processes will hangup and there is error reported like this: virtio_crypto virtio0: dataq.0:id 3 is not a head! It seems that the data virtqueue need protection when it is handled for virtio done notification. If the spinlock protection is added in virtcrypto_done_task(), openssl benchmark with multiple processes works well. Fixes: fed93fb62e05 ("crypto: virtio - Handle dataq logic with tasklet") Cc: stable@vger.kernel.org Signed-off-by: Bibo Mao Acked-by: Jason Wang Acked-by: Michael S. Tsirkin --- drivers/crypto/virtio/virtio_crypto_core.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/drivers/crypto/virtio/virtio_crypto_core.c b/drivers/crypto/vi= rtio/virtio_crypto_core.c index 3d241446099c..ccc6b5c1b24b 100644 --- a/drivers/crypto/virtio/virtio_crypto_core.c +++ b/drivers/crypto/virtio/virtio_crypto_core.c @@ -75,15 +75,20 @@ static void virtcrypto_done_task(unsigned long data) struct data_queue *data_vq =3D (struct data_queue *)data; struct virtqueue *vq =3D data_vq->vq; struct virtio_crypto_request *vc_req; + unsigned long flags; unsigned int len; =20 + spin_lock_irqsave(&data_vq->lock, flags); do { virtqueue_disable_cb(vq); while ((vc_req =3D virtqueue_get_buf(vq, &len)) !=3D NULL) { + spin_unlock_irqrestore(&data_vq->lock, flags); if (vc_req->alg_cb) vc_req->alg_cb(vc_req, len); + spin_lock_irqsave(&data_vq->lock, flags); } } while (!virtqueue_enable_cb(vq)); + spin_unlock_irqrestore(&data_vq->lock, flags); } =20 static void virtcrypto_dataq_callback(struct virtqueue *vq) --=20 2.39.3 From nobody Mon Feb 9 06:50:38 2026 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 17CE62DAFDD; Tue, 13 Jan 2026 03:06:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273564; cv=none; b=MPz6hYVBR1zR8uSNYVJs2XJnnCEIMke4Rkjk3eiA9O4aOyMAuvjaXZiVNbKfDYDzqzaiF1TkR8Havc0C4etsTvDsWK8vIySnBMwHKmOnY6qBSrCs2Pxo56vUNdYAes6SX2PS/ZO4jjA4CpxzisJL1VhlGmx65p2ocJxaZ7pFzM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273564; c=relaxed/simple; bh=DkYNqOwEL8ZE6+15nMNFJBEfWAXkLJCqb6yhtK/qe74=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dHDOC4DlFHRKkfMI+c1PyPr5d1tcav4WrGNPXWJCd9YWtMb/C1I+CSChFhdVXF6nMmOUY8yd5U0MjfuVlBpUjiXhyGAWFS5/94nXKxyBaFYLqPQUInsE9vzyvN3/gqPySrXVVr9q9PQXaxwl7dP/M0f2b8bnCLeERleRDXgsGzo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=loongson.cn; spf=pass smtp.mailfrom=loongson.cn; arc=none smtp.client-ip=114.242.206.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=loongson.cn Received: from loongson.cn (unknown [10.2.5.213]) by gateway (Coremail) with SMTP id _____8Cx58GYtmVpSTAIAA--.14084S3; Tue, 13 Jan 2026 11:06:00 +0800 (CST) Received: from localhost.localdomain (unknown [10.2.5.213]) by front1 (Coremail) with SMTP id qMiowJBxLMKVtmVp734cAA--.56671S4; Tue, 13 Jan 2026 11:05:59 +0800 (CST) From: Bibo Mao To: Gonglei , "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Herbert Xu , "David S . Miller" , wangyangxin Cc: virtualization@lists.linux.dev, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Subject: [PATCH v5 2/3] crypto: virtio: Remove duplicated virtqueue_kick in virtio_crypto_skcipher_crypt_req Date: Tue, 13 Jan 2026 11:05:55 +0800 Message-Id: <20260113030556.3522533-3-maobibo@loongson.cn> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20260113030556.3522533-1-maobibo@loongson.cn> References: <20260113030556.3522533-1-maobibo@loongson.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxLMKVtmVp734cAA--.56671S4 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== Content-Type: text/plain; charset="utf-8" With function virtio_crypto_skcipher_crypt_req(), there is already virtqueue_kick() call with spinlock held in function __virtio_crypto_skcipher_do_req(). Remove duplicated virtqueue_kick() function call here. Fixes: d79b5d0bbf2e ("crypto: virtio - support crypto engine framework") Cc: stable@vger.kernel.org Signed-off-by: Bibo Mao Acked-by: Jason Wang Acked-by: Michael S. Tsirkin --- drivers/crypto/virtio/virtio_crypto_skcipher_algs.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c b/drivers/= crypto/virtio/virtio_crypto_skcipher_algs.c index 1b3fb21a2a7d..11053d1786d4 100644 --- a/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c +++ b/drivers/crypto/virtio/virtio_crypto_skcipher_algs.c @@ -541,8 +541,6 @@ int virtio_crypto_skcipher_crypt_req( if (ret < 0) return ret; =20 - virtqueue_kick(data_vq->vq); - return 0; } =20 --=20 2.39.3 From nobody Mon Feb 9 06:50:38 2026 Received: from mail.loongson.cn (mail.loongson.cn [114.242.206.163]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 654392F3C2A; Tue, 13 Jan 2026 03:06:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=114.242.206.163 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273564; cv=none; b=Wq03uyHDJhbvXXK0Aj/NRb21B0erIydPRWmAhQypYoVzMS3YDNgIg1rKDbUSthlmGMarcYJor1Fdup8PRAXLvk9P+Zx8NW/V8fTDApioknjXQ83C/MvkCV/M3z6yFYlwwISQjQFUvxmnbt92IpC/e/eMM7466DuCzQmOi9zIB/0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768273564; c=relaxed/simple; bh=ZZ5dAi3AfOggJDka4CE+KurcbK6DTubg2tviWMscVzw=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=EXT7tE+P9cs9rIfrSszqFjBHzwk4y8OZogBY6xJLixiP2SaBzZxvPT+qWBWeSI+nkVYvL+h7MVaSsSh48xY2LLBTAu+ZoMY0IHs51bnLvqHspjxnJzBjvNH2F6xLzQ2rJOdGu+Wlq8PXvYZrxg+QjGm8lo6AszTPTIi6K1eGSqs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=loongson.cn; spf=pass smtp.mailfrom=loongson.cn; arc=none smtp.client-ip=114.242.206.163 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=loongson.cn Received: from loongson.cn (unknown [10.2.5.213]) by gateway (Coremail) with SMTP id _____8CxKMKZtmVpUDAIAA--.26356S3; Tue, 13 Jan 2026 11:06:01 +0800 (CST) Received: from localhost.localdomain (unknown [10.2.5.213]) by front1 (Coremail) with SMTP id qMiowJBxLMKVtmVp734cAA--.56671S5; Tue, 13 Jan 2026 11:05:59 +0800 (CST) From: Bibo Mao To: Gonglei , "Michael S . Tsirkin" , Jason Wang , Xuan Zhuo , =?UTF-8?q?Eugenio=20P=C3=A9rez?= , Herbert Xu , "David S . Miller" , wangyangxin Cc: virtualization@lists.linux.dev, linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v5 3/3] crypto: virtio: Replace package id with numa node id Date: Tue, 13 Jan 2026 11:05:56 +0800 Message-Id: <20260113030556.3522533-4-maobibo@loongson.cn> X-Mailer: git-send-email 2.39.3 In-Reply-To: <20260113030556.3522533-1-maobibo@loongson.cn> References: <20260113030556.3522533-1-maobibo@loongson.cn> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-CM-TRANSID: qMiowJBxLMKVtmVp734cAA--.56671S5 X-CM-SenderInfo: xpdruxter6z05rqj20fqof0/ X-Coremail-Antispam: 1Uk129KBjDUn29KB7ZKAUJUUUUU529EdanIXcx71UUUUU7KY7 ZEXasCq-sGcSsGvfJ3UbIjqfuFe4nvWSU5nxnvy29KBjDU0xBIdaVrnUUvcSsGvfC2Kfnx nUUI43ZEXa7xR_UUUUUUUUU== Content-Type: text/plain; charset="utf-8" With multiple virtio crypto devices supported with different NUMA nodes, when crypto session is created, it will search virtio crypto device with the same numa node of current CPU. Here API topology_physical_package_id() is replaced with cpu_to_node() since package id is physical concept, and one package id have multiple memory numa id. Signed-off-by: Bibo Mao Acked-by: Michael S. Tsirkin --- drivers/crypto/virtio/virtio_crypto_common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/crypto/virtio/virtio_crypto_common.h b/drivers/crypto/= virtio/virtio_crypto_common.h index 19c934af3df6..e559bdadf4f9 100644 --- a/drivers/crypto/virtio/virtio_crypto_common.h +++ b/drivers/crypto/virtio/virtio_crypto_common.h @@ -135,7 +135,7 @@ static inline int virtio_crypto_get_current_node(void) int cpu, node; =20 cpu =3D get_cpu(); - node =3D topology_physical_package_id(cpu); + node =3D cpu_to_node(cpu); put_cpu(); =20 return node; --=20 2.39.3