From nobody Tue Sep 9 19:05:56 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=cyberus-technology.de Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1747383320332795.7544566152466; Fri, 16 May 2025 01:15:20 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 52E981488; Fri, 16 May 2025 04:15:19 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 5DA2B1516; Fri, 16 May 2025 04:14:51 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 68FB513D0; Fri, 16 May 2025 03:57:54 -0400 (EDT) Received: from FR6P281CU001.outbound.protection.outlook.com (mail-germanywestcentralazon11020128.outbound.protection.outlook.com [52.101.171.128]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 83B221367 for ; Fri, 16 May 2025 03:57:52 -0400 (EDT) Received: from BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:46::5) by FR2P281MB3406.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:63::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8722.33; Fri, 16 May 2025 07:57:38 +0000 Received: from BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM ([fe80::7272:f32d:eb8d:e401]) by BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM ([fe80::7272:f32d:eb8d:e401%3]) with mapi id 15.20.8722.031; Fri, 16 May 2025 07:57:37 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, FORGED_SPF_HELO,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_PASS autolearn=no autolearn_force=no version=3.4.4 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nPlJeBVNa8xltYLu6rY51QD5LwCsHOPqUy39DPpmsdYDAzZLuF/uTEtgQSVo702oLpSliq4yvL3tmmd/XwI+ehyeZBMBRAfhYHB0Y9JePqTsTXfS589j1uWULySeiXMUa2L4OIFUAFlvARiAlHGQziXqrDEZGis2dZdjAu8ZQ0l6BWEdkzmNz2Zn7xZPlCmmTNjjObD/Tx69cAwKHREYXX5RGeFXiHNLkgl0iwTEhnTzsi2dqkFQKadvRSs3/mzI3vla8YRDN/0nVP7m9Cb1BGGWfM0cvTjthiA3DB6G7yDCW9qrNRdKD3ry8a/Ci7tUgQqAfs/n4T7p59lr4Tvudg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=IRMtpA5X8uDTk9h9JbdyGaqTmdDNKKtZ7m4D6FPut3A=; b=d+9FLDtMfGlBT44PzJuBK/+lqaA3x0D3AvSEY9XqGTyxnZb8S6x28Su+AFMoOVnY5+AAceLegaIhKqlJ+vVeQFZ+aKYmHDTcnSwWxYCV8Rw0oLZf4//pDvSGa/A1qeP4iX/K59zMvPNlnDpAa7NvdN72MlN7Ex7bUfL5MnNuHBzHHr+yVd3ZGOPlEnjzcSwxDRsZ2umlZBVi4NmZyCyWR/oTn0gl8KYjdV7QKxjW2gTu2GWnB7tPMAXLgfbWHg6OuleF66YsDEbXfBOaEXKepJJh2GZMeBvYFsvXVtjm3f4PzfTJfM74r49J8Z+F7JU5O8ZjXRiCHuvXdBeqp6p5Rg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=cyberus-technology.de; dmarc=pass action=none header.from=cyberus-technology.de; dkim=pass header.d=cyberus-technology.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cyberus-technology.de; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IRMtpA5X8uDTk9h9JbdyGaqTmdDNKKtZ7m4D6FPut3A=; b=gv62zei8t/mZA+oqMMrdQ69nhArGtsYZV+iZqn8L1owvalvIltaKi/HQRKWiO/nE2xWf67SskRt/Sftfm+WparaMMS4D53AOnkDyT9eoGNpv/V5faQYxr7yNZ4jkHStmpm3K5D06/l+SRY6hm7fvvLerkdUJhKaDrgYrWG4GwBFGbG9fJyPVLM+ZvfgwvFCpv0t/zPrFT+tlNFlGnJ7LzYZkUdPh0KHdbqlMeaB0Fo75OzluuljPYj9Ggs9QumeaKSQqYbhg9oWJPU5CZH5xQu1fKydj3rfALiFPtCHveuUsaccAjnam6Noc9QmrWKRr/RUuWgk6IiwS4eCOtfOGjA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=cyberus-technology.de; From: Stefan Kober To: devel@lists.libvirt.org Subject: [PATCH] ch: Support RNG device Date: Fri, 16 May 2025 09:57:30 +0200 Message-ID: <20250516075730.501021-1-stefan.kober@cyberus-technology.de> X-Mailer: git-send-email 2.49.0 X-ClientProxiedBy: FR5P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:f1::12) To BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM (2603:10a6:b10:46::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BEZP281MB1973:EE_|FR2P281MB3406:EE_ X-MS-Office365-Filtering-Correlation-Id: 4e980c8a-dfcc-4ec2-026d-08dd944f52f7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|366016|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?GmBZ6/VuqK4lGChSPxxKypkeqyPUztEUNNMr5mmJy6lRvBg5XryFF60evpZ6?= =?us-ascii?Q?cOgLlWeiStsUVjUeYwt+uPYaMmE0lJQkAH+vRksf+g6AaXUyphXK27fCiBwj?= =?us-ascii?Q?T2HtV0pasxyVJR+7cqXPjawpHRG4sVC1CPVqFh6z6nfX/F+yOb4e2CZ5ZUXN?= =?us-ascii?Q?BQAkrKEgiKfo532nZeNY9gqLuWerCXG5CHjzu15ZzlSpzUE1+vIW/bto1CbL?= =?us-ascii?Q?5skokFYN5v3tlnOzrXLPpzgxsUJaKS9JzOHSXBR3aDT1xoYSz1vTQthosd4n?= =?us-ascii?Q?XzU1SpOH1+MOmhdIKEifVX+NOjZIjRCbIHm6GYAAIBBElQesxgNtgbP2Erxq?= =?us-ascii?Q?pgoSgXLls8MGe31ZONhrOcDPV3xxNV8nOVgoQz4abJ1PbSeMxX40tPbOEkYN?= =?us-ascii?Q?VyDEyfMnUSCoUTz93F/xV9xEddI61zYV0DntPVQbw82r9UewmA+wzE2sX5E8?= =?us-ascii?Q?L/s2qHtvHVvybRzr37LbpCZJV1rpGh9QGoQ05S+ZVtMJoSLElSxq2trzZYy6?= =?us-ascii?Q?aPQ32Eop/+N/+2V4GHhKkHCnhOyTROIjLtqGQxtwKAg1j9d7Wc7Iv/NQgLu2?= =?us-ascii?Q?xPSbgIbqcq1hB1KE7/T7GDXLIvRwbzmWXapCvFsy7Rs41D0pHiW0ix8OrXMX?= =?us-ascii?Q?25bndsawzJta7/ozisxpTqUB5mjR/66YMRy+oANgmxJCDztbita8wBs+Herp?= =?us-ascii?Q?gf9dNKqigh6Wm9Ap8FFpWGPYtPx0qZNMSmgglddzYYjy7Cy8Li7Fy+qHovbl?= =?us-ascii?Q?KUA01jWmGOMR7iNrZdluOIIUAwfEej9D64z4v7iepLxOt1kIFS8WU22ased1?= =?us-ascii?Q?qchzjTnyXLMvC83vumPbV8Rq8GZo5kHKMIKVq1uNc2wMIPDnrSm1CLljNBeI?= =?us-ascii?Q?dM2f4hjKR5kvxdbiVtz/ho/oRI8F0cVXVa2kzAWqmoma2eoveh5pjXjkX9Bb?= =?us-ascii?Q?4aEbmFwg2YN4g0kyBDkR3EHPUefqY8x01iseRWSNp/6P9nN9DQfxtvSNKFVg?= =?us-ascii?Q?XTk+WVN+bLWFHpjoc0UbvAwnRjP9hYatPPsWESJ8QSXqG8ua5nVJYWIySo2Y?= =?us-ascii?Q?LO7tKcW13yJkrWt6DZomZjP3GKbkqk6zix4bPxTgox8ZkhbGZo6gXGl77R00?= =?us-ascii?Q?bAhrVBURtncBGSFswAGzPmz5kj1oTBPxgTX5Ivnf5umFeB9RFdAechyK/pyj?= =?us-ascii?Q?BOLDfv+lwPtJNfFuMDgY1a0uw0MW8+WHbhl2/eQIb19tRkL1O8nPKQHUTsHW?= =?us-ascii?Q?5idrH34ZsPmfAWoM6+RkFEXMUmH/Mq6YrUyQgTChy/z868aFMzJst2DX2k10?= =?us-ascii?Q?PtRLd75T2KsHgNhTckyoBm+3gDr5YNic8PXmCytgQ/rnL1bRozWy/VCrJkOk?= =?us-ascii?Q?h4kmM722oyri6mrtLxdmNg8Ij9ss8M1r+soAsidAWPMDp1gezByiIldjCQ+c?= =?us-ascii?Q?pUGJRCACWqE=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(366016)(1800799024)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WL8Ykcnzc4OSjpUIxROHdXHf0FYO4hDkzw8OuWZ5rCRaaHb4svE08zC5Edzn?= =?us-ascii?Q?/9OEcoZTrQSaZAbhai8yZAaRQ1BrQb8bxMrjnEzCIjF/XMp5LZ6uIfVDIbSA?= =?us-ascii?Q?N+g9IrJnlqdvAY9MH7rObP+8imexisUTzAIMeq++fzdPqpx4QUxi5xTdBhay?= =?us-ascii?Q?6Is2ts1FfCiAW83F4lqtk5yz7kqMfa3H7fijJBRHyXkry2pAzuUlITupP0xJ?= =?us-ascii?Q?abIrJMdbX/MAptGmWph+UcCfTnYOh/Dw/H5ws1PXL1X9rjGoMsnJM8DZjRdX?= =?us-ascii?Q?DyRDZXbIvvD+gMwbiN5LHAXybz6uu1wCgNhxmHXXgX71VWg2m08njflbGAcu?= =?us-ascii?Q?B7VOljRctJ2vTc7CMU5d0J3m/FSS6pU/60Yhd/TBhomV3jfG50rCL+OZt8zx?= =?us-ascii?Q?8VdKMvGgawOApSwQHSHZKS5Hbmp7ZQPeDuHJeSK5PZYA1aEuMb9rZ4r92CCe?= =?us-ascii?Q?xQE6zzsCvQror6OUPLSmRu97LTzzDgB91yyaWrg4MdrNyzGRiFuuPx9f9XNF?= =?us-ascii?Q?62sMb79UFW/JBQ+jBBTdtov/V3HkzG26jc7nQMaueiQ/56Ne3+WEhye6G6gd?= =?us-ascii?Q?8c2uwG6ER7D4yJiXODLFW6G7s3PyFpwmA9KQAxNwpRkl+5fi5V+Zs2vwiYOF?= =?us-ascii?Q?gCWQaFUYDhOi6GffRlFYUrkuydwWNXrJ01o3vidJtTh/H9TcndJ/HfrbPjOG?= =?us-ascii?Q?iK+kUtIlzSayrT3f1FShMEGFGEn4GI1hh+AffSzy32yQzLCEiley5dAMrjMs?= =?us-ascii?Q?J44MikuEZxc7FpmIAobJxADplKdIcWwEZBYc3xVdbt5plz4j/y7QQv9gtAxS?= =?us-ascii?Q?rQpmxB7deD4mYRIng9SSVlfE+8a21bMIID0GD/xZJWfyzdXwUUb3myEGUDsV?= =?us-ascii?Q?UH667TLqAknsTWTYzYTLhZVkO4YM4gJlt7lP5tsgIrdV7PhFPWHwNU58/POK?= =?us-ascii?Q?ybJ2KiMX7yrxR8URBkcgB+HsakXc9meFEnssqagwHNBrJbqN9wIfe9eV1kSL?= =?us-ascii?Q?imMzv633/Gen59D/lYvCsSVVgvLbox+kvs9g3jOSCuzCT1OsQhIeUgzrlCjI?= =?us-ascii?Q?9o3lqX3spzQRNIcxkxgKfrdqPtsh0bdo1xd0Ye7FgHpso2eKbjKgCBUt2JeM?= =?us-ascii?Q?ctwSFiQnBTVrxhHFag6tR7RuMKP7aRqE+j0IlZ/7D0DS1bDhY79AAeGe2Una?= =?us-ascii?Q?Hl+YeYPKjVhyvKDBtNbBmVDMLyKCTtjXNk8H/tgxhWhX4UG2cxqZX2foDhvz?= =?us-ascii?Q?jruaF1cyuf/LXKGPOnGsmtLcFb2MUR/TuMC6n8jaJocUBQVQRYe3WiRcd+d8?= =?us-ascii?Q?Cr8aRT1e2YF5g8MolthXIEfU3hn7CBIzL7WSot9c9eUFuXG+DudwLpesDD3+?= =?us-ascii?Q?MQjtfsxRWeugLRrnbc4yavDl/BBDOeHU2/8ip7Hcu3PjSvQG+9BUeNFnvXMI?= =?us-ascii?Q?pC7dQ5VGbhzZtDto3AF8CKK5Md4iKjo67vof3xJScN7QM3TJj9XDlFvsboSN?= =?us-ascii?Q?c0u7lfGcWrTtgpIyp+whfXbJZAkR1Y/cjx4txLcKOGCNpbNc7WnYGt141yXg?= =?us-ascii?Q?oXRrDgMQ31wOULqb7XO2HxwE+CaMb1Ca2Vivd0WKgWm3SVq2rZzE6+iNtfiO?= =?us-ascii?Q?8warEEqE5/h+hYvquJe7zUrwRoAwI+sZWfzT1T//G+VTvThh8tl8U1cp9ITW?= =?us-ascii?Q?u97M5TTJU8DxcUNsqHJ3qGLdxVY=3D?= X-OriginatorOrg: cyberus-technology.de X-MS-Exchange-CrossTenant-Network-Message-Id: 4e980c8a-dfcc-4ec2-026d-08dd944f52f7 X-MS-Exchange-CrossTenant-AuthSource: BEZP281MB1973.DEUP281.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2025 07:57:37.7972 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: f4e0f4e0-9d68-4bd6-a95b-0cba36dbac2e X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Q0EV9LCi2B+B/BAacj+EHPtxzEYPgjlwLfFFbVeI1QRhL0ENDePvongkVjWIdtSdtrqHX/+xwDiejkCE2FZPLf+xVrNKB8AXXgB0rDcYmXWLih3NIeU7uRcTSqgRWoJe X-MS-Exchange-Transport-CrossTenantHeadersStamped: FR2P281MB3406 Content-Transfer-Encoding: quoted-printable X-MailFrom: stefan.kober@cyberus-technology.de X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0 Message-ID-Hash: YXZYSF4VTGV5FZLP4DLCEYYS2VZF7LYK X-Message-ID-Hash: YXZYSF4VTGV5FZLP4DLCEYYS2VZF7LYK X-Mailman-Approved-At: Fri, 16 May 2025 08:14:47 -0400 CC: Stefan Kober X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (Computed bodyhash is different from the expected one) X-ZM-MESSAGEID: 1747383321771116600 Content-Type: text/plain; charset="utf-8" Cloud Hypervisor supports virtio-rng devices and the configuration of the randomness source (e.g. /dev/random or /dev/urandom). This commit adds support for configuring the RNG device via libvirt for the ch driver. Signed-off-by: Stefan Kober Reviewed-by: Michal Privoznik --- src/ch/ch_domain.c | 8 +++++++- src/ch/ch_monitor.c | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/src/ch/ch_domain.c b/src/ch/ch_domain.c index c0c9acd85b..7231fdc49f 100644 --- a/src/ch/ch_domain.c +++ b/src/ch/ch_domain.c @@ -163,6 +163,7 @@ chValidateDomainDeviceDef(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_CONTROLLER: case VIR_DOMAIN_DEVICE_CHR: case VIR_DOMAIN_DEVICE_HOSTDEV: + case VIR_DOMAIN_DEVICE_RNG: break; =20 case VIR_DOMAIN_DEVICE_LEASE: @@ -177,7 +178,6 @@ chValidateDomainDeviceDef(const virDomainDeviceDef *dev, case VIR_DOMAIN_DEVICE_SMARTCARD: case VIR_DOMAIN_DEVICE_MEMBALLOON: case VIR_DOMAIN_DEVICE_NVRAM: - case VIR_DOMAIN_DEVICE_RNG: case VIR_DOMAIN_DEVICE_SHMEM: case VIR_DOMAIN_DEVICE_TPM: case VIR_DOMAIN_DEVICE_PANIC: @@ -218,6 +218,12 @@ chValidateDomainDeviceDef(const virDomainDeviceDef *de= v, return -1; } =20 + if (def->nrngs > 1) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Only a single RNG device can be configured for t= his domain")); + return -1; + } + if (def->nserials > 1) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("Only a single serial can be configured for this = domain")); diff --git a/src/ch/ch_monitor.c b/src/ch/ch_monitor.c index 5a490b75f6..3d3b4cb87d 100644 --- a/src/ch/ch_monitor.c +++ b/src/ch/ch_monitor.c @@ -302,6 +302,44 @@ virCHMonitorBuildDisksJson(virJSONValue *content, virD= omainDef *vmdef) return 0; } =20 +static int +virCHMonitorBuildRngJson(virJSONValue *content, virDomainDef *vmdef) +{ + g_autoptr(virJSONValue) rng =3D virJSONValueNewObject(); + + if (vmdef->nrngs =3D=3D 0) { + return 0; + } + + if (vmdef->rngs[0]->model !=3D VIR_DOMAIN_RNG_MODEL_VIRTIO) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only virtio model is supported for RNG devices")= ); + return -1; + } + + switch (vmdef->rngs[0]->backend) { + case VIR_DOMAIN_RNG_BACKEND_RANDOM: + if (virJSONValueObjectAppendString(rng, "src", vmdef->rngs[0]->sou= rce.file) < 0) + return -1; + + if (virJSONValueObjectAppend(content, "rng", &rng) < 0) + return -1; + + break; + + case VIR_DOMAIN_RNG_BACKEND_EGD: + case VIR_DOMAIN_RNG_BACKEND_BUILTIN: + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("Only RANDOM backend is supported for RNG devices= ")); + return -1; + + case VIR_DOMAIN_RNG_BACKEND_LAST: + break; + } + + return 0; +} + /** * virCHMonitorBuildNetJson: * @net: pointer to a guest network definition @@ -501,6 +539,9 @@ virCHMonitorBuildVMJson(virCHDriver *driver, virDomainD= ef *vmdef, if (virCHMonitorBuildDisksJson(content, vmdef) < 0) return -1; =20 + if (virCHMonitorBuildRngJson(content, vmdef) < 0) + return -1; + if (virCHMonitorBuildDevicesJson(content, vmdef) < 0) return -1; =20 --=20 2.49.0