From nobody Tue Sep 9 19:11:26 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=pass(p=reject dis=none) header.from=lists.libvirt.org Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1753255664702734.3550920710753; Wed, 23 Jul 2025 00:27:44 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id A39B8129B; Wed, 23 Jul 2025 03:27:43 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 9024BC98; Wed, 23 Jul 2025 03:22:55 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 3D27C11BA; Tue, 22 Jul 2025 16:26:33 -0400 (EDT) Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2078.outbound.protection.outlook.com [40.107.96.78]) (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 7BD0911B3 for ; Tue, 22 Jul 2025 16:26:32 -0400 (EDT) Received: from CH0PR12MB5092.namprd12.prod.outlook.com (2603:10b6:610:bf::16) by CY5PR12MB6346.namprd12.prod.outlook.com (2603:10b6:930:21::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.21; Tue, 22 Jul 2025 20:26:29 +0000 Received: from CH0PR12MB5092.namprd12.prod.outlook.com ([fe80::969b:49e4:6d48:b058]) by CH0PR12MB5092.namprd12.prod.outlook.com ([fe80::969b:49e4:6d48:b058%5]) with mapi id 15.20.8943.029; Tue, 22 Jul 2025 20:26:29 +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,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=U37/CYWg712pcLRdzKbbKbsBZEmgfxOjTkbxyKRmU2TZcvTqUPQjZfFW+ccnpfXCYBXxhYM4ljSPhkVQ+5yn6Nfy9qxnCdWijSJ5Zz2sPB/MQYUN7+GlrJz5akBhKIgGLqlVyrX9dMAxM3FjGNElXTFvVntOQ+I61yLgxwuhMbUV0kbqlpATXhK8TpiCVymUGmIs3nXLMeR8VoY3Qbm7MRqlqNxBhYF+S2DHowSx8TVirnb0aG6yAdfix5Sh7hL2b0X7Y1Tr4cjx+ZUCvAoLRMGvHdhew5pwSF7U9LOew6axVzXME7yYj3HqPGtQh6nT+OeH9XRlKgl65L227FNnag== 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=YsfPKHIYvY+qAClVZm/lnV1miZSch9N7qlQJcjw9KMM=; b=Iz5tr7vAJ2OIW2WQPEjMeboCK/6D4+7cqAp9osRXbgpm73EmG8EmuicP1H7PpUd13gH75k+sITRsTvgoCN83XIlpW9hmXaYMMGII89Yptec6y2/zcC274zWSLUhG5FQiEiUuH7UjKCSjUBDjXR8mDsAjt2R+q3MIfAWQgeJTGSGCNSxxsQJc0zKddHOTtp89n4MO4K9/U9J/bwzBjWnNNx3cW8cWvsINrMdY6PIFkJc/0NtiKt4w8V15MQK77breQj7+MFmTIeOZfQItmiO4gW1FG0e6vAV7KKAfDvsCiIDb3j9hkLG74YPB2KzB2ga3+sS7+tNrHHKXYtHG4cx9Zw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nvidia.com; dmarc=pass action=none header.from=nvidia.com; dkim=pass header.d=nvidia.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YsfPKHIYvY+qAClVZm/lnV1miZSch9N7qlQJcjw9KMM=; b=p0VxEIWLCFlQ3Z+4fGKv/Ver1k7fXCb4tN7A/kBFuGPm+YnlfVghI/ht1Ron+qEL4B2VBYrktVmkyANBtJn0E1J7nAUzUNapN1/8Q50gbdL2kWtgGbF2EiQ2TLZ9YqT4933s5lLHVcYmAe8VA+jiEIeAK63gX5d7ffjdl+duRsUOr/itqyLHLfLKXAD6qNG4shqlukj98ZvSSj0blwCGpYCyCGO9PMkjQG2qpRmlMrXExHst2QSv8LrVZcIbW1Ya/M5D9suifHGbRwI/Tb0Di1sVZ+pIGK/yYdHiQN98U5gysDY2JBWqpV2vpQhkuPEnuYv3/UySqC5fdM02m0a3zA== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; To: devel@lists.libvirt.org Subject: [RFC PATCH 8/8] tests: Add qemuxmlconftest for ACPI EGM memory device Date: Tue, 22 Jul 2025 15:26:08 -0500 Message-ID: <20250722202609.1823658-9-ianm@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250722202609.1823658-1-ianm@nvidia.com> References: <20250722202609.1823658-1-ianm@nvidia.com> X-ClientProxiedBy: SA1P222CA0065.NAMP222.PROD.OUTLOOK.COM (2603:10b6:806:2c1::16) To CH0PR12MB5092.namprd12.prod.outlook.com (2603:10b6:610:bf::16) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CH0PR12MB5092:EE_|CY5PR12MB6346:EE_ X-MS-Office365-Filtering-Correlation-Id: 104926ac-5b76-4fd3-6d73-08ddc95e0a74 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|366016|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?xdB8yhCVs3mHf45n165YHHkR5UGtlHvHXAZIIceW98EWkn3Oj6iLLOzZC1d6?= =?us-ascii?Q?5y8zYVrCnhfETJ4tmIMpnjV+/8q25wMnOmqgl5xKv21p/N+sycYU14KGT9mS?= =?us-ascii?Q?5lE6G3ErrMU3PUwRHlfH945swGWnau1JXdCVpYtJIewm8GtPHGP8UjoOBWut?= =?us-ascii?Q?Z7KnnUndAI9YiJcr4AnaRcOxE9IjINnIBVRapHrk98BDbQ6xo2YqjzTcBGgP?= =?us-ascii?Q?bM/tpfKCtlrL2WhY1WndeFFOGshD3o3tdZZDMRsQwAZ8ZA/3IWR4LfTxjmPp?= =?us-ascii?Q?MKfxCzfs9SMikKjCN2VDqwBLPZgJPs3GnsHviksqMa0x0aEFMtfrTP8+Rv5C?= =?us-ascii?Q?B9Vc6VwpuLvXqEkDyrpmrSVKBAEQSxQU2Ixh9R/pEQrKnCUX8YFAnnlBJiTH?= =?us-ascii?Q?UPqTIlKuEE3ubAQSgQiKTmmizOWIqEms8me3ceiQJJ/2C9+7RP3Swqx0y9Ya?= =?us-ascii?Q?zMcfXvpC+FO5Bx1/+JoP7ayLsfIhvaq6KNO2GvBdxUVbzAdOxctXOyAwCNJd?= =?us-ascii?Q?ULXL/4EN4lF6P1s/AqqOr6gTbh/bGUJRG1o1l0VmQNUB9HBwyBIdijzTePtT?= =?us-ascii?Q?8eSkmrcVcddy4ROrRsau/F2fE7YTkLgj9D787OxhICnYZBRajSAkNzL2ygP+?= =?us-ascii?Q?fyRKi6ImZbI8YXLI0DtMh3zhhUN+APATJ3VM6El0mlYgw3+k/RWH9p4V+8Wa?= =?us-ascii?Q?qqXQKTfWUMyuvDHGX2uSW4RPj6eTNWXHoNefcupeZhLEwJbjLDZIZ6M9n+sE?= =?us-ascii?Q?P5BW8zPhXd1OGs+cxEfp/QenREvSnHSU55CnuKoM+t26W1XhJvoIzmrDd7hl?= =?us-ascii?Q?qGYg3QUrmvAk7reQ+UvsjqIfITeb+ishTgGs2bnf2XgmA3ZJ4uzjQhsT+Pnx?= =?us-ascii?Q?ppzdEzDsUjCIqXysSOhds/uRonXPqcOT9tcrLiJEGqMwDj7JJLiKPrwWxHdY?= =?us-ascii?Q?0GQlSidYGYjxcA874dvKDcLj1Py639/GuphUYdj6iYfN2fnGnnnAE1/dpXCZ?= =?us-ascii?Q?YYTdeaUUd9zO9eWuPCvXwJlaeyr9uo1fBbvWRH7f8JY6+52JD6qMg3SJ7XuX?= =?us-ascii?Q?ezjO1H185+cMRfFG4kEcx8eEtjWQGmxWtVKl1jsjecblVpawvyZND/0nY7pK?= =?us-ascii?Q?J1tAwe+CfIyxdbd3oL02XTpU1bfXeY+Ir2KWXpDApEjwmBX7SM6UJTvoC9Rv?= =?us-ascii?Q?UpN57T2AbcZR46JPuVM5vcEcDiYGgT0dCrdP0HQqU/4Y/JY9VsK8XcnOhGA3?= =?us-ascii?Q?ktI3iVZOSw/Vm/lFEnP9BYovTpg5boBgvTrBwvO3iT5KoIa8s5iZAbf96Efv?= =?us-ascii?Q?bYhN22cZbBwJLfnXx1YG7cybzxNzQRtv9A1MhhDvRbKtmmhYS4OVpq76egCm?= =?us-ascii?Q?vtf26J6x8brYyIbS103aqrHa9DTR93hyGAjBL83je3f0zMzVK3ErNztRoyDK?= =?us-ascii?Q?bAg5659cMvo=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH0PR12MB5092.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xxnX7Unu6a7nX75FBTl7kgi/iskQREtpXC9+YjjPSOl5p+jWS0qTYYF5FYys?= =?us-ascii?Q?eIQOrK7WI8CzRHuvpMwBQ2n5rX3ypeE2usqKReOLbEPdtScQ5p2daxUEkuJM?= =?us-ascii?Q?1GZYf0eWQCdVvPKUeELXwVoQlaxL1Z9knUbY0JsX6vvTX5pt5vqUIdrfYDId?= =?us-ascii?Q?TCxk90hs1iZmrsCz1g3aHkOrSLGdWeVBPO1Rvk9cp0iWT/hJdTgVhYRsxBnd?= =?us-ascii?Q?pc67bi6ZkGDW23f8FghwbS8UluGhCvRklY+0XOmNAwS5WDnNtCIIHtyZyCiF?= =?us-ascii?Q?S6N34YqeRLsfwBB1uVCUPR7p3SnNEWPeRaUIQMeg7Q2rkCc25vdpo3YoYxUQ?= =?us-ascii?Q?xjHjPOW3BuYWIUbYdMbHVqb5h7Y1ujPPvZqBQR12hKtEEzpO191uFeFQHyEi?= =?us-ascii?Q?RcQFDIxMm0TYVIBeCY70HItEluUiMz1ADkmVpMupQ6nvOsx9Dz6UNrlJZ68m?= =?us-ascii?Q?S8aOwXiw0AvRTYKbJKSUOv6crmREqvCi7QGRotzeaxCORsOxtvvpNNmSvQby?= =?us-ascii?Q?O+TVkCZIaznSmdNQeT6J+aPF6M9fqUBjB27QXyAf16zpVMsF9epSpG8+6sOA?= =?us-ascii?Q?r+er8h2+Fptc44+F0jUlb4bWk+sn/22Q7oAgmG13ThC0jbzQAhtpP7zb+tkr?= =?us-ascii?Q?9tOMtNaxCgCT3or5wf/ykw3ZXiFV4BePSTuXFuPqg6jvIGOVMKyLgDTL2CaQ?= =?us-ascii?Q?MPzjFUdMHc9/i87faE2uGjfEwn4kVLB7Vm4eY7gngOE2II2eeyJDJqYBBpF7?= =?us-ascii?Q?YQG0skanPchP7MNuFTFVJIxhGWD1qwWGe+P8287101sluSKPMow8hxAPug3l?= =?us-ascii?Q?k1Mp8WuCaHaCdJbrbuXqPG/ZgrfmNH3LrQiF+au1Y1K/AQkIq8QIx1mIp+MV?= =?us-ascii?Q?ApF5Y3V7oJ0SrG/I3ze11bovPtSWUwNrFrm4s7ZpVagBO5EVUhBoZneI9chs?= =?us-ascii?Q?ychj+OGfD1Obdl/y9NZ0gTCjtG0uQyqxQ1ooTxlgOku1FYUyx5lT5TwQvFV7?= =?us-ascii?Q?AFPYaVtFC/4gHIPvV1I1g4TlbbDGY94gCmRVlPSmYaKBqvdjrI38KoAM46Qy?= =?us-ascii?Q?Xrol4qYoKl/aWgBYkK3bXnDBonIufK7qHJtTbqQKYuJ0PSOnzrtXrFwHi5wb?= =?us-ascii?Q?wvFWus5CG6fW9Ihxl5++eOhAjkLbdedF2fDgNNqlxqhzhdyx/CVetc9HLWxa?= =?us-ascii?Q?hH/7Xwrrn8yqu+X7LZnZ8XzxcPNCUeb+/Tv+fXmks2gtSHd+hjfIyAd2I7Lj?= =?us-ascii?Q?jFakqI3ZFP1LRFZnzJw11pcGx2exEjXFSC3DA/thBFNVS/7ik07p/jEvWhLC?= =?us-ascii?Q?RczhjUKXnj68Qjd7zpLDKRgCcvoNZ1LyaQ41vFSbxzPZA6f0BpC94Z2FkPTq?= =?us-ascii?Q?Gsz6Bf9zKliVZAOy9dXDPVHsCLORSOboQYl/flBUvgY6HgxDAlw6ff2UYzrn?= =?us-ascii?Q?rLRCT6Cb1Urk7nG8oQ93mHm38mL1G4iQD91dMlxUkAane/N6qSve/oKrsEKX?= =?us-ascii?Q?fNVrCCluP+xDpuBSngotyK6hDpQemmN+JMCJkb4LhwOvtIciWZ619ucm3Em6?= =?us-ascii?Q?mDLZkDdjhiwEeNlxhVNVwSzg1mIukKS122D3swUe?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 104926ac-5b76-4fd3-6d73-08ddc95e0a74 X-MS-Exchange-CrossTenant-AuthSource: CH0PR12MB5092.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2025 20:26:29.7498 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Yr3siQo5/3ncjF1CVPiBOQWGI+xxurYWhTu7EbqBsfWHZfkq7A9bn1Lb7UXVOKJY X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6346 Content-Transfer-Encoding: quoted-printable X-MailFrom: ianm@nvidia.com 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: 7FRGJWGLLPSCBAGFJ3MT3ZXOHTD3V7O3 X-Message-ID-Hash: 7FRGJWGLLPSCBAGFJ3MT3ZXOHTD3V7O3 X-Mailman-Approved-At: Wed, 23 Jul 2025 07:22:29 -0400 CC: ianm@nvidia.com 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: From: Ian May via Devel Reply-To: Ian May X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1753255666741116600 Content-Type: text/plain; charset="utf-8" Add test coverage for the ACPI EGM memory device feature: - Add test case to qemuxmlconftest.c for aarch64 architecture - Add acpi-egm-memory capability to QEMU 10.0.0 aarch64 capabilities - Create test input XML with EGM device configuration - Generate expected output XML and QEMU command line args - Update validation to skip filesystem checks during tests The test validates XML parsing, formatting, device validation, and QEMU command line generation for the EGM device. Filesystem validation is conditionally skipped in test environments while preserving full validation for production use. Signed-off-by: Ian May --- tests/meson.build | 1 + .../caps_10.0.0_aarch64.xml | 1 + tests/qemuegmmock.c | 67 +++++++++++++++++++ .../acpi-egm-memory.aarch64-latest.args | 1 + .../acpi-egm-memory.aarch64-latest.xml | 56 ++++++++++++++++ tests/qemuxmlconfdata/acpi-egm-memory.xml | 27 ++++++++ tests/qemuxmlconftest.c | 5 +- 7 files changed, 157 insertions(+), 1 deletion(-) create mode 100644 tests/qemuegmmock.c create mode 100644 tests/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.ar= gs create mode 100644 tests/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.xml create mode 100644 tests/qemuxmlconfdata/acpi-egm-memory.xml diff --git a/tests/meson.build b/tests/meson.build index 0d76d37959..312c05a5f1 100644 --- a/tests/meson.build +++ b/tests/meson.build @@ -174,6 +174,7 @@ if conf.has('WITH_QEMU') { 'name': 'qemucaps2xmlmock' }, { 'name': 'qemucapsprobemock', 'link_with': [ test_qemu_driver_lib ] }, { 'name': 'qemucpumock' }, + { 'name': 'qemuegmmock' }, { 'name': 'qemuhotplugmock', 'link_with': [ test_qemu_driver_lib, test= _utils_qemu_lib, test_utils_lib ] }, { 'name': 'qemuxml2argvmock' }, { 'name': 'virhostidmock' }, diff --git a/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml b/tests/qem= ucapabilitiesdata/caps_10.0.0_aarch64.xml index 200873b3a2..30abf65675 100644 --- a/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_10.0.0_aarch64.xml @@ -109,6 +109,7 @@ + diff --git a/tests/qemuegmmock.c b/tests/qemuegmmock.c new file mode 100644 index 0000000000..c915212f45 --- /dev/null +++ b/tests/qemuegmmock.c @@ -0,0 +1,67 @@ +/* + * Copyright (C) 2024 Red Hat, Inc. + * SPDX-License-Identifier: LGPL-2.1-or-later + */ + +#include +#include + +#include "internal.h" +#include "virfile.h" +#include "virmock.h" + +static bool (*real_virFileExists)(const char *path); +static int (*real_access)(const char *path, int mode); +static int (*real_virFileReadAll)(const char *path, int maxlen, char **buf= ); + +static void +init_syms(void) +{ + if (real_virFileExists && real_access && real_virFileReadAll) + return; + + VIR_MOCK_REAL_INIT(virFileExists); + VIR_MOCK_REAL_INIT(access); + VIR_MOCK_REAL_INIT(virFileReadAll); +} + +bool +virFileExists(const char *path) +{ + init_syms(); + + /* Mock EGM device paths for testing */ + if (g_str_has_prefix(path, "/dev/egm") || + g_str_has_prefix(path, "/sys/class/egm/")) + return true; + + return real_virFileExists(path); +} + +int +access(const char *path, int mode) +{ + init_syms(); + + /* Mock EGM device paths for testing */ + if (g_str_has_prefix(path, "/dev/egm") || + g_str_has_prefix(path, "/sys/class/egm/")) + return 0; /* success */ + + return real_access(path, mode); +} + +int +virFileReadAll(const char *path, int maxlen, char **buf) +{ + init_syms(); + + /* Mock EGM GPU device file for testing */ + if (g_str_has_prefix(path, "/sys/class/egm/") && + g_str_has_suffix(path, "/gpu_devices")) { + *buf =3D g_strdup("0000:01:00.0\n"); + return strlen(*buf); + } + + return real_virFileReadAll(path, maxlen, buf); +} diff --git a/tests/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.args b/te= sts/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.args new file mode 100644 index 0000000000..773cc83946 --- /dev/null +++ b/tests/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.args @@ -0,0 +1 @@ +-object acpi-egm-memory,id=3Degm0,pci-dev=3Dua-hostdev0,node=3D0 diff --git a/tests/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.xml b/tes= ts/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.xml new file mode 100644 index 0000000000..a62e6b1368 --- /dev/null +++ b/tests/qemuxmlconfdata/acpi-egm-memory.aarch64-latest.xml @@ -0,0 +1,56 @@ + + egm + 00010203-0405-4607-8809-0a0b0c0d0e0f + 524288 + 524288 + + + + + + 1 + + hvm + + + + + + + + + + + + + destroy + restart + destroy + + /usr/bin/qemu-system-aarch64 + + + + +
+ + + + +
+ +