From nobody Mon Sep 8 17:08:17 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 1757164670903162.39527717962562; Sat, 6 Sep 2025 06:17:50 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E8FDF44462; Sat, 6 Sep 2025 09:17:49 -0400 (EDT) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 542AE4450F; Sat, 6 Sep 2025 09:14:48 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 54C9B4430F; Sat, 6 Sep 2025 09:14:18 -0400 (EDT) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2071.outbound.protection.outlook.com [40.107.212.71]) (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 BF692442A6 for ; Sat, 6 Sep 2025 09:14:17 -0400 (EDT) Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by BL3PR12MB6379.namprd12.prod.outlook.com (2603:10b6:208:3b2::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9073.27; Sat, 6 Sep 2025 13:14:15 +0000 Received: from LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::1b59:c8a2:4c00:8a2c]) by LV8PR12MB9620.namprd12.prod.outlook.com ([fe80::1b59:c8a2:4c00:8a2c%5]) with mapi id 15.20.9094.018; Sat, 6 Sep 2025 13:14:15 +0000 X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=ARC_SIGNED,ARC_VALID, DKIM_INVALID,DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, 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=X1TTaug+bgGEoU7Z4vymoZZ/qllF06GvyFM448QxSnLpP2qp2EwsHL1olO0dInCzloMq637tQHlIueTqUbBt9UkLCVw51As/Xkct5fwVyxZPwfHbfly2MV5ld153QdXIFJFIdYL6Hy3/htrv/ktoK/KzOGKJOcZa2xstVx8PMiYMi6aAfbN8IJPKOvVhm5L3iXyuefF+IlIWcR4azNWMfLd8PUq89ZuJa4EhX0l1kzj6+5TeIhlVCppjkMjFLw4OZPjgbS6DmEl/LNwUFsPYEzYxq9mYNF5v5EeQ+aFTKXMqaWlbE/aJU1fhzVVBkVM+3LwVDZnJZeQQWbsyEYLJMw== 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=6IN7BeoszzncNXEezakI9vbGtJCbIPxw/OSTdd8mqYo=; b=hmYhzObSthTlXidgHCtg2JNCGkl0k1oUUPd0sZPk6/oOHk+BDvh2ZHU6q3feobUvoGlgd4t+S00YTuiMB/hnBncXukk2s0XoOwnOk0xhNNaeJ6Uoir6wrGPLiuwHoZSmC/PPbCSCz9fH+kJC4MklMn4mcsMd4zcqxkroybgmCOXmbqDBtBd8VH++jKoLKZWKXxDW1cQeaX6K+b+AHg3ePz5wPOk20bNTZp2DuYYsHSxVDd92bN8bBkZLNcG0DFnq9Yt6wgIwS0gFkIJ0iMqv00phpFVMVEdpl8GBnJ3T22knbNKjNklixuii2W3JZIOjBYHmMJT10UsZeJqk7IZ6qg== 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=6IN7BeoszzncNXEezakI9vbGtJCbIPxw/OSTdd8mqYo=; b=POn8R5cJtnU9p3xMNbQXffZI5lSDj4cbx99jdEaQ3/q5BiMSOjNoOd6rR81dTLE6S4JG+GG9ii/jpXltU0+A/5aYOkSqwM2TzUsjSXQcQezPK+Pu2R187APrNC52YBQp8oVJ6p0YsT19i7UHxzniZud7j4gWoD9xIDELOdZthUNlbHrWPzL6XTUMwZJHPi08rniijAMbYJl43fL+KUhC7Vxc3BbxXv2eCa5eiYnaN2oVhcAJQ590V6pYRuYMXPPcMi/V4fza/E6zBiW2rEefIOG6nMwc4EMus8bzWSIiRm6kMjafMySPLVl+iTzF2WwB+g1K24NkKP2k0UhgpyJMdQ== 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 2/8] qemu: Allow to define NUMA nodes without memory or CPUs assigned Date: Sat, 6 Sep 2025 15:08:57 +0200 Message-ID: <20250906131214.654188-3-arighi@nvidia.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250906131214.654188-1-arighi@nvidia.com> References: <20250906131214.654188-1-arighi@nvidia.com> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: MR2P264CA0065.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::29) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV8PR12MB9620:EE_|BL3PR12MB6379:EE_ X-MS-Office365-Filtering-Correlation-Id: 30d580e1-035a-4e66-e41b-08dded474764 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?VTz8+M5Mg4KEqOorq4Uh7LTEay5wuGNkAoY9+7qnjEEQqwsPGdBnteknbq5U?= =?us-ascii?Q?d/xVP5YIIBH1pAeJ7QI6zX0q+Zb1XEWg3wJ1ux5uCP9nhPDhTKXF3y4KEbMf?= =?us-ascii?Q?6LnpnxkLCJuLxMtB3BJew4RY+MnYcJsZePhZhjj6BZC1uVU6Gxi5TMtUEMPK?= =?us-ascii?Q?ZlXwY9yWPjNQ+F+uY7tHEssd88LKWX1cKVnKmDcYcUzERvHyY+gc7KP+3zEM?= =?us-ascii?Q?IBHf2ssRxqGsS43e8babun3vARv3bowEK2bSBvXBXZoo/uyqWweVk2ioLYth?= =?us-ascii?Q?Hc0J2cDZ3se7YKoP2zo8PemqS7iOXEklsUvEU1uDGCbmjToRPY1gCIyfHmjQ?= =?us-ascii?Q?7tXtaK3107w6KlP5xU7O4rwFwsoLuG9aeKWatstLi3gbWMl3aow+skP+XnQ7?= =?us-ascii?Q?SV6Sz6NmIkCUtkApmOSldwooe3TwSf8u9Z7IKryv/bophBTa2dhHn3AIIz7Q?= =?us-ascii?Q?8XkcGKhiYO13hwQPj5TnK2jISAtNspidu8fc+OIRrRsACCGwm8AFMgKgrNo4?= =?us-ascii?Q?9XefZq/EZoYGRn9WDcp4EyDYCyJsmCb5LKhQNcmRsFvR7X2L2Yl1kT/N2/9a?= =?us-ascii?Q?LpS9CEJi1JF7C1vXxfQG42ZikfSLWQ+xPFzajSFj7Ry/veSskX3yz9UzsM98?= =?us-ascii?Q?xZZUq4d81stQ4MR044XInGED+JSVSPzZho559JKpgPSCBSzVFS3b/fk2zT7k?= =?us-ascii?Q?zPOyiCfywOK9HINhosJHWNyTMlLfim7OyXKb3gW731+8e6QQS0l5mmjp6fdz?= =?us-ascii?Q?ktbH9TOz1vUj+C3TGzE47tWseY7zpDr6X/J7t5qNkzFfpVMim7hH1vt0T0ym?= =?us-ascii?Q?d3uNypcLmlrsSfy3DCXRITx/9mw0W1rcXnergx8u5hxnldlcEg3JqoqAdfYW?= =?us-ascii?Q?dLgHibA59Ak0Ag8//zXK/CvyBF0ADLfOHX9oA2zSGvhAQH8zRGNaff6Ipues?= =?us-ascii?Q?HC3Wtr+vpHlugb1JNDz0JEFnPtuKCzyzDSQyETUHkXYhIxtXm9e/fEmvMmy3?= =?us-ascii?Q?kprW2Mrdb93R81BFZ8OHme3ipOGrmsejPofvyJJ9vcy9iNq2/lcNfKUhr6gj?= =?us-ascii?Q?4U0wKp742qc1OzDXOcxvRP6gYYv8+WckLbbOURPhV+g32VDI3y5YRCyRvrGv?= =?us-ascii?Q?Ncbv8XCd2EioZ4sz8H4xiUxrSiqO1hT2I4MTVZ8tAhzzZnk4VIP5OC9i9qyS?= =?us-ascii?Q?juFlGWFL/DPLT6D8zgQOYvx0SxOh/6Hp8gGlbTcmAgipthH6+JrnE2ap3Zh5?= =?us-ascii?Q?4RNX+3QiodGNjKnNXsDzQhEJL6Fz1t4RSuO9doSdeueWZ3KNqf4BjMy1P3M2?= =?us-ascii?Q?HN2tQcUiDD92BKcssdrDV7Tn28DCQV0VqRrpKCAQSjQSG5Aytz1L/KMB3u1j?= =?us-ascii?Q?uQPkwAMzOmsxexj2nB1w5yMdq+7D+RJBF/ekb7qZr4ANBXnAZw=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LV8PR12MB9620.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(1800799024)(366016);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?lWkxL6ZzXGa71GmD4NCphodQWfofzN8ydczQheOgVTBQXYviRVLu082Shunb?= =?us-ascii?Q?IWjtaIiz7cufswN62CMTZ+DSKoqOFydvobWJ1vw60SGfvOTdAA8wGflu3aWE?= =?us-ascii?Q?Q+2FkTUNTGdTO5fxHPOAj3uFUtPiAYO6PacniR5zalgeYTGVsIlCd+XfOJSM?= =?us-ascii?Q?vV5WobFphF/q0t8qXv5oMQ50J9DWwBbvyBjpVB7HFbsFybiDr9uFd8DXZXWe?= =?us-ascii?Q?bVVmU9ayP6Lo41tY0ffmgLvpqH1vC9DV43XUJOyZ3ByXcHG65sfdA3kHFyhQ?= =?us-ascii?Q?nWyXiLTc3XvmNotU9eTH3kTGkMvI9x48ee6YqmBKYIkgwhjoS8k7cJCL9ANZ?= =?us-ascii?Q?pnPspnkoUlvZVOLPUwG21rCUTr6AKkryDAwksUmjPhAVKYC82XdYYC7xNffR?= =?us-ascii?Q?30Ddm1W/KfPE2IRJZlIm970d7J/4LX/UtshzUnjEu4NZE8bJSsMLJisAi1dF?= =?us-ascii?Q?Vc9VJ/pjDzBxst29zWDGOVCoWUWCboowzvpoIfTfVFqi3exnrGGULrnh26dH?= =?us-ascii?Q?J/mzAKsy7nr22uab/Q8bcGLk3udUTl/Z5AKfqD5MJV8D1rmAF7n7JMAIJewK?= =?us-ascii?Q?ZLyT7sQvmLmswtq/keXIe2KkJs4VMgZmk1Pr9J4+HBbzzTjcAIM9mEhqNntK?= =?us-ascii?Q?5IXp4K+9obVm7lkV2UKgo3e7z91J4f4aLsd2Y+SxyMe68IW72WlnX4VKq1Qu?= =?us-ascii?Q?5oLxD/TmJOYMXY9JTjGu3vPGPK0m1xSkdgymWgJavJbkODaLcXtoD7Q/d/CE?= =?us-ascii?Q?7crFusnyT2mb8567FXe7KZ692wFLAxBlnQVPM68PEv42Z8j8mQ8hPodyeadc?= =?us-ascii?Q?dMj5H/F0VVETbDUrUft63LiBk9uKn2BHBkJYaXc2U3RAvGqsffQjS7M7vVTZ?= =?us-ascii?Q?7svmh3HKaao6wrVfhPd1GiZlluMguO/3JN+fxTQ5wfLhP/KpCP694CkkeuFl?= =?us-ascii?Q?RcI7+ZHgCTMn/2bERVZpCBSwNOdxjVL6TIWOmhpWIdcOQrYdtkFo6ByjG48N?= =?us-ascii?Q?aTH9xr3jhoZ/yyGc9P/Z4XKN+i+FGEPZS61xgYO0AeAVshMEGBeeAjP+qy2I?= =?us-ascii?Q?d+NHA0dOUAGLRXt6beZGYWxySr4MdTnwfr++Rd8PZ0ktoWF60O4SfbzmO55H?= =?us-ascii?Q?uXYTEZy8awKccv9us4W6a2o2a21kw0j2ZWdw6AqREI/6x+w4UNE8BZ+EbyEl?= =?us-ascii?Q?FuppxvLnUJGnUlA5A4ovPV7P6T/dHRbbxauOuAsnTopvVWC4nw+65SzkW7Er?= =?us-ascii?Q?RS96Envm/+4AwqZKxq3vKSE1GD+GvIKuoAiikf0m0/iub2yA+mO7zRtekuCN?= =?us-ascii?Q?FZXptMUn5ey2i82bUDecU3kOcDVKj5jZmveGifyXu/zPLtr76ljOBvYCA3k/?= =?us-ascii?Q?J5/Pd1CBCAL9PmWIAjgqOcQfzeusu6nD1UMAFASdpgtNYW36YU4XMz1vvG4p?= =?us-ascii?Q?H6eMAkodTYZQkvV5ccFitDY663EXEfh2jtF9lg3GKmynYXPhS18GGWqap2AN?= =?us-ascii?Q?LGy1pQ0vpMXED3VmVUPL9ZfP1dF+GNUZ7jht1Up9OVq44UeBK5gPDGscDFGJ?= =?us-ascii?Q?I5D1Fm2krb2vZwBMFl6lPiEITsSERgI/s8KmpERm?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 30d580e1-035a-4e66-e41b-08dded474764 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2025 13:14:15.4270 (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: HdeO0TxvrNG6SywdKckSRE0cqGmqYsOBhNUNAsGRVlE4A1DJ2PZgwDHbtDrS8rWDkwqPyfDhNDD+Uu4Y8dY9Kg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6379 Message-ID-Hash: YSIQOHCCJNZMWJBUKOTMUFC4XYZSWFYO X-Message-ID-Hash: YSIQOHCCJNZMWJBUKOTMUFC4XYZSWFYO X-MailFrom: arighi@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: Michal Privoznik 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: Andrea Righi via Devel Reply-To: Andrea Righi X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1757164673796116600 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 Reviewed-by: Daniel P. Berrang=C3=A9 --- src/conf/numa_conf.c | 3 +++ src/qemu/qemu_command.c | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/conf/numa_conf.c b/src/conf/numa_conf.c index 00f0c605ee..5b50f3e3f5 100644 --- a/src/conf/numa_conf.c +++ b/src/conf/numa_conf.c @@ -1492,6 +1492,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 e8de386f30..3f9b583985 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7820,7 +7820,9 @@ 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")); goto cleanup; @@ -7828,8 +7830,9 @@ qemuBuildNumaCommandLine(virQEMUDriverConfig *cfg, =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], @@ -7857,11 +7860,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.51.0