From nobody Sat Jun 27 08:26:42 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781086303; cv=none; d=zohomail.com; s=zohoarc; b=jUV1DptLVgBw/vvt0EFb0t6Nk0pljRzMt2MdWJHarB+ZBSkvIwxzkH7jLyTF3E6GQmSgHErERybDnJ+oDEfTmXF7n0qOKw2ENd+Dtmn0HoogxCWM2qgBlHspZ6I0nkp+6r7CzXwizAA5tHA4vOxfy1UxIJbWhVBNpxsTsuspo/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781086303; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=2yQe8jFKNGhwF30/jRqb6yS5MUXJwqT1DKhcvbjgJxw=; b=Egiu+IMpTdQBIwEljS+Xjg1S59u+xK6ajPqfpkDdUhLAr2QjCHlx59Y3Yr1DVQH4+tXdGoQNY0BYGs0mpfau7r8VHSzHPooRpUpTmVEUhlrSB/lxLqpb6LEYBudRCou4KjS8qlsfcBmYBXB8cIaov638eaAQ0KKvse9hfViqYpk= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781086303070768.1541601875535; Wed, 10 Jun 2026 03:11:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXFtx-0006nl-J6; Wed, 10 Jun 2026 06:11:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXFtv-0006nW-UP for qemu-devel@nongnu.org; Wed, 10 Jun 2026 06:11:11 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXFtu-0003cg-GZ for qemu-devel@nongnu.org; Wed, 10 Jun 2026 06:11:11 -0400 Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-621-aPDU4EdsO2GWRGkuXqW6tA-1; Wed, 10 Jun 2026 06:11:08 -0400 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-45ef66cc579so2755169f8f.3 for ; Wed, 10 Jun 2026 03:11:08 -0700 (PDT) Received: from lleonard-thinkpadx1carbongen13.rmtit.csb ([176.206.19.176]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dc412sm73334514f8f.4.2026.06.10.03.11.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 03:11:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781086269; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=2yQe8jFKNGhwF30/jRqb6yS5MUXJwqT1DKhcvbjgJxw=; b=AMVaQrII628eVt5SlIBknigEV5eUmyoddPTFvCxpZKOamxRuq+6R7URemlBNEbtisKhk54 Za/Mry5E6FIQXVCciXeTnX7FugltYWmy91708GgJxmoPkjwjF/9Vg0BHp6zWOWFn2WQ95S Iq/MlvQcnLRXduPd8psEHHPtMW6yyEc= X-MC-Unique: aPDU4EdsO2GWRGkuXqW6tA-1 X-Mimecast-MFC-AGG-ID: aPDU4EdsO2GWRGkuXqW6tA_1781086267 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781086267; x=1781691067; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=2yQe8jFKNGhwF30/jRqb6yS5MUXJwqT1DKhcvbjgJxw=; b=jgfUV5WxUom4M2PF2RiHXpuJVpq1RX8T4L8RmNKwIipDXK+FgCiPfhY7KETPf3Fz1D BSgEbQHOaWgkxIQUjOqzd+uZxNTKNG/MP6BjHMM7lHBGl/hVXPzNCsMsH691ZnFoAljR UUcSXWw/Dem/ysImHEB/ZqED0YXZl9TkHTfENe+r+UiMfhGhcG/f/aphRwKK0l98BXvl Vs+lRvod4fib2Xlb4nQqH3PAJV2Xibv+5Ae3AiU3Wfj8XA0ihXp216d8BNL1W5dvCq+y wH28yJjrfcFq+uF5xmRdaQ5vvkD5gSor9qU9Yz0gB75eYWADiRvx1VdO6XH7ndsj5V6j qVzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781086267; x=1781691067; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=2yQe8jFKNGhwF30/jRqb6yS5MUXJwqT1DKhcvbjgJxw=; b=Gj5IUsCx5ArhjQJRkPq9N7kNsGSl7973ZKGWK2SLtInl34qnlG/flDWIkxVvaq4eP6 kpaCyJSHlffOUrsTq2dGIMtjRoB6gXpIiR3d5uEFL1UeMlWSXtbS0719z7cVY8/LSr2c eo5D+ZuoHt0h9ail6LqMIJnentfBgPt8XoYAZD7MXuSPmhevMAXQiwQG7jQKFYluvOpc flLZInITnsZBhzLA7t2aRThyumvGMwox2jVMl+PXw/GiswsaFxKjYpu8XhiM5WUfALlY 2OOspu3C0h0+L3mztS3k0vrX/rFbRfFDZM78CY54CRIUry8SdkIxaeKeSuFNlgSqcIgM TlNg== X-Gm-Message-State: AOJu0YyeYJOwowt/IMWPVPhV258TdXXImcAZC3QCzPCgjCLYB51inWHO HXHbKD2utIPYEnQUDO1/ISxBG1+XA2NZvKKA0mFflih6xRVLSjj7L6Qc6fxS5nNLTxNn6J8cyYN HJ3b4gHaOExzGH5gtXBXzHXlAUON21MmddG6swI3I4RYtdG9T5FrOuaUG X-Gm-Gg: Acq92OEns8SJNuLYJatjqsMoCwzksIdb8HIbmEgbdG1nT38qX8jglH+vNYaCycEGaa3 IncjpBQtwrGeFhpjvib1cMcK+vXti2a0yd758V1UYsG2pMrvtS96oy6Lt2OMG4S0F0A3aFuWkGx 00dkk9xzU/0w743hgIlyBX/h+k3rxBDFlEme2ze1BN4YuXFEWrGbqgYgh7RQ7FocDcMK+gw/SJS Lb5vk8MRoHZqyaVJO+CJn0PIgXfwU3SASDOdGjtutbB7neRSr8Zyh5C3qgymHDAv7JCfDOZ2zYl aHnfbKbtkkewYP4KU4KzSaJe+7EGkLuOYUQv9ri1agXyYw2NSZo+btxvWhU1C5gknLi1fbGN0SY 3BkHjKwgHeW3pgICiJ5Fg6GEOmRRsEhwh2OU27lNHJjSzQcwzPqa3z9i+K6n2LHzPp20DgqLR5s M9yq49qH1J1U+f7Ln+zNXmXCVYWhw= X-Received: by 2002:a05:6000:41d5:b0:460:3210:b6e9 with SMTP id ffacd0b85a97d-4603210b750mr37873316f8f.41.1781086267502; Wed, 10 Jun 2026 03:11:07 -0700 (PDT) X-Received: by 2002:a05:6000:41d5:b0:460:3210:b6e9 with SMTP id ffacd0b85a97d-4603210b750mr37873289f8f.41.1781086267155; Wed, 10 Jun 2026 03:11:07 -0700 (PDT) From: Luigi Leonardi Date: Wed, 10 Jun 2026 12:10:57 +0200 Subject: [PATCH v2 1/2] hw/i386/microvm: pack device tree MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260610-microvm_device_tree-v2-1-4fb44730c49f@redhat.com> References: <20260610-microvm_device_tree-v2-0-4fb44730c49f@redhat.com> In-Reply-To: <20260610-microvm_device_tree-v2-0-4fb44730c49f@redhat.com> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Paolo Bonzini , Richard Henderson , Gerd Hoffmann , Stefano Garzarella , Ani Sinha , Zhao Liu , Oliver Steffen , Luigi Leonardi X-Mailer: b4 0.14.3 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.129.124; envelope-from=leonardi@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development 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 @redhat.com) X-ZM-MESSAGEID: 1781086306039154100 After the device tree is generated, it can be packed, significantly reducing its size. This is particularly important with the upcoming support for the device tree via IGVM, which can have stricter memory constraints. Signed-off-by: Luigi Leonardi --- hw/i386/microvm-dt.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/i386/microvm-dt.c b/hw/i386/microvm-dt.c index 45fbb5bbd1..14de1312b7 100644 --- a/hw/i386/microvm-dt.c +++ b/hw/i386/microvm-dt.c @@ -43,6 +43,8 @@ =20 #include "microvm-dt.h" =20 +#include + static bool debug; =20 static void dt_add_microvm_irq(MicrovmMachineState *mms, @@ -326,6 +328,7 @@ void dt_setup_microvm(MicrovmMachineState *mms) X86MachineState *x86ms =3D X86_MACHINE(mms); MachineState *ms =3D MACHINE(mms); int size =3D 0; + int ret; =20 ms->fdt =3D create_device_tree(&size); =20 @@ -337,6 +340,12 @@ void dt_setup_microvm(MicrovmMachineState *mms) qemu_fdt_add_subnode(ms->fdt, "/chosen"); dt_setup_sys_bus(mms); =20 + ret =3D fdt_pack(ms->fdt); + /* Should only fail if we've built a corrupted tree */ + g_assert(ret =3D=3D 0); + + size =3D fdt_totalsize(ms->fdt); + /* add to fw_cfg */ if (debug) { fprintf(stderr, "%s: add etc/fdt to fw_cfg\n", __func__); @@ -349,7 +358,7 @@ void dt_setup_microvm(MicrovmMachineState *mms) fprintf(stderr, "%s: writing microvm.fdt failed\n", __func__); return; } - int ret =3D system("dtc -I dtb -O dts microvm.fdt"); + ret =3D system("dtc -I dtb -O dts microvm.fdt"); if (ret !=3D 0) { fprintf(stderr, "%s: oops, dtc not installed?\n", __func__); } --=20 2.54.0 From nobody Sat Jun 27 08:26:42 2026 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=quarantine dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1781086306; cv=none; d=zohomail.com; s=zohoarc; b=B2eBIqtBffq1IJO4GAmUzgETRwQRlF1eNCIJUv52FFQE6g8V78B32lchiyksMefY2gXqO/KqbDjyRyLHGCsrYPl8JYZaxmHN9DcrRoPGO0Wx3RnOktPECACEfsr0hZqQsY0oSlibzHZwWpauawU5S0dflT0IUpyM7K+FuU2CEq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781086306; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bvqoPdvz49D5UWPcRsxN9yjil/ct7bRZ2hX5ouIvsVc=; b=bSHI+9XpSN/45sRJBl0zMpPBg5UxkiL/5KXoIihc6zqcLD7KIjlgP/2Dawija3oDn5BksPbJ0yDotoE19d+hymd4enJWfGBVtvJ1W2J74RICJOgRAxiNs0d92d2VEHrn8l9o77YwAOan7pyZUJ3znriYks8SbkVIbqOs+6n5MEY= 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=quarantine dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1781086306773441.9091020792964; Wed, 10 Jun 2026 03:11:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXFtz-0006oj-Bm; Wed, 10 Jun 2026 06:11:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXFtx-0006o4-Qd for qemu-devel@nongnu.org; Wed, 10 Jun 2026 06:11:13 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXFtw-0003cn-9f for qemu-devel@nongnu.org; Wed, 10 Jun 2026 06:11:13 -0400 Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-516-kLqxdxT7P2i1tKdfoTr-Uw-1; Wed, 10 Jun 2026 06:11:10 -0400 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-490a767c7dcso52879455e9.2 for ; Wed, 10 Jun 2026 03:11:09 -0700 (PDT) Received: from lleonard-thinkpadx1carbongen13.rmtit.csb ([176.206.19.176]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dc412sm73334514f8f.4.2026.06.10.03.11.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 03:11:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1781086271; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bvqoPdvz49D5UWPcRsxN9yjil/ct7bRZ2hX5ouIvsVc=; b=Fm1hm2eP+sO5ClORbmgULDnD8vmfgohxRs/xI70yTOi25L8gAuKkQGYxK1M3Z5aHFfsT8D V8fq3XrnBuxyc1V/Gds4o5ew6zaOBlGOE/cKwYWDtz/SUuGxZkh9AFwLk+wll+47five+0 YkJaV3gRB2IEG7QxeDPnTzbnIYtS7H4= X-MC-Unique: kLqxdxT7P2i1tKdfoTr-Uw-1 X-Mimecast-MFC-AGG-ID: kLqxdxT7P2i1tKdfoTr-Uw_1781086269 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1781086269; x=1781691069; darn=nongnu.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=bvqoPdvz49D5UWPcRsxN9yjil/ct7bRZ2hX5ouIvsVc=; b=p7thIh//R/7kLnjXFXYr+5s2MFp8WhzI/jROBpTx48UEZnN6w6PZmPgcMNeRfs86De yK2i2ayLYZEgbufR4WUrfhqRAmZTviHgfQmGQVFV0gchb5oxy36ErMR44UUjU9K6tdNj qip/BNM316cpUXivnuf09Dm+Aw6GRy8hhgSx5ZAUK4SthYAwW0M9AcdNhaYoG/DvgAIY m6W9GidTn++2Nic6csTyQxwGpN4p0jpQI1RT8qVRcvGFQkio5IpXF+hA6UedRgBw76JZ 5M3wRgIDdU6zffJwRaDChD6n5o0O4KVWsU0VnBu9EspbQo22hvHwr0rl7PiJqO0y0mgr mk0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781086269; x=1781691069; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bvqoPdvz49D5UWPcRsxN9yjil/ct7bRZ2hX5ouIvsVc=; b=DaP3/VqwfvaWMDictByuK1I9GAUcvDalcBsPpGgk0/sxCZgx8Gt7l0lTT9OT3xy/Un LRAdD4GtDVB1LGkXkYCtrVRMiqgO0iNsasUtrbjO82TpPqE4xj4uqxS4He++/ZYu2/wm dHgOxTBu3mzf8xCzUIu6ZRU8zpM5Pje/14tR1MBolRSJI3yjN7tGS6whiCiTRiGedyC1 Yxz6miAflx2AGuTOEV85ba8jkoFnr+0N1/elZCl2CzkAMF1tEQJBfqBYogCC5qll9UKR Bh8M1w9Updlzv0CRWNVTCOslBJLfUzaQ+/kIX2ZCrWaftQOeB4A/Obmwzx7jb8t/piYg 9QIQ== X-Gm-Message-State: AOJu0YwzgonZQDelEC3bQYAaZYuYCtRwzeun/TwnFaCPmp0rqmM60Bz4 qupB8B0PZygOZ1MQjDsVZ4uPt0vq8xXDY2mCZGjyVxI1JwzXr4qJvpxDaLTi5hnTCbthW4S+mVA Gbrc8gqsMnMq6kJYaI/0vPUZnc0Cb8V/o/HrMW5/8oWC6+rPim2k1bDvy X-Gm-Gg: Acq92OFagkj52fJVbO5d1N/lgQt1UrlYI+RrZfNlg3Nv2BT+mBTxUSpbddRgwm9NDij 8KW4P/beN0X34oEmzQJR1liO+Hc2w5vXWnKfdcDDZO7YK0obyCbEJSQkbKS0sAaP1wgBHK2rEDQ xgHe2S9DVdPtPl7HsAuFiWYyI/P6tXcA1mm4WawOlL2LyioBCXqojZ77YUzqXWa1Q2q5DRQOrSP C/1QXJtptMXkFE/t5JbVMfQ4Sfe+xjnwR9/CdB865I6cabdVsEF3BoSZmmWPzR44w2CIFzEq/0O ZSQDtbjfvg2te4Hcv26AlkPDIahVgImcmxKTL9d7pNOGZJOgSwGxbHjtgcQpkNR/7K2+rU59URw QqaLe6prPSJFSPdpXLxCBZVrOaX88lGe94iwqdiIzZ0c8umI2edc7hP14QVVZo+7AsTSdQBUTRq amW/avvdc6e5W7764J3K506s7g27E= X-Received: by 2002:a05:600c:314b:b0:490:bfae:55cb with SMTP id 5b1f17b1804b1-490c25f5df4mr363677485e9.21.1781086268806; Wed, 10 Jun 2026 03:11:08 -0700 (PDT) X-Received: by 2002:a05:600c:314b:b0:490:bfae:55cb with SMTP id 5b1f17b1804b1-490c25f5df4mr363677135e9.21.1781086268428; Wed, 10 Jun 2026 03:11:08 -0700 (PDT) From: Luigi Leonardi Date: Wed, 10 Jun 2026 12:10:58 +0200 Subject: [PATCH v2 2/2] igvm: add device tree parameter support MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260610-microvm_device_tree-v2-2-4fb44730c49f@redhat.com> References: <20260610-microvm_device_tree-v2-0-4fb44730c49f@redhat.com> In-Reply-To: <20260610-microvm_device_tree-v2-0-4fb44730c49f@redhat.com> To: qemu-devel@nongnu.org Cc: "Michael S. Tsirkin" , Paolo Bonzini , Richard Henderson , Gerd Hoffmann , Stefano Garzarella , Ani Sinha , Zhao Liu , Oliver Steffen , Luigi Leonardi X-Mailer: b4 0.14.3 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=lists1p.gnu.org; Received-SPF: pass client-ip=170.10.133.124; envelope-from=leonardi@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -24 X-Spam_score: -2.5 X-Spam_bar: -- X-Spam_report: (-2.5 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.445, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-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: qemu development 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 @redhat.com) X-ZM-MESSAGEID: 1781086309780154100 Coconut SVSM, with the upcoming device tree support[1], will use the IGVM device tree parameter to discover virtio-mmio and ISA serial devices instead of relying on the fw_cfg interface, which is QEMU-specific. Because this code is architecture-independent, it is implemented in the generic IGVM backend. [1] https://github.com/coconut-svsm/svsm/pull/1006 Signed-off-by: Luigi Leonardi --- Error handling on `qigvm_find_param_entry` will change when [2] will be merged. Here i am already using the new approach. [2] https://lore.kernel.org/qemu-devel/20260610-igvm_error-v1-1-59d133a69f2= f@redhat.com --- backends/igvm.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/backends/igvm.c b/backends/igvm.c index c347d0c17e..de27db0c9f 100644 --- a/backends/igvm.c +++ b/backends/igvm.c @@ -25,6 +25,7 @@ =20 #include #include +#include =20 =20 /* @@ -100,6 +101,8 @@ static int qigvm_directive_snp_id_block(QIgvm *ctx, con= st uint8_t *header_data, static int qigvm_initialization_guest_policy(QIgvm *ctx, const uint8_t *header_data, Error **errp); +static int qigvm_directive_device_tree(QIgvm *ctx, const uint8_t *header_d= ata, + Error **errp); =20 struct QIGVMHandler { uint32_t type; @@ -130,6 +133,8 @@ static struct QIGVMHandler handlers[] =3D { qigvm_initialization_guest_policy }, { IGVM_VHT_MADT, IGVM_HEADER_SECTION_DIRECTIVE, qigvm_directive_madt }, + { IGVM_VHT_DEVICE_TREE, IGVM_HEADER_SECTION_DIRECTIVE, + qigvm_directive_device_tree }, }; =20 static int qigvm_handler(QIgvm *ctx, uint32_t type, Error **errp) @@ -752,6 +757,41 @@ static int qigvm_directive_snp_id_block(QIgvm *ctx, co= nst uint8_t *header_data, return 0; } =20 +/* + * Process device tree IGVM parameter + */ +static int qigvm_directive_device_tree(QIgvm *ctx, const uint8_t *header_d= ata, + Error **errp) +{ + const IGVM_VHS_PARAMETER *param =3D (const IGVM_VHS_PARAMETER *)header= _data; + QIgvmParameterData *param_entry; + uint32_t fdt_size; + + param_entry =3D qigvm_find_param_entry(ctx, param->parameter_area_inde= x); + if (param_entry =3D=3D NULL) { + error_setg(errp, "IGVM: parameter area index %u not found", + param->parameter_area_index); + return -1; + } + + if (ctx->machine_state->fdt =3D=3D NULL) { + error_setg(errp, "IGVM: device tree not available"); + return -1; + } + + fdt_size =3D fdt_totalsize(ctx->machine_state->fdt); + if (fdt_size > param_entry->size) { + error_setg(errp, + "IGVM: device tree size exceeds parameter area" + " defined in IGVM file"); + return -1; + } + + memcpy(param_entry->data, ctx->machine_state->fdt, fdt_size); + + return 0; +} + static int qigvm_initialization_guest_policy(QIgvm *ctx, const uint8_t *header_data, Error *= *errp) { --=20 2.54.0