From nobody Mon Sep 8 17:03:36 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=nutanix.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752671942732346.8813983353606; Wed, 16 Jul 2025 06:19:02 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 9EB4113BC; Wed, 16 Jul 2025 09:19:01 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 2C2FE14D0; Wed, 16 Jul 2025 09:18:09 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 31584E5B; Wed, 16 Jul 2025 09:18:04 -0400 (EDT) Received: from mx0b-002c1b01.pphosted.com (mx0b-002c1b01.pphosted.com [148.163.155.12]) (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 8B173E3E for ; Wed, 16 Jul 2025 09:18:03 -0400 (EDT) Received: from pps.filterd (m0127843.ppops.net [127.0.0.1]) by mx0b-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56GD29Wg030759 for ; Wed, 16 Jul 2025 06:18:03 -0700 Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2101.outbound.protection.outlook.com [40.107.100.101]) by mx0b-002c1b01.pphosted.com (PPS) with ESMTPS id 47untj9p6n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 16 Jul 2025 06:18:02 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by DM6PR02MB6860.namprd02.prod.outlook.com (2603:10b6:5:21a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.32; Wed, 16 Jul 2025 13:18:01 +0000 Received: from PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88]) by PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88%5]) with mapi id 15.20.8922.035; Wed, 16 Jul 2025 13:18:00 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=80mKs+bD+qoIwYikZrpe16pybyjKHVEvag9wYp0BR dM=; b=FbkyB6nYbnsCj3Uj1ktco2w9SsckoesxvrtfCGRE4wf8tDIOsnZXisgqB GApa1cYgypVbiAXrmcslQcSyq5NOJxys0RdyAnJW7+YBhaQ8UA7zJkxB0fei/Dbp tUqn3o9VgNNumL6k1XZp9sETXBr/AnimClJfmokV4XqrW568uWc0umOqfLCeNNSO CE/xOjumwUzdmvDsWn1KJlsVuJC2VE1cFa56ELe8jSUEI4gWsOYmCwT9TuK5uBt2 MKzBKQPiu5t2VooQNccGMvUTUxvP3sivj/kQSSOb3emChxMKjiPB1K4rdyG7phV5 qpEYqK97PIW7J4VWo6ZjCz8NLVt1Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kLHzQdEY56z1cS1GDceYMK7Vd+W5wrbGNG7xuH3RPfOjYVLIAWRcCw4/XyTIXb5MeP70pdRIxdh00vZQa89xBvFhVFaGWZRG+NAFPcsEZHsMGrIqIXU3pVG+2pQeh5WVUIYAT0Sm09y0Ay6VnLdQL3iMbUORp+15g4HSHMaXq9+03viUy2/jAZDn9CqqdctXfwm60LivGW7DM+HgncnbREGcvirvn175xSDxKpm8j/CZpWUx+hV+9EosIdp4fl9NsRL+sgmuey3k1lzjPdW1OzcP58TMYT0Uoh73TVGaqORB2SKP+HKuF4z3SSndCfo1zsFciu5rlBWqhKuhcEG8fw== 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=80mKs+bD+qoIwYikZrpe16pybyjKHVEvag9wYp0BRdM=; b=ZS4ZfDwrfFGiqb8HAFw2XbYb6k034sevdiETV1WcdpsChGOHWeHqadCpQ0+3jVkuUfU/2gDAdv9UN5+hwptbvUR4US+EWGg3ToG9hqfsdMbbSI6fXf/tplyHFeiuzAPK2FK+p2c/CB+iSvlzMQ3qsy0xqAuebuMErW7jhj/K4KN1eKyom3dQkGEtNTvD7n03lOubRDI/SymjPJTH6lIOV8/QiW95hLIUOIExbUgb02UCIkxTUpYo/B/KH6Ft5Xv/OdhTKGec+5mqYx8S6hTNoNK2UPHEO3snvJ8El4wcRKYABK6whTzKFdxMfJKVfQWm8alaXdsEZWGws0hRG0lIJA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80mKs+bD+qoIwYikZrpe16pybyjKHVEvag9wYp0BRdM=; b=sDYLi9iOty1GMuyU+9ccWZAPIgAr6zuxqs28YVNflzHBTyoe2O1VHeTRB3rSLp4WgeebbqtX3upjOKM90M3W0EhcAZBXhClnUsFbnorXhjB8hH28DCxr3xGZtCrPuosheONhckwrxuvKmGr7yexMLEAdzq/VxmshKyGRu+Q2o2yQbAbXMaNYYtgL1vOioVHHetXbDNInugOtp4ti39p4VAukW44FVnr3OR+Kulu15FA2nWxv/aVP4Ev3S1srKDuinhCnGFGK+5B+tc20syu7Q6OOVOr9N8SN9Yerl2ylK0/qPjrTwbvFt+ZL9bwvXDtqUbX1kNXBJYIrujxmpA0pUw== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH 1/2] conf: introduce hardware UUID (hwuuid) element Date: Wed, 16 Jul 2025 14:17:46 +0100 Message-ID: <20250716131753.314355-2-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250716131753.314355-1-mark.caveayland@nutanix.com> References: <20250716131753.314355-1-mark.caveayland@nutanix.com> X-ClientProxiedBy: AM8P189CA0005.EURP189.PROD.OUTLOOK.COM (2603:10a6:20b:218::10) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|DM6PR02MB6860:EE_ X-MS-Office365-Filtering-Correlation-Id: d059f74a-d149-400d-8cd6-08ddc46b2ffb x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|10070799003|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?165VarvWY4TsUvAoJ7RQRvr5murcNEkA80LYngPtAr6BUGylk4uFv8tWAgFl?= =?us-ascii?Q?WmX367QeSVzJNkIl0tWqVzwj2sVbStNa7/I+dZD3ca59qzybnNXGI3rZPDjG?= =?us-ascii?Q?eLPyLUdD7ZB7RPqv6BtIIajDB90/9xMkL9N9Zrn1jxb6BuPZqq/AOQc78j33?= =?us-ascii?Q?Cog37TIkLk/bvMyFzC/bjDwWFWOsnNBMnKyvEiZLUAsp9Qrw7hQ/H+OoxHu6?= =?us-ascii?Q?3MhL31rAproSeh29lkowcCeOfhR6JqC00J8at1bokTphTqTz2EsUvsEgvvT1?= =?us-ascii?Q?ktinj0sX1CJEsXjmLw019oc+r+YLvdLbXLt4Ct4fYr3hW3cTMYJT9vBSDvEv?= =?us-ascii?Q?4CgJERbhyMx8ovcIAnCPUeJkgcNUlY1DxQweSdYWPN/ucZp6Rq86F+j0t6rt?= =?us-ascii?Q?VOt7UmUL7QIn3so77d4UlbkaNEQ9XuSOAYjUtMlR227Ww+rzHVIAMKu8wP7O?= =?us-ascii?Q?oxAW+HLf50dgeULkazqGx5OIELLAkldCLsxj5h3pf/Y21K4vA4fWVJXqQ7Hu?= =?us-ascii?Q?Gw+bSTo1FDUBauzrjfUUU5uzswrF7oYFmxeYfCHHDRqXDQrMuUwnKm2n7UzZ?= =?us-ascii?Q?QrzsM4HlEp0U7SGUaaHhajAUhKTNy25kByLgMPVNyLUNl4Myy+5iQ9VyFqRH?= =?us-ascii?Q?XYGcACJldmjjwGcg2c0mitaDMBVjGpAuzp/bpDInkJjL4+GxT+91z6L+pocm?= =?us-ascii?Q?971RxHOes0y53wlRpaSN2F5SFvDrvxsrLzSZV5TcoDIHG15qozZsBy1ZOcaC?= =?us-ascii?Q?4ObVZUifZ+TY3eaiehHKM5DHpe1B5N1BsHQKE1c9po5F090uaZHfW52Qa6wq?= =?us-ascii?Q?OdFrpqXqBzBiGze9tcyU0CxssoxVax36iKPL3Gsy5hFz/XOZN6hYqGP2fzxm?= =?us-ascii?Q?/ih89jNy5gWctYo87Bk1obduI6ERDNEbrBFILgm+GUX9tQUwIs9A5iQ9+V/t?= =?us-ascii?Q?I2hV1S+1nfdWveEwCaXGY2jmelpb5iUpRTQP7V1l8TVe7KQEfeNQSzTwvVzM?= =?us-ascii?Q?6UmBGnQmqNYyP00GfRKXAg32OGBZnQ9FZ6E/8rY60GI9l4Di5TEMape+D3ia?= =?us-ascii?Q?8DNxa43PiXOt6C9bA7cF+Y3SSIrcCdw5rUFF3hdy3Z2Z2CSMil85+Qpbm2Fc?= =?us-ascii?Q?Bodeh4PkAbf99ifWcobJ464u/Ax10UAg+QBTfc0alrNujCjD+Fw8qHXa7apf?= =?us-ascii?Q?10E2AXy53MWN28XEdKBlEZorWZKYnfbxOhmd6FN5gzGsA+XYTyMXKEGAvFnd?= =?us-ascii?Q?z8lR7QGUHKMqIiXNKkqhXuIrNaOJ/fgNGDipW2WzHWUfr3PtGtgfWkqQr5V1?= =?us-ascii?Q?734yo6D9O0Nr4TtKUgM0UTKe1tqVf6DCvSP+z06HjsiRxp44gFNjFmcLzZC2?= =?us-ascii?Q?m/a+Yh43tm6J7OKdAzT6SEEpeA7QZJ441hMaGidy+RpQt2lbMi2QUyk3vDv+?= =?us-ascii?Q?L9MSSipiutA=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR02MB7159.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(10070799003)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?otgsVLtonWKFJwKuJSICz+hpFOccav9zr3Fb71/mNZHrDd7RzgT/89w18cXM?= =?us-ascii?Q?pPM8VqRKXzTS/I+ZOIF3oo6H7LINqF0Bw/McV2l0qZtMA1B9ObXvNP9IMqqt?= =?us-ascii?Q?VtcMHiAl/8w0y3XsJhGPLUVfXCk1v+SP+oCRqAwgsaeCm+3+kPM4zw2KjNRi?= =?us-ascii?Q?0dPck6NofPSYNHnyUWoJynLq7P2CMZCzIXLcLqq6epk6e//vVvfrVL2Pwott?= =?us-ascii?Q?u4+64vcVC9WppEmlcEwXSnxcCecYQX4H5ix/YGo81M8IJZxsjv8kgTedP3Nt?= =?us-ascii?Q?yFGQsdvLdPqKUDSTHvNHgZOtGFubhKjgkMzyPMmQLsogp+iKWDaPE++IEd/Y?= =?us-ascii?Q?fzbTAhhIG2oQrrybkErUKhycVZ7CAuv+ajiEhn9XonxfXdhDwCSsjYPW/zOM?= =?us-ascii?Q?WnCSPVGwUDz3SZyzRBvJsaChK3l/LVjiYHZ2AqLW0gqC/ehYqcaEmQDVJjU6?= =?us-ascii?Q?5Asv2pk93BubKCaaR+/K/Q7OZW8n4DsUFIDc+4kvnOzsln+G0J7U9D0YM2BE?= =?us-ascii?Q?61yASt7yqD8pgQNfIgkxdkcEmYXEQyyErx56BccR2UktjLweRJPbuFeea6A9?= =?us-ascii?Q?ekCeEaTqXK5FEPa1rMlK10q7wfv4IZ3R7IAS7AdPDk+3OntOzkRtSbW/+IPH?= =?us-ascii?Q?jwhEn+0CTyL4qt+aviHfCp6razFE1Xo5cJ/PBshBA+CwRFhekBc9Fq3133wN?= =?us-ascii?Q?2shmdEJwocEyrxRFbsCKlxOrLVBbgsPXKar5rn0Wu65h4L69v2J+ePCDFPaT?= =?us-ascii?Q?pL64SANvZMVjh9f4ue2sJJjVhd8UMGlRQnj22C02LTYETTHnPfk5vGPmVhAv?= =?us-ascii?Q?PgplvYkinGvxMKyXc/hggQP1/CZKPGylmcpXFFx71kooD8NYnw81vYQTn/2g?= =?us-ascii?Q?iUxziquw6dLlgKWbxAW4h8o2rykRY/mN1TXW5Qbp+YHs3z3L+/UDq1s1sHiO?= =?us-ascii?Q?DKmS8L2VzNMYa6K+efm4ROpAlbj3+QKGCDw3PYyOd1vRUbCEJPnvsIPKi3d3?= =?us-ascii?Q?CDB2oIhE4e3qojupAL36gY/CtbIA+UGt2zIoFHtZe8/SZFnGTbIMOyi2SVbU?= =?us-ascii?Q?Rj9wAGh5b/eNeqV99kqPh4Q//qIDuK7Xko4WyGaphUKBOxPEDUm1VpRZ2JJx?= =?us-ascii?Q?I2bYgGC1cP/PLqX/OhNmVALtGgDEVZ3uSk/OQKEMzAFBVOMOLT1ovHRGn2IK?= =?us-ascii?Q?KH8mYg6KzEE/W1I8DuZy/T/b2cyYWl0XuZCbLo/ctZOA9GVi+tc2kJyx6zeB?= =?us-ascii?Q?GhTtWna9QtKlSXnbJa9hnJ08B/sfeJQ95guX3B6WFWFqrHSm03dTcgEPklrg?= =?us-ascii?Q?IGwU9CpZ/JIIfEyDJwMHa+OhK/CzygAJz6rzgMDO3pS6e4m8r3V1+BAQxW77?= =?us-ascii?Q?+rr/8o0djMH+WDuL5ixaLaZorMlaop9IQkmEYlMvATmatsban//bXIS5dPZQ?= =?us-ascii?Q?R45OlhINxoAprSDHk+gi7TojjXiqR4/fQHFYM0W9it8keBVK8yFmbVs7Nozz?= =?us-ascii?Q?YN/cp9Uk7T8IUl7RVvF+urCX1bpkG9DNQVPa0M8AUN5S9TMmhorxh0HACZIr?= =?us-ascii?Q?Yx4eUQQLZFujPQY5t0Hy30d3SDGJQtUGAbpxruKuhL5W2t/wUpjIY/99CN8c?= =?us-ascii?Q?yBjS8NdECn5BaawxHR5UD4fZysP+7LsLjN2Ep3bEjl0AibtLP+bGeek/DZsQ?= =?us-ascii?Q?8TPfLA=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: d059f74a-d149-400d-8cd6-08ddc46b2ffb X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 13:18:00.4129 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 0TfhRFrKKEcirKu4C+EeW4QmauGdIQQLil/cj0u88CfjAm0QKk8vIiMKa0ZMgacD+PZ3v0LOanMI9ofCWAgiwRFZZc1ZfqgPmWYubvsgt+8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB6860 X-Proofpoint-GUID: CMO3wMlTYoQVER1hZt6CMH-tK3NzaMIJ X-Proofpoint-ORIG-GUID: CMO3wMlTYoQVER1hZt6CMH-tK3NzaMIJ X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE2MDAzMiBTYWx0ZWRfX/V17lyr70Nka T4bh2/oVGDo2p3+FLsXxL9ssYj5/y75Gdv+mItpAvLbv9xrBeFPv4qS1wvY98vR/IHKtdByw4AM i0XzLGdlsTK/N9CuxWbA8LZKfXcQ0LYtUD8DTbxKnjSBEsyVLniFBbJLLZCpitngPEc0hQzQO1h WC9frahlFSIZXpb7/wpte8bUt4+5yNf7Bs4L3WWir7Q75fRkkjrYgeD8hQpT1M+nCqfQpHVvf28 ivi01TIC9w8Qe8RGPttveJc8+YWqJWY9k7TrVv6GTYFtkzgJofuIrJBvhg4svGZ8sdczyvcMLuk Li3iSvfx6vzcQ2XrTnspK68e1nZirO8gPukG7G50v89llwGaKyOGJ/Aeercc3+b94U+H3dd5diW ZrjDiOfT X-Authority-Analysis: v=2.4 cv=PYb/hjhd c=1 sm=1 tr=0 ts=6877a68b cx=c_pps a=DyTQgNuTERoFRorzy94Ecg==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=qaHvN7llBfijyLw2aiEA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-16_02,2025-07-16_01,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: GNCH4TCYKTM2JMIRRI7JTXSFVBHJXRYT X-Message-ID-Hash: GNCH4TCYKTM2JMIRRI7JTXSFVBHJXRYT X-MailFrom: mark.caveayland@nutanix.com 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; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header 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 (found 2 invalid signatures) X-ZM-MESSAGEID: 1752671944546116600 Content-Type: text/plain; charset="utf-8" The hardware UUID (hwuuid) element provides a mechanism to supply an extern= al UUID to the guest, as opposed to the libvirt domain UUID. This is to allow for the scenario whereby a domain can be stopped, cloned and then started as a new domain without altering the guest-visible UUID. Add the element, documentation and core code for the hwuuid feature along with an implementation for the QEMU driver. Signed-off-by: Mark Cave-Ayland --- docs/formatdomain.rst | 7 ++++++ src/conf/domain_conf.c | 38 ++++++++++++++++++++++++++++--- src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 5 ++++ src/qemu/qemu_command.c | 6 ++++- 5 files changed, 53 insertions(+), 4 deletions(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 9a2f065590..7b10dfa3da 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -54,6 +54,13 @@ General metadata =20 :since:`Since 0.8.7`, it is also possible to provide the UUID via a `SMBIOS System Information`_ specification. +``hwuuid`` + The optional ``hwuuid`` element can be used to supply an alternative UU= ID for + identifying the virtual machine from the domain ``uuid`` above. The dif= ference + between using the ``hwuuid`` element and simply providing an alternativ= e UUID + via a `SMBIOS System Information`_ specification is that the ``hwuuid``= affects + all devices that expose the UUID to the guest. + :since:`Since 11.6.0 QEMU/KVM only` ``genid`` :since:`Since 4.4.0`, the ``genid`` element can be used to add a Virtual Machine Generation ID which exposes a 128-bit, cryptographically random, diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index bfc62b6270..63603ca527 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13098,6 +13098,7 @@ static int virSysinfoSystemParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, virSysinfoSystemDef **sysdef, + unsigned char *hwUUID, unsigned char *domUUID, bool uuid_generated) { @@ -13122,11 +13123,18 @@ virSysinfoSystemParseXML(xmlNodePtr node, } if (uuid_generated) { memcpy(domUUID, uuidbuf, VIR_UUID_BUFLEN); - } else if (memcmp(domUUID, uuidbuf, VIR_UUID_BUFLEN) !=3D 0) { + } else if (!virUUIDIsValid(hwUUID) && + memcmp(domUUID, uuidbuf, VIR_UUID_BUFLEN) !=3D 0) { virReportError(VIR_ERR_XML_DETAIL, "%s", _("UUID mismatch between and ")= ); return -1; } + if (virUUIDIsValid(hwUUID) && + memcmp(hwUUID, uuidbuf, VIR_UUID_BUFLEN) !=3D 0) { + virReportError(VIR_ERR_XML_DETAIL, "%s", + _("UUID mismatch between and ")); + return -1; + } /* Although we've validated the UUID as good, virUUIDParse() is * lax with respect to allowing extraneous "-" and " ", but the * underlying hypervisor may be less forgiving. Use virUUIDFormat() @@ -13263,6 +13271,7 @@ virSysinfoChassisParseXML(xmlNodePtr node, static int virSysinfoParseSMBIOSDef(virSysinfoDef *def, xmlXPathContextPtr ctxt, + unsigned char *hwUUID, unsigned char *domUUID, bool uuid_generated) { @@ -13276,7 +13285,7 @@ virSysinfoParseSMBIOSDef(virSysinfoDef *def, =20 /* Extract system related metadata */ if ((tmpnode =3D virXPathNode("./system[1]", ctxt)) !=3D NULL) { - if (virSysinfoSystemParseXML(tmpnode, ctxt, &def->system, + if (virSysinfoSystemParseXML(tmpnode, ctxt, &def->system, hwUUID, domUUID, uuid_generated) < 0) return -1; } @@ -13363,6 +13372,7 @@ virSysinfoParseFWCfgDef(virSysinfoDef *def, static virSysinfoDef * virSysinfoParseXML(xmlNodePtr node, xmlXPathContextPtr ctxt, + unsigned char *hwUUID, unsigned char *domUUID, bool uuid_generated) { @@ -13377,7 +13387,8 @@ virSysinfoParseXML(xmlNodePtr node, =20 switch (def->type) { case VIR_SYSINFO_SMBIOS: - if (virSysinfoParseSMBIOSDef(def, ctxt, domUUID, uuid_generated) <= 0) + if (virSysinfoParseSMBIOSDef(def, ctxt, hwUUID, domUUID, + uuid_generated) < 0) return NULL; break; =20 @@ -18667,6 +18678,21 @@ virDomainDefParseIDs(virDomainDef *def, VIR_FREE(tmp); } =20 + /* Extract hardware uuid (optional). For some use cases e.g. cloning a + * domain from a snapshot, the hardware uuid must remain constant and + * separate from the domain uuid. */ + tmp =3D virXPathString("string(./hwuuid[1])", ctxt); + if (tmp) { + if (virUUIDParse(tmp, def->hw_uuid) < 0) { + virReportError(VIR_ERR_INTERNAL_ERROR, + "%s", _("malformed hwuuid element")); + return -1; + } + VIR_FREE(tmp); + } else { + memset(def->hw_uuid, 0, VIR_UUID_BUFLEN); + } + /* Extract domain genid - a genid can either be provided or generated = */ if ((n =3D virXPathNodeSet("./genid", ctxt, &nodes)) < 0) return -1; @@ -20132,6 +20158,7 @@ virDomainDefParseXML(xmlXPathContextPtr ctxt, =20 for (i =3D 0; i < n; i++) { virSysinfoDef *sysinfo =3D virSysinfoParseXML(nodes[i], ctxt, + def->hw_uuid, def->uuid, uuid_genera= ted); =20 if (!sysinfo) @@ -28903,6 +28930,11 @@ virDomainDefFormatInternalSetRootName(virDomainDef= *def, virUUIDFormat(uuid, uuidstr); virBufferAsprintf(buf, "%s\n", uuidstr); =20 + if (virUUIDIsValid(def->hw_uuid)) { + virUUIDFormat(def->hw_uuid, uuidstr); + virBufferAsprintf(buf, "%s\n", uuidstr); + } + if (def->genidRequested) { char genidstr[VIR_UUID_STRING_BUFLEN]; =20 diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 6997cf7c09..a00ba729fd 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -3115,6 +3115,7 @@ struct _virDomainDef { int virtType; /* enum virDomainVirtType */ int id; unsigned char uuid[VIR_UUID_BUFLEN]; + unsigned char hw_uuid[VIR_UUID_BUFLEN]; =20 unsigned char genid[VIR_UUID_BUFLEN]; bool genidRequested; diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 2d6e15f144..e39dacfff7 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -47,6 +47,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7658cc4d39..c7fd2eb183 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10713,7 +10713,11 @@ qemuBuildCommandLine(virDomainObj *vm, qemuBuildNumaCommandLine(cfg, def, cmd, priv) < 0) return NULL; =20 - virUUIDFormat(def->uuid, uuid); + if (virUUIDIsValid(def->hw_uuid)) { + virUUIDFormat(def->hw_uuid, uuid); + } else { + virUUIDFormat(def->uuid, uuid); + } virCommandAddArgList(cmd, "-uuid", uuid, NULL); =20 if (qemuBuildSmbiosCommandLine(cmd, driver, def) < 0) --=20 2.43.0 From nobody Mon Sep 8 17:03:36 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=nutanix.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1752671982161316.76991101153817; Wed, 16 Jul 2025 06:19:42 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 10573135D; Wed, 16 Jul 2025 09:19:41 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 0B3241474; Wed, 16 Jul 2025 09:18:30 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 518DB148E; Wed, 16 Jul 2025 09:18:24 -0400 (EDT) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) (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 D1653148E for ; Wed, 16 Jul 2025 09:18:09 -0400 (EDT) Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56GD7FgA006377 for ; Wed, 16 Jul 2025 06:18:08 -0700 Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12on2116.outbound.protection.outlook.com [40.107.243.116]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 47vscffe0n-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Wed, 16 Jul 2025 06:18:08 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by DM6PR02MB6860.namprd02.prod.outlook.com (2603:10b6:5:21a::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8922.32; Wed, 16 Jul 2025 13:18:04 +0000 Received: from PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88]) by PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88%5]) with mapi id 15.20.8922.035; Wed, 16 Jul 2025 13:18:03 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=1J7ohMdxkY8C4AxhL3bwRE/YgE8TOOL34Pcy0X3rn js=; b=T4ybel5A9q0DM0R1uzrVLP5T+FhHTE6/Bvb7KnXqlt6BJvVJ9FaO5tQtR T5s9dybS6MlLG/MlJ50eSYw6dLd0LZPUF6NZBXhYdywSf/fnSSJWsv8mBHRj3/fN j7cEvXWtzeaOJ3RyoNKjSPnKNEPAJINrI1j4gBFw7i1UMygTO3cDtWtslrJwEMKE OnU6wL7UYsn1/4gA+q2IpEzz+f6d7doJhzWeZ2/6JHfmylDYaN9+0Mrw6e9szrIl RKMmVPmIy3Nv193TROvOcvtdqtG1fCCp6+UCZ5P4Fjj51Ah6mlA3v7kyNO14HOYt A7P8jFXOAr0G31MHT8u7eWiM6rE4w== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=EQ8ai8nGsTkB21L5Da1tQ9YoxGV/KIcN6EZ7nOlwpeStxH+RmBNyyp5qxaCxygRikb6p+/hQ9D23jiGI5RdEQk+LbeUyPFwDoFogbCoCNlWRZ0MEdRViTlR58EJKMi8QisBQseYPfuuK/Rtdwhsput+Tww9wVZ77lWAZK3KKZNiDk+HEBeJKGmK2zWiBm5hpDUf7X+CYJwvlvXTXtUZssp6UvUQAXppuq7ecgvMqLKDEq5oIu/uK4RSET1eKePYT4muY9oYUUF9k8Av29RwHHAf+D1Vb/C08m8b0Kn4AteVAcdPKHZ3agUKwkETpltvrfbm4AY9bSW49kWZKSQ1y/Q== 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=1J7ohMdxkY8C4AxhL3bwRE/YgE8TOOL34Pcy0X3rnjs=; b=shUKP1HyX7dUebz1urbpDoCcUTp3zMBDeMy1xNBG5dODm/ACo+5kExQfYn3Vx8faO0RinS7ii0xUI8z4f52eMcMy4TKatXLGURpPhIQzGD/wvzZFI9KEdF/hcj6cpj8kkSQ5xi2ymb40LXakdQ3omRx7UIpkQaj5TWeEbjhLBTY4YzpdWwpKhXveyc06NpiTHjMlwSksia36Vv6wmxaU+uEDf/GYayb0xqDumR+hWqGSOSHzlyG74guwrWZpPyrCtndij1PzhmrkzqtoGjzfS9dN7katfaEsVtalz2j3xLTRS67PZQf4RFeTdl1/jXX3XvLKfHzVMsah0nRDNr7a5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1J7ohMdxkY8C4AxhL3bwRE/YgE8TOOL34Pcy0X3rnjs=; b=vb23PyzTqpaGNE00eAolyCxfkpq1Fb+87yLqMXl0uLI8Chs8hu3arv0uAGPsrZDAu2CUtztLKhdZm9pMWNJFBtyF1Ey82nKg/8K/9lioruxR3XLpMmm1tzFXIlPjpSTaNTi7cYUVVOMOyxdnkqFQa4nmvDbS21g+IeFfiu4HIujCeEdu1L6UMZAQfdxXnmciHIw4sFNDB3LO/RrRxrP466jLYGZEwDw062PELNBqrks02qyTVPSWXaFaHqGS03l4TvfH0NPOHMHxczJ5LRLUxWPyZ9yNlUPy/1EMgoK7867kTi0IlKGNF4DpU1Ij6kV1xa5Tz5gTC+Y5DKegfh9fog== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH 2/2] qemuxmlconftest: add tests for new hardware UUID (hwuuid) element Date: Wed, 16 Jul 2025 14:17:47 +0100 Message-ID: <20250716131753.314355-3-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250716131753.314355-1-mark.caveayland@nutanix.com> References: <20250716131753.314355-1-mark.caveayland@nutanix.com> X-ClientProxiedBy: AM9P193CA0028.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:21e::33) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|DM6PR02MB6860:EE_ X-MS-Office365-Filtering-Correlation-Id: f0b437bb-066a-4ca4-5ad8-08ddc46b31ee x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|10070799003|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?qKckGmtElWR0fR2TTNGrDpBHeyBN2mvfGUh5chnfnLamV47iw2woImPLr9v4?= =?us-ascii?Q?cc6vxVCop6i/0B9BSCcViW0ZlTpwFAKevvkSXTsZCRHXcAtiTn1g11E498vp?= =?us-ascii?Q?qyOBtq/2d7PHZEMnmXehet0hz4wMm5tpXt9f7FXsU2nPPHxP6tJHk3ITTPMn?= =?us-ascii?Q?FFiyCWIZORgVqbTbBHMCuXcvRsEmqacLiXA1bfEHHZALxU4p4GoajUCsDzvq?= =?us-ascii?Q?AtPZjk5rHuXAEUPJHlEQeBD65L7PPHuKfhBpzEXC8gJZGQ8jmJbfGJb3zJRp?= =?us-ascii?Q?ZH6BYijEKyn68Ha+tDroNbhHtzfeaH27KXT0KqfPoEHD+Gu4eYVDrGrfxPmW?= =?us-ascii?Q?GcOQaz18IjMBeYDie71w32CfhRYXNVCbwVEcajk3hG+KTLfyxbXqy8HsQTzV?= =?us-ascii?Q?4jrqD4c/oJxarYV/PMUd8iiiexLj5PVrdBuNnPS8Ak+TdfH92Emwbtk0slKi?= =?us-ascii?Q?cdkIX4aAeh+VGst9zwc5V11xjQJy/OM8qnEaMyW/8nuhgPDcpxJ1pWPKdfLc?= =?us-ascii?Q?W0+IQ4ey+qLIQ4GikwIJVZBCguAauAnDERkvJmxPHZLlf2VvD4nP47pBfrTY?= =?us-ascii?Q?U2Fhcq2f+exoIGn3F4OTjGfxp7ei+LP52R0HkotGjzLsUqXVimO1H/bd47g/?= =?us-ascii?Q?Uvo1XcOzjzKPEPmP5KQuEdjWAvm71p6j0C26hrumF9wP2U7G+kmRybRvvXOo?= =?us-ascii?Q?bVda6KrBLx0hFRA1RsHSWLnlLNISduiZNohADYzmp4KFN6/0GNTCpP8q9viT?= =?us-ascii?Q?GC73XiiGQfODDL/FJ98zCow0rX0+CAtFV2QBMHUkZo7NiEv5C88lSDJsD7Zy?= =?us-ascii?Q?lTkK4snWNvLMvj+dwMwWs5Bw0hMSLBLfmDnvkpUf7vLjC0VsiaBVx47Dej/1?= =?us-ascii?Q?fYE/+lD9S84mKMDZt9sDo5c/Wknnn/vH1zL7xkupz9ih0cl9ljnn29D6CskA?= =?us-ascii?Q?bk45O1OGBfphfkw5qOOZUshgnLJXBGWVRrLdoxxK2il4QfNOX7aAhq5h7CJK?= =?us-ascii?Q?FNlKtU11BSPZz5UVLZoyUikL3HkPEDR48tlJF5tKKknUCtfo11V1Mxj0cpOS?= =?us-ascii?Q?j3GbkOMtlOn/IC+Wx+xA5Me5yPB2DoloeJxujvIUjbPibilpe+sei507GZr6?= =?us-ascii?Q?fSBDZCl1mQ09onxNGMXDTKIHquI+1NfoDH7qIekh9UtATaa+jUoRm9Nb5/+F?= =?us-ascii?Q?U2CnBl1gRa1Qm8TnaMy/wdGz5Z0ii2mJNcjd967R7vQzHgEi8nM69fnsYAsv?= =?us-ascii?Q?nrf9KXv++9uKA9xX5XJqe5W648DahUNHmijlHbDCQuBYpXPiBGxxPSFEBu8q?= =?us-ascii?Q?85sQq0bbKCn65ao+uEvP5C8P/x1cH7h+WvfVi7T9OOTD17Ynn8GEPb2PeVIM?= =?us-ascii?Q?5vkgI4/kinxqIdyIkqoeKWbSLYwlzs9aXHoogVHt2Ysz22ZeyA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR02MB7159.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(10070799003)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?yjnpvYLSJ6a2N+YgWKB+z7cMkxvsEq/8Tmnx1ouH9KYe6L+sCI4FQGKTrhyX?= =?us-ascii?Q?ahSFGghI9AdQoGpTslwpQc42awUhTrxGgvacZ7c2lP5//JC98SbWGAdWOZ21?= =?us-ascii?Q?dS8RPYnFsvxcEjH7v7OCvNS/86wBJrkir+p4Y/2LW9JjggcjdaINsXvGKYUe?= =?us-ascii?Q?0OdX3kA0TwxdJ5d/KvY+tpNl3UIr7+TipsrhKuaYxDR5/WYHycM7EsmqlCS7?= =?us-ascii?Q?Yi12y0vST1j5qjPbUPjLse+8z4euq4cjib8e8uXtusqqmtWqeHkxxWZkWLCk?= =?us-ascii?Q?CosOHOFe5Wrc897SnO20bmxT18fVdpbWYTJElx0x55fAcCxZo3Pk1egMnvao?= =?us-ascii?Q?PNQ2mgKbnsXkj11vUN7p8FyAmZby7ChDCLjBSNwCBN3Mp+RzWDNQNNVlttNQ?= =?us-ascii?Q?LDlB0pyIEEddOcea254ya+RUulxRO4sW4cdmoHPx9s9cJShiAnZmB8UAXmJ6?= =?us-ascii?Q?EKgErDToBuAWUFK+RSLr6eMMgMXJgBU95Ui5NZkZfRx/eJcOYBjkuvLpnSTC?= =?us-ascii?Q?/SIDV1CyCa3NMWM68T+grNcK+RUUrNUIU4qYyHjh4HxlHnxz0vFd3MgXrO5U?= =?us-ascii?Q?VxUjQdBo8LRFmcn8B7T+kX7omzUcTaDY2v11r/D+xJkCn49xPehn/8YxJNzo?= =?us-ascii?Q?REtWBm3JAan144VyYjLKyrST69Ip2Fc0XM6LqWaFIh4eoZrHcq5rFBJlSIoj?= =?us-ascii?Q?+2YtWzIvAj5AEUDO7C1EFWxE1cyxXYDkfVfgufNiWHezTkIwSu2iwduUUkWq?= =?us-ascii?Q?FbJp7aAHPHuSnQvZKA2Yikjt3UxQAa5Ubun6EoqWN42fXLYSk1EZMCMCMWnb?= =?us-ascii?Q?TsCCfkdX5KPI/OVOnoM5lZjT0UDlXBmQ1ew6bOFzezQ9TilTr9UIcZl3Nml6?= =?us-ascii?Q?9DMilweVAMAXAiEmI2JqvCWuAWpZL148+Z96x0dJHf9QqgrucitqU5YCE+DA?= =?us-ascii?Q?T9Uj3r+tSB+2RzAszRuT20lVbxXeCSTGjjp+6fjFVrKGz2kggEw05U8OCySj?= =?us-ascii?Q?9twg84IrVEgvVU71MGOyTscpqSY/ox9xDRxCFB2mK3aP1/5WhIKaNjpeQevy?= =?us-ascii?Q?oIXmsmlGTydIWTYqMkZY6rJMFc8DJKYJum/+DBg7ofy3HC4pBbgr1/mNH+oP?= =?us-ascii?Q?cNr2X0zuCMSFAF58l5OjkTpqYkGFbWmJSbH+ApY5PL6OfwRWTEQpHoW4kwB2?= =?us-ascii?Q?1wMMbMHKZ6hHHv0eY56EdYFX9IRz5ijAOs03hY6Td3OJPGLVEbYeCzSSKdWs?= =?us-ascii?Q?16UYiDNV6rKRobGMj+hYkiMRqbjjtp2e3N0/qRT3erpshz/j7RTWUorAsZ66?= =?us-ascii?Q?EbriZ6RJ1LoWjqHXKlpzSpVLJFRyfsfPRgewEf+jXQ+UmoU2eVBSi2b2g4sj?= =?us-ascii?Q?6hzN4rxlb1+iYZmdaChGO4uFTNPfYbcEDJacFQ2ZqKbPPlY9gj8Amf9VS4CS?= =?us-ascii?Q?9BAeL6OBJpL1VZmPfawL6hqmrg5Xsc4qbyKuXc25O/KaTZAIjCgmHtY199Qu?= =?us-ascii?Q?Cm4atLRU2jH4a2BXPaXd2l1jgaIpGdjn8ams0IKpXWNKeDn/No2GfAIyWK4O?= =?us-ascii?Q?pykYNCGGGY+9VbdikYpoTHPWdXM7R51vldj5O38QEyqo2krep1DvjgeNhl1f?= =?us-ascii?Q?6Zcc6OP7lN+4u7PdGhWnTWCBOBqB0qXssC+eakON7yE9FoJlz7lb0fWy7c7j?= =?us-ascii?Q?ioAbKA=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: f0b437bb-066a-4ca4-5ad8-08ddc46b31ee X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jul 2025 13:18:03.6666 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GKejdLcDP0QJm+D8yWtoGiJGPOPEOa1iBKUCv2J+4d3iHx2MRpF4umP2zrSSS/GWQzhvqSWVcSeVvv79+Ebqb8AWdwoD4/iEFbnq0i5Eeyw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR02MB6860 X-Proofpoint-GUID: 5_vw_wD_XZ6LqmC7VgrTLaJksFx8GKDr X-Authority-Analysis: v=2.4 cv=a+Mw9VSF c=1 sm=1 tr=0 ts=6877a690 cx=c_pps a=m/Fm6jNu46Dgzw3fWO/mtw==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=ihdK8xOFRcA5fhOFpCYA:9 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzE2MDAzMiBTYWx0ZWRfX5VphyYk1zIl4 F/py/PTpXpB2f1FKwMwX80Bboy7w+3W1SnTSHHTnWBEzYC45EPxjThmAtsxtah/GO7lhhsdx3Ir DUNIpM4a94yOHkMEgFiDJHeRM+RakfOv5QvYsJ92qkmRj61lKlvK+83xxuBtlN9LRLRHqn/C5Pb SnRzIGPgbIS7J/UrjgFrEZClJOKQHHVoYQgv5gXX4wotzLBlmuub334f7wiP9FNh7QpG1D6L5Eu /r498LjB2T0LNVCaCaMj3ptZi0IXhxAzQbvJYk29LqIl/ImFhfnYIRu9ZJDUlIprGmP8Mxm6vhO Eno8TRE4T3cSO1oLtZPOjy/8OI4iRgA2JK+3LXCshfqUqbCG/Fdb8jPF1DUFWo2GX1ZBZXE2t8K ISrAXRao X-Proofpoint-ORIG-GUID: 5_vw_wD_XZ6LqmC7VgrTLaJksFx8GKDr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-16_02,2025-07-16_01,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: ZCTNBIFKXIHA5KJZWWZF5POUTR6HPTAG X-Message-ID-Hash: ZCTNBIFKXIHA5KJZWWZF5POUTR6HPTAG X-MailFrom: mark.caveayland@nutanix.com 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; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header 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 (found 2 invalid signatures) X-ZM-MESSAGEID: 1752671983056116600 Content-Type: text/plain; charset="utf-8" Add new 'hwuuid' and 'hwuuid-smbios-uuid-match' tests to verify that the new hardware UUID (hwuuid) element is working as intended. In particular the 'hwuuid-smbios-uuid-match' test is designed to ensure that the hwuuid and smbios UUIDs are always identical, similar to how the existi= ng logic works for the domain UUID and the smbios UUID. Signed-off-by: Mark Cave-Ayland Reviewed-by: Daniel P. Berrang=C3=A9 --- ...hwuuid-smbios-uuid-match.x86_64-latest.err | 1 + .../hwuuid-smbios-uuid-match.xml | 36 ++++++++++++++++ .../qemuxmlconfdata/hwuuid.x86_64-latest.args | 35 ++++++++++++++++ .../qemuxmlconfdata/hwuuid.x86_64-latest.xml | 41 +++++++++++++++++++ tests/qemuxmlconfdata/hwuuid.xml | 30 ++++++++++++++ tests/qemuxmlconftest.c | 3 ++ 6 files changed, 146 insertions(+) create mode 100644 tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-l= atest.err create mode 100644 tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.xml create mode 100644 tests/qemuxmlconfdata/hwuuid.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/hwuuid.x86_64-latest.xml create mode 100644 tests/qemuxmlconfdata/hwuuid.xml diff --git a/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-latest.e= rr b/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-latest.err new file mode 100644 index 0000000000..10a98baf4b --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.x86_64-latest.err @@ -0,0 +1 @@ +UUID mismatch between and diff --git a/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.xml b/tests/qem= uxmlconfdata/hwuuid-smbios-uuid-match.xml new file mode 100644 index 0000000000..0fe95b4ed8 --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid-smbios-uuid-match.xml @@ -0,0 +1,36 @@ + + QEMUGuest1 + f1449954-3a7e-48f8-aa7f-1f25fd6fa38f + af2d912f-5f99-4036-a9a1-8739b1f34518 + 219100 + 219100 + 1 + + + 22173deb-d53e-4db9-b874-93f5bba6e98b + + + + hvm + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + +
+ + + + + + + + + diff --git a/tests/qemuxmlconfdata/hwuuid.x86_64-latest.args b/tests/qemuxm= lconfdata/hwuuid.x86_64-latest.args new file mode 100644 index 0000000000..fa3eb6b163 --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid.x86_64-latest.args @@ -0,0 +1,35 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1 \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-QEMUGuest1/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3DQEMUGuest1,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-QEMUGuest1/master-key.aes"}' \ +-machine pc,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.ram,acpi= =3Doff \ +-accel tcg \ +-cpu qemu64 \ +-m size=3D219136k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":224395264}'= \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 5d5b0f1d-128b-4517-8e65-b258a8734c1d \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0= x2"}' \ +-blockdev '{"driver":"host_device","filename":"/dev/HostVG/QEMUGuest1","no= de-name":"libvirt-1-storage","read-only":false}' \ +-device '{"driver":"ide-hd","bus":"ide.0","unit":0,"drive":"libvirt-1-stor= age","id":"ide0-0-0","bootindex":1}' \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","add= r":"0x2"}' \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/hwuuid.x86_64-latest.xml b/tests/qemuxml= confdata/hwuuid.x86_64-latest.xml new file mode 100644 index 0000000000..a0cc12f698 --- /dev/null +++ b/tests/qemuxmlconfdata/hwuuid.x86_64-latest.xml @@ -0,0 +1,41 @@ + + QEMUGuest1 + 33721861-ccee-4dc2-858c-5f1e4629771f + 5d5b0f1d-128b-4517-8e65-b258a8734c1d + 219100 + 219100 + 1 + + hvm + + + + qemu64 + + + destroy + restart + destroy + + /usr/bin/qemu-system-x86_64 + + + + +
+ + +
+ + +
+ + + + +