From nobody Fri Dec 19 20:17:29 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 1739348012502198.28278124930557; Wed, 12 Feb 2025 00:13:32 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 996) id E46111826; Wed, 12 Feb 2025 03:13:31 -0500 (EST) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id BE58B1914; Wed, 12 Feb 2025 03:12:39 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 996) id 84E9215FD; Wed, 12 Feb 2025 01:29:18 -0500 (EST) Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2055.outbound.protection.outlook.com [40.107.236.55]) (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 0A2C1145B for ; Wed, 12 Feb 2025 01:29:18 -0500 (EST) Received: from CY5PR12MB6405.namprd12.prod.outlook.com (2603:10b6:930:3e::17) by DS0PR12MB7745.namprd12.prod.outlook.com (2603:10b6:8:13c::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8422.18; Wed, 12 Feb 2025 06:29:16 +0000 Received: from CY5PR12MB6405.namprd12.prod.outlook.com ([fe80::2119:c96c:b455:53b5]) by CY5PR12MB6405.namprd12.prod.outlook.com ([fe80::2119:c96c:b455:53b5%7]) with mapi id 15.20.8422.015; Wed, 12 Feb 2025 06:29:16 +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_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=kwz04oWQ2CWyh8IEUtCHoNnfPs95/xsrwMzSMMDOJAM8uKaHh0WfkIT0Rs6xtxlxQCi/0JrvRhCOkYQXSqDaSEeBEDnD1SUpulGYRSMw3YLLASzrx6HA+nphrxL1wvYcuiHCv/tYJaWiIUaLkwD5ymxf5zu/5rBNRgvf/fONXpz/gxcDARQ2bHvVbJdJMXEXb1wiCGv33JyCpUUea34EpFtSCLlNlFn2mPLDDFbwD0EdloWBxMekebfDlLCZ44XMpnmTerwz5ZyuAHJGxRFmWEXM7oSjsuETN9z4Rw7ta5itU0u5v+hRPuclC4dGF6Fk7TEczIN0VvXwE9u7ULMiZA== 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=YwfqlyHUTusx/Q9nEMEQkZUHXPwBSr94UPanOHcKMZQ=; b=i0zVDS724Up60pzf2lhM3ovwxjzDZxkWwhNci/k+x4EHn9TD0dhzgr1LH/SwepDXgtU4BdMLB1IgosiWrGfNipupm4fb+RFcLCUZA6BTCOUJbq3R5NmxloZ2fFoBj305Vf+bSmPA3T5xpAVoAHbgFeY1GSVDmtUBHxK5tZjv+EQBcsy+7McIHn4JmiNd4Zal/ncsynGFgObmUteC+2GB8PU/9f3mrZFSlNG9MptGmeIvmWoKrk6wgOChOS+oTQq/fVJ1fsFWI6zJgs/rWz9NBjjRk1XmCysq2lA0AR9uzofZfcnz/jVqfGtof6Amd8wlbl01iNiFFnJtf/XDhO3dfg== 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=YwfqlyHUTusx/Q9nEMEQkZUHXPwBSr94UPanOHcKMZQ=; b=Slvnew9Qm7HmTyvtGmZg8WAEJuUn0oUqCKyrz9TUC/F5lst/QEJ6EZ8tcLVKs+KgAMX1lBYlMm5L+Ps9N4WHJw/glP07n5+W9iYEIf/aLrGH4pBM+D0h6SvUReMs6oSyq3GNry0me4S6TgoniZuxaqXHKo/gDbaEn3tVWBiufAj0ePgNSrN3DWrNRqSwv04UkcjBQ7QxjjzbylmHW+LNUpKYv95s3d9dSUylM9+unf7iz15rmUs7WoKCy64o99f6yNRwyUSi2MFlhWKlHDQCoMk0qbbf99YwDd5FwPjLS8UaxoEnEU2HNx8nhS0E9BCyM81DJiBWU0D+6C3wlNvv/Q== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nvidia.com; To: devel@lists.libvirt.org Subject: [PATCH 1/2] qemu: Allow to define NUMA nodes without memory or CPUs assigned Date: Wed, 12 Feb 2025 07:26:08 +0100 Message-ID: <20250212062905.321572-2-arighi@nvidia.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250212062905.321572-1-arighi@nvidia.com> References: <20250212062905.321572-1-arighi@nvidia.com> X-ClientProxiedBy: FR2P281CA0013.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a::23) To CY5PR12MB6405.namprd12.prod.outlook.com (2603:10b6:930:3e::17) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY5PR12MB6405:EE_|DS0PR12MB7745:EE_ X-MS-Office365-Filtering-Correlation-Id: 29489e3e-0c61-464b-0f0a-08dd4b2e9314 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?JDMpjBEJzbnX/jWeGOeOiWMNidALAXCSW/USA2JERGcuDvrTatkFUl3S6pFW?= =?us-ascii?Q?epFZIzaGUeaT1rVYVz7utFscnx1kb6AsvSSfxlJbid7K6LQ+pMsUZ3kwLdWs?= =?us-ascii?Q?1zX9Y+E8h4vwu2V1B6ZRw1iTbwjfcB28V9HcJVv200rUSXKGWFfWFBQSZyGP?= =?us-ascii?Q?fbZTqxQ0DmHsUijv6KI3mLSPiXgHsSpxQ4dBsId5vMkz2P23+ibsiLS1P8F0?= =?us-ascii?Q?SoQuDUcjFZ1R98UIOhiGq7vYn+jKaoC8wAGjtfnwupZtEd9nOx9hUsparwLG?= =?us-ascii?Q?Xj3cjJ/0htrzwVhZ49LzCCY2X82mqhv5XgKRtoQHIqBzNbGoOu/2dr/sRVK8?= =?us-ascii?Q?oXqfPJGrptrPUjusZ3sxZf3Z3bBzzTI3w5gtkNp8R5ZqV/CuFkoSdtW3sbyp?= =?us-ascii?Q?UqENs1KrSCRwODqymm6WyzuWxHqOqkCadtgd0ivVO9H5Nm7nJ2yjelVPMVHF?= =?us-ascii?Q?3YxSf+xV98MiZYjh260uDUdQ+J0YrWf1xGt9bONUhvpG+Er4ZzJ3b3n42cxA?= =?us-ascii?Q?iwt5KNaWdcAdTwZvnxIr6awa0qTi9PW/58XzsaJt8Fdk/vvMz/DjT3ArkFle?= =?us-ascii?Q?xagF21Mve+tck/PH6Bovi0wztg5QtZ/lyryvYPdoGYCA1k9FvmRf3O2qKG7c?= =?us-ascii?Q?8XwGgPRh4bw6w3jIM8LV0ffhcxQ8oDIyMw9sXIC1kd7xMiOXnC7WANgwvdXZ?= =?us-ascii?Q?mEir68nmnW+bATg9yjqjRkZWbqs9CdsKdvmlM4wZ33RAe7/NstySAroWKMCT?= =?us-ascii?Q?GAYkXOMmyR6MYJqiKaxWOCbUGARoa8dq6+z+MiOUvH9N+nrycLiMBfBMAxia?= =?us-ascii?Q?6hhwbxBucUopC/mb1QsXEDf64JPysXBP8Ybnk2W1T9+DsacilYIZCk+INz/8?= =?us-ascii?Q?FZTLnpuC227Skv9bPBVsQaMSswWw6a/6qpNb7warwg3bSpK9q1fyrtsUSUOE?= =?us-ascii?Q?Dd/2qCeDq0mIccYQZmiO+ehL/2V+zc4xk3Yl80LcDMTdU+e18DK6ScSgPDVW?= =?us-ascii?Q?DCEJ3eD22DjZ65mRZ4CKg/K2pdh+mwWo5QRDCU3hpAC+bYrkwCUdW+ggdlu/?= =?us-ascii?Q?HmfiR0nYw2rjnfcoo2WgXGJXHHeBpD+aK2Trno5LZPhIB8476fTpDUTuMJAc?= =?us-ascii?Q?Xg+zc+/7uAx7pXQsLLR/uNmgIBdCIK8+2RHQzgONN3F4qKGx3E+BjJbXtV/C?= =?us-ascii?Q?eg0PZ1Ye2sYqrzVUscz6FUw6eeYpr/2GO6HYZ8RkENCe16kY/PM0VOYEHn/A?= =?us-ascii?Q?W9SjiSAGOEizxTJrcElA+q8Xw4QvSMePSFf9XDz02vyl6B5lph3+GQyoDGzo?= =?us-ascii?Q?jkCJfg+6pnj5/McnZsBLr7BRfHxTqkdteFWEFdxZCICKRC+cMgvnC5QS+MZj?= =?us-ascii?Q?PLpJn+9ObfUfE6+RZUdL9FTpbsAJ?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY5PR12MB6405.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?IQg8/yeltWSnbkE3sw0DnIvCU8h66rLLdGk0J0H88mtUiX8TAkMxl/6uEo1x?= =?us-ascii?Q?/Pgoz6pnuGsWnSpEdvrmK56mep6yhu/0Dy2CiBBGHz7zC0bv1Nsa0aszGavF?= =?us-ascii?Q?xVan2f1IleWSi/fZKAtVnjgl0tMlGfDlNBLc5YrOWZB7n+o6BpbpBdAQDTej?= =?us-ascii?Q?7fjdryyBtd7ElTqIbTURr2dDYnmvvx1j5JuQZU7VBT8VkUYl5HvhKMj3Uhwb?= =?us-ascii?Q?hSACsggIWMrHgl6KQ7RFMLHomquXB04Fl5kwpgxjMNGyZ+ylm/oFgRs+demQ?= =?us-ascii?Q?2IH0PIVCDI/fglDti2GtE5WjIqUXdbbAor3qyK5jQjnkQrffYiQV8gD/6/kL?= =?us-ascii?Q?pYD0H4R7l1DnyRlyBXwSyinbbuiImoIhaXnFLXp6yT+JElvfqt8LsbfjNbtv?= =?us-ascii?Q?bSha7llHlMbaoygxHXCnnHnpUejhUdCH/4gb09daFfxGSmx0Xg663AhdG6H1?= =?us-ascii?Q?jr1pBNPm2st4w2+sHWsiRF7cHeT+ZV+X0pEgn7dQS+eft0w4dUfIxBAifuYE?= =?us-ascii?Q?M2UejSTzWcCt8UykV5eh8XLITieb0gy1R+3PBHhtONWcRfOEwSUGz3KJnJ6t?= =?us-ascii?Q?h8PsE9g8jXhVWE+DM48WQg7NHgC4QToCLTzmyS4Zc7KvJMMakirr1JFrC27G?= =?us-ascii?Q?HxWmcUqq0upfC2PpfHOd0Bwtc3NQUbprafdiE+JdMe8FzkazzL+oBy+e8hBf?= =?us-ascii?Q?7E4iwull16qgcxgdFbNu09ihztfXzqMVA7KxGxFqpKxzzf47kfYzlRLivlwB?= =?us-ascii?Q?98um3s5gbdyCHxNAxPQOjJQn6XhDbuMU6c1ytpCn5Fe53IDnrsgE5AewcMeD?= =?us-ascii?Q?MM9Idm3BB3VdhuTEIISGqu/7HcDxrGOhL5zGZ31S6wN3ftnEZ0twuHJy2OZ4?= =?us-ascii?Q?unGlEjE7xhjYbDpUGMnsgVLEnJoktt5P3tV635XstCkTCiByAxeoZaPSd5uQ?= =?us-ascii?Q?ORJU7t3TRBavUXoNAe3jaMMHgE9sOShxUV3+Jz4w2xnu0N/qSmS/4ZVbBOh7?= =?us-ascii?Q?VIDLoQY6E10/+famiCdlvzBNtCbAH8DHE077yjaT4ll18LqDjSDFyUtvKl7A?= =?us-ascii?Q?cqgriVa01ujB/wH+LMlXMdAe/ss/UQLMGyLZ5gwPqOxKBZfxgN+iwtDuCplI?= =?us-ascii?Q?vJVeod3lKyLfXTRNjhMntvqeuLRLnbLq1jcqztFwToPQXW6xSCKpHwmWlQBj?= =?us-ascii?Q?3sYqZghbXHPSfWh611cj5qqf4X1h2muv5D6R1RSmDeAxTIWdP5neFbW7E10o?= =?us-ascii?Q?K8K0yqiW+eZaVqWEiCYaZ0WfunFQgzTNjPfLwzR6XFlJ0Xdpy1sPrsAlvvIN?= =?us-ascii?Q?FFTzY7nm07a8df6yiErltVH3BWhI1YTCyyqaGWTN1qBYMALhLeMg6XOmHDN/?= =?us-ascii?Q?pV301r0z5GjnXIfBPlThwRap1kuhHarULpxItMRmubEqiwCj/JFFCws5gnRm?= =?us-ascii?Q?ZAji8VbBk4CGSUlZJntHm9BWNjj6l9xOj4T/GVL0YWsFx7b2kSu+gSCnUDuG?= =?us-ascii?Q?Kmq3udrbWrbsocSnnBVcMfAK9PLC/jpa8K6jG1JLOiRg4DjBiIkrf2w3OhaL?= =?us-ascii?Q?s59DnpJfhzizN67sshKv6UkV4Kl0GomBSrFIshiT?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 29489e3e-0c61-464b-0f0a-08dd4b2e9314 X-MS-Exchange-CrossTenant-AuthSource: CY5PR12MB6405.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2025 06:29:16.5756 (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: iBgJj6hRiPLideYV0N42uQPdggxk01ZWtUsKttrP7iT/WN1l0riXfqpGFykMy9aRCPhyDUa5gTr1ezoa4vEwww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB7745 Content-Transfer-Encoding: quoted-printable X-MailFrom: arighi@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: 7RE7SFIYFG3VXAVPJ4U4HCDNVX5DCAES X-Message-ID-Hash: 7RE7SFIYFG3VXAVPJ4U4HCDNVX5DCAES X-Mailman-Approved-At: Wed, 12 Feb 2025 08:12:35 -0500 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: Andrea Righi via Devel Reply-To: Andrea Righi X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1739348013902019000 Content-Type: text/plain; charset="utf-8" Allow to define NUMA nodes without memory or CPUs assigned to properly support the new acpi-generic-initiator device. This is required because the NUMA nodes passed to the acpi-generic-initiator object must be independent and not be shared with other resources, such as CPU or memory. Signed-off-by: Andrea Righi --- src/conf/numa_conf.c | 3 +++ src/qemu/qemu_command.c | 22 ++++++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 0a0e2911f7..0b311c9416 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -1498,6 +1498,9 @@ virDomainNumaFillCPUsInNode(virDomainNuma *numa, if (node >=3D virDomainNumaGetNodeCount(numa)) return -1; =20 + if (virDomainNumaGetNodeMemorySize(numa, node) =3D=3D 0) + return 0; + virBitmapSetAll(maxCPUsBitmap); =20 for (i =3D 0; i < numa->nmem_nodes; i++) { diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 7370711918..03d0676f45 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7567,16 +7567,20 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg, } } =20 - if (masterInitiator < 0) { + /* HMAT requires a master initiator, so when it's enabled, ensure that + * at least one NUMA node has CPUs assigned. + */ + if (hmat && masterInitiator < 0) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("At least one NUMA node has to have CPUs")); + _("At least one NUMA node has to have CPUs")); goto cleanup; } =20 for (i =3D 0; i < ncells; i++) { ssize_t initiator =3D virDomainNumaGetNodeInitiator(def->numa, i); + unsigned long long memSize =3D virDomainNumaGetNodeMemorySize(def-= >numa, i); =20 - if (needBackend) { + if (needBackend && memSize > 0) { g_autoptr(virJSONValue) tcProps =3D NULL; =20 if (qemuBuildThreadContextProps(&tcProps, &nodeBackends[i], @@ -7606,11 +7610,13 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg, virBufferAsprintf(&buf, ",initiator=3D%zd", initiator); } =20 - if (needBackend) - virBufferAsprintf(&buf, ",memdev=3Dram-node%zu", i); - else - virBufferAsprintf(&buf, ",mem=3D%llu", - virDomainNumaGetNodeMemorySize(def->numa, i)= / 1024); + if (memSize > 0) { + if (needBackend) { + virBufferAsprintf(&buf, ",memdev=3Dram-node%zu", i); + } else { + virBufferAsprintf(&buf, ",mem=3D%llu", memSize / 1024); + } + } =20 virCommandAddArgBuffer(cmd, &buf); } --=20 2.48.1