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 1757164726581224.68901751799058; Sat, 6 Sep 2025 06:18:46 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 09BE244471; Sat, 6 Sep 2025 09:18:46 -0400 (EDT) Received: from [172.19.199.3] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 124AE44314; Sat, 6 Sep 2025 09:14:56 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BF5B84444E; Sat, 6 Sep 2025 09:14:34 -0400 (EDT) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2083.outbound.protection.outlook.com [40.107.212.83]) (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 DBC2E4443D for ; Sat, 6 Sep 2025 09:14:21 -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:19 +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:19 +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=MTKrUnbPJRaDB9Un++rXLw7+gnwwTUun1QrdAUir106UDsEOkKe/gyIQ3hAO2ovqUALk24ZOlIMv/hZWQhNDbrdy1gXoa6n7aU8a9q47Aqs5rluWd9PuexMbTAaF2twRH1Oiu5N+KygTBeyJWvgZplRP+7GPSP3pxFKa2ReTCCvCD4G4GDs8ukrcXKvyoM11Y7/iSrS+yDhZ3Y5bx23H5hF9FeiP+c6wGwPKgSSkEGKyEUgxyMUCOtUTKlohlQOiRX60cBT6kSRVFpXAq8G6O2J0r7dcshKqYqiUCRkImMHwuaWjALscTNAJTiGyUrn4nIWaPiOrtF3H9M1NfSBukQ== 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=POPoHCqzaJyxJs/HJx7Kw4CGfZKv8DRC7TkTIk7Pk8k=; b=kiOSvaePSFnf8jZXkGPVFIMcKfaR9lrtKTStYKSLo61AOzm0EDaMOZ07/E7M+JDee9bWibXMi4CwB5bKQlgDRT3LbAbeGnphMs2N8bjijTgvyJtSFps3eBylHyabjDvwdnenuT3m+HCfFj4U/0gvteIQ+3Cu2RmEvHFGjQLLTUIMoGoHgJg4bvXClBARCpkB8rfkBRVuM/SBBqCok3YEGs7GlN7noJjZYbK7FOro5T1VM0ACQAeLo6XrUcoo+/hpx6KpvpQI8uTLVV3EHhg6Z9QM8usRW40QnQ4c2AX4U5RhuPHj298HUZXG0N0ikwmqE0U9oJRwM9UzjtDGEvh3wQ== 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=POPoHCqzaJyxJs/HJx7Kw4CGfZKv8DRC7TkTIk7Pk8k=; b=IccsWv9KdMTbnP8+/wzUEPaRax/l5CASDp+iG5qTRhRx1w1trpsZ3t5fo0J/Kq4s61lbpUGHJDIojAqArww1VGtdoMznD4rYt1TiSj/ZIfPmScsAdKgdizatZq586cStTOfIjcftORYPIBkn9OmuDUrebwwjEjuVRony8W1St3DYodbNY0hB4DV69DbTcmFMv8NCJQNYm1Q/qXvhkZOMH5oYuOxFscTD4mt+MOSjRwUqC969foI57gUvaoEqxu/vCsWtQPs9qVJAA4/6Bxdbr62kj/M7saj1ZhrNXdI2rlKqpdC+KAogSDw3Pelo+0uBkyX3E5Rvis31T8T8vmVw/g== 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] conf: Add nodeset attribute to the element Date: Sat, 6 Sep 2025 15:08:58 +0200 Message-ID: <20250906131214.654188-4-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: MR1P264CA0015.FRAP264.PROD.OUTLOOK.COM (2603:10a6:501:2e::20) 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: 8e5da1b5-a807-4043-6b11-08dded4749f4 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?H+rAmKRg2ir2+Xv4WiLTG/NW9fCSR0LBMep3w7sRTUK2ap1a/gg8HC4ygabv?= =?us-ascii?Q?yVjSn8f2THE/zO9ycJZvwHWHl0YTLwJMr+IYfKsZmpBJAM5UgeO7/0mxhR18?= =?us-ascii?Q?6Vnt6UHkeXCuXR526NuWmx0wSLj2lKl+4ajgCrOFbYe5hGdac1GnS7v8X+Vd?= =?us-ascii?Q?n0gExY/E5qnbBjbFqISjM9Tt7xAJOqFblsvgiftF21nMcBnz6oAPoUx5uskj?= =?us-ascii?Q?L9Q85WOpPK1RQPsHgGGvP8kkSdlb6SU4fl8hoPUK2fSEZ2dKVn6nkWo5dIRR?= =?us-ascii?Q?o+k/ad+LW1s9Hh36IpY6Daci9223Wn0kkw4IZ94AYMT/0ilNc/ErWKwuUZIV?= =?us-ascii?Q?+2i9k8uZusMNdVTmz2O4kJy80Wk3b5m/iufVvZ3Tcny6tQDtQELghcPD7RxK?= =?us-ascii?Q?8dXX9/Gy/YjSMpMYSAeDdI9PBpymDRNdDvQMadDtBGSJ0jjqk50kvx0bhYy2?= =?us-ascii?Q?dmFUBRjtPRMOBep2tNaRi/g2BamDZjGmsj1AqxH2tkymF/OYVeZGPgIfAjhq?= =?us-ascii?Q?PR7XUmsn07lUGr5gPs05g+VGq03MOnO/jYfudhhiJ/1m8TuUc3cnV0xAreHf?= =?us-ascii?Q?DwYn5p9wrYzAFgk4+AgWtGVvKimDGtB571ByZsN4JM5PrhnP8+iDEeTalGS6?= =?us-ascii?Q?GYoAvk4KjqLlR/og2jMkEFmfEdk7FC16wtNmhO5IaXGM4Tgnvjct4FWOLhS3?= =?us-ascii?Q?VgIK4g6ja7hve++yzFNNRQRKoTF0KqB66c71yTtYtGMg6Q4UJbJeLWrv9DDK?= =?us-ascii?Q?TwC08ZqWHhrBMJQA3dJmS0erYJuinvSah14/n6LXE9vSPzQCDZu1t2Wno+iN?= =?us-ascii?Q?QSrydcrt93w4+dY8Pz7hdxN74AMAQ4Smvbays2i7skyfouBOPS3GGCZ0UA9D?= =?us-ascii?Q?XFXtv51+Ul9ty5Q2fEsDjkesdm3Nn/MzljkylYey5Jf0R4VqgDcCOcL5XRNQ?= =?us-ascii?Q?i7P0yYMQoI01rb5XOARRFg3yFmHngcLUDHYaNBR8y5Rr/FH97btqbsIm8NbW?= =?us-ascii?Q?TLbBlf/nwFsRxSEz9FOZ6FOvH2BqTR8NxIR/q/7fxMbmBH5o6VHZTPT3ZJcM?= =?us-ascii?Q?ZdweWfYz5ZuEwSPWVgra5m2TGfPZfqwg79UZ8e914RcZ3B0Z4E2/5a53u5+b?= =?us-ascii?Q?ZnCLt5KdFyOEEANGsnZ3uphZiWFCsKYjq/B+9+r3qniugCrxRxQwxzTNsmOi?= =?us-ascii?Q?8vXN+5m1h3gjsxAhtITG0IV3kxvyWS3U7vrZwUDfB3/UZGgn5LGWmDkLTbdQ?= =?us-ascii?Q?z+V2UgtCkLKx7qkapvgo96GxJvHne0267l7LaIEHcvA8TNdvGjPr4tri8+kt?= =?us-ascii?Q?FoIw1AogahCFMvtdsr7fkfwWF/LqUa7Ob7whI5SZzYQituWt/zJrAZ0UXByH?= =?us-ascii?Q?Jvk78pT4l3HoNucRYOI04xbhd2RP5AMflYvVJtLfFbNWO3Me+mI63i82tZ1F?= =?us-ascii?Q?cT9TFBv9lnA=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?f+5H04/T4ipLi2MwoI6GH2fFCncoBzhJgKoqK0YhffDPXshXwk1hm/v6xmup?= =?us-ascii?Q?i2/fiiN+1HNWaaXyNSKM+/cizLyGg+GFGuliq2LeOBunqoiiY0Lf2DcJhl1Q?= =?us-ascii?Q?KhUsep2F1MySCVEPwDP0zp2B4uK0nshcQN5WlUw5s0nl2qi/Xh6OfZJXceO1?= =?us-ascii?Q?SZoIQA8a18za708QFRRMKbpMegwA1Ujv62LaqE/xEftwZJ4E3baySArvL08o?= =?us-ascii?Q?7MXh5LAU35PUwFeZ4gTgyqqOr+++oxKvB2ZVIHsswt+BOnMp/DME/njHmu7V?= =?us-ascii?Q?xxUd2Hem+ZRU1G2V7T550NTTkQ/jkSBZgYoZ/p7hfd1eTWcjoaKQ68drdopH?= =?us-ascii?Q?rK/fP2bc6PObCpX4SoQwmavWlVcuGMhsj49ahfCq7tNdNh/83dpvv0uIqgGM?= =?us-ascii?Q?/VuLCIot5xzXoJOHu40tpLVZS4818gLJ52VMcB8QZVHeKH3eStHKYxFa5kek?= =?us-ascii?Q?Kec8pdwdxFTJrxucvozRKMer8sjpQ7VsvOvSLsT98mlXnV5/3r0icZW9ylq5?= =?us-ascii?Q?s7BpRSQIwjk5EEOGGtY/VSD2iMaIptCM5wVDiqh9DhPu6zlmaiHwnf3V72rz?= =?us-ascii?Q?zmAjnNXEt29xXcgnWqWwqB8cXFAvzumFRT/DNh8hpzY2+p8xGMoMHyEYFCui?= =?us-ascii?Q?ZO5TybbLiNkFHuI2h/dawCvvpmLLad2EoZMXkglF3kgQcklkdxCVle6ciiZF?= =?us-ascii?Q?yoqoSbokl7/tGlV3cjQBvp0/l5Cn9Bguh1IX063yBM6i8GfUy7pzFi0hD1nw?= =?us-ascii?Q?rBV6VNd6DQ+zmPQQZmnCawbx3J4jXuoSGzOJzI6fvEgHYRUTCtaa/gHiiKB5?= =?us-ascii?Q?NFdyYDE5+Mbyh3cnaqFM55IUnXxyTT9QhNX7x8GH3jorQD11XAPNMs3Z7q5R?= =?us-ascii?Q?mNTI5Qot8TAJwuRQ7JqVdX+gL8WqYiSmG3F1g2nG4bdam/QTLP2VmGyrh0Kg?= =?us-ascii?Q?883l0H/NJrBV2cdkGKg9GLb9Bpbl6CrU0jD1fzjl93NPVO4xNPFjuzhJJCw/?= =?us-ascii?Q?SiV6/Fdp+yZbY+26vF0OQN8s+84LtLlnqqwc6Z0f7e3ClmqmzGRQWxX1wPPC?= =?us-ascii?Q?rxfV+GziJlrXEtWiRf2yxTWCCzApM76LiMm3lluumcc7gi6xIzqFVuBBxWKx?= =?us-ascii?Q?XndnaZj0KrzP+I8OKpLXdrsdlqFTlOdO5MBk5ui5kIHrAdgLXZoOcYQ8ZtGt?= =?us-ascii?Q?ZES6QpBg5nfLymM0pG4H+Cv4NRRz1ekY2IwbT06xjvJlGTfBQ/G81anwSWM1?= =?us-ascii?Q?n6WsEdK0FTNE8jp2aWCQ1IAYmKThLdwKDTR4s44HaGDna7I2GcPS2E58RhDX?= =?us-ascii?Q?sBb+Su7Qzg87hDkkJ+ooFqmB86NLE8iznrgVWTZv+gIeK9p5Jflar80Dw5yZ?= =?us-ascii?Q?DaTYf5TgLmnIfM9xoD/5BjqdgvhcmJk1MNCrJFCk5T01tAYEddMgnsqkfgzC?= =?us-ascii?Q?/M4sS4ardItTCin70U1GYy5scuMlyxfQCRkKxjFoqPNnOzq7j5fXgCnH2MFF?= =?us-ascii?Q?AEYm4NVkFCyzUeM7U17j7MC9tTMEywHoxl2F5eYlAmklQdxO9DhUWjNKPpq9?= =?us-ascii?Q?DmAkMBTgn/GW32g+Rpkmj50HTBxeiCQr6ngkMl+q?= X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8e5da1b5-a807-4043-6b11-08dded4749f4 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:19.7412 (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: LCuWhosymKNwV5RMhFgp6C7KNwI9gb/yIujftUY1QK8Q0BQ5ZVnMRJOQv3tl6SqEStCdhopDf7N7zzSgccT4RQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL3PR12MB6379 Message-ID-Hash: Q4QY2QXMHVCTZFGSFJJEMJ4QW4FAZDQT X-Message-ID-Hash: Q4QY2QXMHVCTZFGSFJJEMJ4QW4FAZDQT 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: 1757164728529124100 Content-Type: text/plain; charset="utf-8" This enables partitioning of PCI devices into multiple isolated instances, each requiring a dedicated virtual NUMA node definition. Link: https://mail.gnu.org/archive/html/qemu-arm/2024-03/msg00358.html Signed-off-by: Andrea Righi Reviewed-by: Daniel P. Berrang=C3=A9 --- src/conf/device_conf.h | 3 +++ src/conf/domain_conf.c | 30 ++++++++++++++++++++++++++++-- src/conf/schemas/domaincommon.rng | 5 +++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/conf/device_conf.h b/src/conf/device_conf.h index 2d97410f6e..e570f51824 100644 --- a/src/conf/device_conf.h +++ b/src/conf/device_conf.h @@ -185,6 +185,9 @@ struct _virDomainDeviceInfo { * cases we might want to prevent that from happening by * locking the isolation group */ bool isolationGroupLocked; + + /* NUMA nodeset affinity for this device */ + virBitmap *acpiNodeset; }; =20 int virDeviceHostdevPCIDriverInfoParseXML(xmlNodePtr node, diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 7766e302ec..8c0bf63925 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -5558,8 +5558,20 @@ virDomainDeviceInfoFormat(virBuffer *buf, virBufferAddLit(buf, "/>\n"); } =20 - if (info->acpiIndex !=3D 0) - virBufferAsprintf(buf, "\n", info->acpiIndex); + if (info->acpiIndex !=3D 0 || info->acpiNodeset) { + virBufferAddLit(buf, "acpiIndex !=3D 0) + virBufferAsprintf(buf, " index=3D'%u'", info->acpiIndex); + + if (info->acpiNodeset) { + g_autofree char *nodeset =3D virBitmapFormat(info->acpiNodeset= ); + if (nodeset) + virBufferAsprintf(buf, " nodeset=3D'%s'", nodeset); + } + + virBufferAddLit(buf, "/>\n"); + } =20 if (info->type =3D=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE || info->type =3D=3D VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390) @@ -5884,9 +5896,23 @@ virDomainDeviceInfoParseXML(virDomainXMLOption *xmlo= pt, } =20 if ((acpi =3D virXPathNode("./acpi", ctxt))) { + g_autofree char *nodeset =3D NULL; + if (virXMLPropUInt(acpi, "index", 10, VIR_XML_PROP_NONZERO, &info->acpiIndex) < 0) goto cleanup; + + if ((nodeset =3D virXMLPropString(acpi, "nodeset"))) { + if (virBitmapParse(nodeset, &info->acpiNodeset, + VIR_DOMAIN_CPUMASK_LEN) < 0) + goto cleanup; + + if (virBitmapIsAllClear(info->acpiNodeset)) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Invalid value of 'nodeset': %1$s"), node= set); + goto cleanup; + } + } } =20 if ((address =3D virXPathNode("./address", ctxt)) && diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index e369fb6e81..298afe0b7c 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -7454,6 +7454,11 @@ + + + + + =20 --=20 2.51.0