From nobody Fri Dec 12 14:05:28 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 (Bad Signature); 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 1764098388615361.4897270948385; Tue, 25 Nov 2025 11:19:48 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 99D7C44B0C; Tue, 25 Nov 2025 14:19:47 -0500 (EST) Received: from [172.19.199.68] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3822B44B96; Tue, 25 Nov 2025 14:17:31 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 3605E44964; Tue, 25 Nov 2025 14:17:17 -0500 (EST) Received: from PH8PR06CU001.outbound.protection.outlook.com (mail-westus3azon11012028.outbound.protection.outlook.com [40.107.209.28]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 996074495C for ; Tue, 25 Nov 2025 14:17:14 -0500 (EST) Received: from PH7PR12MB6834.namprd12.prod.outlook.com (2603:10b6:510:1b4::18) by MW6PR12MB9000.namprd12.prod.outlook.com (2603:10b6:303:24b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9343.17; Tue, 25 Nov 2025 19:17:07 +0000 Received: from PH7PR12MB6834.namprd12.prod.outlook.com ([fe80::f432:162b:b94e:d2cb]) by PH7PR12MB6834.namprd12.prod.outlook.com ([fe80::f432:162b:b94e:d2cb%6]) with mapi id 15.20.9343.016; Tue, 25 Nov 2025 19:17:07 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=HTosy31MtnMnOGr+U9LcMaSRr1fzxJrCyosMdC1vt/MpM+0Atjfiwdm+LM9z3mWpoehfrR8VF9CrzGFotlLjxhssO2fsFuBklTxq88p24Zx5MrnEbeoyGxjI+uY8fyLLDVBcG428bG+42J3ulh5B2KNq835HSbZ2zJXD2sPnRaKHp3bH+awqNOque9ai000qgz2SWWJj+sOyYJ2DYSyiBmQqLYBrkf0c5q74J6M6FSeoLKNIkjEKC2XrbLcxBHGbS75LsAU3tBwDi1wHUEABle/ESfqms1ys0GVKcaz0/Oe75t9tzn/hWPTtYplDOgk2bhTbazDLeRs/FphnZ1HsXA== 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=+Am1M50MWokdH+PagMbywP/QN+duahZlwmrhEpuUUQA=; b=RNAn4qYIWUcLEgxxpMreDV3eoAiUSJLBOuvH8tPk3s9VYpdUruvGec0Peb0wWKWOg/zutKjND6uFYaNshhPPgTg5Z57n43NFZY6DVpjLZz7Lkje8OaX46b8roGetIvgdwYJSHlM531DgUwlNgRJrlVsWGlCHMjVGRb+gSeULPEIXF6SkrY9xlWI+DJ8g32xkJgQh70/7Vv9Kc0fZcIfyINygf57SrzcYjgZp8bhknHXH3eNUK4TxDNf0U7vXCUIInql6UOX0fsr9lwaB1CHKmrSDOJMH9JE53W2Wb1vq9npEPlFCgZiRU/i8I7vKyBHIa+lEybnzx+txdyu27w86GQ== 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=+Am1M50MWokdH+PagMbywP/QN+duahZlwmrhEpuUUQA=; b=ooiCN6uBsWjf0lXykap8Yy5WE6IjkpVJBNVMcebBnzWD2EHTRwR7lXosjWwbmyE8qLJE0EeXewBSNSFBH8vJV2I9bd1MkF/hdcflp8o7b6zYaXFsCehlSFw59bX/iyR4qoUGhtwHhN6bhK4QuVpl3ywrf09/AQ2eubR50ERUTBYDePdKzF/aW/+8+fOS+Elo7DU0LTXocCPNngi10nTuQHSO4TcheINmDe3by2rxTEoOVGFMhgm0le27rltd8AC3F0zIfnMb0auMMF5sTuIDaGw1s+HX5S0lBlF3T9qAsUOm9doXo7wJHz7i69Qfhjg8jYBn1lin3X2T7RHI3tr9IQ== 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 v3 1/4] conf: Support EGM memory device model Date: Tue, 25 Nov 2025 11:17:01 -0800 Message-ID: <20251125191704.644477-2-nathanc@nvidia.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20251125191704.644477-1-nathanc@nvidia.com> References: <20251125191704.644477-1-nathanc@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: PH3PEPF000040A1.namprd05.prod.outlook.com (2603:10b6:518:1::52) To PH7PR12MB6834.namprd12.prod.outlook.com (2603:10b6:510:1b4::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR12MB6834:EE_|MW6PR12MB9000:EE_ X-MS-Office365-Filtering-Correlation-Id: 4625f1f9-d1b0-493b-5889-08de2c573954 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|366016|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?mGEgzzwDNvQ0So0UXVZOjN/2UZBdu+ks2lRM2b9p1gU4du8aaSQmc6+BPwji?= =?us-ascii?Q?mZ67EOfWqv4g5prbuxmVNPQPtOznk4yQl3NSN25L2gGIjLliT//hbWEki14p?= =?us-ascii?Q?Y/yqCLYR9mAdG2FPxgn86XKT2R2E+BAkOYhcSiZKuRZXu4L3f2GfwWH0xio3?= =?us-ascii?Q?1sI7A6Ry2LwRCmTLXMKN3EsihzDlNFU52ZjnPuUncS8A/BxXX48T4SDZKBHT?= =?us-ascii?Q?qwpTNOBwFXSSnGvS3/6m7ojmidJUw0/svkx5XaKwqE7MEehQd7nJPKuXHDsL?= =?us-ascii?Q?m1ooCsiUgD6IeSWFlx841QbcFFa7+GhQQOoOknykWlx7qHBrxgogpcbcyNZl?= =?us-ascii?Q?TTy/5BM/pARN6uCbDGEpQdCQcZkqntW9fBQc5Ab8P/TPQMJxPz47rVeF7NYH?= =?us-ascii?Q?GnwBoc3APGqNUaIzL43TD57aUZ/P15GBhaZu9MvJswau6H+wHmTrPPg7NMTR?= =?us-ascii?Q?cr0ZDS/iXIIgfUZe7fAskFLpvwz9FrEVunuEeC/8mP6wiKGXzcLYY5FMkCOq?= =?us-ascii?Q?gqTbgbo8M54PB2hyJCMX4Vh/h5Bimb6tcSZYDylhrooHxHXhEhMZoUq2jq0A?= =?us-ascii?Q?Blc0jYmGm/riKHTT5yM7UakQWexp6ANrhdFrySsn0CLuhq8OKSXnHZZsfLrA?= =?us-ascii?Q?47UMG0H2bIqaAgI2uwtEB0ri86ThDL3sHDYci0F3yRzcbWFgNpCJzi2S2jsl?= =?us-ascii?Q?7YpsQJAFmYEaGA5SN/Byhb0rSIVmtX7hmbUICSpizyEkdkCigZFxKYoMm4Lc?= =?us-ascii?Q?VlMnkIYMl4PRVioT67Kk+cec3I5zsTFqsHNjArbuM+tkXMtiR7pSDuIgRTlu?= =?us-ascii?Q?uglfUlHQMbAi5DpaIZTlt6Emi9yg92OHnq3yaKCNranSzuPPIdm3gT1ysbr7?= =?us-ascii?Q?bKB5syUqzpWsggN9BCUj32gDHiJilbideDCOViDkk54wbL7qrclKDven7TJf?= =?us-ascii?Q?OVmtsGoRyk1rzVMgQWB6R2Jvo55o5nPX6yAL6j82nbsX8ZbNnD/A4xQPZPKK?= =?us-ascii?Q?d5XFIAitWUPEBEGQWt3aOFR7v3l6HqGK/4MA3DS5dy2dSdXIYPNqqaLtLLak?= =?us-ascii?Q?N5GILf03ZF67vIwzlwL1F3+gbmcPOvYluCSSvt3qi6HZQ9y++Rn2/+wwoVci?= =?us-ascii?Q?WSBl1FcxNycM9/vSpY0/fqzFR6bBD5fLbsO+Kz0G52yrtFCDNTGto3AIiaHr?= =?us-ascii?Q?PDo5sdAnnhyPp6EktdhvxI3TMjNx/ZyWD5ulG2nMTB+tMF4af60/IQaXG993?= =?us-ascii?Q?I2gZse8SeX1cR5StAYug9HDxpNIrsEhCX22IYHS9fdLfc/KYFAta/eiReWwT?= =?us-ascii?Q?A6zvtG1CZ708/YHddq7+7W3f7AY2+ExtwI13tgZgsWaeLkFNvqJaME+hj6tj?= =?us-ascii?Q?kwe45P60Orym0xdCvHuoZt7+Cde/CUaznsE+FJka43bW72coVub7dRLlYmU4?= =?us-ascii?Q?N43YLY9sgrgifQeNqsIW9LemDumqiIex?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR12MB6834.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?vK79TNksczenXkflFm/nr6JGjXCK2pjSTlurK8bIfBNVXyIt8CTz9YDe21nv?= =?us-ascii?Q?PaJtJorchTUJJJjXmTBCnUNTbBsdy2FzwK2I2UnYbfHLoWhwMvxO4F/sQE2k?= =?us-ascii?Q?Stx0W1zV6psV12w+A246Vk0bWDdr8r5sCSt4tbNnhKlDe1AfXnn6sH/aACKg?= =?us-ascii?Q?8a3h1ESyUgPJ2pFUYRiC8CPAFH95Yb6UY/rphxoEoTBt7mhwy52sMlUi5ecH?= =?us-ascii?Q?i1iN5UPT6ZGfATCF5Fsf0ykr1L0TKXKpNmhe/NJgXpMtP5UsPzTo9cOXGUk/?= =?us-ascii?Q?yf4FfZkVP10BjdEShlzv+ZOQ+wB+w1piL8/GRX8cT6hqZiRcNYsylUKoMEyX?= =?us-ascii?Q?9XQiwZ241EC9q82WIjdkXVkapQJd284nl4nKtYTHryf4kYP2tBliv6510JNE?= =?us-ascii?Q?5hEB+cT1WfL7GO2dlpUlcc+paGHveuenzTWL3gplvTh70zs7CNW9zoGBeOim?= =?us-ascii?Q?99Mky6cwMspTbdOs6dW+2oysqDKUEZx3yOO3tsvgr7SC8knKeWNkYu+eS7TW?= =?us-ascii?Q?T1QNqOxoGcrkEqHgEtRDm+u8GJDAoyub6XDJpvOuiBuy5SMSwcmueyndLq2F?= =?us-ascii?Q?UCUMKt39Ay69CCAqeFXIZ7nq0ul5xcKp6WgkVWWAGTv99lzTWXgIRmgJ57u4?= =?us-ascii?Q?ty+V9p5aHaZcIkLjNeMCvfC9X0M8e8efK6JycRnHD4MAaWR0T0Nirf66Mmbp?= =?us-ascii?Q?egtwQ6xTUSSgQ3VPOOyV/OUtgwmT9DihYqbdRgsnHdjgiORSq8SVXKXdO940?= =?us-ascii?Q?Z5k85OjqAnrQwAHtESxr2DfajpzzLmOBscskEvLLBv5sevxxEdXJebEo45cv?= =?us-ascii?Q?fUf2ezkHZY50Z9hUrp80eJN0UaRAqOo7gnvx6ZZjHOUqEm2XJ+P+jPFpg7dE?= =?us-ascii?Q?m1ptgQJHocLJVLvgaT2FYARklDK6/paaHHKZ4nwxas9wtOilT2N9FX9teZNi?= =?us-ascii?Q?AA7hg04z+xyZAGEqUIv7avBD7vRG7M1e9jhjFWK9PivJSbQwONW5wQyyWmiF?= =?us-ascii?Q?T5cmCUCsO0hh4z7cW+y/N8XGOxt5Djsr1m+d0D7PxRuJlQBHeeuiSGkR75xJ?= =?us-ascii?Q?dF+VtahmAXcVHAKRLaJPMZwcPrBc4QC3uik8HrOQD7HvwfgFnvyRN+IlicJ0?= =?us-ascii?Q?1pQNRFfefmMspagvtYp1SY6vdSJNRG+0Vh5w75L0KGcFEOC3VlJ8dq7KfuD+?= =?us-ascii?Q?wUbr5sfQQtb4r6oUdxVJKKUWw0d3jY2Y2CmJrVjvqltbsJrLJag7zvgo75R6?= =?us-ascii?Q?vlByUa1+SQ7jicMJhcdalm+TnqGu+km0N16Rrk3dlzPFvjyQeenfvamdgPb6?= =?us-ascii?Q?w+LXXNMWZa58ZSs8awHw55hWItm0LjHDk77TMgyptXbM9n8arjtPFI+J6EyL?= =?us-ascii?Q?I99RG6WJ4EoxoHtF5CSlAeDUhkTy9iJqBwGKcIobr0P7IWY1JnbSHhK0Fmfe?= =?us-ascii?Q?PdMoyjTn9G501CXyIpirZATCBNPUbqp2GAAdHmGSC2ZJO+6oJrSJ4A12QCjl?= =?us-ascii?Q?Y+erEp6G+FWUl68w0HsyFBdvCgw1+tHaCY8uvjBQy8986vqJQ+SOMmtnHh8z?= =?us-ascii?Q?6/iai8YTpnklEoh7NtGIBBT9QyIuUH8aEZ6qiLAZ?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4625f1f9-d1b0-493b-5889-08de2c573954 X-MS-Exchange-CrossTenant-AuthSource: PH7PR12MB6834.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Nov 2025 19:17:06.9805 (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: eyKJreuvA4aCNZFv1DFM3nB+hW56AGM0v9ISAZRYREzNjOvr58kwhuQ+VTZqY8juQcpRCzdF/asQpcPuvO5cmg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW6PR12MB9000 Message-ID-Hash: PJ5AUVIBMQ2FW3LXTSAJAXEHEU6I77HR X-Message-ID-Hash: PJ5AUVIBMQ2FW3LXTSAJAXEHEU6I77HR X-MailFrom: nathanc@nvidia.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: skolothumtho@nvidia.com, nicolinc@nvidia.com, nathanc@nvidia.com, mochs@nvidia.com X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Nathan Chen via Devel Reply-To: Nathan Chen X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1764098390460019100 Content-Type: text/plain; charset="utf-8" Add support for EGM memory device model with 'path' source attribute and 'pciDev' target attribute to denote host EGM device backing path and PCI device alias to associate the vEGM with, respectively. Signed-off-by: Nathan Chen --- docs/formatdomain.rst | 18 +++++++++++++++++- src/conf/domain_conf.c | 29 +++++++++++++++++++++++++++++ src/conf/domain_conf.h | 7 +++++++ src/conf/domain_postparse.c | 1 + src/conf/domain_validate.c | 15 +++++++++++++++ src/conf/schemas/domaincommon.rng | 6 ++++++ 6 files changed, 75 insertions(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 1467fc7e10..56fa931747 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -9029,6 +9029,16 @@ Example: usage of the memory devices 16384 + + + /dev/egm0 + + + 524288 + 0 + ua-hostdev0 + + ... =20 @@ -9040,7 +9050,8 @@ Example: usage of the memory devices persistent memory device. :since:`Since 7.1.0` Provide ``virtio-mem`` m= odel to add paravirtualized memory device. :since:`Since 7.9.0` Provide ``sgx-epc`` model to add a SGX enclave page cache (EPC) memory to the g= uest. - :since:`Since 8.10.0 and QEMU 7.0.0` + :since:`Since 8.10.0 and QEMU 7.0.0` Provide ``egm`` model to add a EGM + (Extended GPU Memory) device. =20 ``access`` An optional attribute ``access`` ( :since:`since 3.2.0` ) that provides @@ -9175,6 +9186,11 @@ Example: usage of the memory devices The physical address in memory, where device is mapped. :since:`Since 9.4.0` =20 + ``pciDev`` + For ``egm`` only. + The PCI device that is enabled to access the system memory via + association with the EGM device. + =20 IOMMU devices ~~~~~~~~~~~~~ diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 541dad5bdc..2cda32fa6e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -1522,6 +1522,7 @@ VIR_ENUM_IMPL(virDomainMemoryModel, "virtio-pmem", "virtio-mem", "sgx-epc", + "egm", ); =20 VIR_ENUM_IMPL(virDomainShmemModel, @@ -3611,6 +3612,9 @@ void virDomainMemoryDefFree(virDomainMemoryDef *def) case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: virBitmapFree(def->source.sgx_epc.nodes); break; + case VIR_DOMAIN_MEMORY_MODEL_EGM: + g_free(def->source.egm.path); + g_free(def->target.egm.pciDev); case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; @@ -14084,6 +14088,10 @@ virDomainMemorySourceDefParseXML(xmlNodePtr node, } break; =20 + case VIR_DOMAIN_MEMORY_MODEL_EGM: + def->source.egm.path =3D virXPathString("string(./path)", ctxt); + break; + case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; @@ -14160,6 +14168,10 @@ virDomainMemoryTargetDefParseXML(xmlNodePtr node, addr =3D &def->target.virtio_pmem.address; break; =20 + case VIR_DOMAIN_MEMORY_MODEL_EGM: + def->target.egm.pciDev =3D virXPathString("string(./pciDev)", ctxt= ); + break; + case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_DIMM: case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: @@ -14381,6 +14393,7 @@ virDomainMemoryIsVirtioModel(const virDomainMemoryD= ef *def) case VIR_DOMAIN_MEMORY_MODEL_DIMM: case VIR_DOMAIN_MEMORY_MODEL_NVDIMM: case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: + case VIR_DOMAIN_MEMORY_MODEL_EGM: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; } @@ -16247,6 +16260,12 @@ virDomainMemoryFindByDefInternal(virDomainDef *def, continue; break; =20 + case VIR_DOMAIN_MEMORY_MODEL_EGM: + if (STRNEQ(tmp->source.egm.path, mem->source.egm.path)) + continue; + if (STRNEQ(tmp->target.egm.pciDev, mem->target.egm.pciDev)) + continue; + case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; @@ -22196,6 +22215,7 @@ virDomainMemoryDefCheckABIStability(virDomainMemory= Def *src, =20 case VIR_DOMAIN_MEMORY_MODEL_DIMM: case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: + case VIR_DOMAIN_MEMORY_MODEL_EGM: case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; @@ -26700,6 +26720,10 @@ virDomainMemorySourceDefFormat(virBuffer *buf, } break; =20 + case VIR_DOMAIN_MEMORY_MODEL_EGM: + virBufferEscapeString(&childBuf, "%s\n", def->source.= egm.path); + break; + case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; @@ -26762,6 +26786,11 @@ virDomainMemoryTargetDefFormat(virBuffer *buf, } break; =20 + case VIR_DOMAIN_MEMORY_MODEL_EGM: + if (def->target.egm.pciDev) + virBufferAsprintf(&childBuf, "%s\n", def->tar= get.egm.pciDev); + break; + case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: case VIR_DOMAIN_MEMORY_MODEL_DIMM: case VIR_DOMAIN_MEMORY_MODEL_NONE: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index cb35ff06bd..e38f133bcc 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2745,6 +2745,7 @@ typedef enum { VIR_DOMAIN_MEMORY_MODEL_VIRTIO_PMEM, /* virtio-pmem memory device */ VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM, /* virtio-mem memory device */ VIR_DOMAIN_MEMORY_MODEL_SGX_EPC, /* SGX enclave page cache */ + VIR_DOMAIN_MEMORY_MODEL_EGM, /* Extended GPU memory */ =20 VIR_DOMAIN_MEMORY_MODEL_LAST } virDomainMemoryModel; @@ -2777,6 +2778,9 @@ struct _virDomainMemoryDef { struct { virBitmap *nodes; /* source NUMA nodes */ } sgx_epc; + struct { + char *path; + } egm; } source; =20 union { @@ -2802,6 +2806,9 @@ struct _virDomainMemoryDef { } virtio_mem; struct { } sgx_epc; + struct { + char *pciDev; + } egm; } target; =20 virDomainDeviceInfo info; diff --git a/src/conf/domain_postparse.c b/src/conf/domain_postparse.c index 38e731348d..0181d21f0e 100644 --- a/src/conf/domain_postparse.c +++ b/src/conf/domain_postparse.c @@ -632,6 +632,7 @@ virDomainMemoryDefPostParse(virDomainMemoryDef *mem, case VIR_DOMAIN_MEMORY_MODEL_VIRTIO_MEM: case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: case VIR_DOMAIN_MEMORY_MODEL_DIMM: + case VIR_DOMAIN_MEMORY_MODEL_EGM: case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 4558e7b210..4d4febfbfc 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -2494,6 +2494,7 @@ virDomainMemoryDefCheckConflict(const virDomainMemory= Def *mem, } break; case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: + case VIR_DOMAIN_MEMORY_MODEL_EGM: case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: break; @@ -2540,6 +2541,7 @@ virDomainMemoryDefCheckConflict(const virDomainMemory= Def *mem, switch (other->model) { case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_SGX_EPC: + case VIR_DOMAIN_MEMORY_MODEL_EGM: case VIR_DOMAIN_MEMORY_MODEL_LAST: continue; break; @@ -2720,6 +2722,19 @@ virDomainMemoryDefValidate(const virDomainMemoryDef = *mem, } break; =20 + case VIR_DOMAIN_MEMORY_MODEL_EGM: + if (!mem->source.egm.path) { + virReportError(VIR_ERR_XML_DETAIL, "%s", + _("path is required for model 'egm'")); + return -1; + } + if (!mem->target.egm.pciDev) { + virReportError(VIR_ERR_XML_DETAIL, "%s", + _("pciDev is required for model 'egm'")); + return -1; + } + break; + case VIR_DOMAIN_MEMORY_MODEL_NONE: case VIR_DOMAIN_MEMORY_MODEL_LAST: default: diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index 1f9ac102a0..4ccc594659 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -7486,6 +7486,7 @@ virtio-pmem virtio-mem sgx-epc + egm @@ -7617,6 +7618,11 @@ + + + + + --=20 2.43.0