From nobody Tue Sep 9 19:05:57 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 1753255580882411.18150843369824; Wed, 23 Jul 2025 00:26:20 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id EFBC3134E; Wed, 23 Jul 2025 03:26:19 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 34C4B1481; Wed, 23 Jul 2025 03:22:47 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 13F3DBB3; Tue, 22 Jul 2025 16:26:27 -0400 (EDT) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2050.outbound.protection.outlook.com [40.107.212.50]) (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 4AFDD11BA for ; Tue, 22 Jul 2025 16:26:26 -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:22 +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:22 +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=kpWzeaLbuiNRGemDoJtTlvDzzuypEQUO2Jdcic7fYuEt/Al30+jWiStC5uMyP+yqdnXYeJlm+fccrAXxDst92zKUdz6hReVBhO6+yVUV/28Hk2RKMYON/b/E18T3J99XQ8iPcB7w7AUt6omWvT0cCM+UvvJYdT02zNegHAFfvZCJY76WvkHRdwwXzNraX9sX2PgrZwxkVnBtj8JkcfFcUxUnc22ryz1flctrA+CaE0k2PCqBREuJHdim8RClmn17yTD2yW5v/s0SogCW3nFgTvTzHReNoiSV8KcPzlSbhbepEAv/wYq+MxG3eIfAWCNMmXtZSEAZoLLgFz71dC9PIg== 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=1e2JjeGhFUWceknFlSJg8jRaSQF6HIpwp5+NcQeZunE=; b=hVgPHSXnTWmAEEpRHiI5R/wyRKsWZONtdFiUSjFtfqUvF3Hl284rBgi5yRaU9p5zH17e/DkIO011mXXaeWvuV8IPx4DXqPsKBQjL2t6b0qGaxX0rP6vX/xas1gEMuvZrBPqDEtpRmxDtwk1Dy6uaJiZSN5e3Ov9U2sufaNV00JINe5PBdk1y8YDCzL5d0Z1DJsc8wLC9pFLhfsXBnzkn5oary73HRBAXWBSHfOaSTrC7u1EZLAK+klWwRFVQGh0BP/Yb6V+33gJvQocd2i+DWY4c8/B3YWsIXEFelBONqMr/w20pqoxuE4UYfLpoCUOoCCn2oryjj8Ks7y3Fybb2sw== 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=1e2JjeGhFUWceknFlSJg8jRaSQF6HIpwp5+NcQeZunE=; b=A0PnhLRQ+FYWSbVd8HlmyAsHaU3eD90f4Rg6pILbhYFolDljPrZeiREe3XG4xFukQR1UtU0sShEYSDEG/5ZNm8xFqumKtJxMp4UDs0q+OfOZe46js5s00L6tRWsDy+zqCDRV3YdRx7WL7T6IhfiZGSbUQC4E3SKt/N9aed856XxAFfOLSJ+cP0noyOvAkccTed+rYMR8Y+4Ny2ePz9REwnd3BDQT+iG1imPX5stfoJeVMRXOYiJ3WxusTZItBKrKbvWK0uOHc3TKgHL8SZpEtTTOPk/eB20/f+dWnLbtGVoD9BAtmIReBkqPhi6lWoUXqchkeaMuZUUkRsxGyIxqqA== 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 5/8] qemu: Add command line generation for ACPI EGM memory device Date: Tue, 22 Jul 2025 15:26:05 -0500 Message-ID: <20250722202609.1823658-6-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: SN7P220CA0026.NAMP220.PROD.OUTLOOK.COM (2603:10b6:806:123::31) 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: d3914bec-b3b9-44a6-a45e-08ddc95e063f 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?BqBott4ZzSbqpc4SIxhe+k5VF8Ws/72Ws0IoVROBzgMcsoZsfyZAEK6Cga36?= =?us-ascii?Q?hOokQxMf1DFIttzx2srXXW4UC2zh6jzwJF3dCyITqTY40iCxCdoaaBCu0XhS?= =?us-ascii?Q?W31CA33TgCs4Ds3sTntNxt+a2t4A8qTUKodjsNolk6xnkXJcU9Ja/vvpPs5H?= =?us-ascii?Q?gATciBlLkFxnH3cfX4EGF0PJJhVZA6Q0wUF0M4/Km/98saa/FHht+mqrnJEt?= =?us-ascii?Q?jPX6QL39wTYSGoJFNJoR3jtBwwp7JW9pQ7Dedv8EJGaYX+wweEUgFyRuw95H?= =?us-ascii?Q?+srRPo3XTi098VDJB0G0irdRfpDOv3r4LTEBa8qLwEefujViIcLso+TQoyEP?= =?us-ascii?Q?47Kn8oeKci/pPGzyzaHqzpHHkVFJFH42gjTuM8NwrFlZxXH0t2CMHWwMsVrq?= =?us-ascii?Q?LNx/38D9hnQ1RAadEOf4aWtKk9oimChFaWns5LHL0Y08C7VvHuD4Gxi8uSo4?= =?us-ascii?Q?qDsCV8TuNs+NqAtRNVmSSamMA/2kQRfPWUfVKG/sU6g0Msu0rG9x8rvwTXr+?= =?us-ascii?Q?3CUL3FWqXHnnVHus5Pe/Bvn58B74v2m/CxV4anXKqOghMRXRxqHbJIk5ELDU?= =?us-ascii?Q?dGgZzMXw48KAyI+vfJfvbCZQJei5HYmcuG7JUpa+ws65W+QQ7Os86LT+DHMB?= =?us-ascii?Q?1IdQiumPdxW+ok3D0OC+SIxQ9jol0vKG1J3Qjos/FjbVjTJFon/qaXgnucM1?= =?us-ascii?Q?ef8igwwvTmK5ckw0pxiSKDjgpE0mjgsCbx6kmFWeercYcwyuVhlX08NZMWxa?= =?us-ascii?Q?epa8iDfQ1434KQBi0cpDpaRx+JYqEhLJvMMucv/flZZfGH4ohdPe0ghs3Rno?= =?us-ascii?Q?u+stb/iv4xdyC6aJ+qjmnjwNOqGOAE4ZZjek8dH1Q5HL6FvxNMfT1sJX7Dm9?= =?us-ascii?Q?hObtXw8hjweC+E9HvtAmpRuDpMo4fsXXCk3NbjJfnV9XmhvIL7fhOvmL5maE?= =?us-ascii?Q?WspqAvivr1xjWXV8rEyUfdhk4Ls8V2zAUpSuE72uwCARf2MG9PVt/WQWktoi?= =?us-ascii?Q?gMKIYFCP5blROdWy635Y+f/E3FqIo3zTgeD2IXADSEqWdJ2eKL1dsDc2p32z?= =?us-ascii?Q?I1xihTSeUtZLu5Le/LYDhLdiSZN2rzhKiAkh9PD+LARCAqNFh3e8sray1WYe?= =?us-ascii?Q?qg+stj66tl66iB2eE/eJVbjcZkYVlfoMDEwCbwvxOqftFlLQFSpLsRe2UEQ2?= =?us-ascii?Q?ldHaQwLvq2BV67RdmYS9T8NzGHEttyakxrLPrbrQrIgz526+kgfaGkxuvev2?= =?us-ascii?Q?J5o6n21XvpHHee53nLKBmDOWZBiXyUoNIN+wllBglSbTq0pAcPdG6Djk9ItB?= =?us-ascii?Q?Ci95IcQVFs5UZZMFo3awv33UNtEHmn2OrOlT7XUtYvzExNX8e0hWaTep580J?= =?us-ascii?Q?EZQ8rlWE9nxCAp5W0zHm3DDwAykiIYctmR6lVbHLOSi0tXIE3g=3D=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?SuaP4WUJcJh09pKrNRxZn6JV87Ylzf8LzIWyx9F+KkRiKxkKJqcPgHee6zlJ?= =?us-ascii?Q?SXdU2wowUhNxk76dPXEiPho4uH9ZXxb/v22ZCduW1iVSXsI3tvmUf9Ti0WEd?= =?us-ascii?Q?AHzOQHOhda4XIfrpYXugOUWSLDz5PaBXrXWzHPpHJ8NSzz0zzssQBb799Az6?= =?us-ascii?Q?ovFYaTtGY1Gk/uikK/KyynSR8/s8JagqZIuJhsdVKWS6Q0EuVCuzFrADxVCw?= =?us-ascii?Q?uEhxBu0YfVN498ZYyybyosfht8vqK0vok8bJmBqEaU5mZaEQbYinKDzJUWBd?= =?us-ascii?Q?6lD08D2wPeb7oEGaAzhQpywBST+tDh4IFWAHXeB9KIvoK9r/FeRG5L4e9UPn?= =?us-ascii?Q?T6fQgdmXu+30hybdyxoJaLyWzTZDh0SkKMcBIczII5OOdwVaxKGMCFeWi3F2?= =?us-ascii?Q?RnmtDqG2FmGoKE20DWOEKMPDYX7EW2urUlA6v7PhSe28vTLH7qgl6qHEhc9P?= =?us-ascii?Q?c+E4bM4mSA5FitU1Ik+ZAcjy2p/cd6OtKesq+24dzrFnCS0L3lD+lMq/KCK2?= =?us-ascii?Q?pyAxK5gdK3qymMbBtdwWyVo5t05RrEllc8ILjFHahqdOyOjmFCyAx2M3GDTF?= =?us-ascii?Q?/nj+KKbvW+RDDgbkwyhpy1jNyIIwJlsuWarojWT2/RCu/tTZvjpt6bL/dRs7?= =?us-ascii?Q?1a/VFZLYQiJZFGtFwTr//UpxlLnnpRCc16+l+qUb1ZhAiH5zhumWDjWOAstE?= =?us-ascii?Q?vCBD0klSkNyt+1YG12MgPyy8VeGhCzsq+dKVaU9Wb5b8LrLm6uYbLrGXBTJL?= =?us-ascii?Q?2MBwfEcurAUGCISlNbiZZ7LKJkXuutNUgOAVXcjtOsjUccUqtSs5MgQCBVzo?= =?us-ascii?Q?/kZG0DcWRdSUQfgCgO2BTr9HH+ZEOgIT5r8N3OL0LpdzMWPsO9gJDEZlVsVu?= =?us-ascii?Q?1Q5LJr8uuZddrZKW42dHaCoZoU+MWWmedyoUoCHBy8APkKic/udYM6qOxM3D?= =?us-ascii?Q?I9w5lyEwLnPpIfbAPukN+We7bJ6qNlWhT+a7Az8n4Il1Dfk0IolXpEpAqWcx?= =?us-ascii?Q?l47Jl1NzvMDAu2BAJjmvFE0G8iqtcc2wfTVdmIhAY4MGQ47dKZD0TiB08yrt?= =?us-ascii?Q?OW3ioOovPsJxaQXKnIEJWB16AcbSeEPvxDszp9Zv8H6HMfdbE3TNZxmWHaFz?= =?us-ascii?Q?KQ61Duzvta0YjcEHD74cXwUEjHwARFm+Cc0Jwgaku8/5t/7LI+486qsnX1Vq?= =?us-ascii?Q?M5aJbby0W5nV8TeL3JS+lnEyrPcC7aq1X9Rk2da6hz12km0/THlcWf/xVNuf?= =?us-ascii?Q?WY/GsOoect5hjqtfK2fSii/5lFjIbeSi1Ihcn4WVJRU+OeaZYGi6JBt0nP7R?= =?us-ascii?Q?ANSa3Qoc3mIhnATSG8j62Z8G8gw81WSmSUe9lDMWVMWrnJp5nJUcCssFknU5?= =?us-ascii?Q?vQYhw9C9M3mlO6+61ix25hSXtJpJWVJEYY5qjbcODnW264sE3/UNYuddZMe+?= =?us-ascii?Q?RqgTQ15IBQst+Nib1MfohjdGqAZy00uh5LDJSsiTXDqhcXNCKjT9kmtJHRQO?= =?us-ascii?Q?u9itSgcq7aBbPYoExmkpaxxlNfT7YWyDG3OreqGctsDs6hqXRhgFWEf56c2q?= =?us-ascii?Q?QayNvJAIOJdXSpBs+1Al8nqDrdiZ+8L0jARlynN3?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3914bec-b3b9-44a6-a45e-08ddc95e063f 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:22.7204 (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: eLlObWRkclRownkCG8f6DvstBjlwFL8zfZpy2RuA7crLbkvl81ZE299chNo14IYA 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: RFARN277B5VUY3Z4OVRZXYYY3LSS7JAT X-Message-ID-Hash: RFARN277B5VUY3Z4OVRZXYYY3LSS7JAT 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: 1753255581636116600 Content-Type: text/plain; charset="utf-8" Implement QEMU command line generation for the ACPI EGM memory device. This includes: - Adding the device to the QEMU command line - Setting up memory backend properties - Configuring device parameters (alias, PCI device, NUMA node) Signed-off-by: Ian May --- src/qemu/qemu_command.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4b1e36a4c1..280211fbf7 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -1011,6 +1011,7 @@ qemuBuildVirtioDevGetConfigDev(const virDomainDeviceD= ef *device, case VIR_DOMAIN_DEVICE_IOMMU: case VIR_DOMAIN_DEVICE_AUDIO: case VIR_DOMAIN_DEVICE_PSTORE: + case VIR_DOMAIN_DEVICE_EGM: case VIR_DOMAIN_DEVICE_LAST: default: break; @@ -3451,6 +3452,8 @@ qemuBuildMemoryBackendProps(virJSONValue **backendPro= ps, } else if (useHugepage) { if (qemuGetDomainHupageMemPath(priv->driver, def, pagesize, &m= emPath) < 0) return -1; + } else if (def->egm) { + memPath =3D g_strdup_printf("/dev/%s", def->egm->alias); } else { /* We can have both pagesize and mem source. If that's the cas= e, * prefer hugepages as those are more specific. */ @@ -10533,6 +10536,36 @@ qemuBuildPstoreCommandLine(virCommand *cmd, return 0; } =20 +static int +qemuBuildAcpiEgmCommandLine(virCommand *cmd, + virDomainAcpiEgmDef *egm, + virQEMUCaps *qemuCaps) +{ + g_autoptr(virJSONValue) egmProps =3D NULL; + + if (!virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ACPI_EGM_MEMORY)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("ACPI EGM memory device is not supported with this= QEMU binary")); + return -1; + } + + VIR_DEBUG("Creating ACPI EGM device: alias=3D%s, pciDev=3D%s, numaNode= =3D%d", + egm->alias, egm->pciDev, egm->numaNode); + + if (qemuMonitorCreateObjectProps(&egmProps, + "acpi-egm-memory", + egm->alias, + "s:pci-dev", egm->pciDev, + "u:node", egm->numaNode, + NULL) < 0) { + return -1; + } + + if (qemuBuildObjectCommandlineFromJSON(cmd, egmProps) < 0) + return -1; + + return 0; +} =20 static int qemuBuildAsyncTeardownCommandLine(virCommand *cmd, @@ -10887,6 +10920,10 @@ qemuBuildCommandLine(virDomainObj *vm, qemuBuildPstoreCommandLine(cmd, def, def->pstore, qemuCaps) < 0) return NULL; =20 + if (def->egm && + qemuBuildAcpiEgmCommandLine(cmd, def->egm, qemuCaps) < 0) + return NULL; + if (qemuBuildAsyncTeardownCommandLine(cmd, def, qemuCaps) < 0) return NULL; =20 --=20 2.43.0