From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668494; cv=none; d=zohomail.com; s=zohoarc; b=J0LkLA6VEV4wDsIv4x8fBHCckyL8dx7CxY5/929nEpg5sIjp/5uE9g8SKZ3yO0+a7mQKRcssTqPxV7ZEx1aI0HQvCBxMXIYqWhFXPuAUIMcwKOAx1B3g6m5QX1gRVl0JKOOjwg+k91nxwuB4D2pZb1tJBe4V/aXHCP4+tJGjt2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668494; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=hGecBk73OrCf22ApQpukoMa8+9NpH2PsLgL3BgKMtMI=; b=QtsndNahTsVeIDX41kopm77pJyZAQs/HOb5puaAW4oXiQXDqfYNauASiZ7zaOi5DbcYWSkVjYZUFgJ0K7O2mLbDjas7ObcuTdgytCoEfuPEcg0DUno1CroMI94ZDDrOoSbHe2gH0NCVi4BnwIF7cnrkRVz2cw4BSJjXGjGW0hWE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668494155232.73984541470122; Wed, 1 Mar 2023 03:01:34 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBA-0004Xz-Bf; Wed, 01 Mar 2023 05:59:24 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKB9-0004Xj-51 for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:23 -0500 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKAv-0006C0-Fa for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:12 -0500 Received: by mail-pj1-x1030.google.com with SMTP id kb15so12983713pjb.1 for ; Wed, 01 Mar 2023 02:59:07 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668346; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=hGecBk73OrCf22ApQpukoMa8+9NpH2PsLgL3BgKMtMI=; b=W5MDcd1VhRzcQ2LwHV1ixrNie1OTW0G+a/uqkDkd58ARQ2aO+LwG1VaXImw6FXfF28 PmCNpB2aP1ara02S8kKTcAVA1AgVHG4yMTCu38AsgUmNEiSRwmX8N0orUNwLLzBxjVRN R0qHBzMDK0NyFWQCPGIIbLgKo163lmQjBGqeX5dciluaCElCwASaLq7AD1WCTwrMLUMX /YRGTZYhWv8tX4o7Z05hxe88Zyz5VssmULbqWrYCuBopVWPMWz8BDJDKGhYT2hO6DE6M inKzK8bLxdpvOXq0PcofzlCaH/WyCMyVQERhIzzbEPzz7vehWxlUK2lbdphpM4i15QQc JgLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668346; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=hGecBk73OrCf22ApQpukoMa8+9NpH2PsLgL3BgKMtMI=; b=7gDKKB0bBrzAJBLU0FXTRwi5IGsI3CL9L13Nb9vU3Y1cKHgDabFJCY3B0qEjw/PmXJ VEXR9wTQrdDm9N1SyaVL51Efy9iDsyUIaaTIvqr67UWF8MV/oenP+aMdMovu3KFHpXuT fGAa9swkh9Rv/JiYnnyH4yh5vRrlcgK0nPWQ0EuWbCTaMoFmEPbEXu0jR0bfP0iGrVvo 1fKPqs+66Y/44Tf0EbFOffWHE4+Us7A5deiJ685J2FI3BL6mEbN6h2pKSlgnUO285kcr 5fs8byh7zsBKS7lXwYS8ww8MeTcDd/RJqJjSba0GUpyF5fHJx/BbJG6Hxip0Cbq78ma6 T4IQ== X-Gm-Message-State: AO0yUKUGBBecPCiQjjlHBrjSBswSpv2neAF8rS3MR2kzj9rEFjTEx4qi N6fRqgu4drL9qgJISNbTM7ZAiw== X-Google-Smtp-Source: AK7set8M7rZoW73gamEvBziZ3HVoLYORnNH4RxtwugFY4XDHJcjCgXnZKwPKNm41gT1zuwNn2DVZkw== X-Received: by 2002:a17:90b:380f:b0:234:6c1a:8d9b with SMTP id mq15-20020a17090b380f00b002346c1a8d9bmr7140572pjb.0.1677668346554; Wed, 01 Mar 2023 02:59:06 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 01/12] cryptodev: Introduce cryptodev.json Date: Wed, 1 Mar 2023 18:58:36 +0800 Message-Id: <20230301105847.253084-2-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668495965100003 Introduce QCryptodevBackendType in cryptodev.json, also apply this to related codes. Then we can drop 'enum CryptoDevBackendOptionsType'. Note that `CRYPTODEV_BACKEND_TYPE_NONE` is *NOT* used by anywhere, so drop it(no 'none' enum in QCryptodevBackendType). Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- MAINTAINERS | 1 + backends/cryptodev-builtin.c | 2 +- backends/cryptodev-lkcf.c | 2 +- backends/cryptodev-vhost-user.c | 4 ++-- backends/cryptodev-vhost.c | 4 ++-- include/sysemu/cryptodev.h | 11 ++--------- qapi/cryptodev.json | 20 ++++++++++++++++++++ qapi/meson.build | 1 + qapi/qapi-schema.json | 1 + 9 files changed, 31 insertions(+), 15 deletions(-) create mode 100644 qapi/cryptodev.json diff --git a/MAINTAINERS b/MAINTAINERS index e96e9dbfe6..7651cb0ace 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2870,6 +2870,7 @@ M: Gonglei S: Maintained F: include/sysemu/cryptodev*.h F: backends/cryptodev*.c +F: qapi/cryptodev.json =20 Python library M: John Snow diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index cda6ca3b71..8c7c10847d 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -76,7 +76,7 @@ static void cryptodev_builtin_init( "cryptodev-builtin", NULL); cc->info_str =3D g_strdup_printf("cryptodev-builtin0"); cc->queue_index =3D 0; - cc->type =3D CRYPTODEV_BACKEND_TYPE_BUILTIN; + cc->type =3D QCRYPTODEV_BACKEND_TYPE_BUILTIN; backend->conf.peers.ccs[0] =3D cc; =20 backend->conf.crypto_services =3D diff --git a/backends/cryptodev-lkcf.c b/backends/cryptodev-lkcf.c index 133bd706a4..91e02c0df9 100644 --- a/backends/cryptodev-lkcf.c +++ b/backends/cryptodev-lkcf.c @@ -226,7 +226,7 @@ static void cryptodev_lkcf_init(CryptoDevBackend *backe= nd, Error **errp) cc =3D cryptodev_backend_new_client("cryptodev-lkcf", NULL); cc->info_str =3D g_strdup_printf("cryptodev-lkcf0"); cc->queue_index =3D 0; - cc->type =3D CRYPTODEV_BACKEND_TYPE_LKCF; + cc->type =3D QCRYPTODEV_BACKEND_TYPE_LKCF; backend->conf.peers.ccs[0] =3D cc; =20 backend->conf.crypto_services =3D diff --git a/backends/cryptodev-vhost-user.c b/backends/cryptodev-vhost-use= r.c index ab3028e045..c165a1b1d6 100644 --- a/backends/cryptodev-vhost-user.c +++ b/backends/cryptodev-vhost-user.c @@ -67,7 +67,7 @@ cryptodev_vhost_user_get_vhost( { CryptoDevBackendVhostUser *s =3D CRYPTODEV_BACKEND_VHOST_USER(b); - assert(cc->type =3D=3D CRYPTODEV_BACKEND_TYPE_VHOST_USER); + assert(cc->type =3D=3D QCRYPTODEV_BACKEND_TYPE_VHOST_USER); assert(queue < MAX_CRYPTO_QUEUE_NUM); =20 return s->vhost_crypto[queue]; @@ -203,7 +203,7 @@ static void cryptodev_vhost_user_init( cc->info_str =3D g_strdup_printf("cryptodev-vhost-user%zu to %s ", i, chr->label); cc->queue_index =3D i; - cc->type =3D CRYPTODEV_BACKEND_TYPE_VHOST_USER; + cc->type =3D QCRYPTODEV_BACKEND_TYPE_VHOST_USER; =20 backend->conf.peers.ccs[i] =3D cc; =20 diff --git a/backends/cryptodev-vhost.c b/backends/cryptodev-vhost.c index 74ea0ad63d..93523732f3 100644 --- a/backends/cryptodev-vhost.c +++ b/backends/cryptodev-vhost.c @@ -127,7 +127,7 @@ cryptodev_get_vhost(CryptoDevBackendClient *cc, =20 switch (cc->type) { #if defined(CONFIG_VHOST_USER) && defined(CONFIG_LINUX) - case CRYPTODEV_BACKEND_TYPE_VHOST_USER: + case QCRYPTODEV_BACKEND_TYPE_VHOST_USER: vhost_crypto =3D cryptodev_vhost_user_get_vhost(cc, b, queue); break; #endif @@ -195,7 +195,7 @@ int cryptodev_vhost_start(VirtIODevice *dev, int total_= queues) * because vhost user doesn't interrupt masking/unmasking * properly. */ - if (cc->type =3D=3D CRYPTODEV_BACKEND_TYPE_VHOST_USER) { + if (cc->type =3D=3D QCRYPTODEV_BACKEND_TYPE_VHOST_USER) { dev->use_guest_notifier_mask =3D false; } } diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index cf9b3f07fe..8d2adda974 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -25,6 +25,7 @@ =20 #include "qemu/queue.h" #include "qom/object.h" +#include "qapi/qapi-types-cryptodev.h" =20 /** * CryptoDevBackend: @@ -215,16 +216,8 @@ struct CryptoDevBackendClass { void *opaque); }; =20 -typedef enum CryptoDevBackendOptionsType { - CRYPTODEV_BACKEND_TYPE_NONE =3D 0, - CRYPTODEV_BACKEND_TYPE_BUILTIN =3D 1, - CRYPTODEV_BACKEND_TYPE_VHOST_USER =3D 2, - CRYPTODEV_BACKEND_TYPE_LKCF =3D 3, - CRYPTODEV_BACKEND_TYPE__MAX, -} CryptoDevBackendOptionsType; - struct CryptoDevBackendClient { - CryptoDevBackendOptionsType type; + QCryptodevBackendType type; char *model; char *name; char *info_str; diff --git a/qapi/cryptodev.json b/qapi/cryptodev.json new file mode 100644 index 0000000000..b65edbe183 --- /dev/null +++ b/qapi/cryptodev.json @@ -0,0 +1,20 @@ +# -*- Mode: Python -*- +# vim: filetype=3Dpython +# +# This work is licensed under the terms of the GNU GPL, version 2 or later. +# See the COPYING file in the top-level directory. + +## +# @QCryptodevBackendType: +# +# The crypto device backend type +# +# @builtin: the QEMU builtin support +# @vhost-user: vhost-user +# @lkcf: Linux kernel cryptographic framework +# +# Since: 8.0 +## +{ 'enum': 'QCryptodevBackendType', + 'prefix': 'QCRYPTODEV_BACKEND_TYPE', + 'data': ['builtin', 'vhost-user', 'lkcf']} diff --git a/qapi/meson.build b/qapi/meson.build index fbdb442fdf..1c37ae7491 100644 --- a/qapi/meson.build +++ b/qapi/meson.build @@ -56,6 +56,7 @@ if have_system qapi_all_modules +=3D [ 'acpi', 'audio', + 'cryptodev', 'qdev', 'pci', 'rdma', diff --git a/qapi/qapi-schema.json b/qapi/qapi-schema.json index f000b90744..1e923945db 100644 --- a/qapi/qapi-schema.json +++ b/qapi/qapi-schema.json @@ -95,3 +95,4 @@ { 'include': 'pci.json' } { 'include': 'stats.json' } { 'include': 'virtio.json' } +{ 'include': 'cryptodev.json' } --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668460; cv=none; d=zohomail.com; s=zohoarc; b=bmu8ZEsvAc2PzFnB5c+MOlYvd0Gsl+P1dezmOBGWxBE8FCsnd0n5XJW7Hmf4ssdM5YEGl7ehPJvaKaa/7f/eDS2Fhu6LFGXrPZjQ4KpxiL+arHFXItMymnU1ZfI+eObUL5AkwWr7nlQN7iH5waNedystUVlA/Eqm4nZfvDrmPvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668460; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=QfbjQB/uupsbnVkLnKgXK2FfdvkN34GzFDspqyb2GhQ=; b=OA0KQOaWYyYgAe67rCzBQnCMMhRJ/YrJX0vQPgeGEa1D9Jhn3/xK1IzuFrcbBpk7bj0pWZr3vW9rOLPgy31EGmvkzWdOdRnommPqAcfp1aw3qFzg0wE/NCgzKNzrWi/gT1ZnKdcqZxpgi09pn7vj/MZn6kjQ1wcR1n5e9cN0KyE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668460757290.7719109316937; Wed, 1 Mar 2023 03:01:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBK-0004ZH-8G; Wed, 01 Mar 2023 05:59:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBB-0004YH-IR for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:25 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKB3-0006Ca-N0 for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:24 -0500 Received: by mail-pl1-x62c.google.com with SMTP id ky4so13580266plb.3 for ; Wed, 01 Mar 2023 02:59:10 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668349; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QfbjQB/uupsbnVkLnKgXK2FfdvkN34GzFDspqyb2GhQ=; b=DSJDJPj/dmwkj6snKZacr84PzkmUN4m2idh7G/WlbQljWd7gbBEk9ig89yUtxeHJxK WBEXH27AMrh65PvNcAJjv/L33LNzpWMy6C6pVOjnTVYlKyoc+O1X5YRcUsbYilCDFgbZ J0PZBIUcMR2FwSqauCyvpwfmsAETu275DpZtCbl5jLFDmEtF8VtKUfMrcjL5TA6mrbtf OZYlbK0hDDSPXbf7HtwPrdpvUqTqXpsIMMDuoccvzMx2TOCFqZChRldtcFGv+9hXqTrp MHPMljFs1OowcCJcwr3nNIgFxjVq42muGUtSa8y4IeNNz2GcdtRkJ9TBBFuDl1Z+lmZC OB3A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668349; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=QfbjQB/uupsbnVkLnKgXK2FfdvkN34GzFDspqyb2GhQ=; b=5zBaIDF6cG7TMy8IKpD0+cWiF9MHiN3PisX0T/EdpMaUScwYeg3W/K28zeDNUK1wEp AQNOrVOKtWxO2E+YD9F+KC6EPI/TuhJPnNamKLSzu3k9h5K9EkwkKkePV1Y7qf0z8zip Yig+ZjVzRvS9gHS4IBRCQavVRuuDJW0TOEC7G1vJGiG4ridvlTpmPW60Ps4lR7f7JIyp j39RHzn4SOHQRAsQ8PkDP0RjW8vjhNt9wNqy0uWpyj/Nd/n6zDFoP345MWHjkZN4qK8y vMu08DxEKBO/Ez0S0eb6NHywWrxdamD58s/hExabcpI1L9dMBRFER9ghk0gxXa5HG85m OjvA== X-Gm-Message-State: AO0yUKW6NjtMFnvVSMbj/TzUoS9LYOhnhoYnZ+N6NVQDUgmmocJ42f2w 5egPi/dfsph+eMOw03wKrPxdSw== X-Google-Smtp-Source: AK7set/MiKxPGi8qDGR+UPuVP+Wl83pWs1LrNsqW322QGojQ7e9LBOyIRwrinQBtcoHPv+yTZMKIWg== X-Received: by 2002:a17:90b:314d:b0:237:6178:33b1 with SMTP id ip13-20020a17090b314d00b00237617833b1mr7094368pjb.19.1677668349608; Wed, 01 Mar 2023 02:59:09 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 02/12] cryptodev: Remove 'name' & 'model' fields Date: Wed, 1 Mar 2023 18:58:37 +0800 Message-Id: <20230301105847.253084-3-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=pizhenwei@bytedance.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668462020100003 We have already used qapi to generate crypto device types, this allows to convert type to a string 'model', so the 'model' field is not needed. And the 'name' field is not used by any backend driver, drop it. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev-builtin.c | 3 +-- backends/cryptodev-lkcf.c | 2 +- backends/cryptodev-vhost-user.c | 3 +-- backends/cryptodev.c | 11 +---------- include/sysemu/cryptodev.h | 12 +++--------- 5 files changed, 7 insertions(+), 24 deletions(-) diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index 8c7c10847d..08895271eb 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -72,8 +72,7 @@ static void cryptodev_builtin_init( return; } =20 - cc =3D cryptodev_backend_new_client( - "cryptodev-builtin", NULL); + cc =3D cryptodev_backend_new_client(); cc->info_str =3D g_strdup_printf("cryptodev-builtin0"); cc->queue_index =3D 0; cc->type =3D QCRYPTODEV_BACKEND_TYPE_BUILTIN; diff --git a/backends/cryptodev-lkcf.c b/backends/cryptodev-lkcf.c index 91e02c0df9..de3d1867c5 100644 --- a/backends/cryptodev-lkcf.c +++ b/backends/cryptodev-lkcf.c @@ -223,7 +223,7 @@ static void cryptodev_lkcf_init(CryptoDevBackend *backe= nd, Error **errp) return; } =20 - cc =3D cryptodev_backend_new_client("cryptodev-lkcf", NULL); + cc =3D cryptodev_backend_new_client(); cc->info_str =3D g_strdup_printf("cryptodev-lkcf0"); cc->queue_index =3D 0; cc->type =3D QCRYPTODEV_BACKEND_TYPE_LKCF; diff --git a/backends/cryptodev-vhost-user.c b/backends/cryptodev-vhost-use= r.c index c165a1b1d6..580bd1abb0 100644 --- a/backends/cryptodev-vhost-user.c +++ b/backends/cryptodev-vhost-user.c @@ -198,8 +198,7 @@ static void cryptodev_vhost_user_init( s->opened =3D true; =20 for (i =3D 0; i < queues; i++) { - cc =3D cryptodev_backend_new_client( - "cryptodev-vhost-user", NULL); + cc =3D cryptodev_backend_new_client(); cc->info_str =3D g_strdup_printf("cryptodev-vhost-user%zu to %s ", i, chr->label); cc->queue_index =3D i; diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 54ee8c81f5..81941af816 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -34,18 +34,11 @@ static QTAILQ_HEAD(, CryptoDevBackendClient) crypto_clients; =20 =20 -CryptoDevBackendClient * -cryptodev_backend_new_client(const char *model, - const char *name) +CryptoDevBackendClient *cryptodev_backend_new_client(void) { CryptoDevBackendClient *cc; =20 cc =3D g_new0(CryptoDevBackendClient, 1); - cc->model =3D g_strdup(model); - if (name) { - cc->name =3D g_strdup(name); - } - QTAILQ_INSERT_TAIL(&crypto_clients, cc, next); =20 return cc; @@ -55,8 +48,6 @@ void cryptodev_backend_free_client( CryptoDevBackendClient *cc) { QTAILQ_REMOVE(&crypto_clients, cc, next); - g_free(cc->name); - g_free(cc->model); g_free(cc->info_str); g_free(cc); } diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index 8d2adda974..af152d09db 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -218,8 +218,6 @@ struct CryptoDevBackendClass { =20 struct CryptoDevBackendClient { QCryptodevBackendType type; - char *model; - char *name; char *info_str; unsigned int queue_index; int vring_enable; @@ -264,11 +262,8 @@ struct CryptoDevBackend { =20 /** * cryptodev_backend_new_client: - * @model: the cryptodev backend model - * @name: the cryptodev backend name, can be NULL * - * Creates a new cryptodev backend client object - * with the @name in the model @model. + * Creates a new cryptodev backend client object. * * The returned object must be released with * cryptodev_backend_free_client() when no @@ -276,9 +271,8 @@ struct CryptoDevBackend { * * Returns: a new cryptodev backend client object */ -CryptoDevBackendClient * -cryptodev_backend_new_client(const char *model, - const char *name); +CryptoDevBackendClient *cryptodev_backend_new_client(void); + /** * cryptodev_backend_free_client: * @cc: the cryptodev backend client object --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668441; cv=none; d=zohomail.com; s=zohoarc; b=SJQsks0fpes20VZt+WJy9SFz7M0Ou00MYIAdPrAAKbTtyo0ozh9CpWORVIq9D/RobpAR5GPxmXT+ZMkfk8w8R4iHMAu7P0yp2rRa48PshBHwN4fazOPckzaKpq+okSdauF/NX7rhyZHWfcvnDPSAxGYT/6ggG8Rp+K1TIoawyzk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668441; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dMFQWyQMxJuLht08y8UXOs3qr1UwVrlQirzyvap/Nu4=; b=BAzsaIKPfjigj8uLQPRwjpAcPnQCZNuMsOq4PubDKSWy9OgPPasofI8qREYm6tnP6IOeSBT12tWtbyObBN4S30ScmrAxwxnQmDaGC+FapEqpSIyQJ0Ssdimgf8az0STExMJyhiO7m2tPQZHOzTghtqqy16RyCFzlHB0a53oph7U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668441612238.53232825132034; Wed, 1 Mar 2023 03:00:41 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBM-0004aF-OZ; Wed, 01 Mar 2023 05:59:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBC-0004YR-Ez for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:27 -0500 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKB9-0006Dx-2X for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:25 -0500 Received: by mail-pj1-x102b.google.com with SMTP id y2so12948596pjg.3 for ; Wed, 01 Mar 2023 02:59:13 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668353; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=dMFQWyQMxJuLht08y8UXOs3qr1UwVrlQirzyvap/Nu4=; b=EYRYQUVdPGlH2lh0Py1dPDwM6n0GbKfYryBlDHi7Z8IIJxxjvV9DYwOxDyWBZzATMJ iJDqxYkG+Y3ezlQzTudG4ZKLw1ToT0bdF4TKEypbfwmsx68A9jueUT542GH7XljzQ6xg Ric3zWsESYMAOwvhNl00uHpTMI1JrZI18Z1RCfQgSNm1mlhEqAxH37QevPAqFNvi/tbV vQEKwMjawjSZL9o6GhTCkhcrKbR7domW6U7yOREg7goyPYGaNpi81oMem5sDeDUoMGPQ 5dj032if2c/ewU+fFiTpTiWt1uldxf76UmzFkPu7zh26DGflH+TnFnAAvIFNX4GoMjSw T1mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668353; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=dMFQWyQMxJuLht08y8UXOs3qr1UwVrlQirzyvap/Nu4=; b=wyP6PpOgONUtlf0L8QwDvAz+9PBf7FuoW8kzgiT9E3mlnHzzf0qImoGxZC9PUSuR7K Xtc8vzmC+PRjc5hWCa36PkoAAcBuAoFnaSmG8etNJhd2FNKKwUzWhU9WuItToOTEsnqo A+gaEhf/fAoxNtcwKD4iNz6/JFLvx/LiLxGiTkg5fp+RYcqFTRJxNlxsgWV+Ce53tif1 DfZ7B7Da8M4EZ5kOFHxCTdzn4sgmBqvyjVXN+gH4MfSRfrm+3VK2gW7kRUs0nvZ+kMAM ITyRK/xFj5jeEygP3GhDpK4zwHy1D6HE8Im2EP3bfbACRnBzPyOypTBYkah5uLpO5sZK +zlQ== X-Gm-Message-State: AO0yUKXSMEUvDyo2xgGQPIB/AwKKS+d/xvbD2HhnQtWf5eKHCyMilfCu P45wmrM04l/3Myt5iGm4JQOIAA== X-Google-Smtp-Source: AK7set+6FT+PuY/iMbcIIYQ/loS74VOwM1cn7NH4sPZfxRsvEZblP7OCG6J7RUTLCaQlupL1m2WyOA== X-Received: by 2002:a17:90b:5111:b0:237:ae98:a484 with SMTP id sc17-20020a17090b511100b00237ae98a484mr6778270pjb.7.1677668352751; Wed, 01 Mar 2023 02:59:12 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 03/12] cryptodev: Introduce cryptodev alg type in QAPI Date: Wed, 1 Mar 2023 18:58:38 +0800 Message-Id: <20230301105847.253084-4-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102b; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668443740100007 Introduce cryptodev alg type in cryptodev.json, then apply this to related codes, and drop 'enum CryptoDevBackendAlgType'. There are two options: 1, { 'enum': 'QCryptodevBackendAlgType', 'prefix': 'CRYPTODEV_BACKEND_ALG', 'data': ['sym', 'asym']} Then we can keep 'CRYPTODEV_BACKEND_ALG_SYM' and avoid lots of changes. 2, changes in this patch(with prefix 'QCRYPTODEV_BACKEND_ALG'). To avoid breaking the rule of QAPI, use 2 here. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev-builtin.c | 6 +++--- backends/cryptodev-lkcf.c | 4 ++-- backends/cryptodev.c | 6 +++--- hw/virtio/virtio-crypto.c | 14 +++++++------- include/sysemu/cryptodev.h | 8 +------- qapi/cryptodev.json | 14 ++++++++++++++ 6 files changed, 30 insertions(+), 22 deletions(-) diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index 08895271eb..e70dcd5dad 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -537,7 +537,7 @@ static int cryptodev_builtin_operation( CryptoDevBackendBuiltinSession *sess; CryptoDevBackendSymOpInfo *sym_op_info; CryptoDevBackendAsymOpInfo *asym_op_info; - enum CryptoDevBackendAlgType algtype =3D op_info->algtype; + QCryptodevBackendAlgType algtype =3D op_info->algtype; int status =3D -VIRTIO_CRYPTO_ERR; Error *local_error =3D NULL; =20 @@ -549,11 +549,11 @@ static int cryptodev_builtin_operation( } =20 sess =3D builtin->sessions[op_info->session_id]; - if (algtype =3D=3D CRYPTODEV_BACKEND_ALG_SYM) { + if (algtype =3D=3D QCRYPTODEV_BACKEND_ALG_SYM) { sym_op_info =3D op_info->u.sym_op_info; status =3D cryptodev_builtin_sym_operation(sess, sym_op_info, &local_error); - } else if (algtype =3D=3D CRYPTODEV_BACKEND_ALG_ASYM) { + } else if (algtype =3D=3D QCRYPTODEV_BACKEND_ALG_ASYM) { asym_op_info =3D op_info->u.asym_op_info; status =3D cryptodev_builtin_asym_operation(sess, op_info->op_code, asym_op_info, &local_err= or); diff --git a/backends/cryptodev-lkcf.c b/backends/cryptodev-lkcf.c index de3d1867c5..53a932b58d 100644 --- a/backends/cryptodev-lkcf.c +++ b/backends/cryptodev-lkcf.c @@ -477,7 +477,7 @@ static int cryptodev_lkcf_operation( CryptoDevBackendLKCF *lkcf =3D CRYPTODEV_BACKEND_LKCF(backend); CryptoDevBackendLKCFSession *sess; - enum CryptoDevBackendAlgType algtype =3D op_info->algtype; + QCryptodevBackendAlgType algtype =3D op_info->algtype; CryptoDevLKCFTask *task; =20 if (op_info->session_id >=3D MAX_SESSIONS || @@ -488,7 +488,7 @@ static int cryptodev_lkcf_operation( } =20 sess =3D lkcf->sess[op_info->session_id]; - if (algtype !=3D CRYPTODEV_BACKEND_ALG_ASYM) { + if (algtype !=3D QCRYPTODEV_BACKEND_ALG_ASYM) { error_report("algtype not supported: %u", algtype); return -VIRTIO_CRYPTO_NOTSUPP; } diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 81941af816..c2a053db0e 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -120,10 +120,10 @@ int cryptodev_backend_crypto_operation( { VirtIOCryptoReq *req =3D opaque1; CryptoDevBackendOpInfo *op_info =3D &req->op_info; - enum CryptoDevBackendAlgType algtype =3D req->flags; + QCryptodevBackendAlgType algtype =3D req->flags; =20 - if ((algtype !=3D CRYPTODEV_BACKEND_ALG_SYM) - && (algtype !=3D CRYPTODEV_BACKEND_ALG_ASYM)) { + if ((algtype !=3D QCRYPTODEV_BACKEND_ALG_SYM) + && (algtype !=3D QCRYPTODEV_BACKEND_ALG_ASYM)) { error_report("Unsupported cryptodev alg type: %" PRIu32 "", algtyp= e); return -VIRTIO_CRYPTO_NOTSUPP; } diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 516425e26a..0d1be0ada9 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -462,7 +462,7 @@ static void virtio_crypto_init_request(VirtIOCrypto *vc= rypto, VirtQueue *vq, req->in_iov =3D NULL; req->in_num =3D 0; req->in_len =3D 0; - req->flags =3D CRYPTODEV_BACKEND_ALG__MAX; + req->flags =3D QCRYPTODEV_BACKEND_ALG__MAX; memset(&req->op_info, 0x00, sizeof(req->op_info)); } =20 @@ -472,7 +472,7 @@ static void virtio_crypto_free_request(VirtIOCryptoReq = *req) return; } =20 - if (req->flags =3D=3D CRYPTODEV_BACKEND_ALG_SYM) { + if (req->flags =3D=3D QCRYPTODEV_BACKEND_ALG_SYM) { size_t max_len; CryptoDevBackendSymOpInfo *op_info =3D req->op_info.u.sym_op_info; =20 @@ -485,7 +485,7 @@ static void virtio_crypto_free_request(VirtIOCryptoReq = *req) /* Zeroize and free request data structure */ memset(op_info, 0, sizeof(*op_info) + max_len); g_free(op_info); - } else if (req->flags =3D=3D CRYPTODEV_BACKEND_ALG_ASYM) { + } else if (req->flags =3D=3D QCRYPTODEV_BACKEND_ALG_ASYM) { CryptoDevBackendAsymOpInfo *op_info =3D req->op_info.u.asym_op_inf= o; if (op_info) { g_free(op_info->src); @@ -570,10 +570,10 @@ static void virtio_crypto_req_complete(void *opaque, = int ret) VirtIODevice *vdev =3D VIRTIO_DEVICE(vcrypto); uint8_t status =3D -ret; =20 - if (req->flags =3D=3D CRYPTODEV_BACKEND_ALG_SYM) { + if (req->flags =3D=3D QCRYPTODEV_BACKEND_ALG_SYM) { virtio_crypto_sym_input_data_helper(vdev, req, status, req->op_info.u.sym_op_info); - } else if (req->flags =3D=3D CRYPTODEV_BACKEND_ALG_ASYM) { + } else if (req->flags =3D=3D QCRYPTODEV_BACKEND_ALG_ASYM) { virtio_crypto_akcipher_input_data_helper(vdev, req, status, req->op_info.u.asym_op_info); } @@ -875,7 +875,7 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request) switch (opcode) { case VIRTIO_CRYPTO_CIPHER_ENCRYPT: case VIRTIO_CRYPTO_CIPHER_DECRYPT: - op_info->algtype =3D request->flags =3D CRYPTODEV_BACKEND_ALG_SYM; + op_info->algtype =3D request->flags =3D QCRYPTODEV_BACKEND_ALG_SYM; ret =3D virtio_crypto_handle_sym_req(vcrypto, &req.u.sym_req, op_info, out_iov, out_num); @@ -885,7 +885,7 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request) case VIRTIO_CRYPTO_AKCIPHER_DECRYPT: case VIRTIO_CRYPTO_AKCIPHER_SIGN: case VIRTIO_CRYPTO_AKCIPHER_VERIFY: - op_info->algtype =3D request->flags =3D CRYPTODEV_BACKEND_ALG_ASYM; + op_info->algtype =3D request->flags =3D QCRYPTODEV_BACKEND_ALG_ASY= M; ret =3D virtio_crypto_handle_asym_req(vcrypto, &req.u.akcipher_req, op_info, out_iov, out_num); diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index af152d09db..16f01dd48a 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -49,12 +49,6 @@ typedef struct CryptoDevBackendPeers CryptoDevBackendPee= rs; typedef struct CryptoDevBackendClient CryptoDevBackendClient; =20 -enum CryptoDevBackendAlgType { - CRYPTODEV_BACKEND_ALG_SYM, - CRYPTODEV_BACKEND_ALG_ASYM, - CRYPTODEV_BACKEND_ALG__MAX, -}; - /** * CryptoDevBackendSymSessionInfo: * @@ -181,7 +175,7 @@ typedef struct CryptoDevBackendAsymOpInfo { } CryptoDevBackendAsymOpInfo; =20 typedef struct CryptoDevBackendOpInfo { - enum CryptoDevBackendAlgType algtype; + QCryptodevBackendAlgType algtype; uint32_t op_code; uint64_t session_id; union { diff --git a/qapi/cryptodev.json b/qapi/cryptodev.json index b65edbe183..ebb6852035 100644 --- a/qapi/cryptodev.json +++ b/qapi/cryptodev.json @@ -4,6 +4,20 @@ # This work is licensed under the terms of the GNU GPL, version 2 or later. # See the COPYING file in the top-level directory. =20 +## +# @QCryptodevBackendAlgType: +# +# The supported algorithm types of a crypto device. +# +# @sym: symmetric encryption +# @asym: asymmetric Encryption +# +# Since: 8.0 +## +{ 'enum': 'QCryptodevBackendAlgType', + 'prefix': 'QCRYPTODEV_BACKEND_ALG', + 'data': ['sym', 'asym']} + ## # @QCryptodevBackendType: # --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668440; cv=none; d=zohomail.com; s=zohoarc; b=fvrhwBXbnm8tza4IrD+Rn2E/f3a3R4ccGZHplzoFhoah82xIzvHkDU6IFcFmzIMIm0PuOJEHYmnuauMq1RTXWg2YQNGIl8VsHpd9bRSdtepjlTKK3VBDqw3j5PG6QC5USQinKtpVr4leGJtYg5spgvc+rm9/iLuASrIz0XdzuV8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668440; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ihnaClmcpFL3v9tNj7fgQemINsh8688QVm+1j1fBK14=; b=F3xRqOGFZSyg6ZUfYMmGrZVY/TE3kElzU0vj8O9AXCZJjtw/Dk3rW4wY01DOMXImy8BEVoP+MrTtMBQtmxN/H0eFpusl6rqGFEPnb4U8NgyUjX6E//hn5WUeSU0+hWNpL9bFmrO6xqVykZqqIhf1CPVKbQq92ungeWvFubwERsA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668440729615.236597323524; Wed, 1 Mar 2023 03:00:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBK-0004ZQ-9M; Wed, 01 Mar 2023 05:59:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBC-0004YS-En for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:27 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKB9-0006Fd-2W for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:25 -0500 Received: by mail-pl1-x62a.google.com with SMTP id n6so12169172plf.5 for ; Wed, 01 Mar 2023 02:59:16 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668356; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ihnaClmcpFL3v9tNj7fgQemINsh8688QVm+1j1fBK14=; b=k4FEEygU0PAOs/SFAY8Vf3dW9jHzciWwfi4d3AhGbb7U2dZE3UWsrK+l+1FO4J1tX4 v64ZMo8TH1KEhcxnc6hKjo1Ornl8Gz08MV9U3eD65CAdSJBoAbBwwVqGbDAYDqbjtsxd A/hzi/B8zpeeLu8gVU3SJtJ2qrW7sFDiRTnvnuBAClQLOSA/kZXs1VBWDaVUtyNY5PId g7frjRrfIIO4i0c52X47AYfYB7XRl6WE0XZ2E3bJfv63MQuayUr3ji0UCWbnYxXmFP4h n1G/OI7XoASl2SiatFcR538cIv2GSXAT0RNDSqBrWI6NbInihxZDp9Z3nYqLLeBvvVXt O8QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668356; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ihnaClmcpFL3v9tNj7fgQemINsh8688QVm+1j1fBK14=; b=FJktKVxoBsigKDqU9LC2hmcZ6IUqgn73h6EoEY4gzj/TPCj9hKIhI4wfK9kdinZO+N qhA11+9pWSueEf2ixvJMtfUUyDe/OPPrnhIoyj/tAQ/jJvA8SRkhSnMa7BazsskvzOPF 0ABAaJHrW3kxYwl138lAjtbUL7kW+8xeYb19NEHowR0eWL5Y3fz+rgqo7d3MuRgsXnkU i1m8YA0PHBdLJadCWFRoCJa2Q7PthNMcA628iyhBWLIKlwBwa8L+jXn7F07RdOUZWDNn 8sFUHPrwNpY/YjhBoc0m+BBj2auMUzOS8MHmzwSSGYeSqiP8ll88WbfvzqOupmyqk9QF 9mgg== X-Gm-Message-State: AO0yUKVshYjOBPOoFKCFHiio/RTbiHtvKsxHSGiX7zfE0EWiQkNg7XWQ 989wgdCZblT2NYY263vhkVrvcQ== X-Google-Smtp-Source: AK7set+r8GdyIJj8ecwk6+R+vsCFO11a7PouNVrYIM0wgMEODb/L8h9Z1ey7pKKvVwl30/i6S77+lA== X-Received: by 2002:a17:90b:4a4b:b0:234:b786:6869 with SMTP id lb11-20020a17090b4a4b00b00234b7866869mr6772281pjb.26.1677668355852; Wed, 01 Mar 2023 02:59:15 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 04/12] cryptodev: Introduce server type in QAPI Date: Wed, 1 Mar 2023 18:58:39 +0800 Message-Id: <20230301105847.253084-5-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=pizhenwei@bytedance.com; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668441814100001 Introduce cryptodev service type in cryptodev.json, then apply this to related codes. Now we can remove VIRTIO_CRYPTO_SERVICE_xxx dependence from QEMU cryptodev. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev-builtin.c | 8 ++++---- backends/cryptodev-lkcf.c | 2 +- backends/cryptodev-vhost-user.c | 6 +++--- hw/virtio/virtio-crypto.c | 27 +++++++++++++++++++++++++-- qapi/cryptodev.json | 11 +++++++++++ 5 files changed, 44 insertions(+), 10 deletions(-) diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index e70dcd5dad..c0fbb650d7 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -79,10 +79,10 @@ static void cryptodev_builtin_init( backend->conf.peers.ccs[0] =3D cc; =20 backend->conf.crypto_services =3D - 1u << VIRTIO_CRYPTO_SERVICE_CIPHER | - 1u << VIRTIO_CRYPTO_SERVICE_HASH | - 1u << VIRTIO_CRYPTO_SERVICE_MAC | - 1u << VIRTIO_CRYPTO_SERVICE_AKCIPHER; + 1u << QCRYPTODEV_BACKEND_SERVICE_CIPHER | + 1u << QCRYPTODEV_BACKEND_SERVICE_HASH | + 1u << QCRYPTODEV_BACKEND_SERVICE_MAC | + 1u << QCRYPTODEV_BACKEND_SERVICE_AKCIPHER; backend->conf.cipher_algo_l =3D 1u << VIRTIO_CRYPTO_CIPHER_AES_CBC; backend->conf.hash_algo =3D 1u << VIRTIO_CRYPTO_HASH_SHA1; backend->conf.akcipher_algo =3D 1u << VIRTIO_CRYPTO_AKCIPHER_RSA; diff --git a/backends/cryptodev-lkcf.c b/backends/cryptodev-lkcf.c index 53a932b58d..edec99f104 100644 --- a/backends/cryptodev-lkcf.c +++ b/backends/cryptodev-lkcf.c @@ -230,7 +230,7 @@ static void cryptodev_lkcf_init(CryptoDevBackend *backe= nd, Error **errp) backend->conf.peers.ccs[0] =3D cc; =20 backend->conf.crypto_services =3D - 1u << VIRTIO_CRYPTO_SERVICE_AKCIPHER; + 1u << QCRYPTODEV_BACKEND_SERVICE_AKCIPHER; backend->conf.akcipher_algo =3D 1u << VIRTIO_CRYPTO_AKCIPHER_RSA; lkcf->running =3D true; =20 diff --git a/backends/cryptodev-vhost-user.c b/backends/cryptodev-vhost-use= r.c index 580bd1abb0..b1d9eb735f 100644 --- a/backends/cryptodev-vhost-user.c +++ b/backends/cryptodev-vhost-user.c @@ -221,9 +221,9 @@ static void cryptodev_vhost_user_init( cryptodev_vhost_user_event, NULL, s, NULL, true); =20 backend->conf.crypto_services =3D - 1u << VIRTIO_CRYPTO_SERVICE_CIPHER | - 1u << VIRTIO_CRYPTO_SERVICE_HASH | - 1u << VIRTIO_CRYPTO_SERVICE_MAC; + 1u << QCRYPTODEV_BACKEND_SERVICE_CIPHER | + 1u << QCRYPTODEV_BACKEND_SERVICE_HASH | + 1u << QCRYPTODEV_BACKEND_SERVICE_MAC; backend->conf.cipher_algo_l =3D 1u << VIRTIO_CRYPTO_CIPHER_AES_CBC; backend->conf.hash_algo =3D 1u << VIRTIO_CRYPTO_HASH_SHA1; =20 diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index 0d1be0ada9..e4f0de4d1c 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -997,12 +997,35 @@ static void virtio_crypto_reset(VirtIODevice *vdev) } } =20 +static uint32_t virtio_crypto_init_services(uint32_t qservices) +{ + uint32_t vservices =3D 0; + + if (qservices & (1 << QCRYPTODEV_BACKEND_SERVICE_CIPHER)) { + vservices |=3D (1 << VIRTIO_CRYPTO_SERVICE_CIPHER); + } + if (qservices & (1 << QCRYPTODEV_BACKEND_SERVICE_HASH)) { + vservices |=3D (1 << VIRTIO_CRYPTO_SERVICE_HASH); + } + if (qservices & (1 << QCRYPTODEV_BACKEND_SERVICE_MAC)) { + vservices |=3D (1 << VIRTIO_CRYPTO_SERVICE_MAC); + } + if (qservices & (1 << QCRYPTODEV_BACKEND_SERVICE_AEAD)) { + vservices |=3D (1 << VIRTIO_CRYPTO_SERVICE_AEAD); + } + if (qservices & (1 << QCRYPTODEV_BACKEND_SERVICE_AKCIPHER)) { + vservices |=3D (1 << VIRTIO_CRYPTO_SERVICE_AKCIPHER); + } + + return vservices; +} + static void virtio_crypto_init_config(VirtIODevice *vdev) { VirtIOCrypto *vcrypto =3D VIRTIO_CRYPTO(vdev); =20 - vcrypto->conf.crypto_services =3D - vcrypto->conf.cryptodev->conf.crypto_services; + vcrypto->conf.crypto_services =3D virtio_crypto_init_services( + vcrypto->conf.cryptodev->conf.crypto_services); vcrypto->conf.cipher_algo_l =3D vcrypto->conf.cryptodev->conf.cipher_algo_l; vcrypto->conf.cipher_algo_h =3D diff --git a/qapi/cryptodev.json b/qapi/cryptodev.json index ebb6852035..8732a30524 100644 --- a/qapi/cryptodev.json +++ b/qapi/cryptodev.json @@ -18,6 +18,17 @@ 'prefix': 'QCRYPTODEV_BACKEND_ALG', 'data': ['sym', 'asym']} =20 +## +# @QCryptodevBackendServiceType: +# +# The supported service types of a crypto device. +# +# Since: 8.0 +## +{ 'enum': 'QCryptodevBackendServiceType', + 'prefix': 'QCRYPTODEV_BACKEND_SERVICE', + 'data': ['cipher', 'hash', 'mac', 'aead', 'akcipher']} + ## # @QCryptodevBackendType: # --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668460; cv=none; d=zohomail.com; s=zohoarc; b=PnYGzMok4t8ceCWIIuTWdgXEQeNFfLPEkRAqSbuPVlbXNVgoKBUJ1BXdpDySB1m11XmzYmtzZUAdOBPxf7OtOEbAjAuyCuovGfhtM156gs6lnt1AdPhy3En0OwE9u+XXi7uk6GsR6UGruUxXquaZSQ427fkl5iEdMdvCI69qdGc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668460; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=opVVOmUrhPo60XXxThNotfODxmtNJYHwrlCGCosncyM=; b=QKbmSD4SgXj65nI8ikF7WT5VRTfYbDf957l1yBPwcWrenw/YEAC0uDnV/f0R5cNBlEOi3eSSRcinfShB3PCfqMC5Y0LvvAGYlFXzWaiV9Z+kt5NClU7CtQxSBEu88lEp31D0Sj2oZ+BPXAGT4CPz3ukeNa6IQKcJcnSFGt1zRoM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668460758272.47044130226084; Wed, 1 Mar 2023 03:01:00 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBE-0004Yy-N9; Wed, 01 Mar 2023 05:59:28 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBB-0004YG-5E for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:25 -0500 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKB9-0006Fy-2Y for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:24 -0500 Received: by mail-pl1-x62c.google.com with SMTP id z2so13520335plf.12 for ; Wed, 01 Mar 2023 02:59:19 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=opVVOmUrhPo60XXxThNotfODxmtNJYHwrlCGCosncyM=; b=DyPRBwRY8Ac8Mo4yh8OCyo0L7qO7asRdgSVETqcRTQKBJe1TbHXxDriTFBmslNev3N Xm2UVQLMfQgA7MO9vmtHM1nVMm9/XXplmRjy1mICRC9/QT4zfXATNV3gQEgMgOUxnvOX FUfOELGwX1TqCrdhoBdplNgw1KCP7kXuqpSmSAAip0rQi4tzWLDHZpsypLShracuPgyL z7z8yjGFQ0PhRbzqbPRO/lwMLP0tL45Ovtww2hOhzcvkOclKIcRyxH5l4Y2ED+cwNK0t O1fDx+yNfqpmpkiY3c7fX2IchUbzHVQSQqD4E/BlDOg1F+lQbUSBmkYhoxHdpo30HJSQ Dj9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668359; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=opVVOmUrhPo60XXxThNotfODxmtNJYHwrlCGCosncyM=; b=KCTTIoYoh34KV5w0nOwZX2cfjmKPXpiKdNoWeG8OjAOjd3UFOTIBhvzZeSSie1BiTw 5vZ5GWCZ1DxMrpD7UQgHjnRV4Wo0rb1ysljbv0a920mt6RfxB4zqXfsY4MMXwN24j90Q gWp4YhSNG+WI49mStIZ5aW0ebEWxy/9ntsKvXerdLK/E63TBGAZDFld0vlddzbQslBjs dJV1cdq5kaF+/HXcuPK9r1OJRp8HGiYmksKfE1qeZwu7qB203PaBdlxDuTat7+e3e2vO qw3syiHsYzOh8qe6ap8rVlBX5thQVrsGMiKdMbFR+LnLrQklXbha/A78VMqK8Re0gWti gl5A== X-Gm-Message-State: AO0yUKXF916pC/OgcupMHATk3yOKiML1DjR5QBXn2v8PhD5SL5vLMFyH NMkWqwdWxBAii4gSg+qHm+SuOg== X-Google-Smtp-Source: AK7set+uJQ0+Q+Svxg3Ot+2Pc3khK8qXTO0nMlp1zmPddEAh09q0FEqT2lCk2Pa33d3C71YpplxjqA== X-Received: by 2002:a17:90b:380d:b0:233:d870:f4c7 with SMTP id mq13-20020a17090b380d00b00233d870f4c7mr7102770pjb.21.1677668358914; Wed, 01 Mar 2023 02:59:18 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 05/12] cryptodev: Introduce 'query-cryptodev' QMP command Date: Wed, 1 Mar 2023 18:58:40 +0800 Message-Id: <20230301105847.253084-6-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=pizhenwei@bytedance.com; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668462390100004 Now we have a QMP command to query crypto devices: virsh qemu-monitor-command vm '{"execute": "query-cryptodev"}' | jq { "return": [ { "service": [ "akcipher", "mac", "hash", "cipher" ], "id": "cryptodev1", "client": [ { "queue": 0, "type": "builtin" } ] }, { "service": [ "akcipher" ], "id": "cryptodev0", "client": [ { "queue": 0, "type": "lkcf" } ] } ], "id": "libvirt-417" } Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ qapi/cryptodev.json | 44 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 89 insertions(+) diff --git a/backends/cryptodev.c b/backends/cryptodev.c index c2a053db0e..3a45d19823 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -24,6 +24,7 @@ #include "qemu/osdep.h" #include "sysemu/cryptodev.h" #include "qapi/error.h" +#include "qapi/qapi-commands-cryptodev.h" #include "qapi/visitor.h" #include "qemu/config-file.h" #include "qemu/error-report.h" @@ -33,6 +34,50 @@ =20 static QTAILQ_HEAD(, CryptoDevBackendClient) crypto_clients; =20 +static int qmp_query_cryptodev_foreach(Object *obj, void *data) +{ + CryptoDevBackend *backend; + QCryptodevInfoList **infolist =3D data; + uint32_t services, i; + + if (!object_dynamic_cast(obj, TYPE_CRYPTODEV_BACKEND)) { + return 0; + } + + QCryptodevInfo *info =3D g_new0(QCryptodevInfo, 1); + info->id =3D g_strdup(object_get_canonical_path_component(obj)); + + backend =3D CRYPTODEV_BACKEND(obj); + services =3D backend->conf.crypto_services; + for (i =3D 0; i < QCRYPTODEV_BACKEND_SERVICE__MAX; i++) { + if (services & (1 << i)) { + QAPI_LIST_PREPEND(info->service, i); + } + } + + for (i =3D 0; i < backend->conf.peers.queues; i++) { + CryptoDevBackendClient *cc =3D backend->conf.peers.ccs[i]; + QCryptodevBackendClient *client =3D g_new0(QCryptodevBackendClient= , 1); + + client->queue =3D cc->queue_index; + client->type =3D cc->type; + QAPI_LIST_PREPEND(info->client, client); + } + + QAPI_LIST_PREPEND(*infolist, info); + + return 0; +} + +QCryptodevInfoList *qmp_query_cryptodev(Error **errp) +{ + QCryptodevInfoList *list =3D NULL; + Object *objs =3D container_get(object_get_root(), "/objects"); + + object_child_foreach(objs, qmp_query_cryptodev_foreach, &list); + + return list; +} =20 CryptoDevBackendClient *cryptodev_backend_new_client(void) { diff --git a/qapi/cryptodev.json b/qapi/cryptodev.json index 8732a30524..f33f96a692 100644 --- a/qapi/cryptodev.json +++ b/qapi/cryptodev.json @@ -43,3 +43,47 @@ { 'enum': 'QCryptodevBackendType', 'prefix': 'QCRYPTODEV_BACKEND_TYPE', 'data': ['builtin', 'vhost-user', 'lkcf']} + +## +# @QCryptodevBackendClient: +# +# Information about a queue of crypto device. +# +# @queue: the queue index of the crypto device +# +# @type: the type of the crypto device +# +# Since: 8.0 +## +{ 'struct': 'QCryptodevBackendClient', + 'data': { 'queue': 'uint32', + 'type': 'QCryptodevBackendType' } } + +## +# @QCryptodevInfo: +# +# Information about a crypto device. +# +# @id: the id of the crypto device +# +# @service: supported service types of a crypto device +# +# @client: the additional infomation of the crypto device +# +# Since: 8.0 +## +{ 'struct': 'QCryptodevInfo', + 'data': { 'id': 'str', + 'service': ['QCryptodevBackendServiceType'], + 'client': ['QCryptodevBackendClient'] } } + +## +# @query-cryptodev: +# +# Returns information about current crypto devices. +# +# Returns: a list of @QCryptodevInfo +# +# Since: 8.0 +## +{ 'command': 'query-cryptodev', 'returns': ['QCryptodevInfo']} --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668560; cv=none; d=zohomail.com; s=zohoarc; b=kp/uLdDdyZf9WBHaujh3sQ/wqtbQ4zMAH9Ct8O8Py6rFFdXxEtswJP4vX9Gk7hVdvKkcBC+/6hBVMkc/S3i39LvMsOVIMzuc8HW8YGa26UCGlZUeVukzyDbcLEX9pm8c/t4emSyDHRH7iKkRdzdjSFHCbsZ/d1i/hR3aEGWe4SE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668560; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=apL1WJYFS+wRnFE1AVrV2YJrrdnc+DLo0evEaR25zXg=; b=cQ7vwEaaGwkLwEGwo1bpFNNsq8B6CvB+zLwXZplCQxYwxKnEkf18gq7VpOAgPBrtl6B6faDVlNmK0+7XOTJoRkJgCYpdUmXWQqQ+INCCZC3o6mDGsXfc7xlebeuQ0J8vx6IZapemtxSh2PtSIwMHGVESxFwW8l26rugaJxWMF6E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668560392797.3864421126933; Wed, 1 Mar 2023 03:02:40 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBM-0004aD-8h; Wed, 01 Mar 2023 05:59:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBC-0004YQ-ED for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:27 -0500 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKB9-0006GF-GD for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:25 -0500 Received: by mail-pl1-x62d.google.com with SMTP id u5so10155958plq.7 for ; Wed, 01 Mar 2023 02:59:23 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668362; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=apL1WJYFS+wRnFE1AVrV2YJrrdnc+DLo0evEaR25zXg=; b=kR+pZ75AmHA9s79rpGuNP9vEDn18BeoJwJYAGz57cJPU7pcCavZFhdk/qDri1jgH6g ffFhPOEagotUxVVzGvqG7dCkeUQbsiiG9T8zXF/M69yVmYDrkehwGijb4XMvvHZ3TeBq dcrXUCmeuou9CGBHgWU6ZgStLqWJOCUvT+8rxbrbgSr1TYxHUGeheF17XsvMcbNDHimY ojParGB5AVjQXtdjMUxwXikacw+DZlnCr4fVn8K4/kmaXHnNRx92p2Ecn0Bflev07in9 3kCnTmSisJDsmqMHqlm8WB8+emBGTC3YccUTgdCVsXMImq13SH7KJz97KWrkrysKaUvh HN+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668362; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=apL1WJYFS+wRnFE1AVrV2YJrrdnc+DLo0evEaR25zXg=; b=NC4U9TfMEGG8Y/CyMwD8s8k+xeYGOaV/7QMOGalOUM25OZVPcdICbNSJSyzAvTvZux KY5hmhiw6ZVdvlJaFFwkYFqHNNtGiksUCLS4BDfF/0459EKerhOfU6WfdArFLHA12BYq pcrQeu+EnNVZxgKO2aCie5jr8Z+vevUziQVCh3qdWnM9dSyyl87ojX99qsnBqwF+wICW esS908p9r/05ouhgIwXNvxD1fbqQwBr5iBxzcpSDzUxlkBLaJHrLOgGT+F1Ehmb9vs5O ddR/zVxE1OhlpjT1efnvKjuNrMy24DT/1jLxphxayaijfeFeLGNa65SCI0edM6SPgHXF Im0g== X-Gm-Message-State: AO0yUKXnnCobuofemfmhuqKKMv846Y5QQTxZEz6h6bqPzihMNYdiKedW /1t0d2MeGEmZsPMnYuhodzqpZw== X-Google-Smtp-Source: AK7set9ioR5rQDa0O5ehNjIHwfZMtIUs4ixuU2J0GtCQvZbvHpBjRZ1IeLUuuoMWEKJizR2ebCE1DA== X-Received: by 2002:a17:90b:4ac5:b0:234:2c9b:e01d with SMTP id mh5-20020a17090b4ac500b002342c9be01dmr6901733pjb.30.1677668361999; Wed, 01 Mar 2023 02:59:21 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 06/12] cryptodev-builtin: Detect akcipher capability Date: Wed, 1 Mar 2023 18:58:41 +0800 Message-Id: <20230301105847.253084-7-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=pizhenwei@bytedance.com; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668562361100003 Rather than exposing akcipher service/RSA algorithm to virtio crypto device unconditionally, detect akcipher capability from akcipher crypto framework. This avoids unsuccessful requests. Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev-builtin.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index c0fbb650d7..c45b5906c5 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -59,6 +59,19 @@ struct CryptoDevBackendBuiltin { CryptoDevBackendBuiltinSession *sessions[MAX_NUM_SESSIONS]; }; =20 +static void cryptodev_builtin_init_akcipher(CryptoDevBackend *backend) +{ + QCryptoAkCipherOptions opts; + + opts.alg =3D QCRYPTO_AKCIPHER_ALG_RSA; + opts.u.rsa.padding_alg =3D QCRYPTO_RSA_PADDING_ALG_RAW; + if (qcrypto_akcipher_supports(&opts)) { + backend->conf.crypto_services |=3D + (1u << QCRYPTODEV_BACKEND_SERVICE_AKCIPHER); + backend->conf.akcipher_algo =3D 1u << VIRTIO_CRYPTO_AKCIPHER_RSA; + } +} + static void cryptodev_builtin_init( CryptoDevBackend *backend, Error **errp) { @@ -81,11 +94,9 @@ static void cryptodev_builtin_init( backend->conf.crypto_services =3D 1u << QCRYPTODEV_BACKEND_SERVICE_CIPHER | 1u << QCRYPTODEV_BACKEND_SERVICE_HASH | - 1u << QCRYPTODEV_BACKEND_SERVICE_MAC | - 1u << QCRYPTODEV_BACKEND_SERVICE_AKCIPHER; + 1u << QCRYPTODEV_BACKEND_SERVICE_MAC; backend->conf.cipher_algo_l =3D 1u << VIRTIO_CRYPTO_CIPHER_AES_CBC; backend->conf.hash_algo =3D 1u << VIRTIO_CRYPTO_HASH_SHA1; - backend->conf.akcipher_algo =3D 1u << VIRTIO_CRYPTO_AKCIPHER_RSA; /* * Set the Maximum length of crypto request. * Why this value? Just avoid to overflow when @@ -94,6 +105,7 @@ static void cryptodev_builtin_init( backend->conf.max_size =3D LONG_MAX - sizeof(CryptoDevBackendOpInfo); backend->conf.max_cipher_key_len =3D CRYPTODEV_BUITLIN_MAX_CIPHER_KEY_= LEN; backend->conf.max_auth_key_len =3D CRYPTODEV_BUITLIN_MAX_AUTH_KEY_LEN; + cryptodev_builtin_init_akcipher(backend); =20 cryptodev_backend_set_ready(backend, true); } --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668407; cv=none; d=zohomail.com; s=zohoarc; b=KAj9ikwZWe3P8IxFzz3pubflR7v2/6xp/Q/yJKUsNE2/B2cw2xGxkHPZ7gntQqZNbL8IDcXePBGyJr3USdcmcf+rSlrBRDn2LkZikxKU21MZ/S/7T8OCcxzslYcZyooFHXRgcdbed+VLNFWssH2UUZtMUMNVdQiNNGToekI3LBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668407; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ucBiZn8C3p25LxHYi43on3l8W5OSJoD4V2OdVIbQJbY=; b=Lo51cuj3aW+kvPN4PJJwkqBdMVZ5crXkyWHlefBbGjtzJC6pU/cUhRSfQW7jTlwH+s9bPDyVxXnIjTIrkfIGW7Yo4yvjxwFZzND24gtesq+6isjHUTl9vGtrfvL+FI4M3XfQWT1KiLoDJHE4r7t77MiaNQalBBIzqpP4UglBM2c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668407826178.73706370487037; Wed, 1 Mar 2023 03:00:07 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBR-0004cO-Qs; Wed, 01 Mar 2023 05:59:41 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBL-0004a5-NT for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:35 -0500 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKBC-0006HT-Bj for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:31 -0500 Received: by mail-pj1-x102e.google.com with SMTP id bo22so1394141pjb.4 for ; Wed, 01 Mar 2023 02:59:26 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ucBiZn8C3p25LxHYi43on3l8W5OSJoD4V2OdVIbQJbY=; b=XerMj9KBPKirQahgz8Dwz2N8hpD1mJ7hz3JpQfO0Iddr82c3LhsdCtpvBah4/1HoLb B6phi1Un9nCxda39YuqRqdFUdcE+rsZTDt6oQVoJlfK4UBH67rhZt89CQw9D1XcjaJDI VVrQsY2CH7R9FVBnMmuqVn02hepdP1oxMV8xflMLvnbeY2ebdVIHUcQR4ZM6Z8BuiImu F/QN6Uuhm19XckwmqDBLo7BLA/Jb6RNwAO70+gNDc5Z5QSbIbcdTob10tbWz+WWmQVKl KQFEjTuRS/JvB2QJZnXLut3dlOcz9gSUsaLezuzrfJ7fngeF0B2QSKu5Ljyl/sPQxaY/ vRCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668365; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ucBiZn8C3p25LxHYi43on3l8W5OSJoD4V2OdVIbQJbY=; b=edeLtXrK2ngrHqilKGGUT5/qYhIQDV9gfukyfghpamArOckUYNp6rbSggQnqRg4jYq dTFqTr1Ex52FtRnSsti8qF9YZ7lgxngamKx/llWDfJpJK6MepifpriBfvbcMJJBEZE5s mHhnAj3zl/yRwf22Q+boSk2Yg+Z8mFqMzHztyt09VvXtqMib96fn/0bur6m6eCjoWC9n CY6YxsrUfDILKKrWMOk/r4EejRRHmzL0snpAMGWQSfY602w4lubh2R5B7NEymDygDU+n NZUcXHKV/hfjL1x7Wnr7wpviF0GTiiQC+EFdMLgWklc5eJp2KCqapo53weRHCmzjLGfJ lvGw== X-Gm-Message-State: AO0yUKVjGVbbZ4OQVFzZT/tlx/RZ1lF4Ueipo47VWVh4tEeCtFS8t/sp aZJbDOmReRJ99x4Z0/g7149sUw== X-Google-Smtp-Source: AK7set/g55uwHvgYx/04HXOn/vpiuCBQDV6l/7szD9XaFiO/qJ0cQinS9y8upjUhfW70jHuetkii/A== X-Received: by 2002:a17:90b:2252:b0:237:29b1:1893 with SMTP id hk18-20020a17090b225200b0023729b11893mr6884091pjb.46.1677668365112; Wed, 01 Mar 2023 02:59:25 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 07/12] hmp: add cryptodev info command Date: Wed, 1 Mar 2023 18:58:42 +0800 Message-Id: <20230301105847.253084-8-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102e; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x102e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668408483100001 Example of this command: # virsh qemu-monitor-command vm --hmp info cryptodev cryptodev1: service=3D[akcipher|mac|hash|cipher] queue 0: type=3Dbuiltin cryptodev0: service=3D[akcipher] queue 0: type=3Dlkcf Acked-by: Dr. David Alan Gilbert Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev-hmp-cmds.c | 54 +++++++++++++++++++++++++++++++++++ backends/meson.build | 1 + hmp-commands-info.hx | 14 +++++++++ include/monitor/hmp.h | 1 + 4 files changed, 70 insertions(+) create mode 100644 backends/cryptodev-hmp-cmds.c diff --git a/backends/cryptodev-hmp-cmds.c b/backends/cryptodev-hmp-cmds.c new file mode 100644 index 0000000000..4f7220bb13 --- /dev/null +++ b/backends/cryptodev-hmp-cmds.c @@ -0,0 +1,54 @@ +/* + * HMP commands related to cryptodev + * + * Copyright (c) 2023 Bytedance.Inc + * + * Authors: + * zhenwei pi + * + * This work is licensed under the terms of the GNU GPL, version 2 or + * (at your option) any later version. + */ + +#include "qemu/osdep.h" +#include "monitor/hmp.h" +#include "monitor/monitor.h" +#include "qapi/qapi-commands-cryptodev.h" +#include "qapi/qmp/qdict.h" + + +void hmp_info_cryptodev(Monitor *mon, const QDict *qdict) +{ + QCryptodevInfoList *il; + QCryptodevBackendServiceTypeList *sl; + QCryptodevBackendClientList *cl; + + for (il =3D qmp_query_cryptodev(NULL); il; il =3D il->next) { + g_autofree char *services =3D NULL; + QCryptodevInfo *info =3D il->value; + char *tmp_services; + + /* build a string like 'service=3D[akcipher|mac|hash|cipher]' */ + for (sl =3D info->service; sl; sl =3D sl->next) { + const char *service =3D QCryptodevBackendServiceType_str(sl->v= alue); + + if (!services) { + services =3D g_strdup(service); + } else { + tmp_services =3D g_strjoin("|", services, service, NULL); + g_free(services); + services =3D tmp_services; + } + } + monitor_printf(mon, "%s: service=3D[%s]\n", info->id, services); + + for (cl =3D info->client; cl; cl =3D cl->next) { + QCryptodevBackendClient *client =3D cl->value; + monitor_printf(mon, " queue %" PRIu32 ": type=3D%s\n", + client->queue, + QCryptodevBackendType_str(client->type)); + } + } + + qapi_free_QCryptodevInfoList(il); +} diff --git a/backends/meson.build b/backends/meson.build index 954e658b25..b369e0a9d0 100644 --- a/backends/meson.build +++ b/backends/meson.build @@ -1,5 +1,6 @@ softmmu_ss.add([files( 'cryptodev-builtin.c', + 'cryptodev-hmp-cmds.c', 'cryptodev.c', 'hostmem-ram.c', 'hostmem.c', diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index 754b1e8408..47d63d26db 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -993,3 +993,17 @@ SRST ``info virtio-queue-element`` *path* *queue* [*index*] Display element of a given virtio queue ERST + + { + .name =3D "cryptodev", + .args_type =3D "", + .params =3D "", + .help =3D "show the crypto devices", + .cmd =3D hmp_info_cryptodev, + .flags =3D "p", + }, + +SRST + ``info cryptodev`` + Show the crypto devices. +ERST diff --git a/include/monitor/hmp.h b/include/monitor/hmp.h index 2220f14fc9..e6cf0b7aa7 100644 --- a/include/monitor/hmp.h +++ b/include/monitor/hmp.h @@ -178,5 +178,6 @@ void hmp_ioport_read(Monitor *mon, const QDict *qdict); void hmp_ioport_write(Monitor *mon, const QDict *qdict); void hmp_boot_set(Monitor *mon, const QDict *qdict); void hmp_info_mtree(Monitor *mon, const QDict *qdict); +void hmp_info_cryptodev(Monitor *mon, const QDict *qdict); =20 #endif --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668486; cv=none; d=zohomail.com; s=zohoarc; b=O9Fw2mKLMEVFXDaEIkKBltwxYf3fqiB2F/hGX0XzFeC+COvqsIMwTScZX19z44FdbwHktBiUGDNtOhbusxs1zjqUxEL5r5EoO3YViPSEbNPeRWPkL3KBQkGXE4+TQ0PpGqllVdNTTV0piPuADr9hXZcJE/IUQySyG3MbTHJjvTU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668486; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=ywSGliLNPGHpeZX0N0pYcXxxjI1k9+p9JqBgJ67Mzqw=; b=lnP1WrxYxQpynr0Y0xLu4XX3N9gyMPj85Z6U2ehIw4GquAsFzgcw2wgJwxBV3/ymPYj5lOY1uhVsLtuj6N7uPmJGGHrZXhmJTbzqx1AWFbZsR2W0RWi6GJ2a096z7ZsU5Rupt5L9UINze2bMZg1cGwmZQ3fZHcDeyZT9Gy7FawM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668486770303.13320212752683; Wed, 1 Mar 2023 03:01:26 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBS-0004dI-JF; Wed, 01 Mar 2023 05:59:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBN-0004aZ-DF for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:40 -0500 Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKBL-0006IW-Fl for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:37 -0500 Received: by mail-pj1-x1035.google.com with SMTP id m3-20020a17090ade0300b00229eec90a7fso1040323pjv.0 for ; Wed, 01 Mar 2023 02:59:29 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668368; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ywSGliLNPGHpeZX0N0pYcXxxjI1k9+p9JqBgJ67Mzqw=; b=OFVEL6J66VSWFjIJOLoYGelt3KrpHq6rUJ1kEWbFlznQ486GsIPAUCWq6CQ63kWE0x uterDaivI4txIYifqtfdnati8W7UBKmkfr/kIDsNeTXpi7TBDNWvhuJgMMFwrPnpThJp Mbr7lIgc6siMFFW2T/NKgEb76CPkflWy2HDh03GO8P30r5+l1/yXZ3nkwuJglOWMSGQ8 WoosEjiwnEEd6nLxdFglxSTtasGfD1HQCQpVdaehclQDACQQTWr8gRTDCW3H4PsbpAsB VugNitMpnr/7vEILQdGxUsKovpfwgk2o6tjBHliW6WCGXQiPSz0uVHWgTmXsPP27aS9P baNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668368; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ywSGliLNPGHpeZX0N0pYcXxxjI1k9+p9JqBgJ67Mzqw=; b=dmFDxyPGhIF2gFL0dhKkHxaorXLdkpn0SHV7dgEM5Wezk/yOzmBSSigLYeeC+TZgRS 0ud8ARcZaNgqdraMssNrsNTYax6aiAGNgaYY6c1uem5Gex7wk35/bwQvnnMsJjsQ5liy HUYVWVH5QopCC1UjBBS0uFtSU29Ri7G1rVrvhBnoIrPupkGDvTTgIeRSEVHrDVKb70ug RYl8+9FlZq1ovP8YzdHKJ/9m83HvIBWV1irbLEg/SIqSJP9hR0G6RtiOc1W3Ii0WCey0 hiexfJjfZQIPts/gr/ddd/AtuVxvqmD44y8TCPYIsepR+Vn0RTKUIciRBV0XU13U/q5W rsqw== X-Gm-Message-State: AO0yUKVRloaGhC5JFsun/8qbK7Gw62x4tetvJhAYKexqS8SIUEaZO9a+ RBG3MtEjrqpdJfYzOTYmr7txKg== X-Google-Smtp-Source: AK7set9gj59bEREsfu5zjkcsJmQFFKvOO/6MhnjV85IQYK2k0FEu4PY8W6sR47Ixl6O9iKubqt0+2A== X-Received: by 2002:a17:90b:3505:b0:233:bc5a:92fc with SMTP id ls5-20020a17090b350500b00233bc5a92fcmr6864117pjb.16.1677668368176; Wed, 01 Mar 2023 02:59:28 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 08/12] cryptodev: Use CryptoDevBackendOpInfo for operation Date: Wed, 1 Mar 2023 18:58:43 +0800 Message-Id: <20230301105847.253084-9-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1035; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x1035.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668487741100011 Move queue_index, CryptoDevCompletionFunc and opaque into struct CryptoDevBackendOpInfo, then cryptodev_backend_crypto_operation() needs an argument CryptoDevBackendOpInfo *op_info only. And remove VirtIOCryptoReq from cryptodev. It's also possible to hide VirtIOCryptoReq into virtio-crypto.c in the next step. (In theory, VirtIOCryptoReq is a private structure used by virtio-crypto only) Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev-builtin.c | 9 +++------ backends/cryptodev-lkcf.c | 9 +++------ backends/cryptodev.c | 18 +++++------------- hw/virtio/virtio-crypto.c | 7 ++++--- include/sysemu/cryptodev.h | 26 ++++++++++---------------- 5 files changed, 25 insertions(+), 44 deletions(-) diff --git a/backends/cryptodev-builtin.c b/backends/cryptodev-builtin.c index c45b5906c5..39d0455280 100644 --- a/backends/cryptodev-builtin.c +++ b/backends/cryptodev-builtin.c @@ -539,10 +539,7 @@ static int cryptodev_builtin_asym_operation( =20 static int cryptodev_builtin_operation( CryptoDevBackend *backend, - CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, - CryptoDevCompletionFunc cb, - void *opaque) + CryptoDevBackendOpInfo *op_info) { CryptoDevBackendBuiltin *builtin =3D CRYPTODEV_BACKEND_BUILTIN(backend); @@ -574,8 +571,8 @@ static int cryptodev_builtin_operation( if (local_error) { error_report_err(local_error); } - if (cb) { - cb(opaque, status); + if (op_info->cb) { + op_info->cb(op_info->opaque, status); } return 0; } diff --git a/backends/cryptodev-lkcf.c b/backends/cryptodev-lkcf.c index edec99f104..45aba1ff67 100644 --- a/backends/cryptodev-lkcf.c +++ b/backends/cryptodev-lkcf.c @@ -469,10 +469,7 @@ static void *cryptodev_lkcf_worker(void *arg) =20 static int cryptodev_lkcf_operation( CryptoDevBackend *backend, - CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, - CryptoDevCompletionFunc cb, - void *opaque) + CryptoDevBackendOpInfo *op_info) { CryptoDevBackendLKCF *lkcf =3D CRYPTODEV_BACKEND_LKCF(backend); @@ -495,8 +492,8 @@ static int cryptodev_lkcf_operation( =20 task =3D g_new0(CryptoDevLKCFTask, 1); task->op_info =3D op_info; - task->cb =3D cb; - task->opaque =3D opaque; + task->cb =3D op_info->cb; + task->opaque =3D op_info->opaque; task->sess =3D sess; task->lkcf =3D lkcf; task->status =3D -VIRTIO_CRYPTO_ERR; diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 3a45d19823..ba7b0bc770 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -143,29 +143,22 @@ int cryptodev_backend_close_session( =20 static int cryptodev_backend_operation( CryptoDevBackend *backend, - CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, - CryptoDevCompletionFunc cb, - void *opaque) + CryptoDevBackendOpInfo *op_info) { CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(backend); =20 if (bc->do_op) { - return bc->do_op(backend, op_info, queue_index, cb, opaque); + return bc->do_op(backend, op_info); } return -VIRTIO_CRYPTO_NOTSUPP; } =20 int cryptodev_backend_crypto_operation( CryptoDevBackend *backend, - void *opaque1, - uint32_t queue_index, - CryptoDevCompletionFunc cb, void *opaque2) + CryptoDevBackendOpInfo *op_info) { - VirtIOCryptoReq *req =3D opaque1; - CryptoDevBackendOpInfo *op_info =3D &req->op_info; - QCryptodevBackendAlgType algtype =3D req->flags; + QCryptodevBackendAlgType algtype =3D op_info->algtype; =20 if ((algtype !=3D QCRYPTODEV_BACKEND_ALG_SYM) && (algtype !=3D QCRYPTODEV_BACKEND_ALG_ASYM)) { @@ -173,8 +166,7 @@ int cryptodev_backend_crypto_operation( return -VIRTIO_CRYPTO_NOTSUPP; } =20 - return cryptodev_backend_operation(backend, op_info, queue_index, - cb, opaque2); + return cryptodev_backend_operation(backend, op_info); } =20 static void diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c index e4f0de4d1c..802e1b9659 100644 --- a/hw/virtio/virtio-crypto.c +++ b/hw/virtio/virtio-crypto.c @@ -871,6 +871,9 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request) opcode =3D ldl_le_p(&req.header.opcode); op_info->session_id =3D ldq_le_p(&req.header.session_id); op_info->op_code =3D opcode; + op_info->queue_index =3D queue_index; + op_info->cb =3D virtio_crypto_req_complete; + op_info->opaque =3D request; =20 switch (opcode) { case VIRTIO_CRYPTO_CIPHER_ENCRYPT: @@ -898,9 +901,7 @@ check_result: virtio_crypto_req_complete(request, -VIRTIO_CRYPTO_NOTSUPP); } else { ret =3D cryptodev_backend_crypto_operation(vcrypto->cryptodev, - request, queue_index, - virtio_crypto_req_complete, - request); + op_info); if (ret < 0) { virtio_crypto_req_complete(request, ret); } diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index 16f01dd48a..048a627035 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -174,9 +174,14 @@ typedef struct CryptoDevBackendAsymOpInfo { uint8_t *dst; } CryptoDevBackendAsymOpInfo; =20 +typedef void (*CryptoDevCompletionFunc) (void *opaque, int ret); + typedef struct CryptoDevBackendOpInfo { QCryptodevBackendAlgType algtype; uint32_t op_code; + uint32_t queue_index; + CryptoDevCompletionFunc cb; + void *opaque; /* argument for cb */ uint64_t session_id; union { CryptoDevBackendSymOpInfo *sym_op_info; @@ -184,7 +189,6 @@ typedef struct CryptoDevBackendOpInfo { } u; } CryptoDevBackendOpInfo; =20 -typedef void (*CryptoDevCompletionFunc) (void *opaque, int ret); struct CryptoDevBackendClass { ObjectClass parent_class; =20 @@ -204,10 +208,7 @@ struct CryptoDevBackendClass { void *opaque); =20 int (*do_op)(CryptoDevBackend *backend, - CryptoDevBackendOpInfo *op_info, - uint32_t queue_index, - CryptoDevCompletionFunc cb, - void *opaque); + CryptoDevBackendOpInfo *op_info); }; =20 struct CryptoDevBackendClient { @@ -335,24 +336,17 @@ int cryptodev_backend_close_session( /** * cryptodev_backend_crypto_operation: * @backend: the cryptodev backend object - * @opaque1: pointer to a VirtIOCryptoReq object - * @queue_index: queue index of cryptodev backend client - * @errp: pointer to a NULL-initialized error object - * @cb: callbacks when operation is completed - * @opaque2: parameter passed to cb + * @op_info: pointer to a CryptoDevBackendOpInfo object * - * Do crypto operation, such as encryption and - * decryption + * Do crypto operation, such as encryption, decryption, signature and + * verification * * Returns: 0 for success and cb will be called when creation is completed, * negative value for error, and cb will not be called. */ int cryptodev_backend_crypto_operation( CryptoDevBackend *backend, - void *opaque1, - uint32_t queue_index, - CryptoDevCompletionFunc cb, - void *opaque2); + CryptoDevBackendOpInfo *op_info); =20 /** * cryptodev_backend_set_used: --=20 2.34.1 From nobody Sun May 12 11:59:14 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668489; cv=none; d=zohomail.com; s=zohoarc; b=b5HKmKvTwGNjcplXOcBc0afvl6VbSoZ4Kp1F/MFx0HzhQM5wdBW2DlQxhqjVIpPz/oieGgbhcnkRTrkiar2kMSg1HY4gN2FgMjg2ruucCDw//2rhrQxPGYkGxFNahKZdEzZxO3Q372LVSrSbbnUodI933+DvHJ1agfyU87/nIbs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668489; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=Td/j6dTzaLln6NnpiNQ+S68Nsrdxuxb2Asl0Whf6/l0=; b=ZKG8OIy4TQXufaoF4m/gE93oHgLA5FtN6Jk5sZ+oDOckBt9L/vAmGPpK0apBwkKoUkK++WxIvcNEiHcfIlejhtvaKYGaKKFevl1visHRdukgpe6yhsQ6g+tvyoeuCl8DjwB8yLvSqMdSWwoIeX09bxVaOdP1+8lxhHQdPsQKjXE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668489496381.123324078151; Wed, 1 Mar 2023 03:01:29 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBS-0004cX-3t; Wed, 01 Mar 2023 05:59:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBN-0004aY-7D for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:40 -0500 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKBL-0006JI-H2 for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:36 -0500 Received: by mail-pj1-x1029.google.com with SMTP id bo22so1394394pjb.4 for ; Wed, 01 Mar 2023 02:59:32 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Td/j6dTzaLln6NnpiNQ+S68Nsrdxuxb2Asl0Whf6/l0=; b=a7SjVwXBmwlAT5SaD6NJJynG2D67ZJbLUlMxe43CWvQAzTs4Uz1S2K9/+2wprNVFk3 E31pWEXkrlSGQUbDXbLxAGqHIB5/3uOC3e0TfYylztkwDP0B6qwtCSFuB9WlNTYgJfOY BymvVcg3rNiw5IQtHyjAmRcmZMONGB+gXWjURcOpxVZels8YrPGhGnv3Th+SVcpOkknk yngP145D7jFk4NxlCEI4i8CftsUv74Wi9O1iNvsUtPrYYlr+3Gi4fbzhckQpzXCZA7xr sM/aNPD8JNnNbgVywf92QdlTfhs3F4463e0Ju3VOFrnbgof1yyR5w+C/v+xYoRwVaPxX HosA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668371; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Td/j6dTzaLln6NnpiNQ+S68Nsrdxuxb2Asl0Whf6/l0=; b=zRWegg1GFduuHM9JaYRUpIs5Tc0xtb1l/jedccBEciYh0SdEUjWJ6EgGwxfI41AHUQ HgGboGWqwrgHErlm/HU/6cGYSpXPoWdtVmlSUXyUmJmlaiI7Ir0rfTUlGn52Xm6zwtTf ODHyXE87/ArkZ9in4iFomNAiqdAWEzG6BND76WrmecMp2Awesa7PSP4SiTixHTG4T+C4 LHWSyAGVOhf00Bj6TN3amnf3bf6Zj2/NMWCbaD5Sqffc2niZ59ML78t8JJVDc2LP+zTN vWX/3g792u8l1ZOZPycikdTt5e636+8UX8ui98P/W6+SC76vP8CsTPV7V8odiw2VGeAB ZDSQ== X-Gm-Message-State: AO0yUKUynIF71DZNRoptCyWzwmC+3dr2Xw8Yen+3mqY8rmQYMG6eZ9RW snW4Baf/YKG+EIodBdtEuc33ng== X-Google-Smtp-Source: AK7set+ohd1PiE436Azb87+Bm3Gqg3gHxvQ5y+D5B47OmYP9FiD1Dgtoj5n0bJ6Vxq2hLBMjDE7O3w== X-Received: by 2002:a17:90a:1e:b0:22c:afd6:e597 with SMTP id 30-20020a17090a001e00b0022cafd6e597mr7071601pja.17.1677668371272; Wed, 01 Mar 2023 02:59:31 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 09/12] cryptodev: Account statistics Date: Wed, 1 Mar 2023 18:58:44 +0800 Message-Id: <20230301105847.253084-10-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1029; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x1029.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668489982100022 Content-Type: text/plain; charset="utf-8" Account OPS/BPS for crypto device, this will be used for 'query-stats' QEMU monitor command and QoS in the next step. Note that a crypto device may support symmetric mode, asymmetric mode, both symmetric and asymmetric mode. So we use two structure to describe the statistics of a crypto device. Signed-off-by: zhenwei pi Reviewed-by: Daniel P. Berrang=C3=A9 --- backends/cryptodev.c | 68 +++++++++++++++++++++++++++++++++++--- include/sysemu/cryptodev.h | 49 +++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 5 deletions(-) diff --git a/backends/cryptodev.c b/backends/cryptodev.c index ba7b0bc770..5ee7507ca5 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -107,6 +107,9 @@ void cryptodev_backend_cleanup( if (bc->cleanup) { bc->cleanup(backend, errp); } + + g_free(backend->sym_stat); + g_free(backend->asym_stat); } =20 int cryptodev_backend_create_session( @@ -154,16 +157,61 @@ static int cryptodev_backend_operation( return -VIRTIO_CRYPTO_NOTSUPP; } =20 +static int cryptodev_backend_account(CryptoDevBackend *backend, + CryptoDevBackendOpInfo *op_info) +{ + enum QCryptodevBackendAlgType algtype =3D op_info->algtype; + int len; + + if (algtype =3D=3D QCRYPTODEV_BACKEND_ALG_ASYM) { + CryptoDevBackendAsymOpInfo *asym_op_info =3D op_info->u.asym_op_in= fo; + len =3D asym_op_info->src_len; + switch (op_info->op_code) { + case VIRTIO_CRYPTO_AKCIPHER_ENCRYPT: + CryptodevAsymStatIncEncrypt(backend, len); + break; + case VIRTIO_CRYPTO_AKCIPHER_DECRYPT: + CryptodevAsymStatIncDecrypt(backend, len); + break; + case VIRTIO_CRYPTO_AKCIPHER_SIGN: + CryptodevAsymStatIncSign(backend, len); + break; + case VIRTIO_CRYPTO_AKCIPHER_VERIFY: + CryptodevAsymStatIncVerify(backend, len); + break; + default: + return -VIRTIO_CRYPTO_NOTSUPP; + } + } else if (algtype =3D=3D QCRYPTODEV_BACKEND_ALG_SYM) { + CryptoDevBackendSymOpInfo *sym_op_info =3D op_info->u.sym_op_info; + len =3D sym_op_info->src_len; + switch (op_info->op_code) { + case VIRTIO_CRYPTO_CIPHER_ENCRYPT: + CryptodevSymStatIncEncrypt(backend, len); + break; + case VIRTIO_CRYPTO_CIPHER_DECRYPT: + CryptodevSymStatIncDecrypt(backend, len); + break; + default: + return -VIRTIO_CRYPTO_NOTSUPP; + } + } else { + error_report("Unsupported cryptodev alg type: %" PRIu32 "", algtyp= e); + return -VIRTIO_CRYPTO_NOTSUPP; + } + + return len; +} + int cryptodev_backend_crypto_operation( CryptoDevBackend *backend, CryptoDevBackendOpInfo *op_info) { - QCryptodevBackendAlgType algtype =3D op_info->algtype; + int ret; =20 - if ((algtype !=3D QCRYPTODEV_BACKEND_ALG_SYM) - && (algtype !=3D QCRYPTODEV_BACKEND_ALG_ASYM)) { - error_report("Unsupported cryptodev alg type: %" PRIu32 "", algtyp= e); - return -VIRTIO_CRYPTO_NOTSUPP; + ret =3D cryptodev_backend_account(backend, op_info); + if (ret < 0) { + return ret; } =20 return cryptodev_backend_operation(backend, op_info); @@ -202,10 +250,20 @@ cryptodev_backend_complete(UserCreatable *uc, Error *= *errp) { CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(uc); CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(uc); + uint32_t services; =20 if (bc->init) { bc->init(backend, errp); } + + services =3D backend->conf.crypto_services; + if (services & (1 << QCRYPTODEV_BACKEND_SERVICE_CIPHER)) { + backend->sym_stat =3D g_new0(CryptodevBackendSymStat, 1); + } + + if (services & (1 << QCRYPTODEV_BACKEND_SERVICE_AKCIPHER)) { + backend->asym_stat =3D g_new0(CryptodevBackendAsymStat, 1); + } } =20 void cryptodev_backend_set_used(CryptoDevBackend *backend, bool used) diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index 048a627035..c0250c4a2c 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -246,6 +246,24 @@ struct CryptoDevBackendConf { uint64_t max_size; }; =20 +typedef struct CryptodevBackendSymStat { + int64_t encrypt_ops; + int64_t decrypt_ops; + int64_t encrypt_bytes; + int64_t decrypt_bytes; +} CryptodevBackendSymStat; + +typedef struct CryptodevBackendAsymStat { + int64_t encrypt_ops; + int64_t decrypt_ops; + int64_t sign_ops; + int64_t verify_ops; + int64_t encrypt_bytes; + int64_t decrypt_bytes; + int64_t sign_bytes; + int64_t verify_bytes; +} CryptodevBackendAsymStat; + struct CryptoDevBackend { Object parent_obj; =20 @@ -253,8 +271,39 @@ struct CryptoDevBackend { /* Tag the cryptodev backend is used by virtio-crypto or not */ bool is_used; CryptoDevBackendConf conf; + CryptodevBackendSymStat *sym_stat; + CryptodevBackendAsymStat *asym_stat; }; =20 +#define CryptodevSymStatInc(be, op, bytes) do { \ + be->sym_stat->op##_bytes +=3D (bytes); \ + be->sym_stat->op##_ops +=3D 1; \ +} while (/*CONSTCOND*/0) + +#define CryptodevSymStatIncEncrypt(be, bytes) \ + CryptodevSymStatInc(be, encrypt, bytes) + +#define CryptodevSymStatIncDecrypt(be, bytes) \ + CryptodevSymStatInc(be, decrypt, bytes) + +#define CryptodevAsymStatInc(be, op, bytes) do { \ + be->asym_stat->op##_bytes +=3D (bytes); \ + be->asym_stat->op##_ops +=3D 1; \ +} while (/*CONSTCOND*/0) + +#define CryptodevAsymStatIncEncrypt(be, bytes) \ + CryptodevAsymStatInc(be, encrypt, bytes) + +#define CryptodevAsymStatIncDecrypt(be, bytes) \ + CryptodevAsymStatInc(be, decrypt, bytes) + +#define CryptodevAsymStatIncSign(be, bytes) \ + CryptodevAsymStatInc(be, sign, bytes) + +#define CryptodevAsymStatIncVerify(be, bytes) \ + CryptodevAsymStatInc(be, verify, bytes) + + /** * cryptodev_backend_new_client: * --=20 2.34.1 From nobody Sun May 12 11:59:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668590; cv=none; d=zohomail.com; s=zohoarc; b=Eb3Y4udCYC/EW6T7UNdEGuGUYXNnShwFJPVRjgbt59AYnx7GSoaaiXzlMc6jIRxi08rn65Vznrv7yrV21MRkgz7YbZFCL/Vf/G2+HVkW6OVY9pdSHD09giYIX7Ep9InSFtxhBK7bcoBZta1AYnYiPRpJvZZZv5k2EglRnxI1c90= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668590; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=iJgrT1TTnpO6nF7f5EmNSWxxQpS6yWizQXRea5o8KXo=; b=mjhsvwFoWFfaTATPjuBTK3ZCbDsARzVf5IC8ovvtozn9mb5AOFUe7Xal9Wly8sD7Eq7bQqXqPsBBmkq7oeTmfjXZzejtIlx0/YvcdEUrG0pc/Bkd/WZotxcEoZB5pAFtesSg5X8IbLcS91U9K0ljLJbWCCFM/5xCfndu4/J2B0s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 16776685909791018.8961470256077; Wed, 1 Mar 2023 03:03:10 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBT-0004dt-A0; Wed, 01 Mar 2023 05:59:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBP-0004aj-QP for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:40 -0500 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKBL-0006L7-KF for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:39 -0500 Received: by mail-pl1-x62a.google.com with SMTP id a2so3115102plm.4 for ; Wed, 01 Mar 2023 02:59:35 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iJgrT1TTnpO6nF7f5EmNSWxxQpS6yWizQXRea5o8KXo=; b=lv1OTjPsI/9kVHODyb1DE5K1W0zXnbqKSpeFtjtqnGm3vTguKtEHGTi+MGAic9WOlA Z/d5zxqL30lUud3DhnTjfr9ncHueXzYvKIRD7rrscsUwMHGqt2LJCCyiQHJZ/TCR6P3C eVzUBLAINS2tZo+pPEDTelIIcw8wNsi8yr+VTVEq37RV59YUT7V0V30IvHFR5nDYBlBL xz8fjsMC9PTSbUAnPlP5KcPePlIT0vxpC6mtn+0JHCAoOgQoEUhe5QfgXpBXp3K2U+Ga xfb9pLiPfkW0nJ6IqU0m2Wyw6PhcTmgjGGeKpfk2PllE6WVB+QNztvZ1yjFOc3OZ2Spm sIUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668374; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iJgrT1TTnpO6nF7f5EmNSWxxQpS6yWizQXRea5o8KXo=; b=z4+iJlAqp4Jo6lrdKJSOv8h3+V/r25N6+jMm5QmEb/oQQJ3splZ4lF7V53k/cJC7dh dJL4qCJ7nNvLJWHLv5EKqbjTGjMu/x3dIWcBDQy6X8PaKW5LmPi9zAAElSC9eDlq8EYk vb97CXP8jF7biII2ZqStI1LzGVu/qy9O792HTtcY4SwEdyNh+yGnA9Gw10CejTFx20uk MDl3yZQvPlL+lDtqLZ8mXn3LXxsY/z1018ukPemzMLMksC8/NO42m6iKVK4f4R4oY8Tz /1JsvrLZMCzk9Gj8DQvdYahAXOR+vlb510GqLB4jKyNpeoTxQCcv8QINdyFqMGWtSBXi ObtA== X-Gm-Message-State: AO0yUKUWL52RrLlpySVtCSADjcgHSJnDnZXqYErxQoF0qr25BQoy9nPp JTdMM47dLSI+/APd76Eub4yqkQ== X-Google-Smtp-Source: AK7set99U8KuGwQ+FACk6DSLWkPdpbZW2Tsu5E4UN/+wkAHedhlahpqiZrXXZn52GQpmYq1HJCXPVQ== X-Received: by 2002:a17:90b:4d0b:b0:22b:efa5:d05 with SMTP id mw11-20020a17090b4d0b00b0022befa50d05mr6790106pjb.40.1677668374447; Wed, 01 Mar 2023 02:59:34 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 10/12] cryptodev: support QoS Date: Wed, 1 Mar 2023 18:58:45 +0800 Message-Id: <20230301105847.253084-11-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=pizhenwei@bytedance.com; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668592714100007 Add 'throttle-bps' and 'throttle-ops' limitation to set QoS. The two arguments work with both QEMU command line and QMP command. Example of QEMU command line: -object cryptodev-backend-builtin,id=3Dcryptodev1,throttle-bps=3D1600,\ throttle-ops=3D100 Example of QMP command: virsh qemu-monitor-command buster --hmp qom-set /objects/cryptodev1 \ throttle-ops 100 or cancel limitation: virsh qemu-monitor-command buster --hmp qom-set /objects/cryptodev1 \ throttle-ops 0 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev.c | 138 +++++++++++++++++++++++++++++++++++++ include/sysemu/cryptodev.h | 7 ++ qapi/qom.json | 8 ++- 3 files changed, 152 insertions(+), 1 deletion(-) diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 5ee7507ca5..7c10a2e1cb 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -28,6 +28,7 @@ #include "qapi/visitor.h" #include "qemu/config-file.h" #include "qemu/error-report.h" +#include "qemu/main-loop.h" #include "qom/object_interfaces.h" #include "hw/virtio/virtio-crypto.h" =20 @@ -203,17 +204,53 @@ static int cryptodev_backend_account(CryptoDevBackend= *backend, return len; } =20 +static void cryptodev_backend_throttle_timer_cb(void *opaque) +{ + CryptoDevBackend *backend =3D (CryptoDevBackend *)opaque; + CryptoDevBackendOpInfo *op_info, *tmpop; + int ret; + + QTAILQ_FOREACH_SAFE(op_info, &backend->opinfos, next, tmpop) { + QTAILQ_REMOVE(&backend->opinfos, op_info, next); + ret =3D cryptodev_backend_account(backend, op_info); + if (ret < 0) { + op_info->cb(op_info->opaque, ret); + continue; + } + + throttle_account(&backend->ts, true, ret); + cryptodev_backend_operation(backend, op_info); + if (throttle_enabled(&backend->tc) && + throttle_schedule_timer(&backend->ts, &backend->tt, true)) { + break; + } + } +} + int cryptodev_backend_crypto_operation( CryptoDevBackend *backend, CryptoDevBackendOpInfo *op_info) { int ret; =20 + if (!throttle_enabled(&backend->tc)) { + goto do_account; + } + + if (throttle_schedule_timer(&backend->ts, &backend->tt, true) || + !QTAILQ_EMPTY(&backend->opinfos)) { + QTAILQ_INSERT_TAIL(&backend->opinfos, op_info, next); + return 0; + } + +do_account: ret =3D cryptodev_backend_account(backend, op_info); if (ret < 0) { return ret; } =20 + throttle_account(&backend->ts, true, ret); + return cryptodev_backend_operation(backend, op_info); } =20 @@ -245,12 +282,98 @@ cryptodev_backend_set_queues(Object *obj, Visitor *v,= const char *name, backend->conf.peers.queues =3D value; } =20 +static void cryptodev_backend_set_throttle(CryptoDevBackend *backend, int = field, + uint64_t value, Error **errp) +{ + uint64_t orig =3D backend->tc.buckets[field].avg; + bool enabled =3D throttle_enabled(&backend->tc); + + if (orig =3D=3D value) { + return; + } + + backend->tc.buckets[field].avg =3D value; + if (!throttle_enabled(&backend->tc)) { + throttle_timers_destroy(&backend->tt); + cryptodev_backend_throttle_timer_cb(backend); /* drain opinfos */ + return; + } + + if (!throttle_is_valid(&backend->tc, errp)) { + backend->tc.buckets[field].avg =3D orig; /* revert change */ + return; + } + + if (!enabled) { + throttle_init(&backend->ts); + throttle_timers_init(&backend->tt, qemu_get_aio_context(), + QEMU_CLOCK_REALTIME, + cryptodev_backend_throttle_timer_cb, /* FIXME= */ + cryptodev_backend_throttle_timer_cb, backend); + } + + throttle_config(&backend->ts, QEMU_CLOCK_REALTIME, &backend->tc); +} + +static void cryptodev_backend_get_bps(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); + uint64_t value =3D backend->tc.buckets[THROTTLE_BPS_TOTAL].avg; + + visit_type_uint64(v, name, &value, errp); +} + +static void cryptodev_backend_set_bps(Object *obj, Visitor *v, const char = *name, + void *opaque, Error **errp) +{ + CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); + uint64_t value; + + if (!visit_type_uint64(v, name, &value, errp)) { + return; + } + + cryptodev_backend_set_throttle(backend, THROTTLE_BPS_TOTAL, value, err= p); +} + +static void cryptodev_backend_get_ops(Object *obj, Visitor *v, const char = *name, + void *opaque, Error **errp) +{ + CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); + uint64_t value =3D backend->tc.buckets[THROTTLE_OPS_TOTAL].avg; + + visit_type_uint64(v, name, &value, errp); +} + +static void cryptodev_backend_set_ops(Object *obj, Visitor *v, + const char *name, void *opaque, + Error **errp) +{ + CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); + uint64_t value; + + if (!visit_type_uint64(v, name, &value, errp)) { + return; + } + + cryptodev_backend_set_throttle(backend, THROTTLE_OPS_TOTAL, value, err= p); +} + static void cryptodev_backend_complete(UserCreatable *uc, Error **errp) { CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(uc); CryptoDevBackendClass *bc =3D CRYPTODEV_BACKEND_GET_CLASS(uc); uint32_t services; + uint64_t value; + + QTAILQ_INIT(&backend->opinfos); + value =3D backend->tc.buckets[THROTTLE_OPS_TOTAL].avg; + cryptodev_backend_set_throttle(backend, THROTTLE_OPS_TOTAL, value, err= p); + value =3D backend->tc.buckets[THROTTLE_BPS_TOTAL].avg; + cryptodev_backend_set_throttle(backend, THROTTLE_BPS_TOTAL, value, err= p); =20 if (bc->init) { bc->init(backend, errp); @@ -294,8 +417,12 @@ cryptodev_backend_can_be_deleted(UserCreatable *uc) =20 static void cryptodev_backend_instance_init(Object *obj) { + CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); + /* Initialize devices' queues property to 1 */ object_property_set_int(obj, "queues", 1, NULL); + + throttle_config_init(&backend->tc); } =20 static void cryptodev_backend_finalize(Object *obj) @@ -303,6 +430,9 @@ static void cryptodev_backend_finalize(Object *obj) CryptoDevBackend *backend =3D CRYPTODEV_BACKEND(obj); =20 cryptodev_backend_cleanup(backend, NULL); + if (throttle_enabled(&backend->tc)) { + throttle_timers_destroy(&backend->tt); + } } =20 static void @@ -318,6 +448,14 @@ cryptodev_backend_class_init(ObjectClass *oc, void *da= ta) cryptodev_backend_get_queues, cryptodev_backend_set_queues, NULL, NULL); + object_class_property_add(oc, "throttle-bps", "uint64", + cryptodev_backend_get_bps, + cryptodev_backend_set_bps, + NULL, NULL); + object_class_property_add(oc, "throttle-ops", "uint64", + cryptodev_backend_get_ops, + cryptodev_backend_set_ops, + NULL, NULL); } =20 static const TypeInfo cryptodev_backend_info =3D { diff --git a/include/sysemu/cryptodev.h b/include/sysemu/cryptodev.h index c0250c4a2c..bc021ce847 100644 --- a/include/sysemu/cryptodev.h +++ b/include/sysemu/cryptodev.h @@ -24,6 +24,7 @@ #define CRYPTODEV_H =20 #include "qemu/queue.h" +#include "qemu/throttle.h" #include "qom/object.h" #include "qapi/qapi-types-cryptodev.h" =20 @@ -187,6 +188,7 @@ typedef struct CryptoDevBackendOpInfo { CryptoDevBackendSymOpInfo *sym_op_info; CryptoDevBackendAsymOpInfo *asym_op_info; } u; + QTAILQ_ENTRY(CryptoDevBackendOpInfo) next; } CryptoDevBackendOpInfo; =20 struct CryptoDevBackendClass { @@ -273,6 +275,11 @@ struct CryptoDevBackend { CryptoDevBackendConf conf; CryptodevBackendSymStat *sym_stat; CryptodevBackendAsymStat *asym_stat; + + ThrottleState ts; + ThrottleTimers tt; + ThrottleConfig tc; + QTAILQ_HEAD(, CryptoDevBackendOpInfo) opinfos; }; =20 #define CryptodevSymStatInc(be, op, bytes) do { \ diff --git a/qapi/qom.json b/qapi/qom.json index 30e76653ad..a877b879b9 100644 --- a/qapi/qom.json +++ b/qapi/qom.json @@ -278,10 +278,16 @@ # cryptodev-backend and must be 1 for cryptodev-backend-builtin. # (default: 1) # +# @throttle-bps: limit total bytes per second (Since 8.0) +# +# @throttle-ops: limit total operations per second (Since 8.0) +# # Since: 2.8 ## { 'struct': 'CryptodevBackendProperties', - 'data': { '*queues': 'uint32' } } + 'data': { '*queues': 'uint32', + '*throttle-bps': 'uint64', + '*throttle-ops': 'uint64' } } =20 ## # @CryptodevVhostUserProperties: --=20 2.34.1 From nobody Sun May 12 11:59:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668589; cv=none; d=zohomail.com; s=zohoarc; b=WM+BjWaQwuRt6vOCo6RCdZGnnuH6EIjHNXioVIFG35rB4Wvd1ooYq+jpzOQ5NznmR8zUj4kiP597ORqGEauDFj267lqzn8TL6iTpYw5IvZqeCLmwkcDq5GpzVwl2+ja4xvH+AhdtOvCmFmS9k+Mq7lus3OdFc3AX9kC/Z9eu0SU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668589; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=gQSvqHg//qeoPe4KdAGz5J8taxb0QKsI0Kk8fdbmjSM=; b=CeaEMqSJfG1J92nzjYaBY3zOEqvdhRdJvWEE7WAAyHUA11F1/iHjueiluRxLjlippTrA1szqKBtyoAoDlrrxLgGHC+LyG6UHN30vlLQR7ZRQ3bcYna69Uwu/z/LXGPQWi1V5T89KIzWT/pGT+qHKwmXB71rdjDBifMBc8tUYeD4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668589632518.0395577722808; Wed, 1 Mar 2023 03:03:09 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBT-0004eQ-Sf; Wed, 01 Mar 2023 05:59:43 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBR-0004cQ-U8 for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:41 -0500 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKBP-0006MW-UE for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:41 -0500 Received: by mail-pj1-x102a.google.com with SMTP id q31-20020a17090a17a200b0023750b69614so12581757pja.5 for ; Wed, 01 Mar 2023 02:59:39 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668377; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=gQSvqHg//qeoPe4KdAGz5J8taxb0QKsI0Kk8fdbmjSM=; b=CRnhnVL+/hoI6PlW5KXbThjfUj/nrcGFrJT8bV1FAgEH7qk4+W0elWR+2pfbQAldL5 5Hf2ig177A9XzikdT7+TOua8ZDKK/PlmpK2tkRA31+ysnYzMKxVqVWuymwdltnkL/ZUd BPTgPS/3MGfkBgnq0vAuf3IJKYR/XLuo+W+lrkPTfojF24Lhnx5dIydYRSRfBwpbOuh1 1KUugAIw6/8h/2/MGLZGmbsVC06rBKHmkkbLsF+Xn6wGcrwbX9Nm1EjG5QPImpMMY170 ssiPdIHdIccJ7QL3mCKt50Cqbz4z6WovJKvNmxbsAsgP6Z3BeiYhGICLievw6HlaEzro 8sRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668377; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=gQSvqHg//qeoPe4KdAGz5J8taxb0QKsI0Kk8fdbmjSM=; b=R0AF1U65Wb0MkwSp5eZxqnnvcaMqHkQlUE4wRO7f2bBXIjpyVFZuzvbGOcD6XHm3dZ 5Jwdt+u7LuBH8aA9R1RCHO9sYlvl/45TAVz+Df+qfbmbkjKYC9qJggNSaknJFqYh373y +jwJUQ7sIxmnGyduwOrXdpXLdHSkTfI9Lp16sRdp5QiT+xgHsWc/pLPUwVe6uZAjsbpD jbRExFzdjhCYw1tWL0sofsg2FH8pPkyEtIakMY8LYujUAlp3N7k8fDb0tiAdGkR/luR5 g04R7ML2UTmNTWeO4ham8GUOJsV3xOtCSS2V5NEkqoV80+vBkcqNAoJaMYlnue+9i6Ii t+rg== X-Gm-Message-State: AO0yUKX7+S0cDtL7VJS005VzdaHDV5/cdg++eOGOjSPK+l07u5kvb3Lc K7yvvAetwiQriAWf9/fpNZnBZQ== X-Google-Smtp-Source: AK7set8KreRo0VBEPVaRg5vaIyufHBrkVV3ndESEZx/4govwxXWwSbioHs/wT9u7WUouFEWZZnDcfQ== X-Received: by 2002:a17:90b:38d0:b0:237:62c6:ab64 with SMTP id nn16-20020a17090b38d000b0023762c6ab64mr6870363pjb.38.1677668377552; Wed, 01 Mar 2023 02:59:37 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 11/12] cryptodev: Support query-stats QMP command Date: Wed, 1 Mar 2023 18:58:46 +0800 Message-Id: <20230301105847.253084-12-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102a; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x102a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668590587100003 Now we can use "query-stats" QMP command to query statistics of crypto devices. (Originally this was designed to show statistics by '{"execute": "query-cryptodev"}'. Daniel Berrang=C3=A9 suggested that querying configuration info by "query-cryptodev", and querying runtime performance info by "query-stats". This makes sense!) Example: ~# virsh qemu-monitor-command vm '{"execute": "query-stats", \ "arguments": {"target": "cryptodev"} }' | jq { "return": [ { "provider": "cryptodev", "stats": [ { "name": "asym-verify-bytes", "value": 7680 }, ... { "name": "asym-decrypt-ops", "value": 32 }, { "name": "asym-encrypt-ops", "value": 48 } ], "qom-path": "/objects/cryptodev0" # support asym only }, { "provider": "cryptodev", "stats": [ { "name": "asym-verify-bytes", "value": 0 }, ... { "name": "sym-decrypt-bytes", "value": 5376 }, ... ], "qom-path": "/objects/cryptodev1" # support asym/sym } ], "id": "libvirt-422" } Suggested-by: Daniel P. Berrang=C3=A9 Reviewed-by: Daniel P. Berrang=C3=A9 Signed-off-by: zhenwei pi --- backends/cryptodev.c | 155 +++++++++++++++++++++++++++++++++++++++++ qapi/stats.json | 10 ++- stats/stats-hmp-cmds.c | 5 ++ stats/stats-qmp-cmds.c | 2 + 4 files changed, 170 insertions(+), 2 deletions(-) diff --git a/backends/cryptodev.c b/backends/cryptodev.c index 7c10a2e1cb..94ca393cee 100644 --- a/backends/cryptodev.c +++ b/backends/cryptodev.c @@ -23,8 +23,10 @@ =20 #include "qemu/osdep.h" #include "sysemu/cryptodev.h" +#include "sysemu/stats.h" #include "qapi/error.h" #include "qapi/qapi-commands-cryptodev.h" +#include "qapi/qapi-types-stats.h" #include "qapi/visitor.h" #include "qemu/config-file.h" #include "qemu/error-report.h" @@ -32,6 +34,28 @@ #include "qom/object_interfaces.h" #include "hw/virtio/virtio-crypto.h" =20 +#define SYM_ENCRYPT_OPS_STR "sym-encrypt-ops" +#define SYM_DECRYPT_OPS_STR "sym-decrypt-ops" +#define SYM_ENCRYPT_BYTES_STR "sym-encrypt-bytes" +#define SYM_DECRYPT_BYTES_STR "sym-decrypt-bytes" + +#define ASYM_ENCRYPT_OPS_STR "asym-encrypt-ops" +#define ASYM_DECRYPT_OPS_STR "asym-decrypt-ops" +#define ASYM_SIGN_OPS_STR "asym-sign-ops" +#define ASYM_VERIFY_OPS_STR "asym-verify-ops" +#define ASYM_ENCRYPT_BYTES_STR "asym-encrypt-bytes" +#define ASYM_DECRYPT_BYTES_STR "asym-decrypt-bytes" +#define ASYM_SIGN_BYTES_STR "asym-sign-bytes" +#define ASYM_VERIFY_BYTES_STR "asym-verify-bytes" + +typedef struct StatsArgs { + union StatsResultsType { + StatsResultList **stats; + StatsSchemaList **schema; + } result; + strList *names; + Error **errp; +} StatsArgs; =20 static QTAILQ_HEAD(, CryptoDevBackendClient) crypto_clients; =20 @@ -435,6 +459,134 @@ static void cryptodev_backend_finalize(Object *obj) } } =20 +static StatsList *cryptodev_backend_stats_add(const char *name, int64_t *v= al, + StatsList *stats_list) +{ + Stats *stats =3D g_new0(Stats, 1); + + stats->name =3D g_strdup(name); + stats->value =3D g_new0(StatsValue, 1); + stats->value->type =3D QTYPE_QNUM; + stats->value->u.scalar =3D *val; + + QAPI_LIST_PREPEND(stats_list, stats); + return stats_list; +} + +static int cryptodev_backend_stats_query(Object *obj, void *data) +{ + StatsArgs *stats_args =3D data; + StatsResultList **stats_results =3D stats_args->result.stats; + StatsList *stats_list =3D NULL; + StatsResult *entry; + CryptoDevBackend *backend; + CryptodevBackendSymStat *sym_stat; + CryptodevBackendAsymStat *asym_stat; + + if (!object_dynamic_cast(obj, TYPE_CRYPTODEV_BACKEND)) { + return 0; + } + + backend =3D CRYPTODEV_BACKEND(obj); + sym_stat =3D backend->sym_stat; + if (sym_stat) { + stats_list =3D cryptodev_backend_stats_add(SYM_ENCRYPT_OPS_STR, + &sym_stat->encrypt_ops, stats_list); + stats_list =3D cryptodev_backend_stats_add(SYM_DECRYPT_OPS_STR, + &sym_stat->decrypt_ops, stats_list); + stats_list =3D cryptodev_backend_stats_add(SYM_ENCRYPT_BYTES_STR, + &sym_stat->encrypt_bytes, stats_list); + stats_list =3D cryptodev_backend_stats_add(SYM_DECRYPT_BYTES_STR, + &sym_stat->decrypt_bytes, stats_list); + } + + asym_stat =3D backend->asym_stat; + if (asym_stat) { + stats_list =3D cryptodev_backend_stats_add(ASYM_ENCRYPT_OPS_STR, + &asym_stat->encrypt_ops, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_DECRYPT_OPS_STR, + &asym_stat->decrypt_ops, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_SIGN_OPS_STR, + &asym_stat->sign_ops, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_VERIFY_OPS_STR, + &asym_stat->verify_ops, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_ENCRYPT_BYTES_STR, + &asym_stat->encrypt_bytes, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_DECRYPT_BYTES_STR, + &asym_stat->decrypt_bytes, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_SIGN_BYTES_STR, + &asym_stat->sign_bytes, stats_list); + stats_list =3D cryptodev_backend_stats_add(ASYM_VERIFY_BYTES_STR, + &asym_stat->verify_bytes, stats_list); + } + + entry =3D g_new0(StatsResult, 1); + entry->provider =3D STATS_PROVIDER_CRYPTODEV; + entry->qom_path =3D g_strdup(object_get_canonical_path(obj)); + entry->stats =3D stats_list; + QAPI_LIST_PREPEND(*stats_results, entry); + + return 0; +} + +static void cryptodev_backend_stats_cb(StatsResultList **result, + StatsTarget target, + strList *names, strList *targets, + Error **errp) +{ + switch (target) { + case STATS_TARGET_CRYPTODEV: + { + Object *objs =3D container_get(object_get_root(), "/objects"); + StatsArgs stats_args; + stats_args.result.stats =3D result; + stats_args.names =3D names; + stats_args.errp =3D errp; + + object_child_foreach(objs, cryptodev_backend_stats_query, &stats_a= rgs); + break; + } + default: + break; + } +} + +static StatsSchemaValueList *cryptodev_backend_schemas_add(const char *nam= e, + StatsSchemaValueList *list) +{ + StatsSchemaValueList *schema_entry =3D g_new0(StatsSchemaValueList, 1); + + schema_entry->value =3D g_new0(StatsSchemaValue, 1); + schema_entry->value->type =3D STATS_TYPE_CUMULATIVE; + schema_entry->value->name =3D g_strdup(name); + schema_entry->next =3D list; + + return schema_entry; +} + +static void cryptodev_backend_schemas_cb(StatsSchemaList **result, + Error **errp) +{ + StatsSchemaValueList *stats_list =3D NULL; + const char *sym_stats[] =3D { SYM_ENCRYPT_OPS_STR, SYM_DECRYPT_OPS_STR, + SYM_ENCRYPT_BYTES_STR, SYM_DECRYPT_BYTES_S= TR }; + const char *asym_stats[] =3D { ASYM_ENCRYPT_OPS_STR, ASYM_DECRYPT_OPS_= STR, + ASYM_SIGN_OPS_STR, ASYM_VERIFY_OPS_STR, + ASYM_ENCRYPT_BYTES_STR, ASYM_DECRYPT_BYTE= S_STR, + ASYM_SIGN_BYTES_STR, ASYM_VERIFY_BYTES_ST= R }; + + for (int i =3D 0; i < ARRAY_SIZE(sym_stats); i++) { + stats_list =3D cryptodev_backend_schemas_add(sym_stats[i], stats_l= ist); + } + + for (int i =3D 0; i < ARRAY_SIZE(asym_stats); i++) { + stats_list =3D cryptodev_backend_schemas_add(asym_stats[i], stats_= list); + } + + add_stats_schema(result, STATS_PROVIDER_CRYPTODEV, STATS_TARGET_CRYPTO= DEV, + stats_list); +} + static void cryptodev_backend_class_init(ObjectClass *oc, void *data) { @@ -456,6 +608,9 @@ cryptodev_backend_class_init(ObjectClass *oc, void *dat= a) cryptodev_backend_get_ops, cryptodev_backend_set_ops, NULL, NULL); + + add_stats_callbacks(STATS_PROVIDER_CRYPTODEV, cryptodev_backend_stats_= cb, + cryptodev_backend_schemas_cb); } =20 static const TypeInfo cryptodev_backend_info =3D { diff --git a/qapi/stats.json b/qapi/stats.json index 57db5b1c74..1f5d3c59ab 100644 --- a/qapi/stats.json +++ b/qapi/stats.json @@ -50,10 +50,14 @@ # # Enumeration of statistics providers. # +# @kvm: since 7.1 +# +# @cryptodev: since 8.0 +# # Since: 7.1 ## { 'enum': 'StatsProvider', - 'data': [ 'kvm' ] } + 'data': [ 'kvm', 'cryptodev' ] } =20 ## # @StatsTarget: @@ -65,10 +69,12 @@ # # @vcpu: statistics that apply to a single virtual CPU. # +# @cryptodev: statistics that apply to a crypto device. since 8.0 +# # Since: 7.1 ## { 'enum': 'StatsTarget', - 'data': [ 'vm', 'vcpu' ] } + 'data': [ 'vm', 'vcpu', 'cryptodev' ] } =20 ## # @StatsRequest: diff --git a/stats/stats-hmp-cmds.c b/stats/stats-hmp-cmds.c index 531e35d128..1f91bf8bd5 100644 --- a/stats/stats-hmp-cmds.c +++ b/stats/stats-hmp-cmds.c @@ -155,6 +155,8 @@ static StatsFilter *stats_filter(StatsTarget target, co= nst char *names, filter->u.vcpu.vcpus =3D vcpu_list; break; } + case STATS_TARGET_CRYPTODEV: + break; default: break; } @@ -226,6 +228,9 @@ void hmp_info_stats(Monitor *mon, const QDict *qdict) int cpu_index =3D monitor_get_cpu_index(mon); filter =3D stats_filter(target, names, cpu_index, provider); break; + case STATS_TARGET_CRYPTODEV: + filter =3D stats_filter(target, names, -1, provider); + break; default: abort(); } diff --git a/stats/stats-qmp-cmds.c b/stats/stats-qmp-cmds.c index bc973747fb..e214b964fd 100644 --- a/stats/stats-qmp-cmds.c +++ b/stats/stats-qmp-cmds.c @@ -64,6 +64,8 @@ static bool invoke_stats_cb(StatsCallbacks *entry, targets =3D filter->u.vcpu.vcpus; } break; + case STATS_TARGET_CRYPTODEV: + break; default: abort(); } --=20 2.34.1 From nobody Sun May 12 11:59:15 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=bytedance.com ARC-Seal: i=1; a=rsa-sha256; t=1677668435; cv=none; d=zohomail.com; s=zohoarc; b=L1wZzloA2Y0NJrCLA91sqOIuNCPeJjkxpUWVdlYfHAdCtkrDFpyLMf7263ufoXnf+p/fgVAE7pHuzqENvLEtGyfy6zBxo9kRtGPwsUGDKpYQoXjUfv4iy6S2YMsRfSFA1LfKa0wTwV1wz6CKpJYSR+Tx8VWkS7RqCujJiE+ao+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1677668435; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=CoSIyarAIU04vw264hmDOARNwoMR9ygoAxd2VOTLPP4=; b=iCe98uEvsqFNvchwEduTZj/nsyft+ptqIR5PRMVDeQmM/AvNWLkM1aE7amL4TdVFgNBBA57WO1EwrSozzt/gf8tubBrNLURrWp68+uXOERLeuEw8GNLR7Mi+xn7v/QeQrNcH9kOsndHKbj6EGhwLHeoi7jsb/t6d4wS8WSya+MM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1677668435560306.3556389322032; Wed, 1 Mar 2023 03:00:35 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pXKBV-0004fM-Oq; Wed, 01 Mar 2023 05:59:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pXKBT-0004dy-H1 for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:43 -0500 Received: from mail-pj1-x1032.google.com ([2607:f8b0:4864:20::1032]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pXKBR-0006Ny-UC for qemu-devel@nongnu.org; Wed, 01 Mar 2023 05:59:43 -0500 Received: by mail-pj1-x1032.google.com with SMTP id h11-20020a17090a2ecb00b00237c740335cso11558220pjs.3 for ; Wed, 01 Mar 2023 02:59:41 -0800 (PST) Received: from libai.bytedance.net ([61.213.176.5]) by smtp.gmail.com with ESMTPSA id mj9-20020a17090b368900b002342ccc8280sm7829149pjb.6.2023.03.01.02.59.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Mar 2023 02:59:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=bytedance.com; s=google; t=1677668380; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CoSIyarAIU04vw264hmDOARNwoMR9ygoAxd2VOTLPP4=; b=WP+ZuDEmde5nd0ro5VVwIDofIfmfbrSqEARgHTwAX5Sm3DzXUBwNrjClf+dsd1u+CS tOusQKn3IBKRW6v2kuubWK9kECBZEsHWZPUsUqxmhdcilzRI1JUnT6hZNGdd3Q0fG3Xe SW0yAPA2sxgvyjpLclKIcbq5zwoXibn0CyNcO3p7nKU7/o8+lFP5Spp72keRnd5+rlIG k17v519w5t+tWC2/5hQzMxokkN8xFXsQ6TefZV0LoK4dJNN4H9RfsFEO7aUeyhuE2xNh MPIecdKSHbyuNcn6ojg5eyyMWm7opvEcAEzpfDt0KqhuG0K3v0CB3kyvqBQD59sYPSFc Iy9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1677668380; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CoSIyarAIU04vw264hmDOARNwoMR9ygoAxd2VOTLPP4=; b=eVmVQCy7hrVFHTkNtfSQwMstthO8qiW09BEEN12wnA4bRmKVMFZ2iABjV8Eva2Yh5t kJkbihaglwq6RZ31rArkr7i1D9lpQfanKjAJmTnXzds4vL+6JdJtBU3cTQW5Ue2UacBg fQB/yo9AumxRkO3yPKXxvNThgohr+boZ916dpp1mLvzPytIS1wT2RaO9uVkGApwviVXs 1trjm/ljKNhXfMiohIKnjus5mjs6nCW6c4oijBjt+8mYJuvotsNmktUe0teVvXJR0rtU TRTP28gZeCo8MKiQ4vEGSrJKxVXCvrJNiQGBEp6YaF7h1UzZtY/ZH6xn9JgjYNmiuK2w gvcw== X-Gm-Message-State: AO0yUKXicnbkQIswhuMGWLCK4PVdkWtwuqXx+EIzFmUDl76mm7ElYqYn wQkBhmCQ49ibCvXpXi4Y+5gQxw== X-Google-Smtp-Source: AK7set/hJ8IkN/HIhtBDwq5GP3JGLjg+bk2+HFECCD8EQGfxnPR5otFM91uFp/3EIFWkPJvNvVXGWg== X-Received: by 2002:a17:90b:3912:b0:234:e3f:f53b with SMTP id ob18-20020a17090b391200b002340e3ff53bmr6938588pjb.21.1677668380656; Wed, 01 Mar 2023 02:59:40 -0800 (PST) From: zhenwei pi To: mst@redhat.com, arei.gonglei@huawei.com, berrange@redhat.com Cc: dgilbert@redhat.com, pbonzini@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org, zhenwei pi Subject: [PATCH v6 12/12] MAINTAINERS: add myself as the maintainer for cryptodev Date: Wed, 1 Mar 2023 18:58:47 +0800 Message-Id: <20230301105847.253084-13-pizhenwei@bytedance.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230301105847.253084-1-pizhenwei@bytedance.com> References: <20230301105847.253084-1-pizhenwei@bytedance.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1032; envelope-from=pizhenwei@bytedance.com; helo=mail-pj1-x1032.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @bytedance.com) X-ZM-MESSAGEID: 1677668438453100003 Content-Type: text/plain; charset="utf-8" I developed the akcipher service, QoS setting, QMP/HMP commands and statistics accounting for crypto device. Making myself as the maintainer for QEMU's cryptodev. Cc: Gonglei Signed-off-by: zhenwei pi --- MAINTAINERS | 1 + 1 file changed, 1 insertion(+) diff --git a/MAINTAINERS b/MAINTAINERS index 7651cb0ace..0bac2e8bcf 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -2867,6 +2867,7 @@ T: git https://gitlab.com/ehabkost/qemu.git machine-n= ext =20 Cryptodev Backends M: Gonglei +M: zhenwei pi S: Maintained F: include/sysemu/cryptodev*.h F: backends/cryptodev*.c --=20 2.34.1