From nobody Tue Sep 9 23:43:08 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 1749415791587690.6612192318064; Sun, 8 Jun 2025 13:49:51 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4D80A15C1; Sun, 8 Jun 2025 16:49:50 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id EB43215B2; Sun, 8 Jun 2025 16:48:24 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4D6E01572; Sun, 8 Jun 2025 16:48:19 -0400 (EDT) Received: from NAM10-BN7-obe.outbound.protection.outlook.com (mail-bn7nam10on2051.outbound.protection.outlook.com [40.107.92.51]) (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 8A08D1569 for ; Sun, 8 Jun 2025 16:48:07 -0400 (EDT) Received: from LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) by PH7PR12MB9255.namprd12.prod.outlook.com (2603:10b6:510:30c::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8792.34; Sun, 8 Jun 2025 20:48:04 +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.8792.039; Sun, 8 Jun 2025 20:48:04 +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.8 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=unavailable autolearn_force=no version=3.4.4 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=tHwoI85+4fcSRe2BXLYqAeubOKucfgNLPJwYnF0HsJ16JFfJ6nFGgLs1upCMGDc0Knh/E7T1GKt85ehdivMtMmqUkITjRMiagnbamc4fQkfwzR+I+0xd91H2K1WLpi+Yex22uJCKQus9p8U2gmTFfjvQm8pLlSILtHL8q2cmjE+kbk8xzk+yi5bxrCtY9dPfItV5LmH0LI5NuTvdWPaPVCnHj/v77zsOMIDpVfUBRxHjQWpgMJm4/7pfFN6q1PSJILUV/oa6EzN1jzR5oVYkYaKSuounb6qiZ2C5QBcP23Hn7h2UoaDlFBbhHZ/Y7Vf/SG6u6pjSRrSC0miH2/FVTg== 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=7zxbQCrixrE5kK70jxRRCVlQwax7OMrKT/z6elB8ifY=; b=D3TH4IkxmiLVPz+nLSHDiW9R96SRNN2tDXkZnlo2xHle1F8gPhxsgLDdKytZTIyUTaVUOQndGgbaaXbxHrIU6hHEOHJ0K4HzWtNrrWFXfz3NX4tSRU8o56J7iJO4s0H8cB393Xu6paY5gMPbiMEBoy7Ien1CedamejPAh6t7DsKVgEcti9t46F0AAGisPm1HwWI7POEyEZ/7xof+s5bHD57qDxAh1A5D/zvNKL6MwRNNLP/7OIWfa42ZgxXDjIv8APYnbDnyVXnWngT87UyJqSAW5gNImt7o2QAynpWBdGrb1nVcyETpD8i3p7bqMWjuDvEGM+MPMtJcxCIi6ob45g== 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=7zxbQCrixrE5kK70jxRRCVlQwax7OMrKT/z6elB8ifY=; b=i3TpqwHKgfrZh3wgqQlE0lbCBOHr8J0FWrDTWaNpjI3HcaLfOk9r3QIjvh3AONJCru4D50D62Tm4Rejz6DMLqtjLnNYRVrubkIfrubTbdIV31wxdldUSvAoAd7wQOU5vbao+8hwsiqG18o1j96B7ieWu5Y+rnrzJoFIwArIzD1IwmXKDoDjbQfb0rFXvUjmXeKjXFQWwHN65mUIZfJQ2lef4Lm5n4hbumNRDd5t4qD2ZOsGtqM+fWD86kGwpZbbjZ+AvZM+grt5bHpjfxijBYGIuCM672rR8d1hxHVhFdg4dcm+he9nwMhqg6zAjegj/kuLWjUBN1sYlUUqE8qu/cg== 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 3/8] qemu: Allow to define NUMA nodes without memory or CPUs assigned Date: Sun, 8 Jun 2025 22:44:11 +0200 Message-ID: <20250608204744.518118-4-arighi@nvidia.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250608204744.518118-1-arighi@nvidia.com> References: <20250608204744.518118-1-arighi@nvidia.com> X-ClientProxiedBy: MI0P293CA0013.ITAP293.PROD.OUTLOOK.COM (2603:10a6:290:44::18) To LV8PR12MB9620.namprd12.prod.outlook.com (2603:10b6:408:2a1::19) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LV8PR12MB9620:EE_|PH7PR12MB9255:EE_ X-MS-Office365-Filtering-Correlation-Id: d28879a7-8110-4daf-ec39-08dda6cdc3d6 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?hup+or29tJ4DavvXdndnBsGmpr0lEN2yIQgvWqk0VxWTTMyxfcuU7LG5PJoS?= =?us-ascii?Q?vVbxZ6si39ZOAvul2EfdNa7bvLo7A5OM0PJqzkOIYZSPODLhaC3E8XepPzRT?= =?us-ascii?Q?O+HRurEYbIyPpf3NV35UClBSNqCg1XOm8b1i4OBf7v/6oI/VCjzgzpwZ8UrC?= =?us-ascii?Q?9dr44p2eiMZ3kMwwq4Of+P3Jr3qnVsx7vilLWVWFCpboH5onfe6eFhE7Illv?= =?us-ascii?Q?nNitRmIaupnCi+wFBBejrhdo9IgDaTXMlGNam23D4fVGPA8cKQwL1NxEoX3b?= =?us-ascii?Q?hjFWudJAC6m7aOPu1NFbAGoOn1JiRSyrx9IZUzRXIt3AkMK6AExTSQt/8TSu?= =?us-ascii?Q?yX5SpAf7137990zmTSyxopdqFnqzWqQIbPjVteZgbeiYc3biANw0hcKktG7x?= =?us-ascii?Q?QagyXhZIQHbn9qdqmUjVzD2gfJiVxEtmCyfbNBA71twS5GxSw+CO8bVLLzTr?= =?us-ascii?Q?kuNab2NUy7Rh8R4IrI7gVVfgK/E+Hg9wzPsKNPnObdnJaJy/IlKBB5YN+okz?= =?us-ascii?Q?xiJXD2WnXpZVbhytZmTuH4rNVJ0gQETZfR3wew35bpUKb/o/IMiekkQ9yKi5?= =?us-ascii?Q?ZkGz3wKWoeSrMMQSeA0HlvEaiZWNrazAILNEXTWwww1o9ZnPrHDxV5Q5Lhha?= =?us-ascii?Q?G3gHqJ+yUPK3R8xdE6nuIhkqpYKyvCpKr91CfEpAxFYYB/lk8PGshRsyBTTq?= =?us-ascii?Q?sCOaTRzx0dZapKRDzZ8MNQOHRdp/Fs2k0h1IlooifDgz2HG/pBADtnI+X1F+?= =?us-ascii?Q?nFYyY1FpHqfyWi+3UapGK+nxNuZSLMrQbxw/HQqKlyBrDrWq3s7OwT90o5tn?= =?us-ascii?Q?4DEMp/m0Qh6WuxH7vCnGqe0nbRkHv7IQCmWX4fpjhOto2SLXmdRQaRrpFZ9n?= =?us-ascii?Q?wUfMjvT/ktkXuM5iGcK3RzrYde1NmWa63Ra7Ol82X2uUP9hKpK15WRnTeuQ+?= =?us-ascii?Q?udA2MA/MecdSEMo8EPJ9pWH7xcvFoC8KMazGlK9+zYOq+i7igUOxm5+9sDjF?= =?us-ascii?Q?19Ys80lPqbMShukR0D+pcU7VQzdv3tfEdE4cZCKXhd3NuGV1VKfMzfZfWHZT?= =?us-ascii?Q?ho3Tz9Vg4HqR5TC4y3Y+Ppj+ayqJDsfV5S3uVTKYkD/KH8fOK1nb+vnxgfzA?= =?us-ascii?Q?274lZSaSavJw4FBbqpvOyNBDH/qs5Le5c8wJB+NudBBiaLsN1hjNGRaS1xSm?= =?us-ascii?Q?ZXOl4Fayvb7xJqXXl3tMhwsEOQlY7b1NDXwYz5ecvZUC7TSpD1OHKDF9PGmH?= =?us-ascii?Q?v8Dh6hsG8v56dikMAxm472vRpgDYdqGyIHZWeOV42zIDBW4bWpcbAzGhnRwp?= =?us-ascii?Q?332DvJsz+41Odz6iyems0G0+Wa4AKu7w+sKbpSMn0NGrkTQYWzCn8xs50FKy?= =?us-ascii?Q?qBFD6ornNorJr9JWi2tcgId0wN4OxVAfvd1BMIutxblcOUvdew=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)(1800799024)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dhozdFdqJSEtgieAj0ycPt1UM+Xn3EL3u6J4OReyLpDeW9LsCeO7UhSxP/c8?= =?us-ascii?Q?0otXtB9+CsABR3g1rpbmnNHGvIEse73v6PUty5tLXCtA84IrGYdlkvakA6v2?= =?us-ascii?Q?yWW1eaQfHVNvnfP18mffQSmix5TQVoB84BBlsMOzuhphMbzWyPdf6TDNHVUi?= =?us-ascii?Q?Z6R6qtio/TYzU7j8PEhLcBVTVbZ+4llqkgyjJ1uzTBkO5kVZm33r23PUwbu7?= =?us-ascii?Q?mMhY69g3E8EiMhZhCyjtquessGePI8Jimgc7NVb9kq2yXZb8/DrlwxR0vpX/?= =?us-ascii?Q?2IU1O/+Lnz7d61KcbXYoR+yZ2Te728h1ZxiagKLIEoJXs7FAvX6TwwSbrP2b?= =?us-ascii?Q?f7of944FsK+DyNzgqBMvvxxdnQTlxotOaXLPx/BXIw+UEHy5pJV42S9mfLSJ?= =?us-ascii?Q?tN/Rge5GeT3cOy135uTveeiv5nWb6CUv+20kWvqx6sh9EeZsQZCUjo+Gme/h?= =?us-ascii?Q?8nhP+eX31TrYJqn+nE0bwdywlN23V584GE6R8Dhmo2JM4EkEYO1sA98eD2gn?= =?us-ascii?Q?JHnFNQ9G5v9rqe8yZZaTNcl6M7LsstLlrv8LCfgLsL9lhRviRQD2z0VWmCtH?= =?us-ascii?Q?ykvjpcbSWetRtRojrtb8cnlQQYQcwdO7jKRnNBmQ2GGlKnNqcLHwole3koXL?= =?us-ascii?Q?eHRrc7txLkAaiL1h8LxGC9jfl2wcYgHXNZcKjfVveiiEI+/vuRcPe+jSM7hp?= =?us-ascii?Q?cSnA2wEV10KkcalP56MnvsV5TtYEBiKHyC6IC/6L5pkF1ay4ZrlZULRNfhxp?= =?us-ascii?Q?n6R3FIdobEuvdZ2/cekGgl6oIZWfO2UZW25ouVmp6zPJZgbLdvivle/zovJs?= =?us-ascii?Q?ZTrqMP4DwRsAl3E82oTMgBG/33Zzlc/PRkoLaWFVLh5rXIgytb5WtCEeIOh/?= =?us-ascii?Q?HyJQtnDc0z2EAaVdS9Ut8OkT7COPSHg8sHwfahoOdal8xwF4G+vnnLPirfgU?= =?us-ascii?Q?CWR8U9OJaIgSgtNjvwp/rAy4XDVS+7318oWLG7KbsY/6sNjUFXhj5hG13at1?= =?us-ascii?Q?hYZTdU8sRcbWk0tArsgxoRuB7MZMHvEhHKd+k25MYHJjss7aab2J01quPdHQ?= =?us-ascii?Q?TOIENzP/dTNjHKHPfiOR8rVyP/D6yrFhYNmIaV0wa0LnyqjoXDNnqROM2P2Y?= =?us-ascii?Q?LMFEGcXU+dHT/Dny/suvVKgP2Ttl8tLIIP3unHyjiKyt1ev8PzbLcUddZyBV?= =?us-ascii?Q?PFhpJ8Ce+uCU0/04P57PDySBvF3C4S7pQQ9WbT0EarQDiDsuUdz6acnqPNPE?= =?us-ascii?Q?IKByoQK5TC9/+EJ3UVBgnxmGlvntmDR1mc3jsbYzRBsWTl4qo2AvGmIgnlnm?= =?us-ascii?Q?fFji1ItdT2//fcakwpfYX2HUrPBr+0h2dB0Me+q5Me2HRFA6V6rZz6TCT+YI?= =?us-ascii?Q?6N7/S1FVGZuyO31AZzFVBeasCUt0aJAfNLUYf8722GKJZal2glLmX1U3tmKP?= =?us-ascii?Q?fV0CwRbKGbz12lgqhtOvvhxuqDjiTvySWmT4uDJ4DrsScjch6o8EA2+FCeOA?= =?us-ascii?Q?McWHJudhDlh6ZcHjOVa6pXQaQ2leACwiQpd2MD4NxSP5vUVKqbjCQHrkS5R+?= =?us-ascii?Q?SX2IbuMtuC0DvV1JkAEynP6HzISXZAaB+RC2pVjN?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: d28879a7-8110-4daf-ec39-08dda6cdc3d6 X-MS-Exchange-CrossTenant-AuthSource: LV8PR12MB9620.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Jun 2025 20:48:04.1620 (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: DGWSLbyIEVew/FDjt9XKxM5dRD9VmPO4W0oC7YqI5RApfUnOrFjfqXWAfyHT60Eg1sbCdecrwZsjuxzbZZONsQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9255 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: PZFR2UPWEOV7N47M7LAXQKUMM3VVZKB5 X-Message-ID-Hash: PZFR2UPWEOV7N47M7LAXQKUMM3VVZKB5 X-MailFrom: arighi@nvidia.com 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; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header 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: 1749415792964116600 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 | 20 +++++++++++++------- 2 files changed, 16 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 7ddadb37d7..79cfe60b09 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -7665,7 +7665,10 @@ 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; @@ -7673,8 +7676,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], @@ -7702,11 +7706,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.49.0