From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580979370554.455570481144; Sat, 23 May 2026 17:02:59 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318176.1586531 (Exim 4.92) (envelope-from ) id 1wQwIZ-0001nO-F0; Sun, 24 May 2026 00:02:31 +0000 Received: by outflank-mailman (output) from mailman id 1318176.1586531; Sun, 24 May 2026 00:02:31 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIZ-0001nG-BB; Sun, 24 May 2026 00:02:31 +0000 Received: by outflank-mailman (input) for mailman id 1318176; Sun, 24 May 2026 00:02:30 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIY-0001mv-1y for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:30 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIX-005yAt-EY for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:29 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fa3-2eae-0a2a0a5409dd-0a2a450c9d92-42 for ; Sun, 24 May 2026 02:02:29 +0200 Received: from [52.101.125.127] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124013-62f1-0a2a450c0019-34657d7f2312-3 for ; Sun, 24 May 2026 02:02:29 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:25 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:25 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=agJ/ND/peAeVtvwhCsYcDGuWxyPh/2NOwN8LwMb83rInm4PMF3FIOk+s/mdc2qZvV08ZXaQz4Y048sVRJOxORFFgIKaHLMzH6H5L4yve9xhC7ZbLlzsLxrbCKT6nIi7ePghupCIGpyyHsUs6ObaoucFlY1at1ByuNiLs+pMhvs2XO8otaUa+ojUMOXMiciMLWnZvbmu0CgpFk09sG6PNAW7ChetV+kb9wqU88ChpPthxibRlLtCooai+xA8FmGbiJqPHLPLvHqk5YfZAsys2gAtbRl7HoeHJyY3e3aA1orQK/M+lIk08pJfumM1cvsoZrC/2ko0kHr/5ukxNO2P3tg== 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=m/R21pUJg6pY8bZJcj1ewVHTTXMBNM9XTiez4FJ+LVc=; b=OD0m26qk+b5WiVUDH5sBBr50shkiW6fcScqBirI7ksNKJVq9taoJUPO4rJcyngq/VJHR9gGPRtvrhOzhVPDEO0S/eKcKwR03PlfWYYUqoGiVhq01qJ0xPKSQDqVoO8QdNPqgwVJxtOohJJn3spfa19RifevlWa4Rve2FgyyQwxX1WbkdX9TxXTJKkW28av3ga5t1EPgYVYwAf0eUWm5NCRXNGeVlDfsq965vnPUYua2TgcutErl3cUhHjPGlyTs2q4AobNuhQDiwNA4T1b/0ZwRPAl6TPxm6iqN9CyiGinObgQNFR9FKrbrFqrc0xZmiC6YGHzn4wpXb3iyHHsX1Zw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=m/R21pUJg6pY8bZJcj1ewVHTTXMBNM9XTiez4FJ+LVc=; b=kqkbkU6nCwFAk30Ufv+coBPb4DyJrzfpZdim5O/xidmDEGOrnuVLy0IUutMbpHxi5a0vGjazgTigf2vEUOMZ/KoCWhfx4P39HnF/eKT7m3MoA9ZNSz35+h4pk/F7+W7wn6oiIxGbPqNmZQO8MTxhaloaS2VMsMt1k4s/cZp8kxc= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 01/21] xen/device-tree: Initial framework for Device Tree NUMA support Date: Sun, 24 May 2026 09:01:49 +0900 Message-ID: <20260524000209.292370-2-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0364.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::8) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 78fb19ea-ed55-4dbc-a178-08deb927bce4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: 8yha/SU0sh9sBC5zOwGdVHT+FXrkUFEJMjSbUGIlhS8Zc3nLxG1lZ1NNmpng3UNDf43nrL1O/DR4/ZLUsN4+Yy/DxtTqp56XfLfdYihH5veYxsz2szL/IE/AVCeIPD4oCLEiXOnfgO8IIECIdB4JecZ2+u5t97sQKneoG0iLEYmH+0TAxNKZjrnmTfrxB2/0jRSP4qpxh47SzkipjcOH+lVx2KNzEeF6w1PFfBH6XGio1Fitqf4AdF0vU0V7L/fWj8aCIEOm3fheQY8aC/2XPlM0hAsXJkR1gRgIHLQ6V/Hj5gz6BdxX6zVjgDgmD0we+s8ZFUywtNsHVon64peDfemzxQss6uaPYoyQtWNYmOIFMUTKvw3/DZSlF7YdBTmb+aDGaqxraBb8pTNOHme8KruD+A7H63X1XHOyBbyR9w3adifcpnJtXIqAjhHmpNb/ifg2q/oIr+ghx9IpvQssvJJ7uBo06B1uuJbo7whlwguFCQDCbo1ba6anlmQ5XBAUSaXph3MDdGgyWVZLY4eE///Hh0re9YHY9I556O5Q46G0xpmhNHUFkZkD0V0ahlu8Pk+s5xYXjBVHNMITwSAJCbgXHvebD18Lcfask4PC2T9XpUEZe9kuoxvSIKAHSSD9opB9RbRSB3/4mDYtUqqVC0jJ4rce+tHxdO4Z7qjkjQgy3bgvYFeg7X/a8BmPlClc X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?mrhEAorlqh/4TDqVBqxcYMpIib4vcGYiWkZKJ3w9fEnZhzz9ZzJyeNmrw+jw?= =?us-ascii?Q?Nn+cYeEu+2JvpkawJpv+TWBcCZqjoGqrdGoEo7NGtrQIsqjqx/BXZBmpQE43?= =?us-ascii?Q?tDLSbO0PCIGMxnxELrbfBMQVMDdkRSs4vKUUXnATlclqK3wLQHoEm4LMHkfB?= =?us-ascii?Q?hGWtBxQYEff00ZYI1Nd7woEFIsIlbEJf+vUwxrp3B15qmutQRxBm770slVPs?= =?us-ascii?Q?dLEnH7jQ28Kb2s1a/4nvr0xwMoJcw1+gWCHYi+Ex8MJjfZR8HOVe+GnwmrG+?= =?us-ascii?Q?3uP/HsHExocdXUyYMUfjU0ElObVW+tgifcPRxU/K+ivXbvHXS5LlR4bV2PSJ?= =?us-ascii?Q?dGl5trhOL7r7kMNJMvgGaU+pcL7u21FcgvBZMAMUp7fVaQ/rQVlLuDoFKUlG?= =?us-ascii?Q?MQN9tn5PFSmXrUy8GNMxKG5KaYu7pZYkRBK3aCopzMAFKkSG1kasQwOmCJYT?= =?us-ascii?Q?gU89cnllUgtVcxtQqT6Bi6IsgCzPO3inDJnGA4xVjyPn7gHPutrVs2DPetM2?= =?us-ascii?Q?yw9PkFP89hDkmV3LjNA0D/rvGVrPUACS2BukHC6Lw7WqZMaqCoteOtJ3zv1D?= =?us-ascii?Q?CA8fiSGRwcLi7m2/JA4XjO28bUKeztEW7K6fnZXErb76HDNkcE96JicQ1K7B?= =?us-ascii?Q?FcRrC2GcRX2O/TLKwIfFX/s9WGF00m95rrGczCxACNPl8S5o9HVa0L/wQrG4?= =?us-ascii?Q?TAMlHb8F4UALNM1uEYCzDvYWYt9y1Gs3k4d+gfhSkuyjkh/si+OuGeudRZmG?= =?us-ascii?Q?43OZW/vGBFju38cvtxavUwTYfAnx0FF0IIV3iv+HXXgsLiFiB0zicAyqPgWl?= =?us-ascii?Q?b2qznQkKP1u64U/Q62gVNcgsgKgm/mYdTwRFIo86snw4tY8AKJZuHw4CyoYV?= =?us-ascii?Q?urozAC/9CKwUmuMjCCS6telVnc4CfAn8TuAYyHlwWwDCRfnybie+4oJP/s88?= =?us-ascii?Q?TdiUnrNm5JEXixmpFf5KYu/Zr4j0S22pNThgPrmrKC33torWBEYX2WEFFL8Q?= =?us-ascii?Q?b0/7kgCbTFNKEdFhHhkGUxb7A2lz9rzyXauLP40DHbakTQJQvMQ94O+nlSMp?= =?us-ascii?Q?sS94jLzv9Zti3tTQmY+BvvDiX2VFx4lylavb20s4VEGBwgtUAH/PrbvK6jXM?= =?us-ascii?Q?3EpFwdUXi66Yxp5OuZD1LOX66jLNECYzmYa34ohvLlBtUT9+MF6KDpKnwbpN?= =?us-ascii?Q?pl///N484TnM/AMdvlmmsJBGBtoIvNFovPzDXAkj5hoGC6Y7lRW4RRNExuQ5?= =?us-ascii?Q?zLhTzTRjg6/4UpRluybsgLHcZj6nt2lLDHfkpWBjDjk8++i+uuQkEb+Adh8W?= =?us-ascii?Q?Y9s2SDmhqIlnTq1RddiLh7DXmrINRbTDWQJ71pBYxVnYRd0/v/1L3tzMGk1X?= =?us-ascii?Q?WDRuu6vdqj+Z6YhjcfzkDhm1AmmOG+/N9UJag1lkHaRQr/EJgPcElL6/0dK1?= =?us-ascii?Q?sQ+xgKs8FiVE5m8kd2mXB4nDzvJ+YsIPByk7WjnYIxWcm+sau2fjP/nqM+gd?= =?us-ascii?Q?hBMk18ttVI9ttZNGNtioTH+lCuoxIiY29JNUWn0/IFKFH1M/jcbZJZNUNEd9?= =?us-ascii?Q?O0yC3Q+ail2Z2Hc2fTetUDYN3iO30Oak9hOmhiXU6TrOY6X5zBaRP+cfikLY?= =?us-ascii?Q?oAx0NYxUAE8lp9Z/682CyiiiU3Xpz5+YxZXcedqtAbPfKc/MV0To1jnAGAOZ?= =?us-ascii?Q?IW3976yhWaAz4gVpEknxYgkiuqEdmqVBIibQ5Yp0+I0A9B+hkAZU+V43IFKU?= =?us-ascii?Q?nZzE5c/DkGAWym8MNp9x5mGwOfHvh/Tuvtzz14Yi9OXqXli8uc38OnoDCIjd?= X-MS-Exchange-AntiSpam-MessageData-1: zVtW4WOSeMgZ0Q== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 78fb19ea-ed55-4dbc-a178-08deb927bce4 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:25.8066 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: HfaCjo6Be4I0oc/uUobKmx7o4I1VYJ+lfwMqQjN2WSUYgeXZPmUip2irHvQw3sLzQgTauEIBU65qwyy19g0VeA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-d25034/1779580949-DAF72CF5-DA201144/0/0 X-purgate-type: clean X-purgate-size: 3423 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580980897158500 Content-Type: text/plain; charset="utf-8" Introduce the initial framework for Device Tree-based NUMA support on ARM Xen. This patch adds the required Device Tree-dependent helper functions needed for NUMA configuration. Note that some functions currently contain stub implementations. --- xen/common/device-tree/Makefile | 1 + xen/common/device-tree/numa.c | 24 ++++++++++++++++++++++++ xen/include/xen/bootinfo.h | 14 ++++++++++++++ xen/include/xen/dt-numa.h | 29 +++++++++++++++++++++++++++++ 4 files changed, 68 insertions(+) create mode 100644 xen/common/device-tree/numa.c create mode 100644 xen/include/xen/dt-numa.h diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makef= ile index 9036e455d6..fab038d357 100644 --- a/xen/common/device-tree/Makefile +++ b/xen/common/device-tree/Makefile @@ -11,3 +11,4 @@ obj-$(CONFIG_DOMAIN_BUILD_HELPERS) +=3D kernel.o obj-$(CONFIG_STATIC_EVTCHN) +=3D static-evtchn.init.o obj-$(CONFIG_STATIC_MEMORY) +=3D static-memory.init.o obj-$(CONFIG_STATIC_SHM) +=3D static-shmem.init.o +obj-$(CONFIG_DEVICE_TREE_NUMA) +=3D numa.o diff --git a/xen/common/device-tree/numa.c b/xen/common/device-tree/numa.c new file mode 100644 index 0000000000..06f2c8b102 --- /dev/null +++ b/xen/common/device-tree/numa.c @@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#define LOCAL_DISTANCE 10 +#define REMOTE_DISTANCE 20 + +/* + * Get the distance between node 'a' and node 'b'. + */ +u8 dt_node_distance(u8 a, u8 b) +{ + if ( a !=3D b ) + return REMOTE_DISTANCE; + return LOCAL_DISTANCE; +} + diff --git a/xen/include/xen/bootinfo.h b/xen/include/xen/bootinfo.h index dbf492c2e3..7923be2b38 100644 --- a/xen/include/xen/bootinfo.h +++ b/xen/include/xen/bootinfo.h @@ -6,6 +6,7 @@ #include #include #include +#include =20 #define NR_MEM_BANKS 256 #define NR_SHMEM_BANKS 32 @@ -214,4 +215,17 @@ void fw_unreserved_regions(paddr_t s, paddr_t e, void (*cb)(paddr_t ps, paddr_t pe), unsigned int first); =20 +static inline int bootinfo_get_ram_range(unsigned int idx, paddr_t *start,= paddr_t *end) +{ + struct membanks *mem =3D bootinfo_get_mem(); + + if ( idx >=3D mem->nr_banks) + return -ENOENT; + + *start =3D mem->bank[idx].start; + *end =3D *start + mem->bank[idx].size; + + return 0; +} + #endif /* XEN_BOOTINFO_H */ diff --git a/xen/include/xen/dt-numa.h b/xen/include/xen/dt-numa.h new file mode 100644 index 0000000000..721e8955fa --- /dev/null +++ b/xen/include/xen/dt-numa.h @@ -0,0 +1,29 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef XEN_DT_NUMA_H +#define XEN_DT_NUMA_H + +#include +#include + +static inline unsigned int numa_node_to_dt_nid(u32 n) +{ + return n; +} + +#ifdef CONFIG_DEVICE_TREE_NUMA + +u8 dt_node_distance(u8 a, u8 b); + +#endif /* CONFIG_DEVICE_TREE_NUMA */ + +#endif /* XEN_DT_NUMA_H */ + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580989879377.1850039694775; Sat, 23 May 2026 17:03:09 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318177.1586539 (Exim 4.92) (envelope-from ) id 1wQwIa-00020s-OG; Sun, 24 May 2026 00:02:32 +0000 Received: by outflank-mailman (output) from mailman id 1318177.1586539; Sun, 24 May 2026 00:02:32 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIa-00020j-LV; Sun, 24 May 2026 00:02:32 +0000 Received: by outflank-mailman (input) for mailman id 1318177; Sun, 24 May 2026 00:02:31 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIZ-0001n8-35 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:31 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIY-005yAt-FY for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:30 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fa3-2eae-0a2a0a5409dd-0a2a450c9d92-46 for ; Sun, 24 May 2026 02:02:30 +0200 Received: from [52.101.125.127] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124013-62f1-0a2a450c0019-34657d7f2312-4 for ; Sun, 24 May 2026 02:02:30 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:28 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:28 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KFr1mfrAx7rNqF+hvL6SYtx52/aMH2athAbZg12Q65BcKhPerre+70If0MTRJ0yakbs3TQG1CKpKa/aZyBeoQFJA324jddF3fr6wF1GqVoncZSHHxRZmPfDc1h6hmE2N7X5ZTUFsOZ/X8B79HAThBGwUi7oNEKXhkGjF3IbgFLd8iFVKPjNufpy1Ef2WWmowWvCtI0mMXSTBnhHODoM60pJx7/2DjWxx5p6z04Q49925nbY1/C1/d1KznbXK9ObQN0W8UfvjDQKBYBOws7nGVb94iW+jplrmdlOCb6QG35BXqW8Hy9NeEj6O7+GXzszPH+jTK8dYDUCe8uL2gcXVow== 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=2UfY/3UMMggWHpVy8hTvzn9Q/XVS99ND9b9p8Gen/A8=; b=R+nv58p/w2FBN7x+0o/VBUN5tKnZ9zKAf8fkll0bo5tPdXl/xJZhOQaaC8OZ6Jov7PUZlgpqY5q1eebKOyaCG/2AOXs+B5NFFtZpvLY1ZqqW3yiIm/QGaRJMhvdeT6Jdxm9hK7smtLf2ypVIgZWD5IZzYGl1o/mJt8KSJfkHNkSAxktSQ4sDUO9TkZkF74lESWVmRuuou22nrBC8xvXVGlxXQpKibDKFCWk7j1GGtxVAbE9NwkTlhygLwi+tjypa/F8hbC5Sxp6noAE9r0p2vL8sTdegNN2C7fpfMQALb37kto3fQLFYjIoCTGWIlXGdpzFRy2oTAXKcDNyG+ijYCA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2UfY/3UMMggWHpVy8hTvzn9Q/XVS99ND9b9p8Gen/A8=; b=idq0Xw8FXNUNpAylWnYEsWot+JrpoHNK1mVK/F9o/GKpt+7nfm9TWFJNm0UJU2tWg4RafIakP6JODVl/TRVji7popEFYcKp4qKedQ3wzP6X2SyBuLt9zVRbBfkJbD0scIM9NqqBShtinlwPeOfz52Hzmhl66twXNDObf2vDUo6U= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 02/21] xen/arm: NUMA helper functions via Device Tree helpers Date: Sun, 24 May 2026 09:01:50 +0900 Message-ID: <20260524000209.292370-3-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0362.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::16) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: df9bbf5e-7fda-4f2b-7e7d-08deb927be96 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: MDNCcxtxK0T2M49WJme8aLzQgtWjoM7ulHUY74PoPexnCPzJabwdncCJI4gzgz3XAVxjcIdSne2WCEGV5bqTqqUH3LVzjoYoZBG9BF2lBqh9CJZq8GJxFEz5tBQ77ag8qW9x9cZvSarAge8CJ63EUdemnxqajSwNNO3/gtBDmgNSF7M31vVDwc7Y/WwbawxA6rNmftq4sJ4ndE9RBSSzR3vH9bZKQfSjOLQxK80LSB1a0YI+F1wfB9mTAmf2sqYSaZvZx/xmnCksplq6iYvRsEnN1xlRHRGhKFbTFNXZChFnS82vXnR21SKC6CDpSXHWc5mEeDmAog3BvaMHwzrg93u9xVwCUcbiPfsbhKai0Z6hwSMnSVZ65nReqVdk7hrCfJQRRRiu4FLg+jwTtcbCDIRw7mhZzwM+++DUwlSmKjq/0koZYJUfitv8YCOl85bbDoAChCBlLcW29Oynhx8m++MYdzyb0pAu8JdbioyAw3nflRyk1r7cCD72Hm6lNzFoPxPuM3v3gDOL/HFbX+UjJgub/RwjBO7Ojp+saPkj0YCfW5xw8da1U0dfLuFxq+gwLbj6i3naNS6ywBMKV+8Vs4H/ScLVxj/rLJKXLRVJX61eASa9Dt5nei9X2oN80IlNBYZeK+IvJRJFivw2UlnoaqZNLiYqp8cT5sVM6aRf1fGiY4IWql/fQrKxo7xQ1fYX X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xBjJUdMFMY2sxBaqThQafBvuvY41q7wOhHhlGA9vHKGIqAJf1ra5iPqbLrvy?= =?us-ascii?Q?veFEsaOFoGxRo9aCIHzrj09vL1NbDC5ULBVF2Alscu9bFwQe7TLDjub25j59?= =?us-ascii?Q?vwUuFQW90PN0QIatyFRHmrPcqgZ1VhKNuewpwtEJSjxouC6NlRRhbnqRIp3i?= =?us-ascii?Q?M8UruoWv40xK36fdB9NmpSHlT5Z5UODuWBBrz3Un4v8VbNI/0xkGOW2LDAHD?= =?us-ascii?Q?pInzs06KoSUJS7JryyusYOIhTPE2jE9mLPGcN9Fs37d4wB3rbmLxnuOaUt0q?= =?us-ascii?Q?OgbKL2y18bNjAhg+ghuCxBXNHYy59mrQQBV8e2x8xUkITp67naQHN3lK0NgP?= =?us-ascii?Q?z3srmDzDynJ7teRAZMHd3IdRCOi2S/ruddNhUA42dt6qmYO46qNJg6ZfpQZS?= =?us-ascii?Q?V4/T7TsXxTWTZbabQYBVB8b43a4Jz9JMCe45Ct8Wi+bfU21+cr8Drw3vhi12?= =?us-ascii?Q?HymLYw1NfxeRKYG7zJE5Y6fwaatc4DuH0zjHotCn0fgvoa0Rq0xM10f6A8bs?= =?us-ascii?Q?O1DM3eD5P5Z5xsC1ifsNogfsVOBkH7lFlzWw+V/ykExWNbCOfF4Bm2GzVdHg?= =?us-ascii?Q?yN5kCWu7Yzu/lpoM+0gRMdfA5FlaBE40QE1WIUsFqchcsbatKruEHa5lS0iJ?= =?us-ascii?Q?T4ec8Fe93PMQVUhFOt+OQSmP7wOsOrULUJEAJF6WklE+ndby9zqHBLxh3MOM?= =?us-ascii?Q?OutbVn/uELTTZJRUR38z+QGHoWFMNDO5/i0s7FNhc5pjrrGQztHjuWIaubJ3?= =?us-ascii?Q?RS2A/eAXnHaelmnH3+4Ir0EIdGgtnQnnyT3r3+CJJv6Urtpp93kWcu0qNS+i?= =?us-ascii?Q?0x8U1Gd44azrS+V6aVXGy7v9ht/OLX28RpVC5A6tIaPBbiDojtufCuXYwChU?= =?us-ascii?Q?0GFXAz/bQ5WkAAAF56nKI3FKWiV6FzQ3loDJCn7q8o2smrm5EvucXJBE7xzW?= =?us-ascii?Q?rfFf19FNs5Nxft5j5/hCSP0Cd/0oNs8KubGrGo6zAFbEkoMGtkKzdIbRLtCz?= =?us-ascii?Q?cBeq1pPxJL3IxXoNEhzHuFkpryoN7a4EFDtE1AdP8D7KtWi9yU85GIvQnWNT?= =?us-ascii?Q?QkPq9NhR7gTrgfNSdD1AjEL7/tQKqLZfoD8ZG2apa6UqN4dqlvwvcjITzj33?= =?us-ascii?Q?hfw1aUsZdO3NJu48/wTvyTDmPzoM+2l3r82CHbGgt7ZLVyhO8gf0va6En5VQ?= =?us-ascii?Q?kyqL/8116FXEEuUd3ki/OVpxbl27P2ZZijx8SaBG9uT219zwshyyygFFIKTv?= =?us-ascii?Q?ZeOYegLsZn0TQxBnBs/h2Z2ixVT0rskkePMVrb6q88YAAymseQBcE1WkiuWK?= =?us-ascii?Q?rEW6GSM3f/34g4vkS7+NYvda0DOPjXsTy93+foSdwySmTbCPb9iaS9gXv+gp?= =?us-ascii?Q?Xx2KxUiI9OLczKBBFqj4bQu7jnqpR1NtxYl+5JuMF2/32ZA96oLvMbNEsMVx?= =?us-ascii?Q?FBu5RKFYFXoVFdxeDC364qgTYYc0XaAKCn4bR89h4JFVOFcxBVImkxXTETmK?= =?us-ascii?Q?aIt2LbNDVJhOjMQ1KPeOUnP2BcSTz/yyIeyJoafbyfHxQk7Xy3PwBEWKVU2Y?= =?us-ascii?Q?0AKoWiVt1058TiPNm153nRoRhm50Q1HCbM4B3GWrUwcY22+wqgIDBe+vO0AN?= =?us-ascii?Q?AAjMeWijit5zFyxdDaMCw+gGe74j7hqYqOgZuSl+wq75l+8f0FtjjFWykUoA?= =?us-ascii?Q?cF39ADzBxUiAjlp55umyn2PZwvTAu6VQyo0/kc+oNVGmrES/hg3FvgMftDP2?= =?us-ascii?Q?vCMY1ka42A7crobhwXNRCL3I4iSxDqSqWSDHpdRvByInWXtm+G6rF+A/zGp+?= X-MS-Exchange-AntiSpam-MessageData-1: rH2jOF8uG9UzAQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: df9bbf5e-7fda-4f2b-7e7d-08deb927be96 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:28.6628 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: am0fyNu7DBvXQXk9xWtx4Pwz73oA+e9rNhxrG57p1JHBU2sFe46eqij5blOWpD1oIwCrJoyKqHexCuonuRPsWQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-d25034/1779580950-F4A7ACF5-FAAA2D2F/0/0 X-purgate-type: clean X-purgate-size: 2693 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580990506158500 Content-Type: text/plain; charset="utf-8" Implement the NUMA helper functions for ARM Xen by invoking the Device Tree-based NUMA helper functions. --- xen/arch/arm/Makefile | 1 + xen/arch/arm/include/asm/numa.h | 18 +++++++++++ xen/arch/arm/numa.c | 53 +++++++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 xen/arch/arm/include/asm/numa.h create mode 100644 xen/arch/arm/numa.c diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile index 982c6c396a..d732918dac 100644 --- a/xen/arch/arm/Makefile +++ b/xen/arch/arm/Makefile @@ -51,6 +51,7 @@ obj-y +=3D setup.o obj-y +=3D shutdown.o obj-y +=3D smp.o obj-y +=3D smpboot.o +obj-$(CONFIG_NUMA) +=3D numa.o obj-$(CONFIG_SYSCTL) +=3D sysctl.o obj-y +=3D time.o obj-y +=3D traps.o diff --git a/xen/arch/arm/include/asm/numa.h b/xen/arch/arm/include/asm/num= a.h new file mode 100644 index 0000000000..a1fa54f2e7 --- /dev/null +++ b/xen/arch/arm/include/asm/numa.h @@ -0,0 +1,18 @@ +#ifndef _ASM_ARM_NUMA_H +#define _ASM_ARM_NUMA_H 1 + +#include +#include +#include + +typedef u8 nodeid_t; + +#define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT)) + +extern bool numa_disabled(void); +extern unsigned int numa_node_to_arch_nid(nodeid_t n); +extern u8 __node_distance(nodeid_t a, nodeid_t b); + +#define arch_want_default_dmazone() (num_online_nodes() > 1) + +#endif /* _ASM_ARM_NUMA_H */ diff --git a/xen/arch/arm/numa.c b/xen/arch/arm/numa.c new file mode 100644 index 0000000000..080d7892ae --- /dev/null +++ b/xen/arch/arm/numa.c @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Helper functions for ARM NUMA. + * + * Copyright (c) 2026 VA Linux Systems Japan K.K. + * Author: Hirokazu Takahashi + */ + +#include +#include +#include + +#if CONFIG_ACPI_NUMA +#error "ACPI NUMA isn't supported yet." +#endif /* CONFIG_ACPI_NUMA */ + + +bool arch_numa_disabled(void) +{ + return false; +} + +unsigned int numa_node_to_arch_nid(nodeid_t n) +{ + return numa_node_to_dt_nid(n); +} + +u8 __node_distance(nodeid_t a, nodeid_t b) +{ + return dt_node_distance(a, b); +} + +int __init arch_numa_setup(const char *opt) +{ + /* parse "numa=3D" option */ + return 0; +} + +int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *e= nd) +{ + return bootinfo_get_ram_range(idx, start, end); +} + +bool __init arch_numa_unavailable(void) +{ + return false; +} + +void __init numa_fw_bad(void) +{ + printk(KERN_ERR "%s NUMA info is broken.\n", numa_fw_nid_name); +} + --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580981581865.1355649420503; Sat, 23 May 2026 17:03:01 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318178.1586549 (Exim 4.92) (envelope-from ) id 1wQwIe-0002Gf-Vs; Sun, 24 May 2026 00:02:36 +0000 Received: by outflank-mailman (output) from mailman id 1318178.1586549; Sun, 24 May 2026 00:02:36 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIe-0002GU-SO; Sun, 24 May 2026 00:02:36 +0000 Received: by outflank-mailman (input) for mailman id 1318178; Sun, 24 May 2026 00:02:36 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwId-0002Fe-RN for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:35 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwId-005yCJ-7e for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:35 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fb2-e002-0a2a0a5209dd-0a2a4502816c-36 for ; Sun, 24 May 2026 02:02:35 +0200 Received: from [52.101.125.80] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124018-af86-0a2a45020019-34657d50d7f2-3 for ; Sun, 24 May 2026 02:02:34 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:31 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:31 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XKvETBGUOdA6bhyCSqI5xwvCDstWAXnLlgT3e3fl/AENn8pLfofdz4Rx0HzyN7b+z0BPPG1+3pyPGxdEc1fOtLuFtHro5eOJknm1yoSfBLe7CS1bv/osM5QoFYMSqJmKiio4m5DHtUTIOi8RUchxde8boaSHktb2a4j8LdosAC0vmPr5vKsGNGQawa+h628M11oLKowvU2bqSJz57m+rNiJ4CmqyYkX84lp23rwrQ0gIb5byhrSYfNB/p8hzrUwcdVKIXYL7xPXFpo8HRAvzTviS0IIv2Meby023AR83SeSg+cEXVAl6Tx/qfOb8tcS5mix5XtXq+ZHrXwTPPlIPkQ== 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=g2lrdoLMqmg98r42qC1DD889Q8lEgAE6Jpi+XHGPJaI=; b=hZai01O1ZyxiyrZbVlD2mhixtjb6F1Czlbs57qMnO0O/NNzKdgtMstXG0MX9Bmj8ONEWtQhdVQ6L6NtcbAL7Upd9sbhbf1WcIA00mHmVCmnBVShQWUaJX6uZ8tQtlOvhVFI+FNzqV3isH5pNxZ1adbsBfPSsflI4hgpCkcW/FKq7bTPFtH4pI2XeXl869YrqmEcFHPOJr9o0Iz8N17wThE7dlZatZH1VH0o1gtn0ISFrsXeN+uXpuXSJZrlVm9dmbZKDfZZBwozkvzQJNC0jWfT0wC7JGwLLmG+JQBRcPjH4BP+Ets/t50MXV8okFGuF8A6kMi1ZkXKqN8fFYPda0Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=g2lrdoLMqmg98r42qC1DD889Q8lEgAE6Jpi+XHGPJaI=; b=LFf4VD+JS5vierFwmUFtVljA4+jGx7CgZJczyqNWerYq16LADBt14aaYwHwswEmuynn9oeDFICSpOsay0OHTuo6vIyNjAA1CZEIrl2d0v1wmKRYtXRdUG+tOyJ5SWR/93M6Z10hoq0pkB4/knDWwwHP0VaIHfSDJYKOFvGikOU8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 03/21] xen/arm: Introduce CONFIG_DEVICE_TREE_NUMA config option Date: Sun, 24 May 2026 09:01:51 +0900 Message-ID: <20260524000209.292370-4-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0365.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::12) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 772accbe-66a6-464d-35c5-08deb927c025 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: TzLRG3tWDA1C9A5OKhu85mUBk+EYW7kCIwv8jxhf+2YiTuFGDZTfWHrwef3vzsmifIeb0bBoSos2ceQ1zsecFRA2/G578wc9tpxADPyg8EOELaax9fiB+wF7WUwYSKTyIlLNMoOpTl+xNALenOypxeouJdm3IcnsTOSw2JyUnNVweTOtdYndgv7iXwSZi4Zj0DXQvYr81iS3UPL6HkMx8y6BhV1vcJexJrlaaWGoAZ/k2H3Hs7fWUQUHQYvD72zv0S0q1Aqp5sgxVnKR+CDquYEj+tYrQvB8u95ZKDmbwcskq7qZZOaPxAdO+T5kJQX6VvGLQzLRqN9ZBARvJgJNuzLpbPvq4mbE2B6pEykZClADNq6os8btZlk0fmpkUt5r2j1dJUDY8UDIX2zF39kmYWqI0d8YadtxZp+qLHA/isuEj0/1zJlRIb6JOHD1wCjNNsPTyV0DUv3a2qGo96psD6qsoL12ZYRvil1K5R5TTfPUWpF/lnLhSk1Gr2wHCKaO2HEeL/FrHPpiOAcKQ51L+JXpkXmMdqTdPltMLZuFJTkpUWio7r2kFjqdVnyzw/vEbS/IlvpZclLX59WlAKLClTgES1kUD1Pvupgm4coitE9w3YigDZoVwG2hBAfoaTECbOJkCCRd9HvUibcWzZ2N2zE6rT4amzbVLpkQe6QmbdpTpW2TOurG2s5eCymrUNfx X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?t6hx4cIPOK7Mqu4fV1o/Wp86HgVmM9BDZuM/HTzIlvKg4cOHqVDOKzjvEZRK?= =?us-ascii?Q?ECp0jnK5uhz2zcMLCxjTV57WqToy1uKwapnfrUZEarOn1W1SQBIPdxDo9DwE?= =?us-ascii?Q?rIdiaXn5p4Qjdqro9f1edY0vtC5Y9EtIMY4Yc60mKFK8Ae6RcvSPt3BLjl6s?= =?us-ascii?Q?2ZHbeJWrj5UYubpHeZzzA//0VLzqLh+VuT6KiGONWxMgOJf4Rs8W76pYkJnn?= =?us-ascii?Q?G0ZC7MLQfXsSyN7XHCYQvWr4jGQKw9uqHNnbXtaMLaXYlCuHUBXJHbSTHQmu?= =?us-ascii?Q?FMzk9+TdMEqCli8zM9KBfENNLjG1zS4QwM7+TDl3IP62HTV8aFbcsVWAApxL?= =?us-ascii?Q?Gz1l8BJSafWTIydqwWkWTB6+88wsUFYEYpEU92R/SWdqMKSMb9woLmyegZxM?= =?us-ascii?Q?dyowR/9txCAY+yx70ca2YJFt5V0I+zZkOg9te4mglbrqWYhMbWaiVH47tKlc?= =?us-ascii?Q?P//37bIXIgSxbKx8hetpvqsZB4iIavR33OKS5eEWglFEJ6MOi/b0W0i9WEye?= =?us-ascii?Q?snywolB/baGTSvHv++hOuqFweGcVaSBWFEPt3EEWWNFVGLrRixOjliPB8/9R?= =?us-ascii?Q?gR3SfIXOj20fZrzTH+2kXaXpUEZ6OvV9mifJ9+U7v8pcWHMXG9m4Op2/wWNj?= =?us-ascii?Q?wOvjJfTBn8mcLH9gmvwmUmbZMWE/WByaW3xIkm8vnN3JNC53QCUhsVJcQtHY?= =?us-ascii?Q?0wlQJHRkeWyrtoQWXczwlIocIPppWL103xVZz8Gw2/S33OKUXNjfu2WpPjS8?= =?us-ascii?Q?itP3o6Cl9BNFXGmRT2XQFHomLlDOlgkwwJnsiHCj1ToYvz47gcE7NKVTHIn1?= =?us-ascii?Q?QiYI1YfZ2pfXF+4UkdLyrw4xKGCNRm5Swf93N/mxtV4LYlBtbUTw/OEGfUcj?= =?us-ascii?Q?4R/ZUN09zOEGdEmb9//eCjzPShMcjQNu05Ow6WYLB1fEj79uCoTgqXDzEBFZ?= =?us-ascii?Q?d68eE5jhCgzP3FiWrpqQ0DoZcqYymZKpKZ9Xbc14CXWP6354xN2OzG41quRa?= =?us-ascii?Q?HrWjpTd4vbQN10CPG9f48cJiAjtfZAxlk8YZHFVnHepWP1eO7xq8H9isH3bu?= =?us-ascii?Q?Murr2f/65ILh2sXzC9+Utyk7AskO7W4IxNE3uQp0PXmIm/8rpjjdCtiL0+sB?= =?us-ascii?Q?dfzrnTEv/hJ/kC2J08/c7wqSEIFYA/zASTFvty46GdxiQurKOYJ8GIN6GLvG?= =?us-ascii?Q?O8YOpN5gomTdirItHVXSAXu276xFduebBqT140XNBYdxyzxo4C3xWbpR5kjD?= =?us-ascii?Q?ff2dEPwG2ukDQICfDP/Z0e7Tkp969FwJf1Nh5le1u8HytX05N94lcwSyLLik?= =?us-ascii?Q?AwCU4shjaIgSWjHaM1N+VU9ie4vP+0rUFy3qnY9DmlyFRx1A0ckusbiGRGa9?= =?us-ascii?Q?U8v/Erw4QYpHH08BWoq42aZdXYXh5diMVsal08qtcJcSieM+Ntz3YRbRuqgJ?= =?us-ascii?Q?xr/soGAEp0JMXF1MjLIJI0N+/zMfLQUC8AoemSCqgQu1BMJm/pNSzIOAppGv?= =?us-ascii?Q?qeUk3nZ8kdZQesazuvgUwgPN3pRJqrj5r7/FbBwSVbCDh1VB+ZTDLGDsTyeH?= =?us-ascii?Q?42qXgvYh3Fx4YAKsXID7I3/1EI7ZrHjw8wFeDPuH9/h7/GWNvZYKx+9fU/yF?= =?us-ascii?Q?cvWU5ab9kZ0SkuvYy0x/WkYINIZixxO3eEJQCiDTRH6wJUKfD4QqCnRWrjlP?= =?us-ascii?Q?KIoY5AeYDsz6zCXdRIsEJJDD6sGvul1Mnrmj979AocFYSuepd7D5vZs75VDR?= =?us-ascii?Q?4c9HK4KiWTfXqx+xLdFhHNA6eELnzBlV6I2lIQYIj8VOweZP9gNFJnfbvsrv?= X-MS-Exchange-AntiSpam-MessageData-1: Z8RtTEC6NNuhXw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 772accbe-66a6-464d-35c5-08deb927c025 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:31.2622 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 3dUUbETlsdEPM0nTUL2SSGgqRYGXYhWPUhMurcmyBVhRIavu0ymWhOM1OympOn5HrAxOenxHJ0xjuNXmAGYUFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580955-83B60161-E0218547/0/0 X-purgate-type: clean X-purgate-size: 2348 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580982437158500 Content-Type: text/plain; charset="utf-8" Introduce the CONFIG_DEVICE_TREE_NUMA configuration option for Device Tree-based NUMA support. Selecting CONFIG_DEVICE_TREE_NUMA automatically selects CONFIG_NUMA. While this option is currently restricted to the ARM architecture, it is designed to be selectable for RISC-V and PPC in the future. This patch also includes the necessary compilation fixes required when building with CONFIG_NUMA, and creates a single fake NUMA node to ensure Xen can boot successfully at this stage. --- xen/arch/arm/setup.c | 4 ++++ xen/arch/arm/smpboot.c | 2 ++ xen/common/Kconfig | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index 6310a47d68..c0202d9ff6 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -351,6 +351,10 @@ void asmlinkage __init noreturn start_xen(unsigned lon= g fdt_paddr) /* Parse the ACPI tables for possible boot-time configuration */ acpi_boot_table_init(); =20 +#ifdef CONFIG_NUMA + numa_initmem_init(0x0UL, 0x1UL << (PADDR_BITS - 12)); +#endif /* CONFIG_NUMA */ + end_boot_allocator(); =20 /* diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index 7f3cfa812e..d1651fe7dd 100644 --- a/xen/arch/arm/smpboot.c +++ b/xen/arch/arm/smpboot.c @@ -47,8 +47,10 @@ integer_param("maxcpus", max_cpus); /* CPU logical map: map xen cpuid to an MPIDR */ register_t __cpu_logical_map[NR_CPUS] =3D { [0 ... NR_CPUS-1] =3D MPIDR_IN= VALID }; =20 +#ifndef CONFIG_NUMA /* Fake one node for now. See also xen/numa.h */ nodemask_t __read_mostly node_online_map =3D { { [0] =3D 1UL } }; +#endif /* CONFIG_NUMA */ =20 /* Xen stack for bringing up the first CPU. */ static unsigned char __initdata cpu0_boot_stack[STACK_SIZE] diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 5ff71480ee..2365b421bf 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -188,6 +188,15 @@ config VM_EVENT config NEEDS_LIBELF bool =20 +config DEVICE_TREE_NUMA + bool "Device tree based NUMA support (UNSUPPORTED)" if UNSUPPORTED && ARM + depends on HAS_DEVICE_TREE_DISCOVERY + select NUMA + help + Device tree based NUMA support. The "numa-node-id" property in + the CPU and memory nodes of a Device Tree defines the NUMA node + to which they belong. + config NUMA bool =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580984690478.2584273669663; Sat, 23 May 2026 17:03:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318180.1586558 (Exim 4.92) (envelope-from ) id 1wQwIh-0002WP-8M; Sun, 24 May 2026 00:02:39 +0000 Received: by outflank-mailman (output) from mailman id 1318180.1586558; Sun, 24 May 2026 00:02:39 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIh-0002W8-34; Sun, 24 May 2026 00:02:39 +0000 Received: by outflank-mailman (input) for mailman id 1318180; Sun, 24 May 2026 00:02:38 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIg-0002Sn-1d for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:38 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIf-005yCJ-E1 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:37 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fb2-e002-0a2a0a5209dd-0a2a4502816c-38 for ; Sun, 24 May 2026 02:02:37 +0200 Received: from [52.101.125.80] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124018-af86-0a2a45020019-34657d50d7f2-4 for ; Sun, 24 May 2026 02:02:37 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:33 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:33 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mefU6PraNR7PEz8+XUZO1X7VadVogLNBRy9swjuCETpWD0h3CcEbyKrp+yUH85hhm5ZKUbA9CzkwnELYl7rPn5cKfZu2bHFPdbFJ9OFSxl7ha1YNlmYXHTjk961HJVE2RSePQ62JsznrRbEQr3d6mZNH1+Vi0GNbbmHa1bzR8HxHRfWINwteyURoEeMSD+6bzWojQD5ScqWIVHlOmOdv/mEgV+WG2ZtqXbH48m0QsForbInjMnhp5jIj5CPhAQpsGNfV8hhBYUmpYmdnEtu/xDN+/FriE8OgebYjjBGQajwACwSO7CLcBLeLaYceX8vwlvTgmRawQXIBoPlFEN54+w== 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=WVIHzGP7xPG+QeB7F8sNCSVrdxqJXbQqFgu/3yZPit0=; b=e+mcNfU2BzWjwNhQe+1c8ivVxFCumRJswBO+4qcszFfzM5RpstpCFycIwYqBfDkRpV1U4bcodtlqWzxsAxwSdxuyaW7AFIzzGHC3ffpiDvDvltISytN9Z9ZPDtX/l/sF+DCjirE2guXANSToFItymmeKjguEQ2uyGW1ODrxVxHrh9ELsiLQK1YL1FlZVHt/O+67z5MKEn2yZi3aYzH7SSGCyR7Z9KkufHgsin/QbSP+FQPcs8k/ekp+Nw9Xjo2lnZ6N636dpPAn04Z2iBktGiO+5zeiqg+YemOkuCm5ca0s2kfUkU0GVbwO3iMR+bmvcIst8r4TjUx/h0RdqiROG3w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=WVIHzGP7xPG+QeB7F8sNCSVrdxqJXbQqFgu/3yZPit0=; b=uUCFMeZ6s0Tztnt425HoYusX0mARTsM8x+ho0Jei8n4Zydxv1C3fUca3MwuCgOKG1O2u34vvl5T43fSlUsAJJyKxEi883K7qgBhVIM1RiQL2NbqXAGzwbdZElmZ2KweQdNHIDG1sBI+WgAHiOaG9FVMwoNO+nIDJ0eAmD7w1/P4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 04/21] xen/arm: Configure NUMA affinity for populated memory banks Date: Sun, 24 May 2026 09:01:52 +0900 Message-ID: <20260524000209.292370-5-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0369.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:79::13) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 93085a46-e6ce-491a-b2fc-08deb927c191 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: 1NTHi9kcwwryqCBSper2HnSXkdNuqsOu0+eBBM6pTDvSLZRND/ixN8FztL1vCR7988Ampf2lWXzwoZZhwn/T4BxfQnQzCzfWVqEh9tS5bQBMseaCprqGLDtpPH9HqOdSwgUA/jgnwzg5bX1j8A/OPIo5v2KK0sHRwf/c3OmeeoQK4+2u+rxD05KlVPa8pl0qoNr9C9YCw7PbaAueT4USIg14Yym5Elo10LN9od75yC5RDVb+lwzKfdMiEu5I0uJxvLyuz+l1LZKZ4CPbqwlqJmSPkHADUeJPZr0D0/YOJp8R1DopG7ac/Wr8LKipNOWIcmzS/I62keviFbLgc7CHAQxLB+vS93SmrRm7lGa5pHbdyyjAevCjJQJdH7SWsll2/zIG6pec9ryQPJ+L7Ua2dxIEqI1i6iIRO7A7sKJs4tUPDg5UpG+q+tFdeBVVRmu5QgXvynOQ6ZlXGs48n0P3BRNv9rTp7CadSB0nuC9Sow7UpR6h4F2zJ6/yrVEnhEKRlK/HsXnpCSuMA+QkZTjx7I0ajPplS7Eri3QzBrgpLeOrhHw91x5DQORLtaDMNY69iIGr4AoEnmV2wnKwpaDPmsXrSxSuxFaLWtXgrPcKMG2gblY+3Pk9Hcp2CUrVOQO7Tim5TTZ4tCdUEHGRo5wH89CJxV/VZSY1IbYnAHgvuZ5Lj4MCY3kfOPfyPSF425EX X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XECKhY1rSWj2c0XCKAUrMpJ6BwxDNm/mGbmT3EqLf+IUoykStYHgzBKPkT3q?= =?us-ascii?Q?+yqFc4pyZN2Mk28Z/Bu6bBT2Yv5AsAoUbmcUyhPb9jDrjOPL0/m0wy6yUp26?= =?us-ascii?Q?yF6V0VB5ll7bjYMY1OSlEc9u3HvmXd/9X4AKIMXAL07sDIXpBKxRiFvwJRIE?= =?us-ascii?Q?CUlpSnprIfh8SUPI1YJl8dko7eZUPUFTy3XOVtMjoCgNvZ5tw+2lerKwT1RJ?= =?us-ascii?Q?zjuhh0bECS26fZSGV5v7ZArUYZOV/S2Lsvaz+/KVNhWEiKvbvCD5OnoTUIey?= =?us-ascii?Q?MqbHLYqSKfSH1DdKoMeT6WxtZ9WX3Z508ZrFna37ivtqJMU+miBJHbmHiScO?= =?us-ascii?Q?p/Lj/UxjpDLDYotUqUMVhN9VVscODHVXDyJV6V6A0P89NzcTuOPDQBH1lQ+8?= =?us-ascii?Q?6F2cMSGYxXrNU6tpy2xA8jMUCgguMn3Hu3pzaByu/DMxKY2pRPiGXxO4rAl3?= =?us-ascii?Q?t+T9tnVVzrntI/3mNN7HPQBDIuut8korPxDkIPCvXb82eI+kt/fp4SFQn++n?= =?us-ascii?Q?DAlkUvJz5m4+XirjUF6k+HXxyxj0I3uaNc5IunjK/ZvT/04NvGge7XaG+Rg6?= =?us-ascii?Q?V3JfD8WDaUSre6qHaC6ugdT616KU3pg/vJgqB1ZjCeMD8F3769rDL9mitYFv?= =?us-ascii?Q?mM6Q/zDp6FDJm1r0BD9snyouD88SJYYE0ZETUJG4UiDKx+3pdNOE6C1kuLR/?= =?us-ascii?Q?XZThINv+OHZ3QuJHMdJRe6QRVBTuqri7V2pbG8TWKffDzM0lbfDEEQ/yhhwQ?= =?us-ascii?Q?PXYEXcDsskN6W8CUSJJ7lD83HVLycFulOEKjP6r/nlIqF/hta+nRb1Byma0+?= =?us-ascii?Q?QpYLhCxJjEr6ogO/RhuJSh/QYtNwSQ7gF9BiAjlNaszN62Df/IrRxhwex9rb?= =?us-ascii?Q?/sqGsPzvsVzcDLOX+bG/f1vBAPwgVjRLm2i83ZFSzZzn2uYC/bSJWxboidx7?= =?us-ascii?Q?3csiNYhmY0ni2gfEoqSzc9Svu/7wz5dmVXAlTOuJFaV/PkwdiCaYYUfKChll?= =?us-ascii?Q?FdM++juOkhRAVI3Kq6ziI+KIBD7xuNLnNVc8iKHrgo5s8JmdrOqSUyARxHHd?= =?us-ascii?Q?va0bJR71xdCEJGOcUtGKFp9hzaffMy23Mww4hTNIcQvwr+4woxPsyPMs/K7v?= =?us-ascii?Q?/CPOMcQHfte89Z4yl68oTkhAaJaqcv9BT5Q3f7S8AS8GMXHyrIQT0gvyklCT?= =?us-ascii?Q?X3CsHIZEuWWZT7uoX+xFslR+QiUvKWjYlJz2eTZPo+NlADpf1S27U9m5zsia?= =?us-ascii?Q?Obfx30CuVrifSD7yFHCPDbBy9Ht88eCiKpYDXkAJF8zsFuQ65WvaUmjSzI2R?= =?us-ascii?Q?+10jts3oJ8eCLgCi2GkdfZ/EGrj27FCkS6Pdf9pnnCuuGNQkiWT+bgl6Eejw?= =?us-ascii?Q?LnRsrFRkvkqSHQaTVSlL166nCNLipn3snBs2UyzWia2ne1WLe1Cl4Z9iMMod?= =?us-ascii?Q?sASSt4uKLGN0hsz23Mc5oEYjVAiO3kGG0kmVxdQbksfE4KVe8rZ2d+StS8O1?= =?us-ascii?Q?SVFp079eK1f5dOn0yYBhH4idEVGa5dMO5sltWWxxN+B6BVfhgqe6IvhRpTzX?= =?us-ascii?Q?C2gPhgX6FOEFwoIogsd3q0i+qBZBod4GDd1xucVK/WBr0wVuAq+UaihTfxQU?= =?us-ascii?Q?MgJ0WdWLXz9bR94E81JATbRyXMcCSayayikBZctPkrgHtRKPuCqT2ziFd/aT?= =?us-ascii?Q?vYOKBnNlhwjEuinDEl7ArZoSITeFKkgtyivzSIwJ6giCzmxpppUjQmHTlLMe?= =?us-ascii?Q?WAJ1gtqNQPezFUJAikbTukgd+taCvr1iUvD7cWH2Tj1WTqsscH2fhoPL2vZz?= X-MS-Exchange-AntiSpam-MessageData-1: 8BZSR9vUGrSIjA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 93085a46-e6ce-491a-b2fc-08deb927c191 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:33.6397 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: GqCf37imG9GErcyKDXFmJbjs6gvZ9FFm7KWEcRdYST2jd3LGyoIu5zh8jY01S9lzI16+NNGwVlg1baK3pVtAcQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580957-A8B78161-D1620810/0/0 X-purgate-type: clean X-purgate-size: 6123 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580986564158500 Content-Type: text/plain; charset="utf-8" Configure NUMA affinity for the populated memory banks. The NUMA node ID for each memory bank is retrieved from the Device Tree. --- xen/arch/arm/include/asm/numa.h | 1 + xen/arch/arm/numa.c | 7 +++++++ xen/arch/arm/setup.c | 2 +- xen/common/device-tree/bootinfo-fdt.c | 8 ++++++++ xen/common/device-tree/numa.c | 29 +++++++++++++++++++++++++++ xen/include/xen/bootinfo.h | 23 +++++++++++++++++++++ xen/include/xen/dt-numa.h | 1 + 7 files changed, 70 insertions(+), 1 deletion(-) diff --git a/xen/arch/arm/include/asm/numa.h b/xen/arch/arm/include/asm/num= a.h index a1fa54f2e7..6f1ccb4eb3 100644 --- a/xen/arch/arm/include/asm/numa.h +++ b/xen/arch/arm/include/asm/numa.h @@ -12,6 +12,7 @@ typedef u8 nodeid_t; extern bool numa_disabled(void); extern unsigned int numa_node_to_arch_nid(nodeid_t n); extern u8 __node_distance(nodeid_t a, nodeid_t b); +extern void numa_memory_affinity_init(void); =20 #define arch_want_default_dmazone() (num_online_nodes() > 1) =20 diff --git a/xen/arch/arm/numa.c b/xen/arch/arm/numa.c index 080d7892ae..15cad3d267 100644 --- a/xen/arch/arm/numa.c +++ b/xen/arch/arm/numa.c @@ -36,6 +36,13 @@ int __init arch_numa_setup(const char *opt) return 0; } =20 +void __init numa_memory_affinity_init(void) +{ + dt_numa_memory_affinity_init(); + + numa_initmem_init(0x0UL, 0x1UL << (PADDR_BITS - 12)); +} + int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *e= nd) { return bootinfo_get_ram_range(idx, start, end); diff --git a/xen/arch/arm/setup.c b/xen/arch/arm/setup.c index c0202d9ff6..cdabf536b0 100644 --- a/xen/arch/arm/setup.c +++ b/xen/arch/arm/setup.c @@ -352,7 +352,7 @@ void asmlinkage __init noreturn start_xen(unsigned long= fdt_paddr) acpi_boot_table_init(); =20 #ifdef CONFIG_NUMA - numa_initmem_init(0x0UL, 0x1UL << (PADDR_BITS - 12)); + numa_memory_affinity_init(); #endif /* CONFIG_NUMA */ =20 end_boot_allocator(); diff --git a/xen/common/device-tree/bootinfo-fdt.c b/xen/common/device-tree= /bootinfo-fdt.c index 272b5a6c0a..2d0e809231 100644 --- a/xen/common/device-tree/bootinfo-fdt.c +++ b/xen/common/device-tree/bootinfo-fdt.c @@ -121,6 +121,9 @@ static int __init device_tree_get_meminfo(const void *f= dt, int node, const __be32 *cell; u32 reg_cells =3D address_cells + size_cells; paddr_t start, size; +#ifdef CONFIG_DEVICE_TREE_NUMA + uint32_t nid; +#endif /* CONFIG_DEVICE_TREE_NUMA */ =20 if ( !device_tree_node_is_available(fdt, node) ) return 0; @@ -136,6 +139,10 @@ static int __init device_tree_get_meminfo(const void *= fdt, int node, if ( !prop ) return -ENOENT; =20 +#ifdef CONFIG_DEVICE_TREE_NUMA + nid =3D device_tree_get_u32(fdt, node, "numa-node-id", 0U); +#endif /* CONFIG_DEVICE_TREE_NUMA */ + cell =3D (const __be32 *)prop->data; banks =3D fdt32_to_cpu(prop->len) / (reg_cells * sizeof (u32)); =20 @@ -158,6 +165,7 @@ static int __init device_tree_get_meminfo(const void *f= dt, int node, mem->bank[mem->nr_banks].start =3D start; mem->bank[mem->nr_banks].size =3D size; mem->bank[mem->nr_banks].type =3D type; + set_numa_nodeid(&mem->bank[mem->nr_banks], nid); mem->nr_banks++; } =20 diff --git a/xen/common/device-tree/numa.c b/xen/common/device-tree/numa.c index 06f2c8b102..539ddfccc5 100644 --- a/xen/common/device-tree/numa.c +++ b/xen/common/device-tree/numa.c @@ -22,3 +22,32 @@ u8 dt_node_distance(u8 a, u8 b) return LOCAL_DISTANCE; } =20 +/* + * Initialize memory affinity by registering bootinfo memory banks into Xe= n's + * NUMA subsystem. + */ +void __init dt_numa_memory_affinity_init(void) +{ + const struct membanks *mem =3D bootinfo_get_mem(); + unsigned int bank; + nodeid_t nid; + + numa_fw_nid_name =3D "DT"; + + for ( bank =3D 0 ; bank < mem->nr_banks; bank++ ) + { + nid =3D get_numa_nodeid(&mem->bank[bank]); + + if (numa_memblks_available()) + { + numa_update_node_memblks(nid, nid, mem->bank[bank].start, mem-= >bank[bank].size, false); + } + else + { + dprintk(XENLOG_WARNING, + "Too many numa entries, try bigger NR_NODE_MEMBLKS!\n"); + numa_fw_bad(); + break; + } + } +} diff --git a/xen/include/xen/bootinfo.h b/xen/include/xen/bootinfo.h index 7923be2b38..d01a28b359 100644 --- a/xen/include/xen/bootinfo.h +++ b/xen/include/xen/bootinfo.h @@ -7,6 +7,7 @@ #include #include #include +#include =20 #define NR_MEM_BANKS 256 #define NR_SHMEM_BANKS 32 @@ -56,6 +57,9 @@ struct shmem_membank_extra { struct membank { paddr_t start; paddr_t size; +#ifdef CONFIG_DEVICE_TREE_NUMA + uint32_t numa_id; +#endif /* CONFIG_DEVICE_TREE_NUMA */ union { enum membank_type type; #ifdef CONFIG_STATIC_SHM @@ -228,4 +232,23 @@ static inline int bootinfo_get_ram_range(unsigned int = idx, paddr_t *start, paddr return 0; } =20 +#ifdef CONFIG_DEVICE_TREE_NUMA +static inline uint32_t get_numa_nodeid(const struct membank *bank) +{ + if ( numa_disabled() ) return 0U; + + return bank->numa_id; +} + +static inline void set_numa_nodeid(struct membank *bank, uint32_t nid) +{ + if ( numa_disabled() ) nid =3D 0U; + + bank->numa_id =3D nid; +} +#else /* CONFIG_DEVICE_TREE_NUMA */ +#define get_numa_nodeid(bank) (0) +#define set_numa_nodeid(bank, nid) {} +#endif /* CONFIG_DEVICE_TREE_NUMA */ + #endif /* XEN_BOOTINFO_H */ diff --git a/xen/include/xen/dt-numa.h b/xen/include/xen/dt-numa.h index 721e8955fa..c6939d0928 100644 --- a/xen/include/xen/dt-numa.h +++ b/xen/include/xen/dt-numa.h @@ -14,6 +14,7 @@ static inline unsigned int numa_node_to_dt_nid(u32 n) #ifdef CONFIG_DEVICE_TREE_NUMA =20 u8 dt_node_distance(u8 a, u8 b); +void dt_numa_memory_affinity_init(void); =20 #endif /* CONFIG_DEVICE_TREE_NUMA */ =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580984119731.4001181328472; Sat, 23 May 2026 17:03:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318181.1586567 (Exim 4.92) (envelope-from ) id 1wQwIi-0002lk-LC; Sun, 24 May 2026 00:02:40 +0000 Received: by outflank-mailman (output) from mailman id 1318181.1586567; Sun, 24 May 2026 00:02:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIi-0002lb-I3; Sun, 24 May 2026 00:02:40 +0000 Received: by outflank-mailman (input) for mailman id 1318181; Sun, 24 May 2026 00:02:39 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIh-0002Vv-48 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:39 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIg-005yCJ-Ga for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:38 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fb2-e002-0a2a0a5209dd-0a2a4502816c-40 for ; Sun, 24 May 2026 02:02:38 +0200 Received: from [52.101.125.80] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124018-af86-0a2a45020019-34657d50d7f2-5 for ; Sun, 24 May 2026 02:02:38 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:36 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:36 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FSyEgfrXgy6nyhxqC5/XSzGGwr3+ZnahNP3UbIy9wyruLE6HgmX1dzlZEsod5iFgkBDeOJz1pQ6uks5/tHqbW0lfQPt/KL87ZveFYYiAIl4fO34PmAVKSwfPzUdila+BD+NrEMIpdWTvfJTdcCImmgVQefoAcL8sYztEvnaiMPKdhxXoOd6HxRrBheOtjXMvJJTSz7IRJ5Nd9f5PeC1ma+Ac1I4wGs9Ol6lElr1/6HT9Iz6pAow/VuBThHylW/kWF4WXahWLuS1Y54xEkOseGas76WD9efpkExmVq+ZwXsIwEGgJa+bX7CssAHgPOw3x28qpp7u9MntOblAUpuEfDA== 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=/vwA3Er90o7oXhAI2Lat0t7tLEuFxyB9jiPPQO/KILk=; b=JeCQ0yowGUOFzIsvsAsGyLR6bvNRKLJUHVScV6TUlYopvJoY17pr3OnEyIfNAOrua3wKeNcP+UPT8UCGnGlHBvSvC/RpN8fdwbsuJ80Db2NyrHwkrQjQiQMwzuoKy8wMr63EjHjPujmwHImqPrOXfwek1gKEoF/PmST1QvCFAXq1PuTWabcVi2to/ZCSaJFJpMYRKtTSU7dol6DserQRWwKBDvgGOabtJS0L65SuyXfcx4DkvwfsdAP0NMhW++JjHLrlhjn/CoXJbye3YVQR2eTGQgURXWqbcSJEpVWUMBmhOBl7gakE3/fVKNOJ2XOgMxY/fQUHXIQ1wFYWW10KaA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/vwA3Er90o7oXhAI2Lat0t7tLEuFxyB9jiPPQO/KILk=; b=e7MgH8/TmCB+UgF8UafU4wmHyk1X2IIJEAMaIuxPHHEY32KRyZZntPwxf3zfD2B0IY2mPpsoWV0sLPk5je4Io3gcBy0zTRV840BJpi8PT9utQO0dVgB+F0ENDk++4D+zRAcpZHOEst79y2xX7qPMDpinY6Nib5cLE5WwaSOgWCs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 05/21] xen/arm: Map populated CPUs to their respective NUMA nodes Date: Sun, 24 May 2026 09:01:53 +0900 Message-ID: <20260524000209.292370-6-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6P286CA0006.JPNP286.PROD.OUTLOOK.COM (2603:1096:405:3b8::15) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: b6fd9a07-7498-43b5-c6af-08deb927c31f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: XYq3obG3oln4LH9nuT3gv8PXIp3KsGUuSpdVhjivF927SzYm1ehqnkVSzLJquXCwrG92YfQV3ONJ15cXSaAoI2oCOarDJiY91hPx3UZiJGjwQ6lVzPlj7z4CN3SoxowX9nCdPW8IYVB5G/W8VB8csHOWw2gERU8MO0EtwEvGZKBylVj6fE6g2oghtFPqIfK85WGPO44gja+0XH7q+opGmDKCFHv852KZWYjD9waXDtNYQlLrp8drQKS5tmDIOD++qnqqcNwUIiZ2MkdISXvk/Bsye7KE4uRCgt1T6VeobwwrrSRZbgaikinGYXEs1C+U+APlRifotXCvTiKvigZQv7YnumyJBWwjL0HGj5dnFXvydBy5FGr4cVlm1jqpm6QZjIb5D41MVx8gkC4BhjXZh9dzJJzKhKWZhXnNWQUwlV0Ri4RQhb6lhRc4eSYIUaCcfotcFf01iLO6jyvsd1M4PgOZhRMFjam5fozOZSnarIHGVHP7qoeMv1YrnB1Jsz7hUuE8KTDbjy2mZOThz5solfeZCfgKqqD68YEJS7onvxfhqNOky/AmvhPxvnq1l9GxB8jb7dC71qPmnATL8KaThJBmno8bqytjZ6Cxeusvz+4LIc1EbNfbPGbHZRk1sagZZGflyAYyBKlef8n5CnZ5KEj/uU/ioxofqKh0YT9y53TDrm+pIoLE3UQF+J4Q/Jyh X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ZwfUpWzVnFYM883+0oYu0ecdYO8vbdnaIbpma2BhAGLVoONwWkhLSzfPS48I?= =?us-ascii?Q?Z8cXb2mvFC6U0fR1MjqeLe7Hbs4yPL6SpcJGKX+uL3q2fuYIgmgRpZMtb+gp?= =?us-ascii?Q?iGn0khPXywfIz/SXnsQLDntN6ACvU9ZJqcwwfjWIAQpI892cMkXbAs2xtIxw?= =?us-ascii?Q?cpIO+Y71srRGwAqepP9mgihABulvRToHglM6APqWlQoWoHNstxjvuNLFNbPu?= =?us-ascii?Q?jiaoJXvyiM9fJNS8HumrSRn33+KQ4dGwG1y+5LaWVt1H1J6TDX2Zd1jD97/9?= =?us-ascii?Q?TVSdxhsT0eAoGd9DeyzJXX6pheYQgGwW1fFxKmod9niqUej7JaTC0gscd6KE?= =?us-ascii?Q?rrrUuLgbH8wQZLWiHYyHB/O9X5PK6z0hwQk3FYOm7jTimZ5xJEpqxakkZmE0?= =?us-ascii?Q?UlMY8MEWOgIYUDOY8u9tgKj2tp5uAjcVWxF3iy+b7gd10tkuCoWEBqEakCYO?= =?us-ascii?Q?eGUE46MYeF3/IrKGtU1+IlyQaljgVPI+XJCMrj2UPh5D0Hhtp4La+YtPPV/6?= =?us-ascii?Q?ovrPeahz77PFOJeUNGPmEL9hL3ZDmhQLCMwkKLaNvJ/4RuomcbJxfRJjPMDV?= =?us-ascii?Q?DEbCgOrk3WsmpML4vlfPGm0o3HybYeX+Gx+XfshtBDZVKIg8xdn5bWXAUGG9?= =?us-ascii?Q?3CIAY7cvDkqbT3XBIxwtISNxAOZZbq0B+j8PpLQM6/S6tqAfxNO3CrjuteAD?= =?us-ascii?Q?HPy+txPeAUXcT9Oxby9GK5iOpJ+a6K//HZGwxphkn/oqY1v42NNamf5fzI97?= =?us-ascii?Q?Oizy5T0c4UZqDqjWwDgeHe344BCDFW9oKs1QApQswlv2x0YiUACQQRb65P0G?= =?us-ascii?Q?NDRcwy1Qwo9m5N30/J6o7oiUQ0RQcI/81Chl0ohYjxcI328Wa2bG+1ku5Qx1?= =?us-ascii?Q?SE96TZsCtJ6YryBvvpDN+KhXs+wS9CL8jI2B5yja99y+KrmgH2SdDYvbMhZr?= =?us-ascii?Q?zRNjG6CuLHgjNdWM+Yz0eyWGphUqKHe0T4rO8B6p/7FfM1vMEkoWsP2X4BLg?= =?us-ascii?Q?cLrSVXGrJ/z3tKEuTBoNRHGnVLvH6GbKU0VoooVQe1mCnZ2YUvCU//hC1iCb?= =?us-ascii?Q?zyyyTAOrYza9azCYZp2I0J0VzPMHdnD81Fslb5t2gwl0OasRRJRocx8mBI4K?= =?us-ascii?Q?19uppVknqHbW9D19qGbK62/mSxMK/Hoe16MKB6DyAQ19UdjKNopQygjDpank?= =?us-ascii?Q?Vs9FhY6fN/tfbRBmhK2dRQjOCM6K6KaSV5vGptRYw9p9uD/Fd29S55SjgYwN?= =?us-ascii?Q?RaBia86D+vSZ9ASOAe4beZZ+w4gbNHI/6E4E0L/slW8Lj3YC/yGAvEKWHz6I?= =?us-ascii?Q?dIZAy4QHZtKIP8Hi9GiFUWGjc9gtY+Q6YsA4U5KlHlDpHd1PZFznUHUBUZdp?= =?us-ascii?Q?+qd4FfGBl68GB4X1WjB2nn0CEs/srw7uhhn7w3e+VQ2+UbOeEXcuv7HAMotQ?= =?us-ascii?Q?uSzcSc2swxgLBS0mQ5a1dLbOxR6agq87dUOeEjRlwOYKkWRp1II0kL6LnG7k?= =?us-ascii?Q?o308bvEhWJ+VQWQ/9uxA3VV1nlCe8J7wRvSAF9jHqrLO7nNcP3FET7lLYkMD?= =?us-ascii?Q?nwBg3C27Ab+Awb7yiIxO7CzGoEu150/oosObGQUrVHvSJjV6tw+EOme0fM8U?= =?us-ascii?Q?jXTQ4dU1SQZ22wl75w4aXdnYSa8AGgxZq9Zdtybpm2fEHP+kyCdcv0HohPPn?= =?us-ascii?Q?5TVmYq9M+/ay5Sw0XcgQl3zepdATm1onXBjH6vNqcEanjXV7qT3H33xla2WZ?= =?us-ascii?Q?tTMugnKRM/u28+ede7MLRIk1R/1cTwRq7FNVF+dGKatd1yIIVeLCq+lVgCJx?= X-MS-Exchange-AntiSpam-MessageData-1: kURJZ8/P5eGpsA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: b6fd9a07-7498-43b5-c6af-08deb927c31f X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:36.2715 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: envWJmdu/Kv7JwhNwwMIyg9kHa2MbKHINa1Ohuzc9N3TyEkpw8UX3sKVbZftpnQyCRlBBocFi2bkRECUK2nAAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580958-AB36C161-2101BA10/0/0 X-purgate-type: clean X-purgate-size: 1552 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580987492154100 Content-Type: text/plain; charset="utf-8" Map the populated CPUs to their respective NUMA nodes. The NUMA node ID for each CPU is retrieved from the Device Tree. --- xen/arch/arm/smpboot.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index d1651fe7dd..eafa195504 100644 --- a/xen/arch/arm/smpboot.c +++ b/xen/arch/arm/smpboot.c @@ -133,6 +133,9 @@ static void __init dt_smp_init_cpus(void) }; bool bootcpu_valid =3D false; int rc; +#ifdef CONFIG_DEVICE_TREE_NUMA + nodeid_t cpu_to_numa[NR_CPUS]; +#endif /* CONFIG_DEVICE_TREE_NUMA */ =20 mpidr =3D system_cpuinfo.mpidr.bits & MPIDR_HWID_MASK; =20 @@ -244,6 +247,16 @@ static void __init dt_smp_init_cpus(void) } else tmp_map[i] =3D hwid; + +#ifdef CONFIG_DEVICE_TREE_NUMA + if ( tmp_map[i] !=3D MPIDR_INVALID ) + { + uint32_t nid; + if ( numa_disabled() || !dt_property_read_u32(cpu, "numa-node-= id", &nid) ) + nid =3D 0U; /* default node */ + cpu_to_numa[i] =3D nid >=3D MAX_NUMNODES ? 0U : nid; + } +#endif /* CONFIG_DEVICE_TREE_NUMA */ } =20 if ( !bootcpu_valid ) @@ -259,6 +272,10 @@ static void __init dt_smp_init_cpus(void) continue; cpumask_set_cpu(i, &cpu_possible_map); cpu_logical_map(i) =3D tmp_map[i]; +#ifdef CONFIG_DEVICE_TREE_NUMA + numa_set_node(i, cpu_to_numa[i]); + numa_add_cpu(i); +#endif /* CONFIG_DEVICE_TREE_NUMA */ } } =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580992209238.1924547340857; Sat, 23 May 2026 17:03:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318183.1586576 (Exim 4.92) (envelope-from ) id 1wQwIm-000381-W5; Sun, 24 May 2026 00:02:44 +0000 Received: by outflank-mailman (output) from mailman id 1318183.1586576; Sun, 24 May 2026 00:02:44 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIm-00037s-R5; Sun, 24 May 2026 00:02:44 +0000 Received: by outflank-mailman (input) for mailman id 1318183; Sun, 24 May 2026 00:02:43 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIl-00034j-JJ for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:43 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIk-000m7t-Vh for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:42 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fbd-bab6-0a2a0a5309dd-0a2a4505ca84-32 for ; Sun, 24 May 2026 02:02:42 +0200 Received: from [52.101.125.103] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124020-aaa8-0a2a45050019-34657d67f7b1-3 for ; Sun, 24 May 2026 02:02:42 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:38 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:38 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CSNGXx45uWjRTdCWHP8vu0hNHuNQyJC4CKyRFibAR36on88tH5kPem342E2r9gyPHjCdBULx/Jrdj3uO0D+m3XbuwXPtb7KGqnLPPWwwgXjnYduQ5aqcP9J53y4HVONSmtyQN2TADeZKTERZNebVG14O/EbAiTgLs344E1AHIAVLZUUtISePCt4tEPBsRQGK0G91dDKBXOpZqGVN7sSILEoTruM31TeBKvM8o89ggnuQd1u72HqoaVsH4CMGBJRMoIdbBHC8xLiFbJEH0lBma/luD9zs+4roGvDibEOgquic8b5+/hR0d9cBliK8zIzsebNOmr3iYJWT4XPpl2Z0rg== 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=efsYPuOFBJuGq5l6y14uP1QzlvYcMA2MZ/bYJIg+6Cc=; b=ZW5gvFYg8G0deOojXSXDIAgILOC2eSY9FIaTE0FNZmhFkUe+o/A0cp0EPhyZNpCEdT+IK3vkQ8bE6oRfgxl2JXqiwD6eNARXI91L4++4jWJxDcUxmO/DlCpcdCYZBEnoTJft6gzk13fdpHUiOXh6kA/SYSkLmy+QP/t0YY5JUAChTGnyO/KtxFtpYnVtXJKvZH+fVdKlE4i67w1Y7Y5MsW1jffTQi1ATgUhPTiYTQG5QOUMQ6/+PnGWPDQGTByt8SiB9Ke1DFeqM9b8B88E5TXkJPtx+BwySiTph5xjpi2xATVsSXSEEte5InoNZiShUt7sB7zv+Se6PIQ4GJqLi+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=efsYPuOFBJuGq5l6y14uP1QzlvYcMA2MZ/bYJIg+6Cc=; b=LRBdpmE4u/ReYoT8a9+I4bHSywMYP5Coa8RLK5AmI56USBpIrym9B0MbRXKmyxUH+vqQ9aa16HiKHa3rcKJvrKQ7R/xMJeJR+SOgxlkxRodL33PJCeogBP5mSKCErIUs6+d6rZfxuuwgs3OLVg8adXOd9KbJQd4VBdSdGnvhbFk= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 06/21] xen/device-tree: Read NUMA node distance from Device Tree 'distance-map' Date: Sun, 24 May 2026 09:01:54 +0900 Message-ID: <20260524000209.292370-7-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0053.jpnprd01.prod.outlook.com (2603:1096:405:2::17) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: a77c7827-6054-432b-ba32-08deb927c4b3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: B21M9WJ9hrkSt36IbmSYY4mpxl7sNZvRzFvDrAPgF9rRmR483073cwVVgHvIxMHnh/sV57GRf5Y+W4sn0hcIaWLBls2ZH7452xuhDzu+nF9YZnMbODSmGdrV7hIC0mBOBQNxBnhUURTv0oHbZShO+T6FOw14NXG4FxukPSgm/2WdwK8oR59lqKTlN2oxDMNsIPBPjQY10Byz+W2ybP+NuTgnZ427RJjw0NN/MaeOGxT2QjIzB0cN3UgS8aSdMuyQlPET8b5vZr2d02/N5IoXLfcAU2rqGSNPbRDk3d3tArthOw86wOt03TCbMEIGc6XiUEHR1mdpVsvixmBo4YXR0k5ZFLCAOQaLaxlU7uEUhL3ArMJR1uIRN5+BWVnTMBAC4112uvt2cBnMnIhKwEeFbGAmXVNhmzkvpiPyxMS2qd9P8yV/PSl4KJSzWOnptQdwZqXAl7annzXsjB+i7wA/kGbtfgr7zxpr7Ot818eYac+CMY4B7q3iimV8S2Upk8iJzHlxGfkkRD1UIsYviTbQuoLMm8rDOaDPZjhERiPISIQB/KqZ6wY0m3Y1q5Sy6i/Cbch7bQzZQC+LtTaRo4hagUYbieW+h4WtLb+wBVbaJ3fSmEGrXcaGDIjpWQ0HcJev6djBiujFuiOB9vyiys4sKNWRaIuR9AImdegsfl1+p9YjYCbxj4OjUhrQL7LQDuHr X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?q6mpJoyCRZHzMlv0oqKoFgLLnUlkvv4HKRhQRoU8S6Sr+I6mb0hunG93v1H1?= =?us-ascii?Q?C5IvHvBMMvE8iWE8LSM6MFS/WObkee0cdnOk9EydGwbAyr6M6922LEwQ3cxy?= =?us-ascii?Q?WlTbZO38W8Fm2HBLqSXlaBEWN2DFRKi0iD86hCkjM8FgB3qaJjxIP4ygkSaQ?= =?us-ascii?Q?E4Be7ACK2VBgOGfsvBPuQ/g96y6tNR3Ol03rxu6VyA6PDQT8N9+3SonEGCR5?= =?us-ascii?Q?doRY/1ZrlSmpI6oKW4E4oJtcK70K6mrD/K0diPVfQop1G2bnIGlO2x4OXYZp?= =?us-ascii?Q?ai3nY4sf1/re7gCYW77taw3s9tO7WwQHIU/gDMESr+UsqqKi5cwg6cFGBNSR?= =?us-ascii?Q?zES3dArThGD5EB1gwf6DQxMt0RQ9o3MYWyd08Vnc2e/CNtthqBQGzWJ4Mlfm?= =?us-ascii?Q?T2SQi38e6VGn+6swdio3Km/fT7VreeBkuRSCs3t/Mzt5Kxj09bwOFjeX5yj4?= =?us-ascii?Q?4TSTXF0OX9eFZJzejs8/hS3eBjHnJyv+WmAC4GVI9xjuq5PRyylIqJb5zY9D?= =?us-ascii?Q?YHTbh0xkyDNZ9vwMvNAGQSGqaAU/56N7nBKXLXm1LFOZAjrMhzmWlqMwvrMJ?= =?us-ascii?Q?9u4XoXC3jyfR/E+kD3mMopWzAschhR2SZEiMuy6UZkeHCMyTDNwW2Ykveh3i?= =?us-ascii?Q?qPKIEX3jyhaASufitEAvj498MFn2ak6meZmfPf/fJKIXwsmW0Lnk8JiFosEe?= =?us-ascii?Q?q4d+wz57Kz2OUOAhRj3APRBluDBOPVosw41S9grEFvbmSXP03WkZNcLaijK9?= =?us-ascii?Q?tkyOSw2WukOsrW6ScYJ9knYCWXSHhXlsWf6oJgj/s/yY/GqdLIjuk8omyJXJ?= =?us-ascii?Q?JBQlRVpkdBVbz2ROvuBb3z7blYS4f1papyRoUCaAt4YtwdQFLzllJEnLCN1L?= =?us-ascii?Q?gN/a5CwApBwVSdljU5juL3Z/S1tUpoMKVYA/oGR/2Yj6f8BljuUrPWo+HdbF?= =?us-ascii?Q?N3G5xgEU3zx/YJVutOSBXXvwCHf9RKFjQvNAAMgusPXxe0VI/zUZLtxbKghV?= =?us-ascii?Q?4gq+G/6zM41KKdEM+nm+Whz8IQwlH8Vxhz6X1e5vnxMiXd52oawNvDAhIiK+?= =?us-ascii?Q?a/7xy8Wrdgi1sDZ2nrWr2iRR6mqBhHXKhO2lVCfviaX/cqrO0sGiYWE5s6AD?= =?us-ascii?Q?K1zi3LOnPa7ueQjl4OdHaEQbdsECrFYczQ8w9mAgUNhBZa2txwFZH65ucdji?= =?us-ascii?Q?iB2TCC2cNFtA8OiqJ6w9EjWRLiYd/5UQnvlf/ui3tn/MDOJhGTog9spUKpqj?= =?us-ascii?Q?lPQ3e0u0UjEoimGSi4bTl2kXyXKj0oKYAJ2QRYAc0TUsfBJGY1s+e/RbR4yn?= =?us-ascii?Q?OLJcpfhc7tGO+AcjXBinAvg99nyQBXDzAgyGZlSjuET6/Yle7JokT8MrQsHg?= =?us-ascii?Q?1IX7kV3L3PJTEN2JBshHgBRkJt3X/V4sT5FRNKMEBnoxMeIxePTv6XEfIdyY?= =?us-ascii?Q?41EyH6A8RSUR0Lm5GasURiKtq+IGZS0mezqAUXA23uKT5P9QTWOVG+Lq8sZ8?= =?us-ascii?Q?x4zNura9rlmYnUGgIh4HbTP7eWFr8S4hQmJhcjs4ZJSObiAZyeUohwpyxSt9?= =?us-ascii?Q?cOhxekXpKZWqkYUggZnRPLH6XRltMLpukvkMJqiKD+4n1zAe/+IL51U+udDA?= =?us-ascii?Q?JGYmwUwxGO9GGlHSNsd9wKZP8oLMymesmAfFbjz+z3gPmiXiYb2ycuKB7jY1?= =?us-ascii?Q?CN1ugoMwSWXgHJG8oFBzqEUQ1me99f984Z8YtEZrR449vgX5UV/ydbidiy/K?= =?us-ascii?Q?cVeTnOZYHbIJR3Q38D53fJ0bYea2cgmejdkaAqwZLkwwBO5y7TMR8hNk9QpK?= X-MS-Exchange-AntiSpam-MessageData-1: xROGa/fQWha+Mg== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a77c7827-6054-432b-ba32-08deb927c4b3 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:38.9077 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: sWqR3oVj76jKGArSts1XAAJ3oqRE5VqXSsZ2auioPa2PFMmC+AVnlemTS0zryetbu/vJ1jTyzFKyk1xyty4t4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-c201ff/1779580962-E0063443-401E5445/0/0 X-purgate-type: clean X-purgate-size: 4442 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580995441154100 Content-Type: text/plain; charset="utf-8" Read the distance between NUMA nodes from the Device Tree's 'distance-map' node. --- xen/arch/arm/numa.c | 2 + xen/common/device-tree/numa.c | 93 ++++++++++++++++++++++++++++++++++- xen/include/xen/dt-numa.h | 1 + 3 files changed, 94 insertions(+), 2 deletions(-) diff --git a/xen/arch/arm/numa.c b/xen/arch/arm/numa.c index 15cad3d267..a7769b0c7d 100644 --- a/xen/arch/arm/numa.c +++ b/xen/arch/arm/numa.c @@ -41,6 +41,8 @@ void __init numa_memory_affinity_init(void) dt_numa_memory_affinity_init(); =20 numa_initmem_init(0x0UL, 0x1UL << (PADDR_BITS - 12)); + + dt_numa_distance_table_init(); } =20 int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *e= nd) diff --git a/xen/common/device-tree/numa.c b/xen/common/device-tree/numa.c index 539ddfccc5..6414806937 100644 --- a/xen/common/device-tree/numa.c +++ b/xen/common/device-tree/numa.c @@ -1,4 +1,11 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Derived from Linux kernel 7.0's $drivers/of/of_numa.c + * Parse 'distance-map' + * + * Copyright (c) 2026 VA Linux Systems Japan K.K. + * Author: Hirokazu Takahashi + */ =20 #include #include @@ -12,14 +19,96 @@ #define LOCAL_DISTANCE 10 #define REMOTE_DISTANCE 20 =20 +static u8 __ro_after_init numa_distance[MAX_NUMNODES][MAX_NUMNODES] =3D { + [0 ... MAX_NUMNODES-1][0 ... MAX_NUMNODES-1] =3D NUMA_NO_DISTANCE +}; + /* * Get the distance between node 'a' and node 'b'. */ u8 dt_node_distance(u8 a, u8 b) { - if ( a !=3D b ) + nodeid_t lastnode =3D last_node(node_online_map); + + if (a > lastnode || b > lastnode) return REMOTE_DISTANCE; - return LOCAL_DISTANCE; + + return numa_distance[a][b]; +} + +static void __init numa_set_distance(u8 from, u8 to, u8 distance) +{ + nodeid_t lastnode =3D last_node(node_online_map); + + if (from <=3D lastnode && to <=3D lastnode) + numa_distance[from][to] =3D distance; +} + +/* + * Parse the '/distance-map' node from the flattened device tree + * and extract the 3-tuple triplets . + */ +static void __init dt_numa_parse_distance_map(void) +{ + const void *fdt =3D device_tree_flattened; + const struct fdt_property *prop; + const __be32 *matrix; + int entry_count; + int node; + int len; + int i; + + node =3D fdt_path_offset(fdt, "/distance-map"); + if ( node < 0 ) + return; + + if (fdt_node_check_compatible(fdt, node, "numa-distance-map-v1")) + return; + + prop =3D fdt_get_property(fdt, node, "distance-matrix", &len); + if (!prop) + return; + + matrix =3D (const __be32*)prop->data; + entry_count =3D len / sizeof(__be32); + + if ( (entry_count <=3D 0) || (entry_count % 3) ) + return; + + for (i =3D 0; i + 2 < entry_count; i +=3D 3) + { + u32 nodea, nodeb, distance; + nodea =3D dt_next_cell(1, &matrix); + nodeb =3D dt_next_cell(1, &matrix); + distance =3D dt_next_cell(1, &matrix); + + if ((nodea =3D=3D nodeb && distance !=3D LOCAL_DISTANCE) || + (nodea !=3D nodeb && distance <=3D LOCAL_DISTANCE)) + { + printk(XENLOG_WARNING "Invalid distance[node%d -> node%d] =3D = %d\n", + nodea, nodeb, distance); + continue; + } + + numa_set_distance(nodea, nodeb, distance); + + /* Set default distance of node B->A same as A->B */ + if (nodeb > nodea) + numa_set_distance(nodeb, nodea, distance); + } +} + +void __init dt_numa_distance_table_init(void) +{ + u32 lastnode =3D last_node(node_online_map); + u32 i, j; + + /* fill with the default distances */ + for (i =3D 0U; i <=3D lastnode; i++) + for (j =3D 0U; j <=3D lastnode; j++) + numa_distance[i][j] =3D i =3D=3D j ? LOCAL_DISTANCE : REMOTE_D= ISTANCE; + + dt_numa_parse_distance_map(); } =20 /* diff --git a/xen/include/xen/dt-numa.h b/xen/include/xen/dt-numa.h index c6939d0928..075d31cb89 100644 --- a/xen/include/xen/dt-numa.h +++ b/xen/include/xen/dt-numa.h @@ -15,6 +15,7 @@ static inline unsigned int numa_node_to_dt_nid(u32 n) =20 u8 dt_node_distance(u8 a, u8 b); void dt_numa_memory_affinity_init(void); +void dt_numa_distance_table_init(void); =20 #endif /* CONFIG_DEVICE_TREE_NUMA */ =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580984791634.824016497793; Sat, 23 May 2026 17:03:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318185.1586585 (Exim 4.92) (envelope-from ) id 1wQwIo-0003N4-9r; Sun, 24 May 2026 00:02:46 +0000 Received: by outflank-mailman (output) from mailman id 1318185.1586585; Sun, 24 May 2026 00:02:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIo-0003M8-51; Sun, 24 May 2026 00:02:46 +0000 Received: by outflank-mailman (input) for mailman id 1318185; Sun, 24 May 2026 00:02:44 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIm-00036w-Ki for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:44 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIm-000m7t-0p for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:44 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fbd-bab6-0a2a0a5309dd-0a2a4505ca84-34 for ; Sun, 24 May 2026 02:02:44 +0200 Received: from [52.101.125.103] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124020-aaa8-0a2a45050019-34657d67f7b1-4 for ; Sun, 24 May 2026 02:02:43 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:41 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:41 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=ja6y0onw41r2rJDQOemoDSgy66eGM6ASzMkFlWk6Y23mauRNldBo5Z/xQ1NL4lOT39TavGtlHrjHupmnHwxYbekGXf4dgNfQGNxzz3RRYvSDZ+26kbGqJEvkIA3rSeAHt9rBbGkVYhGB4fiQYtbCCjSQDgbrdvO0qaeLcKESxkh7nrWY+shUy54TO/NXZCwfQVIxaeIzZlFYIkkNuuN/VGMy8nTFPdDEkInYAEQVI8xEk6uwMzhIwmw+kQomLFQUotA1EAvnVnvnhjwWdgw4IKW8GEXPvp7OXErdudjTjZH8rXCMY5VJlY9Zp1W/n+KFwKZF03O83fmUgBwQRlT+7A== 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=sCyLbL/Ss/VTqlq+c6wx572rq1avvD+OA4b+ce+lLNM=; b=OVcEObM3eBJqrvT3cQ5fX8J5arpp3wKcO+P2K2QglREiNLTeLUDh060xMd3mZ7NPvG19jOLYlgslEST/NCyZdKpjX5k9SF1GQpUTbvf4Ecj7JUvuHoegUBHjn99LPW0+8oh6BOtX59GoQ0MhXzmRa3PUinLlfgZ549nV80/c5hKRmpr5m3I2El34ja27NNnNXRADx7c9o5EEqcwhS0/Zi0FI9UjgLT/gz1ncKPUf/nX7dvfXhhwcEY2Z/lQKAZlzrfiPsV2Sw6WRwZ0vwYQ8WtVu4uVy4uODVw60kNj9uFxMVew9uTExHEncwGC/w5GUMMRIE7cNzCxwkJxMn/Ki7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sCyLbL/Ss/VTqlq+c6wx572rq1avvD+OA4b+ce+lLNM=; b=L4uR4YZLcx3QU99GSq/y3fpfW7DNrZqD2wzC1cFkHO3jYV+6Jok9aP7tDm86n3eTX3L1Y6llnaVKjz0wG7BMrvwhYpodvJuhxuPE4+G4kpQj0pZyuvNKq+pQQdWBpkGcv+VsAqyVwcXp0pzj2XcGsI/K6zFpPV3buAyn5tQJq0M= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 07/21] xen/device-tree: Parse 'cpu-map' node for CPU topology exploration Date: Sun, 24 May 2026 09:01:55 +0900 Message-ID: <20260524000209.292370-8-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0058.jpnprd01.prod.outlook.com (2603:1096:405:2::22) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f6e3ec9-e9d5-43c7-9c5c-08deb927c62b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: 9+AtnXuPwiaWQwBp1gS6f+BubTb4nVKWoanPLq7VX5E7onJ0W5YqXcD6OvHTOgj6HW7TCvAj1q/Ft6pDx4z9IvL9Gsng1GF2UdwQ+m3ML2smy3x6p830n70na81za5oa8L7QiZcZ+m5EtxQADlzj+O925tcex+5A9f3peRqkyfzLFh/pakGa0Neh8NxQqhBG6KE99LWLiyATN6VIaKV1tg/ZurGMTD8c3JOB1OYnwPCte86xcPdmVX+kanQiMEIGdoDvAFEfOT9tzX+IyUyNnegkPj/AFe1h7bYSJuJBRtBwjmAC5MDl5H3eb0uh45OSYJ+KbSHIcrfyrPNlbcuNi/UuO3DIDSDPJkArNsMHlGJE5O3oZZFYOHrgjpvJ5ct7NTB/H/WPf2ErXBtgyj/2/LpNn9ubEoxUFwPMNH6nhrwGIv5yEZkAbRr1oWRuvBq1nKod2W6oOcHOjxE5EJU/DB1JgHflZlHekN5lB5QNpPcRGEEnzoEoswPzVaRJxcTk4RsYm2S97cTf0xNqM+MkyMvsE/jfU+KLAdIM+WKLqzSKCl6ksTFw98IN7Sjszi2s22d2m9eUqX3pqhdKczUWD4tlH3Ipd9C0NxPVdbBw2JjeE2gJAwXGGfppYRmbc9QnPLKCZWc10Z0JV9IXHRb7q6t53c6fdHV9jrByEomvdra2VRCHlg8IalReb2Ls7VkJ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?V45Bg0Ux4QSwCqNXINfuJmlgxB7vc4csiSTXjRdgxZzW3vY+TV/DSCBZtqRj?= =?us-ascii?Q?IylJeHjoo6o+DuwAF7mu4GmdyBW8gscXHbGdVHQWWa+qCJcEfIWIlOUR9E+7?= =?us-ascii?Q?2kYCxOSKEen/OAPEu6PLXXYrq/e8++1ILY5mBVQDtgxZSswoeLAf5Ne0gJE+?= =?us-ascii?Q?4IR3UGPqP2gD4hb7zoEJ4N1Qw0N83NB+zZVp+FOoZT1RVmKIDtT8mY8D1bR5?= =?us-ascii?Q?gGfJuvdwVepq2HqU7i+7JEAzbUA62/qy09Va9MwpHJJZMgFOw1x56y/jkarR?= =?us-ascii?Q?LcdrExqH9h43XWXz+R6qkndKpRzy5jRxeZ9nB5//V0kjrOEbh3aCU+TgSYJR?= =?us-ascii?Q?xzux/X2OP6coBh6/t6vHsi0vjptT1mh/efls8+gi9cGL4hLTFgkn7QVOJ9nQ?= =?us-ascii?Q?J4ufDQ1yMCny74IlpH5lftUQ/4zUIC1aFGb+QsGLMY3nyYE84Jw6bT0rIN1e?= =?us-ascii?Q?LE43JaA3DUoIx5D4gg5dazBPG3HyOOHwEFTCN4QMokx9Qv9QR1n0v8WvoYJy?= =?us-ascii?Q?brMLfFDKCWZzNHU7caGrG57UcuLfB8n5oZx5kAi4remeKA2jVjdofEgmk4C+?= =?us-ascii?Q?z3BZa9GkJWqMIDMlY3z9tnnHfMshj9v4ra7QDREz7+cdmNnZ+wOeotS+rx2b?= =?us-ascii?Q?EG4mNCEOEKw2mtDA4TkZjK3YmjcMYPMhqIaczGdQXYhu/mvzt/BUyISLNqes?= =?us-ascii?Q?HZu88APkASyKu7fn/z9+0sU4qYw6g3wJhzARyHFgkGZQV8GYOFOvUvC5A3e2?= =?us-ascii?Q?AMCn1e3FogzjdHaEZQ3nnxgT2iMuTWoXOB/pBg/dNrH3gYbE2XaQVHDxtN5N?= =?us-ascii?Q?AB6EcZtqm62+JfV1AcuEtd2q+cZPN+17Lt7bjb79mCNyt/Y0LIbsaVy8bhI1?= =?us-ascii?Q?tDLOUjwy984ASO9J25qzM7F8/NPGKsnG+FsUHRGXwkAIjY052t5KxJ+gW5Bm?= =?us-ascii?Q?afsfjFvconAGts1pHnqxnGTm8Dnus9S95livqKkyw1v1zjhiTKyEA32NBk6y?= =?us-ascii?Q?LbiMdadpcUz3ciKJ+RlG+Rx4bzCoCM14IGrqFTVTY3F+6nTpOcXIRBJ3yTIN?= =?us-ascii?Q?jhK1ahl2Nf9q6HW/dtkg/vyr2xWK9+jWcglPfH1mUs0N/95PkRidVgHKZ/43?= =?us-ascii?Q?REd8zM0hi6rSBwzr7ngCjoSRq87bBG860J0tL5MDcfaBOIo76B94oN5FiGYp?= =?us-ascii?Q?9T9n+QObLOTmf4B5MayiLPdnkqh9ae3zzJ0RJ5Cq67VT/S2sS+sd3Vl08RaZ?= =?us-ascii?Q?0Y3dMYc3zB/q4woc6iNbO+NQ4WLiiwQOUHIME7q1juCNbtkoeS34BgQz8xGX?= =?us-ascii?Q?sY010bFtqHy3RLc0nwousvnCKRd+4mStQ+YDNx/B5rIwEKMD+7Yr5XGHXPoN?= =?us-ascii?Q?VrUjf9TFqTeZIM4zH6CVWi+klvSmnBOCHWMXB5ybtxX0e7eZp2ZFTPUaQtEf?= =?us-ascii?Q?rY6RAWjdyxq1OkDhhkWTytr5h/dfnvmIi7sYy8aF32kRVWjZsemcNwrTAWqF?= =?us-ascii?Q?8Pm7wkUYGIOCJSwZu8Pbsy+I1qRyxIOynLzflgfRFai55FlDbLjQqx8edDy4?= =?us-ascii?Q?yUdGbC/GIBXRXsrJWgMp6aTltNw9VOeYcOg3AtF60J9lV9kT0+CKkWXvanTv?= =?us-ascii?Q?RN47B9DFyMsDEzalPM5KcxjTLHCo1OEgDGPrK/Qhom5WW9bzVs26hxFPd02j?= =?us-ascii?Q?wxBfmDXguR3/biaCYGntz7oC6MJ8Wtc8dYR5VJWdYeHmR3o1YfZK4nUjR5M/?= =?us-ascii?Q?9ZIagqSh1tMudbt0wMxk3BuaCJ3PqFPWjcAcqjiy1h7CZF8UimC2IM4+y0Zl?= X-MS-Exchange-AntiSpam-MessageData-1: Ed+gpsSLsS6cYw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4f6e3ec9-e9d5-43c7-9c5c-08deb927c62b X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:41.3843 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: e8YvAu3End5j1ygY6z1D0x/OaVUm80512H4Nt/nIQgxP7Tt5aC5j33rPJyDGEnWMx0A9l2Of04hfoaXJ7ygCgA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-c201ff/1779580963-DBB60443-DEC13C0F/0/0 X-purgate-type: clean X-purgate-size: 12305 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580986708158500 Content-Type: text/plain; charset="utf-8" Parse the 'cpu-map' node in the Device Tree to extract CPU topology information. If the 'cpu-map' node is absent, fall back to generating the topology data from the NUMA information. This generation assumes exactly one socket per NUMA node and that SMT is unsupported. --- xen/arch/arm/smpboot.c | 6 + xen/common/Kconfig | 7 + xen/common/device-tree/Makefile | 1 + xen/common/device-tree/cpu_topology.c | 307 ++++++++++++++++++++++++++ xen/include/xen/cpu_topology.h | 42 ++++ 5 files changed, 363 insertions(+) create mode 100644 xen/common/device-tree/cpu_topology.c create mode 100644 xen/include/xen/cpu_topology.h diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index eafa195504..ff8b0d07e9 100644 --- a/xen/arch/arm/smpboot.c +++ b/xen/arch/arm/smpboot.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -248,6 +249,8 @@ static void __init dt_smp_init_cpus(void) else tmp_map[i] =3D hwid; =20 + map_cpuid_to_node(i, cpu); /* pass the info to dt_init_cpu_topolog= y() */ + #ifdef CONFIG_DEVICE_TREE_NUMA if ( tmp_map[i] !=3D MPIDR_INVALID ) { @@ -294,7 +297,10 @@ void __init smp_init_cpus(void) } =20 if ( acpi_disabled ) + { dt_smp_init_cpus(); + dt_init_cpu_topology(); + } else acpi_smp_init_cpus(); =20 diff --git a/xen/common/Kconfig b/xen/common/Kconfig index 2365b421bf..014192b2cd 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -188,6 +188,13 @@ config VM_EVENT config NEEDS_LIBELF bool =20 +config DT_CPU_TOPOLOGY + bool "Device tree based CPU topology support (UNSUPPORTED)" if UNSU= PPORTED && ARM + depends on HAS_DEVICE_TREE_DISCOVERY + help + Retrieve CPU topology information from the device tree to optimize + virtual CPU scheduling. + config DEVICE_TREE_NUMA bool "Device tree based NUMA support (UNSUPPORTED)" if UNSUPPORTED && ARM depends on HAS_DEVICE_TREE_DISCOVERY diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makef= ile index fab038d357..dbfce294fb 100644 --- a/xen/common/device-tree/Makefile +++ b/xen/common/device-tree/Makefile @@ -11,4 +11,5 @@ obj-$(CONFIG_DOMAIN_BUILD_HELPERS) +=3D kernel.o obj-$(CONFIG_STATIC_EVTCHN) +=3D static-evtchn.init.o obj-$(CONFIG_STATIC_MEMORY) +=3D static-memory.init.o obj-$(CONFIG_STATIC_SHM) +=3D static-shmem.init.o +obj-$(CONFIG_DT_CPU_TOPOLOGY) +=3D cpu_topology.o obj-$(CONFIG_DEVICE_TREE_NUMA) +=3D numa.o diff --git a/xen/common/device-tree/cpu_topology.c b/xen/common/device-tree= /cpu_topology.c new file mode 100644 index 0000000000..6c78a74778 --- /dev/null +++ b/xen/common/device-tree/cpu_topology.c @@ -0,0 +1,307 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Derived from Linux kernel 7.0's $drivers/base/arch_topology.c + * Parse cpu topology information. + * + * Copyright (c) 2026 VA Linux Systems Japan K.K. + * Author: Hirokazu Takahashi + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +static struct dt_device_node * __initdata dt_cpu_table[NR_CPUS]; + +struct cpu_topology __ro_after_init cpu_topology[NR_CPUS] =3D { + [0 ... NR_CPUS-1] =3D {-1, -1, -1, 0} +}; + +static void __init setup_siblings_masks(unsigned int cpuid) +{ + struct cpu_topology *cpu_topo, *cpuid_topo =3D &cpu_topology[cpuid]; + int cpu; + + /* update core and thread sibling masks */ + for_each_possible_cpu(cpu) { + cpu_topo =3D &cpu_topology[cpu]; + + if (cpuid_topo->package_id !=3D cpu_topo->package_id) + continue; + + cpumask_set_cpu(cpuid, &cpu_topo->core_sibling); + cpumask_set_cpu(cpu, &cpuid_topo->core_sibling); + + if (cpuid_topo->cluster_id !=3D cpu_topo->cluster_id) + continue; + + if (cpuid_topo->cluster_id >=3D 0) { + cpumask_set_cpu(cpu, &cpuid_topo->cluster_sibling); + cpumask_set_cpu(cpuid, &cpu_topo->cluster_sibling); + } + + if (cpuid_topo->core_id !=3D cpu_topo->core_id) + continue; + + cpumask_set_cpu(cpuid, &cpu_topo->thread_sibling); + cpumask_set_cpu(cpu, &cpuid_topo->thread_sibling); + } +} + +static struct dt_device_node * __init dt_find_child_node_by_name(struct dt= _device_node *from, const char *name) +{ + struct dt_device_node *np; + struct dt_device_node *dt =3D from; + + dt_for_each_child_node(dt, np) + if ( np->name && (dt_node_cmp(np->name, name) =3D=3D 0) ) + break; + + return np; +} + +void __init map_cpuid_to_node(u32 cpuid, struct dt_device_node *cpu_node) +{ + dt_cpu_table[cpuid] =3D cpu_node; +} + +static int __init cpu_node_to_id(struct dt_device_node *cpu_node) +{ + int cpu; + bool found =3D false; + + for_each_possible_cpu(cpu) { + found =3D (cpu_node =3D=3D dt_cpu_table[cpu]); + if (found) + return cpu; + } + + return -ENODEV; +} + +/* + * This function returns the logic cpu number of the node. + */ +static int __init get_cpu_for_node(struct dt_device_node *node) +{ + struct dt_device_node *cpu_node =3D dt_parse_phandle(node, "cpu", 0); + + if (!cpu_node) + return -ENOENT; + + return cpu_node_to_id(cpu_node); +} + +static int __init parse_core(struct dt_device_node *core, int package_id, + int cluster_id, int core_id) +{ + char name[20]; + bool leaf =3D true; + int i =3D 0; + int cpu; + + do { + struct dt_device_node *t; + + snprintf(name, sizeof(name), "thread%d", i); + t =3D dt_find_child_node_by_name(core, name); + + if (!t) + break; + + leaf =3D false; + cpu =3D get_cpu_for_node(t); + if (cpu >=3D 0) { + cpu_topology[cpu].package_id =3D package_id; + cpu_topology[cpu].cluster_id =3D cluster_id; + cpu_topology[cpu].core_id =3D core_id; + cpu_topology[cpu].thread_id =3D i; + } else if (cpu !=3D -ENODEV) { + printk(XENLOG_ERR "ERROR: %pOF: Can't get CPU for thread\n", t= ); + return -EINVAL; + } + i++; + } while (1); + + cpu =3D get_cpu_for_node(core); + if (cpu >=3D 0) { + if (!leaf) { + printk(XENLOG_ERR "ERROR: %pOF: Core has both threads and CPU\= n", + core); + return -EINVAL; + } + + cpu_topology[cpu].package_id =3D package_id; + cpu_topology[cpu].cluster_id =3D cluster_id; + cpu_topology[cpu].core_id =3D core_id; + } else if (leaf && cpu !=3D -ENODEV) { + printk(XENLOG_ERR "ERROR: %pOF: Can't get CPU for leaf core\n", co= re); + return -EINVAL; + } + + return 0; +} + +static int __init parse_cluster(struct dt_device_node *cluster, int packag= e_id, + int cluster_id, int depth) +{ + char name[20]; + bool leaf =3D true; + bool has_cores =3D false; + int core_id =3D 0; + int i, ret; + + /* + * First check for child clusters; we currently ignore any + * information about the nesting of clusters and present the + * scheduler with a flat list of them. + */ + i =3D 0; + do { + struct dt_device_node *c; + + snprintf(name, sizeof(name), "cluster%d", i); + c =3D dt_find_child_node_by_name(cluster, name); + + if (!c) + break; + + leaf =3D false; + ret =3D parse_cluster(c, package_id, i, depth + 1); + if (depth > 0) + printk(XENLOG_WARNING "WARNING: Topology for clusters of clust= ers not yet supported\n"); + if (ret !=3D 0) + return ret; + i++; + } while (1); + + /* Now check for cores */ + i =3D 0; + do { + struct dt_device_node *c; + + snprintf(name, sizeof(name), "core%d", i); + c =3D dt_find_child_node_by_name(cluster, name); + + if (!c) + break; + + has_cores =3D true; + + if (depth =3D=3D 0) { + printk(XENLOG_ERR "ERROR: %pOF: cpu-map children should be clu= sters\n", c); + return -EINVAL; + } + + if (leaf) { + ret =3D parse_core(c, package_id, cluster_id, core_id++); + if (ret !=3D 0) + return ret; + } else { + printk(XENLOG_ERR "ERROR: %pOF: Non-leaf cluster with core %s\= n", + cluster, name); + return -EINVAL; + } + + i++; + } while (1); + + if (leaf && !has_cores) + printk(XENLOG_WARNING "WARNING: %pOF: empty cluster\n", cluster); + + return 0; +} + +static int __init parse_socket(struct dt_device_node *socket) +{ + char name[20]; + bool has_socket =3D false; + int package_id =3D 0, ret; + + do { + struct dt_device_node *c; + + snprintf(name, sizeof(name), "socket%d", package_id); + c =3D dt_find_child_node_by_name(socket, name); + + if (!c) + break; + + has_socket =3D true; + ret =3D parse_cluster(c, package_id, -1, 0); + if (ret !=3D 0) + return ret; + + package_id++; + } while (1); + + if (!has_socket) + ret =3D parse_cluster(socket, 0, -1, 0); + + return ret; +} + +/* + * Generate cpu topology information when cpu-map node doesn't exist. + * It assumes that the cpu doesn't have SMT and all CPUs on a NUMA + * node belong to the same socket. + */ +static void __init fixup_topology(void) +{ + int cpu; + int clid =3D 0; + int pkgid =3D 0; + + for_each_possible_cpu(cpu) + { + struct cpu_topology *cpu_topo =3D &cpu_topology[cpu]; + + cpu_topo->package_id =3D cpu_to_node(cpu); + if (cpu_topo->package_id !=3D pkgid) + { + pkgid =3D cpu_topo->package_id; + clid =3D 0; + } + cpu_topo->cluster_id =3D clid++; + cpu_topo->core_id =3D 0; + cpu_topo->thread_id =3D 0; + } +} + + +int __init parse_dt_topology(void) +{ + struct dt_device_node *cpus; + struct dt_device_node *map; + + cpus =3D dt_find_node_by_path("/cpus"); + + if ( !cpus ) + { + printk(XENLOG_ERR "ERROR: No CPU information found in DT\n"); + return -EINVAL; + } + + map =3D dt_find_child_node_by_name(cpus, "cpu-map"); + if ( !map ) + return -ENOENT; + + return parse_socket(map); +} + +void __init dt_init_cpu_topology(void) +{ + int cpu; + + if (parse_dt_topology()) + fixup_topology(); + + for_each_possible_cpu(cpu) + setup_siblings_masks(cpu); +} diff --git a/xen/include/xen/cpu_topology.h b/xen/include/xen/cpu_topology.h new file mode 100644 index 0000000000..0cdceb9bd0 --- /dev/null +++ b/xen/include/xen/cpu_topology.h @@ -0,0 +1,42 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#ifndef XEN_CPU_TOPOLOGY_H +#define XEN_CPU_TOPOLOGY_H + +#include +#include + +struct cpu_topology { + int thread_id; + int core_id; + int cluster_id; + int package_id; + cpumask_t thread_sibling; + cpumask_t core_sibling; + cpumask_t cluster_sibling; +}; + + +#ifdef CONFIG_DT_CPU_TOPOLOGY +extern struct cpu_topology cpu_topology[NR_CPUS]; + +void map_cpuid_to_node(u32 cpuid, struct dt_device_node *cpu_node); +void dt_init_cpu_topology(void); + +#else /* CONFIG_DT_CPU_TOPOLOGY */ + +static inline void map_cpuid_to_node(u32 cpuid, struct dt_device_node *cpu= _node) {} +static inline void dt_init_cpu_topology(void) {} + +#endif /* CONFIG_DT_CPU_TOPOLOGY */ + +#endif /* XEN_CPU_TOPOLOGY_H */ + +/* + * Local variables: + * mode: C + * c-file-style: "BSD" + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + */ --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580993241816.246015719812; Sat, 23 May 2026 17:03:13 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318190.1586594 (Exim 4.92) (envelope-from ) id 1wQwIr-0003pQ-Ng; Sun, 24 May 2026 00:02:49 +0000 Received: by outflank-mailman (output) from mailman id 1318190.1586594; Sun, 24 May 2026 00:02:49 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIr-0003pA-If; Sun, 24 May 2026 00:02:49 +0000 Received: by outflank-mailman (input) for mailman id 1318190; Sun, 24 May 2026 00:02:48 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIq-0003hm-18 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:48 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIp-005yAt-DZ for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:47 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12400e-2eae-0a2a0a5409dd-0a2a4504c06e-12 for ; Sun, 24 May 2026 02:02:47 +0200 Received: from [52.101.125.123] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124025-1dec-0a2a45040019-34657d7b4fb1-3 for ; Sun, 24 May 2026 02:02:47 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:43 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:43 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=c78SQJ+E7GtcOXZCrgI/BDGbgcvcL92PfcaN6MLKiT3VwMyw3UDXhlu4oTKnXO8jvEMICFuvdN87INpGjspdNi6yE/+PtdY8W5LlX/leyOycRoFvrzSbRmn30vbaaEp8gmCZWANUASDwM93c5p1OQnw4QQ6oyCU6aFLJpSd2Zjt4m8o9ucVEkpswmPcK/g47Ko5rctz02G3r9YHVBdCXAW1fpK3FDM+OwJZh+Sfrkng6D7RO2tIuWezyuCUE4r5P7fcNjkvSL+Gp1LNGrXjFgDzBdDn4bKEu1911Ido7xdqls6Fk1rQtQ/EffOAPZZQ41U1bmelI9yQmtgSg2Ug6dQ== 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=t6XthfOnnreD0c3O6/MvGMc15h8Ca88EfvnVvFOO8OA=; b=D/27LsdhetCayJxjss3Gxsi79a33+xT6OTLRu0RdhZ5oDHB650xOYwGkaqW7Y42weq5Spsx5Zqf+ZdW2c4Xx4Dboiq1Vnw+1mlGTb9SF/3LH9mvPrkEAMgmVU8dt2dQEdz/YFNMDujtghhSEQO7Z6PDGRSDVqsfNeBCAG7ACbszRrMGXRPVFtOIC77UIrrBvIBPBa3wGMLIOFdcTRZ0ALpHUeCMWLCGhwAo1QF2hGwGi//S5s/lXWmmycT4yZufkU9vmx7QGjWOKZcpn6e5k/flp8eY8ooZbRAzMdovERKMyaQd4TXUvy8WysOp0i/FbFwIvyNW6kh8HkKmT/OTPQw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=t6XthfOnnreD0c3O6/MvGMc15h8Ca88EfvnVvFOO8OA=; b=OOYwes/nT+ohhFM+rMh8cx7hKn6jFBG/eluatuOkSZkraxGQ8UZggNxFScbKHJzUBFX4G+QxCRx6ZjykYk8y7lc21YKHQjvZT52KXs6ZlSpD5VoSHsUeBoWlZLKLUX6MRLpkmWJlKr1tVrxpkWXigpY4VWCxYo6rpdbrb4E664o= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 08/21] xen/sched: Link CPU topology to scheduler and display via xl info Date: Sun, 24 May 2026 09:01:56 +0900 Message-ID: <20260524000209.292370-9-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0063.jpnprd01.prod.outlook.com (2603:1096:405:2::27) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 05de9b1a-20c3-43c1-9e4c-08deb927c789 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: YWIYl0ddl8yuPz4BHCfYikDjoJ54lWqpc/Ssq0YwIN8zTl1ErwKevGs0/1DCmzgwUb9yHaOm11Fjidr5vvC2sg5YcYlIpvFF4ij2Jz4pRqmLCyx22Pt4ln0gD+jNiebNHEgPpIPCbP087Fed4Nf87HuERdiMjW3HLWhZDx/Nv7hGUKMGnh7tpBDDTrrKOETOL1rxBHlhw//ZfxDAzoplYDnFiN6ljLhuHwEUCh93KtrL4qQwZm+eCbqXZH/auEyoWfvx4e9YqPPxeKQIZgi/xHlq+qeG4iDv8vSeGaSRJZdA9888PAnv4Ju8cTzumczv9qniWmjeKqDChZdxaqb5wvgvbHvMNIn08mo2uHcLLqB2PJ5xtO0i2dtRhiKSWtTpRPWCDuFmRrYc/+bRfLh8rWLEFaiMYX6KWVy8r15Ew7gd9wnssA8BzgP3U2ZZz67SStBAMT63mdIVN0QFU6zoDH7KzgtHOsYr/FaYIhX8xeJfaWWftZu7IfBRBbkIMUzIJN7LBHOlOwDjA0q2U3hSFXGCvysFSLzp7kPSNEpU51/g37PPecjMZFpwNya/UCwbRaSB9j9l/2tB6N4yTTX1F0zhIr5fDHHLbQ6uBfmjy2WjuwKfHXnJMOMBm2zsipHxEdRUJQ8DsHLANb10e6QpcvX1YLSB6g3UAKHrUzAR5LaHFpNBiE2PNK0WRrh2hSEg X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?fYjyS+H//9rgEiIMAEIxuBY5r071YyntHE2M2SMpOXq3LpqB4QTg4q29Oeip?= =?us-ascii?Q?DVJDciII4swCIVViuMYayzTqqUCpmgZCwYIQx3TFQoHQ+dpw79V47Tclua9w?= =?us-ascii?Q?TOLexo7+8kIFASnsgDniqmUXJ79INak4nNMkq/pmUCsaT5V8ANj8xjQSvvTM?= =?us-ascii?Q?ImnlmeIIB8xlt2WoI5SC6StQPz4XcuW966R1wKKr0IN2OQW2W4LiFLovliXF?= =?us-ascii?Q?4U8GF7BelsWDv1x3ey7nr68n/HUmW1/K8lXK5xRpIyzIbqUG8qeGa9E1uuKB?= =?us-ascii?Q?2H2daVGW0bJTZQTPcwMvkuzQxxMhkckDlFHsD6MFkrue7Y1K9Y8RaRDhj/JX?= =?us-ascii?Q?j7x7dDtOD4DChqfnJKzVK64lBC2p0JIMv4CO5TCEbIEyNRx+YnhfLxbYvGAT?= =?us-ascii?Q?Z2O+IhWdiET0Ze3bL6x2+cNyIgKHWxACjskoCYN8fX0MLzUJRumuhelUw8tL?= =?us-ascii?Q?hY5it0+NE05V2tYnY8jSXAZReby6iuZ8mQijSAKX/4T/Rp2xYZPMatrXW8nN?= =?us-ascii?Q?PhR095xZqn2RxemtbQ0BTvgopxbQMPV5e0PaBuD7Tcc9OwUqJnphDjsQEaPq?= =?us-ascii?Q?zG4lWtyjqHhc3HF47gWmGOCN/0ujOTTmsH19QcyI6f+Om6lagGjAILptDAEB?= =?us-ascii?Q?aUP0eGQ7zX/nYtq3RzSsd+dehR25fykLzGegdGAtvYAY6uwaPdYL+qY0u+hg?= =?us-ascii?Q?YkoJCPMx1GZylTe6BXNYKQ+fIH5pC40k4iblWCkm/LXSWU5p7JbIn3lDEVZy?= =?us-ascii?Q?xmS0SX9YDrfVUbfspVgyNqXh7Q0tj0hAwFW+h/0wweteeX85+AgPO5GgajgU?= =?us-ascii?Q?vWUK34eNZA89ry3/wLH/eyGPCicnrj/v3X5+Aj7vEt9VeoYrBk80YOcvlM2q?= =?us-ascii?Q?VMjv/D81ZQKoBCLVfBcArC28khmghvHrS0bTD22cgukhp7LtuIqJ1DKFEeq2?= =?us-ascii?Q?somI5ZM44WmsRIKJ/ogILRtPmY1KE71DK3cb8BX3r2x3UjPkfaRJ3FDlJfws?= =?us-ascii?Q?/6wJ1QyxN0onXnPoQA+puL3AcXQOXyvHLMDOEysFgzr5JQ+KYKdektKijFDH?= =?us-ascii?Q?9bcOhPmXZiuBp5xKS47wVeQTPL5Rz5Mhy13NtyVqBaUTfZzmamUtUPVi9dVa?= =?us-ascii?Q?qnrVLrWFWrk104zGj95mz4jBXhR2K9NfKIh/d/dhp+tGXhNI5cZn/cvswT6b?= =?us-ascii?Q?uHOM262RY4Hj6HfY+n+5kUY7KfhiWl9WkgndYBUQx9P8uK2+9eC6LfI51qne?= =?us-ascii?Q?V/v8jOUV66bKr81ij8LXQ9wAYPOZek5o4IF5+V3HPuYRPcXjUfkhKA1dqO2S?= =?us-ascii?Q?aj1KND9qsHXsZsEqMzJLdbkbs3EuexeOICjg8kvsrMYDUo3bJjXqCpPBmJPG?= =?us-ascii?Q?8jCZ9UI79Iq67qAAJ74Q7yu6QAYum9KH/bArve90tCLXmYDfegqQYHZ+JAQQ?= =?us-ascii?Q?AmNNco0OLouJXS/E3JpxJshuV+4r8q6KcX2Eoux63BIRxcF5D29khM1ltOiA?= =?us-ascii?Q?5uWv/kqDUR/10k6QfzoJvHBYIjErkrOGEnFviqtD4X3UR9lc2ac4A4HhCz8L?= =?us-ascii?Q?psEu6MXKh/tBIa9zhpUqE+bhDcyte09k8vGYk5WaZeAwlg5dqDLJKdt8MwpS?= =?us-ascii?Q?NXvvRW6LAKlCBS1Dg/UdlOGMhMfVpFyuK7WoSLhxltPe2lEIUsLIOZpstAr3?= =?us-ascii?Q?paP6XRbtgqD9AIJ4S22sL+q1KTUO3ce2GXrqeF5TNVUg5VYs5/s8UBpD3SVk?= =?us-ascii?Q?QxhQyYrGPdcfZ0E4SoEeCaF4jTxOT6MbRz6HKJgcUD3gJwzZZb9J1UY2Fw13?= X-MS-Exchange-AntiSpam-MessageData-1: XzMvSeRf/c/maQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 05de9b1a-20c3-43c1-9e4c-08deb927c789 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:43.6620 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: nIXx77SPwG392u06EAmFufrYf9lYy4rC4LpPuQDRguoch+Fi5i8Z1cFomqBRwlN0ucKFxOqg3PaCposRVXoPAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-ebf023/1779580967-2BF6D3FF-50070413/0/0 X-purgate-type: clean X-purgate-size: 5726 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580995458154100 Content-Type: text/plain; charset="utf-8" Make CPU topology information available to the Xen scheduler. Additionally, ensure that this topology information is displayed when executing the 'xl info -n' command. --- xen/arch/arm/include/asm/processor.h | 6 ++- xen/arch/arm/smpboot.c | 10 +++-- xen/common/device-tree/cpu_topology.c | 54 +++++++++++++++++++++++++++ xen/common/sched/credit2.c | 3 ++ xen/common/sysctl.c | 1 + xen/include/xen/cpu_topology.h | 3 ++ 6 files changed, 73 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/as= m/processor.h index 895d7cd502..066966b375 100644 --- a/xen/arch/arm/include/asm/processor.h +++ b/xen/arch/arm/include/asm/processor.h @@ -591,9 +591,13 @@ void show_stack(const struct cpu_user_regs *regs); =20 #define cpu_relax() barrier() /* Could yield? */ =20 -/* All a bit UP for the moment */ +#ifdef CONFIG_DT_CPU_TOPOLOGY +#define cpu_to_core(_cpu) (cpu_topology[_cpu].to_core) +#define cpu_to_socket(_cpu) (cpu_topology[_cpu].to_socket) +#else /* CONFIG_DT_CPU_TOPOLOGY */ #define cpu_to_core(_cpu) (0) #define cpu_to_socket(_cpu) (0) +#endif /* CONFIG_DT_CPU_TOPOLOGY */ =20 struct vcpu; void vcpu_regs_hyp_to_user(const struct vcpu *vcpu, diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index ff8b0d07e9..726f3720ce 100644 --- a/xen/arch/arm/smpboot.c +++ b/xen/arch/arm/smpboot.c @@ -93,13 +93,17 @@ static int setup_cpu_sibling_map(int cpu) !zalloc_cpumask_var(&per_cpu(cpu_core_mask, cpu)) ) return -ENOMEM; =20 +#ifdef CONFIG_DT_CPU_TOPOLOGY + cpumask_copy(per_cpu(cpu_sibling_mask, cpu), &cpu_topology[cpu].thread= _sibling); + cpumask_copy(per_cpu(cpu_core_mask, cpu), &cpu_topology[cpu].core_sibl= ing); +#else /* CONFIG_DT_CPU_TOPOLOGY */ /* - * Currently we assume there is no multithread and NUMA, so - * a CPU is a sibling with itself, and the all possible CPUs - * are supposed to belong to the same socket (NUMA node). + * If CONFIG_DT_CPU_TOPOLOGY is disabled, it is assumed that + * all CPUs reside in the same socket and that SMT is not used. */ cpumask_set_cpu(cpu, per_cpu(cpu_sibling_mask, cpu)); cpumask_copy(per_cpu(cpu_core_mask, cpu), &cpu_possible_map); +#endif /* CONFIG_DT_CPU_TOPOLOGY */ =20 return 0; } diff --git a/xen/common/device-tree/cpu_topology.c b/xen/common/device-tree= /cpu_topology.c index 6c78a74778..f5d2a59e2c 100644 --- a/xen/common/device-tree/cpu_topology.c +++ b/xen/common/device-tree/cpu_topology.c @@ -275,6 +275,58 @@ static void __init fixup_topology(void) } =20 =20 +static void __init setup_topology_for_sched(void) +{ + int prev_socketid =3D 0; + int prev_clusterid =3D 0; + int prev_coreid =3D 0; + int prev_threadid =3D 0; + int coreid =3D 0; + int socketid =3D 0; + int clusterid =3D 0; + int threadid =3D 0; + int cpu; + + for_each_possible_cpu(cpu) + { + struct cpu_topology *cpu_topo =3D &cpu_topology[cpu]; + + if (cpu_topo->package_id !=3D prev_socketid) + { + prev_socketid =3D cpu_topo->package_id; + prev_clusterid =3D cpu_topo->cluster_id; + prev_coreid =3D cpu_topo->core_id; + socketid++; + clusterid++; + coreid++; + threadid++; + } + else if (cpu_topo->cluster_id !=3D prev_clusterid) + { + prev_clusterid =3D cpu_topo->cluster_id; + prev_coreid =3D cpu_topo->core_id; + clusterid++; + coreid++; + threadid++; + } + else if (cpu_topo->core_id !=3D prev_coreid) + { + prev_coreid =3D cpu_topo->core_id; + coreid++; + threadid++; + } + else if (cpu_topo->thread_id !=3D prev_threadid) + { + threadid++; + } + + cpu_topo->to_socket =3D socketid; + cpu_topo->to_core =3D coreid; + cpu_topo->num_siblings =3D cpumask_weight(&cpu_topo->thread_siblin= g); + } + +} + int __init parse_dt_topology(void) { struct dt_device_node *cpus; @@ -304,4 +356,6 @@ void __init dt_init_cpu_topology(void) =20 for_each_possible_cpu(cpu) setup_siblings_masks(cpu); + + setup_topology_for_sched(); } diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index 75316d42b7..34876b99c0 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -20,6 +20,7 @@ #include #include #include +#include =20 #include =20 @@ -38,6 +39,8 @@ static unsigned int cpu_nr_siblings(unsigned int cpu) { #ifdef CONFIG_X86 return cpu_data[cpu].x86_num_siblings; +#elif CONFIG_DT_CPU_TOPOLOGY + return cpu_topology[cpu].num_siblings; #else return 1; #endif diff --git a/xen/common/sysctl.c b/xen/common/sysctl.c index 5207664252..806c885df1 100644 --- a/xen/common/sysctl.c +++ b/xen/common/sysctl.c @@ -28,6 +28,7 @@ #include #include #include +#include =20 long do_sysctl(XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl) { diff --git a/xen/include/xen/cpu_topology.h b/xen/include/xen/cpu_topology.h index 0cdceb9bd0..c22224b3af 100644 --- a/xen/include/xen/cpu_topology.h +++ b/xen/include/xen/cpu_topology.h @@ -14,6 +14,9 @@ struct cpu_topology { cpumask_t thread_sibling; cpumask_t core_sibling; cpumask_t cluster_sibling; + int to_core; + int to_socket; + int num_siblings; }; =20 =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580987516552.7726599323134; Sat, 23 May 2026 17:03:07 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318192.1586598 (Exim 4.92) (envelope-from ) id 1wQwIs-0003vN-68; Sun, 24 May 2026 00:02:50 +0000 Received: by outflank-mailman (output) from mailman id 1318192.1586598; Sun, 24 May 2026 00:02:50 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIr-0003u2-UV; Sun, 24 May 2026 00:02:49 +0000 Received: by outflank-mailman (input) for mailman id 1318192; Sun, 24 May 2026 00:02:49 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIr-0003lY-21 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:49 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIq-005yAt-EQ for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:48 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12400e-2eae-0a2a0a5409dd-0a2a4504c06e-14 for ; Sun, 24 May 2026 02:02:48 +0200 Received: from [52.101.125.123] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124025-1dec-0a2a45040019-34657d7b4fb1-4 for ; Sun, 24 May 2026 02:02:48 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:46 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:46 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AIwgvm+HuR4Cd2Mw/PMBpucPRRP3NxA3EmWrR8iy23g40dUBPFeC1Fo0yGjdryhRA8FsBQdaPsGgb+DbkJXpXnIJiPyMtu9/ZbzVz+P9pBTyiYbqC0+hBEFKcigN7d3I3s3/y7/toiAE2+TCCA74kB48nQ5S18eIJqeJx4eyHlxKTjmmDFYJ03LGXhw2+4NI5JX35P65Bk/wF2lDKfaHK4Y2dwgUrH9qqO8MYoOGWSP6X1WHygx5PHKtm/1kJ/+WD9JQWAnUl3MDS8TzsUAhI08A/dxmoHXPFfFddM7AY9/NJ/yiiWFg/zM0AObFGQ4G8JhKng6lrFE7JQvzU8tRVQ== 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=lteRRVaFbxsp6aSXOgwn6Y3jyynAQKzJoiRSSUgWbfU=; b=Fv/tb9g4bUJwBEvsTky7hFOpx6rmXt7DIvKDp0q0cxQ9FbEI7J4VYxVYnoxAbTqqhV8Y1Ix6xHEAqBgVDzxQCxiTiSP84+iyYPUj+kTkubEASI8vuwO0+nMdiZVBkX7nXoAn93N0HWPVWO8d4tpbEzsDx8zoj611sFEtmO+OPsfcSohxWt0GES9BmSOYndetAkvtjb46KaSVVFS0OzRrs3G5obEbRzr7GXZTN1R7ExGIZ+tbATzKHqkXhYnq0+9iqz8ejgqkqfInpfmubPJuPySG8sYKJnwX9Qw7ZGml340lFFGt5t0tFCd1NtgCbM5F+JDR0+YZEn920sw3quR2bQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=lteRRVaFbxsp6aSXOgwn6Y3jyynAQKzJoiRSSUgWbfU=; b=UFrMhAy2wtt+bjVxqPhkasR3TM2VDxP8kE9euMhgCQyFyCZQYv6xcLO2730ZVlLZMqC8PeixDSRx9spV0+2NJ8xNCeo25U2ak4PmjImzJicqKms5V3JFW22KOg1UCsKPna+lJ83+dm4dm9RxEyT5+tewkJksO5rz7bnF9amL9zg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 09/21] xen/common: Allow building ARM32 Xen with CONFIG_NUMA Date: Sun, 24 May 2026 09:01:57 +0900 Message-ID: <20260524000209.292370-10-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0058.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::18) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 4d4dab05-7202-450e-0112-08deb927c8f9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: XlFNwlij2X52VmUknMN4fHD9liWJ2Wb5hNR8PxRKMigxXx4nz/4ojjkWwZ5Pdiv+QXs/tJg+YAF3RXPzMistqHYZPHttTaLgPp/qQ7oqN+mtwYWI5NphX61UX00eM5QLDKAadr7LchjX7+zgmVXmwzGcdE/BI8HZfD3xQ7FQoDjAzlxi22IzXxR6oAcOrjExcKKmfdtBdLt8s3b41aMRqxzdtellNbxE1DUhKMDfvEhpTy9FIvtX5c24MFiONoP4/d5WwvXEqy2yeQ97ORiNXl3Btz92z0pTFhoM7EAHoznuyvOR90QDjL1dYt4HiJy3k5Fmn0c0XV5/WmPDWM6nlzoDLbDEgeTS4ugcAJ1Yb1GQLSjAuTnrHZppyzRjhtPyg8wvjuaixLFZh2WKHcKCPXIP7g1Za1/cgHMFHuO4oxQeaU2wqYx/PbrTW5uV9aApyi1FOtMyC5Cz16BGQxPV3m8pZN23+mKlt3hjjpgDbPfZ8tAUHK9dfh21UECw4R1y0HF+5Cs300qEKGsJ93Au3fRCWbn4H/E79VMdhOPSdS7ay/7UF3avD5yN2ou/DVXVzhCPkwpH21cB1k1vRZK7aiAf5iuCRKDy3xN9MjzupVTSHnFcRttuM60SCVMbR6H5uRVyKrBzryaueRblR9Q8TyLPsvyDMaoAHUZue5JkNcwA0ZC2yAfZ2S2tgUKicz+i X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?28Rml+BLw73pZpVmEIqNEUrvCTKMGeHMfz0H6H4knpu92qiAB79xGT1aRUXC?= =?us-ascii?Q?50qXlJPCHGyr0OsvY3fZZiBHSjOPEwxlyCHf7wlPUFTx9M+0iE7Xy+GBzC66?= =?us-ascii?Q?XLj/GEOonq6sNLyYgXk/xDBEmTLQT2stx72hhi35RALYkTWWl/ocm2+vNRJf?= =?us-ascii?Q?uKkkCqBRCmQGIQpRkSxKYWT74aJwPPVzKeQBIbVRLu20Ju+qLefMOfsbGAaA?= =?us-ascii?Q?64/dueJYmyI+/+H/HlFFTMAMD9ch2lsyLEZ34ptPkWMUwkNQPEh/cvUaTDsS?= =?us-ascii?Q?DsvOXQeU9ba/pMu8S0JtrpV5LKKxVh5nWdm/pJwxb1q327n/Zc10GqiexDbm?= =?us-ascii?Q?3xW2+x/gmEM0Dyp8Jt3qSOTBM83gk3M7TSXA7c61HeYrjx4Z/cjsJxbtCVi8?= =?us-ascii?Q?+qtQAleiBi+GmpD7dG41o1vmZHXj/wxSkbEQRZbxkMIe9bq558Qq1MJEeWox?= =?us-ascii?Q?Ekgn0jNOJ7GF7izjiMH5vHKxmZwhe/NZp8MTwTwWCeurGBZ7RPUX1BBZVIDh?= =?us-ascii?Q?RSnKzVH3WuDfuAZBoltEOMMI7xVg/R1UDIiADFSiS1Co8tsn3xxHG0qpcKDl?= =?us-ascii?Q?rTxzQ+elwrgqXasZF791Aa/sopyV4PWugz/X/e1Eoa2zbRJP8Z+F8RO5P3/q?= =?us-ascii?Q?vLmIlWOznH9TSpBEGaTX34B+W9xm5beofMhDgAsF7yyBu6rgdwclJ4NU60ry?= =?us-ascii?Q?P6sEifOxyi/zc1NsFztrvJQaIhI3bZjxCMCi60R7PvYWW03x8aXyQqGInZzj?= =?us-ascii?Q?nZH5smfVS6gf9tiAep+1tk2zC8Oxq8hsO6GKMtJLxv7fc99URcZj0M/o6Th3?= =?us-ascii?Q?qX27a9AAZFSe8Ijjwnw913OZrzUNM+4cQAlPLz3hOlaOIPf5GSmstUw3tTwG?= =?us-ascii?Q?M8q8GhxqAP228gT7MAkCtpPIi4f9763gvQMq73gTR0QRRUvX/NuR02BPttxI?= =?us-ascii?Q?1tNYNUvdyaOps7MNFhmTYBWzPsjdby3/D3AJDRjFJ2X2aowfvw+4lUYXFRvZ?= =?us-ascii?Q?sStsPnRz8uAc3EkiLrXOcn5M3JHLwdUzNeJlLEtnUXXk5RfKbQCFflTXkkz9?= =?us-ascii?Q?UqdVhZHRCbdrefiZqGwEegU6pcLp1XS98A2zJzknTGggX/GrjwTlBR7xwv1L?= =?us-ascii?Q?6fDDbLbCGspguyfXfxxsNEMqC8ls6Hk8XCvY+ghq38W4F1vOrLtQxFHvPY4W?= =?us-ascii?Q?hSXjerirL+GTtMIJOCNIaHlwDQGm5pjF+2ccPLL7NZUcm9GLO1TUodpJ0dk2?= =?us-ascii?Q?nhxdGm6AxMK83GtTHT1RUSYnJp4KaiXi5Czuk4qFCvX0YeG6N6HtcQWZl/6l?= =?us-ascii?Q?sYR0K2LStQ/btwIYksVYn2ji+xbKsS843+B2oeabbCLVSP4Ex8VaHS6DrRo3?= =?us-ascii?Q?Wioax3hXKHYo2f6z0JIuZiK4OaLaSysW2kG121/lF9qjn95T3HJ9h9X328GC?= =?us-ascii?Q?vwHiavH48qNrLxzvaqVU9E/whB1K7ot3ONqE6FhKmN1xcVa8ezIliS9d8GUn?= =?us-ascii?Q?ydbwB7BJqMwgq9mwaMGeZLvdhBcd91VP3fSmvgRoHXOuK1Wh9A9cw7/IQWwp?= =?us-ascii?Q?qOYbl4PNbGKGTWo6ALtcVAN7ptVCzndL0IC84vfCOhiF2Ay4pT9xoWvMPbgF?= =?us-ascii?Q?ZqXOLmh5VBBxNwEm3g6mcjaAE2LwuRvafFQjVbH/++ucpA256ywo2Iu66fs9?= =?us-ascii?Q?x0bVReEJBbKhV6L+SEOqiRAyh1PYx2wExoPrsGmWuQn13PnH/Aoa1pP7MfNI?= =?us-ascii?Q?/2URIUca169dLChs8Wdyb6QLbfOKFkJtixbeF5I2/rc3NKKJF32ztUkSUwXL?= X-MS-Exchange-AntiSpam-MessageData-1: dTDiTBEuxtcxog== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4d4dab05-7202-450e-0112-08deb927c8f9 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:46.0675 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: o8oqDAbKISIpll46OFIKZcHlRQF5VYW8Oj09TRQCyhMh+YmJ/S0kdun3NWt564wvRHpN+6XVQLW68NS2RO0FpQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-ebf023/1779580968-4237F3FF-D8D774DC/0/0 X-purgate-type: clean X-purgate-size: 765 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580991393154100 Content-Type: text/plain; charset="utf-8" Allow ARM32 Xen to be built with NUMA configurations. --- xen/common/numa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xen/common/numa.c b/xen/common/numa.c index ad75955a16..81121e571e 100644 --- a/xen/common/numa.c +++ b/xen/common/numa.c @@ -431,7 +431,7 @@ static int __init allocate_cachealigned_memnodemap(void) if ( !memnodemap ) panic("Unable to map the NUMA node map. Retry with numa=3Doff"); size <<=3D PAGE_SHIFT; - printk(KERN_DEBUG "NUMA: Allocated memnodemap from %lx - %lx\n", + printk(KERN_DEBUG "NUMA: Allocated memnodemap from %"PRIpaddr" - %"PRI= paddr"\n", mfn_to_maddr(mfn), mfn_to_maddr(mfn) + size); memnodemapsize =3D size / sizeof(*memnodemap); =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581000945673.6777836009346; Sat, 23 May 2026 17:03:20 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318196.1586611 (Exim 4.92) (envelope-from ) id 1wQwIw-0004ZC-CG; Sun, 24 May 2026 00:02:54 +0000 Received: by outflank-mailman (output) from mailman id 1318196.1586611; Sun, 24 May 2026 00:02:54 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIw-0004Yu-8S; Sun, 24 May 2026 00:02:54 +0000 Received: by outflank-mailman (input) for mailman id 1318196; Sun, 24 May 2026 00:02:52 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIu-0004Pm-QA for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:52 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIu-005yCJ-6G for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:52 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a124027-e002-0a2a0a5209dd-0a2a45028cbc-6 for ; Sun, 24 May 2026 02:02:52 +0200 Received: from [52.101.125.126] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124029-af86-0a2a45020019-34657d7e3484-3 for ; Sun, 24 May 2026 02:02:51 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:48 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Ag0gdjWC/Tp1gCd6yZx671QXttXEXQLtEgd36gb+U+AEsU/S0C16xRa8mOTafrmAfOSHMrtfC4lc/SifipoKemoi+Xgkmr2Vybivvax0twsrn9EW8zDBxeUHQuD6RiJRy6zvF6/oz8c0OaetViV/xB9r4oXkqpzdXAM3UjEXj9As/F0fo6S/UH0oUZQjxCamXrvU4U3FVq/FNi1i3RzUs2MyNfzXL6ue2CNEjpa77F1D65iIwKC6UfcjSUFGx2PkFk5hUfBGSRR389+/VcK07Y58PpIpHKK7d6PKr/IqMinGDrGGThxVhG8Kvbuyl5Fl+O8zvShtukMUJZOFne/tOQ== 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=K6btrO78jHQNB6X8N3K0j5SG3DMoMVJVZM54L8xG3S4=; b=ZaulGsUiA2n3+lRB9IdkbKNiuZiqHAkDePQeHjKcjkbcOEmdtbwzbyljn2u7TT0Z8G4SDXSwJbSPMIni91dTfLYUVcm8gvCL0I8u/X0kbH0mPfWRniJf42nTeSmSi5eU3WBz58sBc8VcBiSOlU+FXKsnUkY+teSKM4ov+dnoSG7x2uuSHUfUyFUK/R3eDi8U8RHamwjZewFmqe1UJLb1YaacApaoI1m74HomZztFTxxzGNuIxa11BPnPyl13GMhFcFjS5zSI0P9nL5tzhz70Cbtk4E6rQCd1+FAMItHD2BEExGOOdHPYiG9e7XdcTiRP2epbRYQcxxcV/FdFMdDSIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=K6btrO78jHQNB6X8N3K0j5SG3DMoMVJVZM54L8xG3S4=; b=A49ZXWZK0+IOAd2U45C2KuE3P6kr004eIhifvAOmfO8ytXDX82yMcMW4FetmBj+tTAp04ax70I74cwHmggXV4uzg/Fg3anR5Uc9bPRdUcqWTK+mL1i4W31s/QUFSUeInTTbl54mp6d47bvbRV2m3YSErL0W+0C8j8U7CxcDBVBA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 10/21] tools/libxl: Add 'numa-node-id' property to DomU memory nodes Date: Sun, 24 May 2026 09:01:58 +0900 Message-ID: <20260524000209.292370-11-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0062.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::13) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 9e87ca95-2a92-41f8-6846-08deb927ca53 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: A8SVnR7drOWuVIUzSbO17dtZurRjpOvElKZaBYR8RvWP3MZ1a2/ef6GPnJHVrb/69ph/b/A/KpjvREjt7HwjTE+enjdRWyLEzDenQPuK8WdBHfKP+SWoztOVimf8HGepZLwzO1+Y4I0PoISAmi+gNQrqWobrQn0SIERuBdexwYyFe89aRqT+D8DBpdEZlEZTVc810UdSsOBqG8uQFSy/32kEQyHdU4er/JHfNpRpflqbRb8ke6uqQmxc+D6UWRTgb2H59J/k6aIO/yXakgCKUdENPPKpvvcLBGmd6gIAIGcFExLOz9waLT0p3ufGAiXHE7ZVqtsiBZfzGyzuIHIOYU47UqoFO8eEjMOy4sQJcxNiKBLHSRExPj3R/ozJ1qTZtkij5yPG8waPr0jiDuxdPrN6cKbxvSP4Jpn5fCUifepfhzOtW2TOMKXmO/6A7bicz0jAso6sRtz46qLmn4mlYrOL7ew2ZldYopqkdRal7m9S/d8yQaPRb4+aDVZWL9HttkywAIELIMsviJNfBww4Z0RXqcKeFG9Vz7zy0DLrEvG6vqOLyxZUlJ5RNjaJ3yAqNzMx9ct8m+uuGqJYdWP86LEMuXbZlM2k2/5dIOnX+BaALG4Gj7UuIDb25q3x/vhq+apdk9HKYUgOi5x4oLH4NBr/f5dyk8yv7nIXTkU5QE37Ii/YDNXxG8vmtEjTDWHA X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?GQuguOuMEJm4H3WgXpErf7wpDyKvS3xhOrmT1UMJi/ed+Id0b8gTiNxlkNuS?= =?us-ascii?Q?Q6LjtvvVfoHeUaqWaB5C74l9akdiJ7bTZHdyUJo7wa5UwxNsEU4p44JcaJBF?= =?us-ascii?Q?1RAy1WqK0vim3Ul2u4dXxNdk+s0yEDaGjhpptp4V6umeCchXn0L8dv6hZIyJ?= =?us-ascii?Q?QSmHxP4uw+DsJXEizNRx9QqhwjKN5VXogJZ3+8doYJo7tEQonu0nfE6Xj4ev?= =?us-ascii?Q?VbsZSO8itmkWdB6KGPVSGwNugKpMa1IK9Qt5QHPujHucrugQVREqjETatKHb?= =?us-ascii?Q?H9F6rgb+n8KPb6ZxxPpPoxd+ntJqffs/J4tayXVVheYqRlVUzNzJ5+C7hGYZ?= =?us-ascii?Q?pukUTc7+EWfsN7HIzAimjYflv2+zCsoreK0hho6KMgcxrERowgIZxwoAQ0ef?= =?us-ascii?Q?+S+B6KMohwfRsEJWCfP51XDcINlv8bP2MVR4kBP2PiVgdJBXf0eh+xGsxHT5?= =?us-ascii?Q?JfbLp3OM+cOE8XkHo3jfqvJJA/kHHNLi5Kh5L436nN+2Q3D8eEx+fcGbnjlF?= =?us-ascii?Q?P63pwZCOW0lFOwql+gSjGtYg8y7mor3BjNSrKQtKvjku6oJuIWAGDx+ldepG?= =?us-ascii?Q?DnREe96UhyYFi7cIPUBpHRcrDtaiTTNUPQkcLmtXy/DO5NpTBoDTJPe/qseI?= =?us-ascii?Q?s2WH2D7M01xPwqgfFtuBdHL9dEGKn67sOa0/5w2uBvkou31zjWpIee7jE4EI?= =?us-ascii?Q?FdTqxs+pQTs0FC8bFNBgkFivPaExnk5St+qGUCa2IMIpdRgiCxq6ndTqZYFX?= =?us-ascii?Q?S2A2T/bM23EqHRZRscuZpe653NG7xo+gvosE2ls0VBdqKvGdp8baCpQAO/pa?= =?us-ascii?Q?dXp8pVmbc27C47ptakbdmt5rvEn/Ggd5owQPH9lJpm4spLJcwQcADsCSOEr9?= =?us-ascii?Q?GACJfEMQD4LCfbQTIrDLVsUvgxYtOHn+sMMzLCC4s9ZyoerUYY1YcF6UPfb0?= =?us-ascii?Q?dIfnEAWJoVaffgAPeinOGkj/sZ/lPyIgqNcEpkjvtYDsyJ7BtjNReHu76UrV?= =?us-ascii?Q?sJS8VG1YjHb6e9lwEDViNGyAO6+Q9PlzocEqE+Womh58w+ZXtkL7uFo2/eEb?= =?us-ascii?Q?IBpKIp/2Vs4PD6/Vlugwy/JxaCSSzQwI6Hxm2eT/AGQH+xj74td64My6C8CR?= =?us-ascii?Q?Itub4pYWWBuqafW+IthBqnJUsuaEanIiAap4FJj6hmzEpqGMn2jy5bzFN3Bd?= =?us-ascii?Q?6s10d5KXP8IxPFBr3omJwsCjYiRmGIIbRCRU1mY4VTUxc+sR3TIRyQKrU3hY?= =?us-ascii?Q?gu4/X9fQJqZ0I9x+pM05X3wjDV2pRRuT8MjmTLUrftuSDKrqKo5Tag3O9l2/?= =?us-ascii?Q?Nfi++7F8AmtZL2Le0AH1LyeyXgpOiTx3eOl6v4Nap2MLAK023UrYBS3vF8LZ?= =?us-ascii?Q?t1zuiTLg9Fnqc5HsbKOyHaGUJ4IEySqg+OUQS+CbTGX2NlcC0h2AMvfzKKNt?= =?us-ascii?Q?HKwzeZqubCcz0gXQKXhbmv2u+XBaYVp7i/vtpP2/S0xh/BTszM8XJJK5yV1B?= =?us-ascii?Q?80XzIGxilk7zQW7U3R5I4UwPCiab1nlapSMUkApSFaDoQvzHMCo3Sdk5PduN?= =?us-ascii?Q?jjzMeJT6KEF1D48tHpe2g606IILJ6PiP61qHAqojNLLSINI/htal5U/LMdWw?= =?us-ascii?Q?VMaTjh2FAncVSkFT7UIhEeOIwIcPyisXgAE5oOTXbQTmg43z1iF0oQ2+BVT2?= =?us-ascii?Q?2u7ntd9ClrzaATvSOaJxyDpWA5ZEL6b/Y08L1/RNOpAnkmZyoTDsluZqZRTs?= =?us-ascii?Q?DDPcw4tjub429PYRWEGPZQmj2CwrpVV85zsU0cApp0I1FOF360dhos/0v7KA?= X-MS-Exchange-AntiSpam-MessageData-1: Tq2Z1AyVu0RRkQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 9e87ca95-2a92-41f8-6846-08deb927ca53 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:48.3061 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dF6s/1ARJpk5y2JIW5ft/jYYRexbBfwaXMJhy3O29qjRoYVRDCUUcaph4U9voYHzcwfM7hqf1y5YYuBXZbuvFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580972-A8979161-3D5BD38E/0/0 X-purgate-type: clean X-purgate-size: 4915 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581002552158500 Content-Type: text/plain; charset="utf-8" Add the 'numa-node-id' property to the memory nodes in the Device Tree passed to DomU. The NUMA node to which each memory node belongs is determined based on the virtual NUMA configuration specified in the xl domain configuration file. --- tools/libs/light/libxl_arm.c | 81 ++++++++++++++++++++++++++++++++---- 1 file changed, 72 insertions(+), 9 deletions(-) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 7e9f8a1bc3..58a357858d 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -670,25 +670,84 @@ static int make_optee_node(libxl__gc *gc, void *fdt) } =20 static int make_memory_nodes(libxl__gc *gc, void *fdt, + const libxl_domain_build_info *b_info, const struct xc_dom_image *dom) { int res, i; const char *name; const uint64_t bankbase[] =3D GUEST_RAM_BANK_BASES; + const uint64_t banksize[] =3D GUEST_RAM_BANK_SIZES; + + int cur_bank =3D 0; + uint64_t cur_addr =3D bankbase[cur_bank]; + uint64_t bank_remaining =3D banksize[cur_bank]; + + if (b_info->num_vnuma_nodes =3D=3D 0) { + for (i =3D 0; i < GUEST_RAM_BANKS; i++) { + name =3D GCSPRINTF("memory@%"PRIx64, bankbase[i]); + + LOG(DEBUG, "Creating placeholder node /%s", name); + + res =3D fdt_begin_node(fdt, name); + if (res) return res; + + res =3D fdt_property_string(fdt, "device_type", "memory"); + if (res) return res; + + res =3D fdt_property_regs(gc, fdt, GUEST_ROOT_ADDRESS_CELLS, G= UEST_ROOT_SIZE_CELLS, + 1, 0, 0); + if (res) return res; + + res =3D fdt_end_node(fdt); + if (res) return res; + } + + return 0; + } =20 - for (i =3D 0; i < GUEST_RAM_BANKS; i++) { - name =3D GCSPRINTF("memory@%"PRIx64, bankbase[i]); + for (i =3D 0; i < b_info->num_vnuma_nodes; i++) { + uint64_t vnode_rem =3D (uint64_t)b_info->vnuma_nodes[i].memkb << 1= 0; + uint64_t regs[GUEST_RAM_BANKS * 2]; + int reg_count =3D 0; + uint64_t vnode_start_addr =3D ~0ULL; + uint64_t chunk; + + while (vnode_rem > 0) { + if (bank_remaining =3D=3D 0) { + if (cur_bank < GUEST_RAM_BANKS - 1) { + cur_bank++; + cur_addr =3D bankbase[cur_bank]; + bank_remaining =3D banksize[cur_bank]; + } else { + LOG(ERROR, "Virtual node %d: Not enough RAM banks", i); + return ERROR_INVAL; + } + } + + if (vnode_start_addr =3D=3D ~0ULL) vnode_start_addr =3D cur_ad= dr; =20 - LOG(DEBUG, "Creating placeholder node /%s", name); + chunk =3D (vnode_rem < bank_remaining) ? vnode_rem : bank_rema= ining; + + regs[reg_count * 2] =3D cpu_to_fdt64(cur_addr); + regs[reg_count * 2 + 1] =3D cpu_to_fdt64(chunk); + reg_count++; + + vnode_rem -=3D chunk; + cur_addr +=3D chunk; + bank_remaining -=3D chunk; + } =20 + name =3D GCSPRINTF("memory@%"PRIx64, vnode_start_addr); res =3D fdt_begin_node(fdt, name); if (res) return res; =20 res =3D fdt_property_string(fdt, "device_type", "memory"); if (res) return res; =20 - res =3D fdt_property_regs(gc, fdt, GUEST_ROOT_ADDRESS_CELLS, GUEST= _ROOT_SIZE_CELLS, - 1, 0, 0); + res =3D fdt_property(fdt, "reg", regs, sizeof(uint64_t) * 2 * reg_= count); + if (res) return res; + + res =3D fdt_property_u32(fdt, "numa-node-id", i); if (res) return res; =20 res =3D fdt_end_node(fdt); @@ -1365,7 +1424,7 @@ next_resize: FDT( make_cpus_node(gc, fdt, info->max_vcpus, ainfo) ); FDT( make_psci_node(gc, fdt) ); =20 - FDT( make_memory_nodes(gc, fdt, dom) ); + FDT( make_memory_nodes(gc, fdt, info, dom) ); =20 switch (info->arch_arm.gic_version) { case LIBXL_GIC_VERSION_V2: @@ -1716,10 +1775,14 @@ int libxl__arch_domain_finalise_hw_description(libx= l__gc *gc, if (res) return res; =20 - for (i =3D 0; i < GUEST_RAM_BANKS; i++) { - const uint64_t size =3D (uint64_t)dom->rambank_size[i] << XC_PAGE_= SHIFT; + if (d_config->b_info.num_vnuma_nodes =3D=3D 0) { + for (i =3D 0; i < GUEST_RAM_BANKS; i++) { + const uint64_t size =3D (uint64_t)dom->rambank_size[i] << XC_P= AGE_SHIFT; =20 - finalise_one_node(gc, fdt, "/memory", bankbase[i], size); + finalise_one_node(gc, fdt, "/memory", bankbase[i], size); + } + } else { + LOG(DEBUG, "vNUMA enabled: skipping memory node finalisation as no= des are already populated"); } =20 if (dom->acpi_modules[0].data) { --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580988955248.788664121568; Sat, 23 May 2026 17:03:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318199.1586621 (Exim 4.92) (envelope-from ) id 1wQwIx-0004qw-RM; Sun, 24 May 2026 00:02:55 +0000 Received: by outflank-mailman (output) from mailman id 1318199.1586621; Sun, 24 May 2026 00:02:55 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIx-0004pz-Ik; Sun, 24 May 2026 00:02:55 +0000 Received: by outflank-mailman (input) for mailman id 1318199; Sun, 24 May 2026 00:02:54 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIv-0004U6-S7 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:53 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIv-005yCJ-8E for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:53 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a124027-e002-0a2a0a5209dd-0a2a45028cbc-8 for ; Sun, 24 May 2026 02:02:53 +0200 Received: from [52.101.125.126] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124029-af86-0a2a45020019-34657d7e3484-4 for ; Sun, 24 May 2026 02:02:52 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:50 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:50 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eH+AkP/WWH89d2hhX1WI+hwl2pvfs+wjb5qlO47VDdd3n1xXzkqrilRDlf19NPGw3G80EqngStVNuAGOUVBgb+ULHI3XzsSQIpu+iaOVSYY+7rtm3Nxkfv+qPlH8F4LoBDcMIToBxw3IqMIv2ow8OJlvjcSjSeqSTOZn/YP1Rw22GdcPI3po6vHSLTEUJEfvR/TMDrN7djmZt66C1E09IwXXYODqGPSyw8kBzAVr85p0nsprUzRsJZbk+9xzYKjZ4kgbLcw2LdhNqgqZBFwLzAnTPgRqQ0z77mSWbho2ZlBMcvA+nE0ACsJKesK9ZTYvUbOCEk9ge90sHSXDcs+jlA== 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=vm5+dbsTJv0oVX1IQ9G1iAH7WAbtmEAi6LSc1CXaftU=; b=TC+w04ua2qFIBe0lJKJCelD1rCjoLQiDnrTnIwVSob+I6YMiGBVO2vmA9TVPJZXQ5sl4g15xve8tTY2ZVTpGWhe1XjuVd9lCpWp5uubp89RUeS4KVYnfZqXXcvTlkcCLGIAr8uzyjNmpzU4xAsVqKEARtFz0V64FYS7uUJUn0huDRVGJKXhvmRtyVsCONu2Q4CR4Jh18COXoIyjvApeu3xWqjUey/OKrjg+pbStWplQ++bEMUFKi6i7kKpfIDruTe5IfrP9Y9x69AtducRDJNwwcNfDw3iCvZ9kZ2uWK79fon8vTKYZwniKApRkd2QBuW6HEgslmvpnFylXpk9JgUg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vm5+dbsTJv0oVX1IQ9G1iAH7WAbtmEAi6LSc1CXaftU=; b=ezmhgRV1WnL1UTWKIzF+C4r4mfOIbs8yEd2LmDX5KOqozWFTNggeF59N4PdmcF8BlwHL4VrufL8f+XocCSc8Od1QqAR3tqg25kgBbwpXgJkFWtS8guOBiE6hqSSCssfUispNjzHMtN0UFOeLzGh2VFHy1vhF6R6oF4bcXKmulk8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 11/21] tools/libxl: Add 'numa-node-id' property to DomU CPU nodes Date: Sun, 24 May 2026 09:01:59 +0900 Message-ID: <20260524000209.292370-12-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0066.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::19) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: d7d9c871-ac3d-4232-5309-08deb927cb9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: 04bjKQ3c5e88s1CtJdFXWAipu+VnDGL5whq8eu7LSSuV2BXbUH9SBBZT7BzR0Nzgp0VEoOsyiSR22PoxbnKDD4MsSOfwXDMlczwsVNCsCbthFuoZCEQ+M7a+WNnxr1vxgHzPIUAdX1l3mk58t5M/+UgVqjRy+KbxqVkYeh6h9aWbHEBh4//8ObZ1Vm1XdkfXEh+8oVYayjhRqytkkvMVc50Vlo0CTmTZEm7XeGi5jTtTS/im7VEmJlsLFJiVxZvYKiI7isoM7NJDtMGDMBnw0EX8wWNS7gg/ANFmvUCfc3meMdBEaqHYVltLTrcz7HxtOcNcuG3FGuoulwgidFzHuxK+u1xWafVNyEPCd8iwZR+0tHNLR/2qjD8ymXe+2PwQsgoUp6wDEavQin6FVWoyEttS+kczubawtIGz+efjADG1F1ZBhtKMtsfvzG4IjUus/Ko7EJg8N96c5AgsAIzcL32WcmPRJP4+7y2bQX2nIVFteYW36kbCrptKi7LbSWJfXoOtdpgNcMWh+0TRWMA1btcIpgzMgc7mu56ysLidKV76t5VLwwBmhoApsevO0x8MJVd0LiDkUWu+6ulhinQW15OdZVpgU9Eyb4ywR9X/kaz7W0gOhLsJG+yS41eb0J7NPHknToGojyQvdQK68+xZn+gnT03bw0aSom22s8A4xaPzj/5zePYuTlxXzG7cX5NG X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?qm4A9bWWhXe4PaB3bZ5SSeP91jZyl71W27m08I9eTQ8ehETyg6k8OJOmPYrt?= =?us-ascii?Q?kJX63/JI7LjdOtg4H3XA+bESh6n1lURkf+fWy0wiGWJPYITlEBnMiucDd2+U?= =?us-ascii?Q?96+6zqWwVMkEPBflGcEJ4Vs6AkGluwb8/OlKMpVLOazG8ca0Oph/N0GWD6lh?= =?us-ascii?Q?EAGSkh+zfsbVBDuPmtaWPtcEeVGe5o3OCfE4hKQ0H7dyicPBjD+AIBQsgKiV?= =?us-ascii?Q?rTpZDYlRo4ugdsAZVdncKQUc+UdfuaFFQBQNi3gmQNFdIGTLHxtNilOG8J+R?= =?us-ascii?Q?hDWhP9OOVcQMFu+GptSA9WcG7gMUzTWUBqwnSOiV+d72utNPvvYDyHJAdphR?= =?us-ascii?Q?uqkoDnYCkfVEOrnVsMqpxbZ3r0hZvmVjO+ybghKyKh4U6JCDK3toSC6TGr84?= =?us-ascii?Q?mH2rStoLpx3tBVgwqyFFsK+SxiGfsmNSaUwlnDRasutpJ9OqKVtK5shdf8zR?= =?us-ascii?Q?1RmjkZ9bJRa3GdWSrNteLiwPXWlcvCMet6J4imhXSnfiL7A3MGQJiwn1Kx+o?= =?us-ascii?Q?6ShuKkl0Gr7FOQi98iHv9I5LK319TWwFzcI7Yb+inWmKRGcLo4u7Y7+Owi/C?= =?us-ascii?Q?YRD/s1j6QerSsbwhoCZzY6/Sv3NuxQUI4U29Tjk2ISFVPwGXeh7l0kPNx/zm?= =?us-ascii?Q?0CPHHQfIfXhgcsp/sNZ/6Vu5YWr/DFFL3vr8LyqVIT8cVvH85tc5j7YBFf2R?= =?us-ascii?Q?O1E0TIrBHHjpM5frZnfwR2GdcTx+cVe36dfOIEE3ZSbeA8eT3BynsXO2XhZe?= =?us-ascii?Q?Enq+shkqfMhgUb/oi2QwLtHSM/FPNBrwnM0WhV8/9+pKcY8eQf9OJrhDKfU2?= =?us-ascii?Q?shmGhSaLEq1e3A7PMHsn8EPs/7i/jcrwuQcbcm67KZQ1zbuTNPn2LfuIDgYG?= =?us-ascii?Q?L7o4KiW8NEer1DIRcY2wsH4x/7/jTdw7J9qw3dH1lABkF+TnlFDUIWYAMkFm?= =?us-ascii?Q?8hM0QmWdCnBTA/nG6Dfdh+l/a0JAvkw6oT3Ohxm4b354K9q+dnajpE1WP+cR?= =?us-ascii?Q?u8IKbQRqh5BH48718P9yz11jTCu8VQ3DCOoYp8V1iPLl2/+p/AOelC2V0XBn?= =?us-ascii?Q?RMaSNWeAZMg7r3kJfD1rcrLp+J1xQZE48X2tqN6YpvMhWxWErJxgLeHPEVWJ?= =?us-ascii?Q?T6+yFm1oJNOgZE6tOdyI2o7vqKZJjnBgnWJw9s0xqRHv72cpif+KO3OVO+0Z?= =?us-ascii?Q?FutnJAY3MFZIsrX5MDoG9Ki2EyWKDbweyZ2QCkDPpML4JQl994bzYILum690?= =?us-ascii?Q?RH5axWam0/44qfJk+Jl1DLwsBErEkuHVD2sk6uKa1mnx9I8cuaDKnNEUOuEb?= =?us-ascii?Q?tf/L/vio7dYdn2PKZifmlW85+EM4VfpP3f0WIHVwItom8dCRq0poD2zPGpWf?= =?us-ascii?Q?iWsX3Hq50o895CpjnPprcYLxI4fZOOVbBK+oYo6KX2YXSoJQNVMV6y6gDsub?= =?us-ascii?Q?gyW8ghb3j98PIbuKzkR8yvn49s6m66N4uvGsvacxhHNkeY2klUQ+5ZxuS7v4?= =?us-ascii?Q?nG6hDeHt0P00Iz/ENdrJ/IQvw+hTtXCYMc8LPRLrxAy9Cvk7u3xwI/1Hhb5c?= =?us-ascii?Q?B+sSXfBcaQ1Y4dtTht8Ifr4Cc03Vtenngzl6+UH2Vp4PgmkEoUrBIn9kyVjb?= =?us-ascii?Q?aR1Pk+AEBknVqqOlsRfNKlExh0DpXWWLuTpHvqsrPbbS6kJoDfUFitzrPi+X?= =?us-ascii?Q?jesIMh0JAJV0F5wYDtEpuW2aAFQns1FdRziQ7+sfG5+Mv6ypIByYt4v/pzsU?= =?us-ascii?Q?OEWn2Fj9XDSJsoaAAU8a1Fpk36+2e5Pnqp/acWticMiW3qZrYFgZqY/fJAxP?= X-MS-Exchange-AntiSpam-MessageData-1: abFeiRgbK7clNg== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d7d9c871-ac3d-4232-5309-08deb927cb9f X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:50.6052 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: +hGKx6nTSb049eCs5wm3ORlYDqIevM0Oj6lh2swKMmmZWvJe068MX1UKJZp90JSCKzPbo4Synqdlfj+qckWnfQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580973-A9772161-21C2FB21/0/0 X-purgate-type: clean X-purgate-size: 2298 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580990497158500 Content-Type: text/plain; charset="utf-8" Add the 'numa-node-id' property to the cpu nodes in the Device Tree passed to DomU. This information is retrieved from the virtual NUMA configuration in the xl domain configuration file. --- tools/libs/light/libxl_arm.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 58a357858d..05d0f18e1a 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -571,7 +571,8 @@ static int make_chosen_node(libxl__gc *gc, void *fdt, b= ool ramdisk, return 0; } =20 -static int make_cpus_node(libxl__gc *gc, void *fdt, int nr_cpus, +static int make_cpus_node(libxl__gc *gc, void *fdt, + const libxl_domain_build_info *b_info, const struct arch_info *ainfo) { int res, i; @@ -586,7 +587,7 @@ static int make_cpus_node(libxl__gc *gc, void *fdt, int= nr_cpus, res =3D fdt_property_cell(fdt, "#size-cells", 0); if (res) return res; =20 - for (i =3D 0; i < nr_cpus; i++) { + for (i =3D 0; i < b_info->max_vcpus; i++) { const char *name; =20 mpidr_aff =3D libxl__compute_mpdir(i); @@ -607,6 +608,17 @@ static int make_cpus_node(libxl__gc *gc, void *fdt, in= t nr_cpus, res =3D fdt_property_regs(gc, fdt, 1, 0, 1, mpidr_aff); if (res) return res; =20 + if (b_info->num_vnuma_nodes) { + unsigned int vnode; + for (vnode =3D 0; vnode < b_info->num_vnuma_nodes; vnode++) { + if (libxl_bitmap_test(&b_info->vnuma_nodes[vnode].vcpus, i= )) { + res =3D fdt_property_u32(fdt, "numa-node-id", vnode); + if (res) return res; + break; + } + } + } + res =3D fdt_end_node(fdt); if (res) return res; } @@ -1421,7 +1433,7 @@ next_resize: =20 FDT( make_root_properties(gc, vers, fdt) ); FDT( make_chosen_node(gc, fdt, !!dom->modules[0].blob, state, info= ) ); - FDT( make_cpus_node(gc, fdt, info->max_vcpus, ainfo) ); + FDT( make_cpus_node(gc, fdt, info, ainfo) ); FDT( make_psci_node(gc, fdt) ); =20 FDT( make_memory_nodes(gc, fdt, info, dom) ); --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 177958100308148.49495433770926; Sat, 23 May 2026 17:03:23 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318202.1586630 (Exim 4.92) (envelope-from ) id 1wQwJ0-0005Jx-5u; Sun, 24 May 2026 00:02:58 +0000 Received: by outflank-mailman (output) from mailman id 1318202.1586630; Sun, 24 May 2026 00:02:58 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ0-0005JN-0x; Sun, 24 May 2026 00:02:58 +0000 Received: by outflank-mailman (input) for mailman id 1318202; Sun, 24 May 2026 00:02:57 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwIy-00056P-Vi for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:57 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIy-005yCJ-CB for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:56 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a124027-e002-0a2a0a5209dd-0a2a45028cbc-10 for ; Sun, 24 May 2026 02:02:56 +0200 Received: from [52.101.125.123] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a12402e-af86-0a2a45020019-34657d7bfa90-3 for ; Sun, 24 May 2026 02:02:56 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:53 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:52 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fIlEJq03wx5ft4hA/+UL5FvA4TmFRUw7qrztsKK4Xgf301nUaU/marw1kY3P1FezCAMMVXd+kAuYJTHubNul41KDFxs/vnQzzgHJtJJt4nv69dbV+L4AD5bEiBvBP1TkNCsWlFjx36OlFBGcyI57FVFR32whHVO622Zvje5OHGu1vC3/4MjIl114/HnzUJXnN/+Fd8HmkCTLMwC/s0pxunq1TiAbiSYQ6keN7a2hvIv+fDC+Rrx++3KBxeckidiupwfyghpw6mLUH16HX4LFot2uGWuqDONW+00zNfKfo+ngOCJI+lB1rJ4feHNZ+QmUOUy6MHHxTYVG+dsLcLSZkA== 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=S12V8T/HbwUmUQrI5N20DCLbZwR54rjOcdi8RLCVn58=; b=DEB0YtRfWHO45kRwzwFa+xLImZeBmpuADRs+/JNzjp131yfGOlDO0iy0AD06b+Sp28X3ZHAEHQcfIYtmZ9XqJHkqnh4LTCPjNJv7X0d95XON66KCMdznweuzspgylBkj84mAtN6uotsbwxL5kwySG4v55/dUKwyHGJD032rloC5AQZmFKeOWGs8yoOSzHQUqwTc2nRF4WVJx+GfBYQkJuCXLOccOKzfXBryLuoEuQtZXmxCfbTSiDpIYx1A0Djrr+h5B0V/hDHWB3pzNbW9S68SepjCtSO08+gYCmATHbp07GWTWBTELavOJ9AOtd47nu+suNJwL0tSde9MRaNFZGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S12V8T/HbwUmUQrI5N20DCLbZwR54rjOcdi8RLCVn58=; b=l1C5PacpQCbHE0yewBYtpP+uZBHQ+YMUkRPSUq+tWRr6aBBFsom/3TYgCUp05W/R6k/aK869NCDjyh0L+aocI1p6oBXeK+dMrlUJ27+nYgi4rH/NHh2KNXkRJDscet/yhGvusQGI7N7qfQwMNy3NAVRQnKuIDewYwjSQW8IkBr4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 12/21] tools/libxl: Create 'distance-map' node in DomU Device Tree Date: Sun, 24 May 2026 09:02:00 +0900 Message-ID: <20260524000209.292370-13-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0060.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::10) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: a839b730-720b-4718-d795-08deb927cd12 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|6133799003; X-Microsoft-Antispam-Message-Info: Le2gST7E2xqO3wwJ3PFJvNeLga8wpsoeFlKxahHpaWcXMlK9zwVRRUesxEGq1Uou9Auzppc/DRWyihkZ8zcYewLtuj7QSfgly0aHH9SF2bPOshinHBPtixr5zdA4YFZ88vKyLRlUQScXqylRM2z2TRb8x7pXcTL80zfLytO9tTZU9jiwZqKz0S1S82D3Gryfm/S+9ZRcxqDGwDgAKaX9eTixB3LwcPhx4WZwO34+zPQZUhGJR9mESTAvBC2GkkgFSE/pmOeaF4NwVqenQavuROA8UkhH25KqUo2yeGS511mRAOvHkpZk+Ks3INQ/fX06YmzDhMbOsL2c5w/mkY6Tlh4putweBqoORhCG1dZIQvtu9nc3umhiQu8G6EqZ7zNXBDt4T4D8kLmm4k8aRUv0CYvhzj68/xhKsjIEjHqc2mjtw9uIv9XERUs1tEdyyqQSR177sDoh5db0T+QDn/9PvGccWxJaq1jWAjWGqaDtVt4raFRe8eRQpoDAjJ4qsuve202GhwM0ui9TkSNsM3fgN8T2/TAwqR5ftCz03ExMAxO5vEOmi7wij+zJeKHNiwhFI2XG98wOC/c4WReG8NSVNPqUNXAdtKXhRUtxgAG0cgmUH7bkd9p+/w8F6RabGNN4zRBH6unMhf7at0vbb3q+9KQWJeDbbXYQ8V1MxfVjMmyaWVrQntWHY4GdIk7ejtKO X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5HTjAiZZAbME0INQwnYl6nzH9Jf+cu/e/tIffb09gEE/yz/pJa/+OGXR+0Kd?= =?us-ascii?Q?PfqcQo9O765lPRE92GzNEtX7bJ7geHPdB1XZ9z3xAUziHSyCqSqoW32IHs4x?= =?us-ascii?Q?PtjvnhJeJcHq66k1EdARee9KK/BTWGq1U0wPXXK4eIPHVMUWio2/hZZSMfIG?= =?us-ascii?Q?8+MeyfKArGfRhPKSA5jTo8XSdCxTGcyLchW5+BDTL1uWJJLbLJQDt5S0I5pQ?= =?us-ascii?Q?E5Fv/iUIE80euBmx4nAbnw3AY0zGWddZ61PXr/Ox7p2mhMNBwHumuWeN9W5r?= =?us-ascii?Q?s3WRbgI9O4vcje2CFaLvMdMVuhytnKEySiztJoq7ANj6RX066FY16jaDNOcR?= =?us-ascii?Q?oLCSxIGMUIfU4+OSasduPAqSFPaRKH2TzJX6GfngWLjkbjx8zOoz5VwOLhpn?= =?us-ascii?Q?eCmTeqKHRkrNnNcLe/dMc4hN+2Q6eyoVlY8m8TGTuDrddLuCzTWh+FQbdKaH?= =?us-ascii?Q?Bv00kijAdt/UdGu7a+h91HSlgaEgDmpsMIMlN1M65VKGjkqO06wAmmj1H2tE?= =?us-ascii?Q?bjV/wuGvyidNOQx+ht0u6fQEnpgnZOPeIQSPsbg2m0Y+4ZGYWTsD2cPwgcGP?= =?us-ascii?Q?AeTRRceS3A3iYn2Hni5poDfqy/gE9oDeor5comk5qvGuQCaZ2tUv72KInMbJ?= =?us-ascii?Q?01+TN5xtRUeMdOgjaDEWZf523xqXg2D8HqDpzMwfwFBhIw38VqVldKcM/pPh?= =?us-ascii?Q?UHCGUSiqm9duxKwnBdKM8BqP3a6/bH8JKSmaeBIyz4d2HBO45Dut+6q4o0oK?= =?us-ascii?Q?1zmafzYOsgDkSy/8eeuBTk6K7C7YV4JjAMUCl3/2BK2zZaZJLSZVk+ei4eQL?= =?us-ascii?Q?n46V1dZURsSL1mG+xmLhyOU0ydwD+5gQ/8+nsxsfVg8DSVGRQF0r5cHYs0VW?= =?us-ascii?Q?+rtl6636lOV7TVqCAJ8cwE1e9Qg4neI76CB8irOt/jBkYmzoXXlIUzNvgC85?= =?us-ascii?Q?QKgRAfk33RpJo1h1+Uqv45QaFbRVwaKwe8iZFukMgjQnswQEiD5Ylplgzr+R?= =?us-ascii?Q?iWPJOoj4roPmI/ykv0nKmGyOWepUWFLfg/5CkLQac/4FxwAkmI264p3ny+5N?= =?us-ascii?Q?K/NSzLNelKzEUVWWL0WgGsTAtpVWTyjKzfjLV1tfVpxyTuko1tbezzSc9uHD?= =?us-ascii?Q?xC84GaEq0S2Tq9z74KUpoIqd4NCjSoq/zaln0jmt9rLFt4aLYhZyvc8Ztn7Z?= =?us-ascii?Q?XC1mIRbAfVr4CJpcKP11h/hZrnGx0uhUNSQd2n6CTrzTKqMut0Tyhn62a/Wo?= =?us-ascii?Q?5dLak5rk739oEgsVhyVW09xQVe3Hjzgsrz9Y8eQ2p2s4NQbNZFe3AOJMjuIU?= =?us-ascii?Q?XyZZR8cm/s3sV5PMbGaxvAih8wUMTNLXbIwoGtY1pNCBw06o8CYqJiKt0J8v?= =?us-ascii?Q?ZjbMYV3UVgcs6Uy6zBn/cnJQQvy2P7JGn9xn0JzHW2zpJ+f14ElUtA1G6E5b?= =?us-ascii?Q?DzACuT3diHRVcPUqdSTy8HrjjlZ8XaO1BxWtDJ8zOxtSJi20C23ngm7Bf40g?= =?us-ascii?Q?B4SDEsK8ed4ohyoCfqf7U/m7Z5dc4fxeI0E+H5C0cBqpnlnomYhBYjTN0c4J?= =?us-ascii?Q?Ap3pLq29W09/NQfwhR/pUcNExQff2OGfpLsVWdOZT8u7tTcW28cSY10C73fN?= =?us-ascii?Q?3hqmOfdaywRl4iLQ0rx28FvUDpzgeRpx27g/4ipRyBLPGaF3hdTRRFYjTcTG?= =?us-ascii?Q?AZuSze+CGhowjvC3iI2DFOkStoYz9kcavuz6Awt0LgQ0N8/UefGDi7puGbfG?= =?us-ascii?Q?BLvIiDgdColELpkbNq31eFxyF1vzQzyEKZCrMrZ4SUO+F+TWimAE1cYfv7ns?= X-MS-Exchange-AntiSpam-MessageData-1: hscI3uAxKpn4Jw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a839b730-720b-4718-d795-08deb927cd12 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:52.9534 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: YalzWQzUlClEeT834tvGnqOUMRJL5bsee5/Nidgj2L+erxPAgNE9DDmEQCqIup99hWybMoLkJv2DgRU2bo++9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580976-8057B161-D4818345/0/0 X-purgate-type: clean X-purgate-size: 2062 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581004606158500 Content-Type: text/plain; charset="utf-8" Create the 'distance-map' node in the Device Tree passed to DomU. This information is retrieved from the virtual NUMA configuration in the xl domain configuration file. --- tools/libs/light/libxl_arm.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 05d0f18e1a..d2b505fd43 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -769,6 +769,39 @@ static int make_memory_nodes(libxl__gc *gc, void *fdt, return 0; } =20 +static int make_numa_distance_map(libxl__gc *gc, void *fdt, + const libxl_domain_build_info *b_info) +{ + int i, j; + uint32_t *matrix; + int nr_nodes =3D b_info->num_vnuma_nodes; + int idx =3D 0; + int res; + + if (nr_nodes =3D=3D 0) return 0; + + res =3D fdt_begin_node(fdt, "distance-map"); + if (res) return res; + + res =3D fdt_property_string(fdt, "compatible", "numa-distance-map-v1"); + if (res) return res; + + matrix =3D libxl__malloc(gc, sizeof(uint32_t) * nr_nodes * nr_nodes * = 3); + + for (i =3D 0; i < nr_nodes; i++) { + for (j =3D 0; j < nr_nodes; j++) { + matrix[idx++] =3D cpu_to_fdt32(i); + matrix[idx++] =3D cpu_to_fdt32(j); + matrix[idx++] =3D cpu_to_fdt32(b_info->vnuma_nodes[i].distance= s[j]); + } + } + + res =3D fdt_property(fdt, "distance-matrix", matrix, sizeof(uint32_t) = * idx); + if (res) return res; + + return fdt_end_node(fdt); +} + static int make_gicv2_node(libxl__gc *gc, void *fdt, uint64_t gicd_base, uint64_t gicd_size, uint64_t gicc_base, uint64_t gicc_size) @@ -1438,6 +1471,8 @@ next_resize: =20 FDT( make_memory_nodes(gc, fdt, info, dom) ); =20 + FDT( make_numa_distance_map(gc, fdt, info) ); + switch (info->arch_arm.gic_version) { case LIBXL_GIC_VERSION_V2: FDT( make_gicv2_node(gc, fdt, --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779580997609366.9283799293778; Sat, 23 May 2026 17:03:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318205.1586640 (Exim 4.92) (envelope-from ) id 1wQwJ1-0005dS-Mc; Sun, 24 May 2026 00:02:59 +0000 Received: by outflank-mailman (output) from mailman id 1318205.1586640; Sun, 24 May 2026 00:02:59 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ1-0005c4-D1; Sun, 24 May 2026 00:02:59 +0000 Received: by outflank-mailman (input) for mailman id 1318205; Sun, 24 May 2026 00:02:58 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ0-0005J0-2N for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:02:58 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwIz-005yCJ-EP for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:02:57 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a124027-e002-0a2a0a5209dd-0a2a45028cbc-12 for ; Sun, 24 May 2026 02:02:57 +0200 Received: from [52.101.125.123] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a12402e-af86-0a2a45020019-34657d7bfa90-4 for ; Sun, 24 May 2026 02:02:57 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:55 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:55 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WjaVTkjGtDCM4cyk1wUS4zep+gOWn5jb87nPJI0aYuFJX0kV5dlCy6HZL5J8yKl2RQQvdk3szsBU5EBp+lUlY2zLuYBbQahLkwG8uTZqmon/2kLjkQam2KGJ/zeCRMQtRRdt/FsevNw+96n0EFWT0yD3AlrYjw1YFGh0DzSRv5EkVdvuj+j+2geXJ6vvfLQyLNZUFaBEJEA2vp5wAxUqd5jas5Plu1VJ/Rx+0XhPPaksC3jrkj6B+3eDw16Wuc0WnIOcb9nSDWcvKuXJrkWP48A2xI3ZCDoieLV70NqeoPDyC1sKTqWmXiEt4ajSmKnbIj0t8dPq/BMV34Fq4yjtlQ== 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=0S1ZqEU1iZpAsWT1zego46VY83uaoXXJ+aqFDfCXlC4=; b=hda81wSSR2XKn/b57SIwcYHNSVANGxALEsPS9hGrjUe6H/pfUqOlbQ9fs+VCi+wHNio/j6mQXQlXpzEtBPcLiXgYEPC24LnsvF/WnD2c3USaxeHN/mHJrh3YrlF52EPQO+j8b61ZPBYpEHxppNMuapZ1tNeLGfFoXGqHXQVdh4yHPNibmecKToA8nVfaKQIUMcFGrXsez8mo4Vf9BfE33WfQgZSBqvFaNxsYo3fSyRn21nQOmLtqY6aaTWA7bDy25C4trTHCbGnr5Cxvy4c+GTezCx6mzepBWGCs9j4ZwTDAXGrVEBolgFsiWbzGINfhiaNHGm2aEZGQHca7l3iGWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=0S1ZqEU1iZpAsWT1zego46VY83uaoXXJ+aqFDfCXlC4=; b=PuL7RHBHx+ZJhJyH2giH1vGxr82otAm+F2ab9JvjbY+Dci2A4ICqn6itLOCklezthvZR+H4v7PSHsBBP/Hj2pNce5MbwKtbqvg3hdaVf+NCiyDCAJMRA5hFjLtRRuO4p4kbPFzmvIzn/7sFEkoWd6B7KIXZvmTbaTToMP1t4fFg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 13/21] xen/arm: Introduce dom0_nodes boot command option Date: Sun, 24 May 2026 09:02:01 +0900 Message-ID: <20260524000209.292370-14-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0069.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::6) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 8bbae734-fd43-4695-d7ef-08deb927ce68 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003|3023799007|6133799003; X-Microsoft-Antispam-Message-Info: uvLhSOSYzjFmc1nmw6ifXTugRCpBxLnaS0/5e6gRSOXarbAPJcbEdMEwwV1najZjnLpM37fkja6d+0vKiW5PqUrQgkSif0E+MhA43Z+CUi42MqUltJZcAigeZbO4dL/qs8w4k9Wh+Tb6Gi0YHPqfj2wxWnmt7XRY+AZYo94px6eYop/fHXAmdV9W0HzCaUqgq0ZT1HcfuzdT/iS/ggl2LiBRcoqfw+xpam6Ev4+ZFVV9Ml5eUuChDvaM9T/JDqYwyBENwTpsd/6DvN5KBp9sCULHGjCwV5uuUlyDh+qgM66BnbRKb1PYCmo4xc8Ioq0PL6u1ZuzEy21XjZKFRLwVfWauZJ+L5/KwrwLPn6co9LAzdpXYYPozgiQPg9yOfsoa6xeoY6CZfyZ+kbze0ecmNYSjc1AP/d+Q94PKu+3ahAtY4PZH7oPoRAh8BwSY2q3/oth84TPOCGarTD+ZerwcVUXO931SnBBdR10Hz2B9+v6P5QMO2d9xpsFStDDp5YdDBa+znI7ZPP7CuP8X1AA11uCcWir9I6uAkam9G/QY936IT7cgiaJVsT/j/Wqs5G6JtJLnDPdrFNUgxbURx0aOBddAv4OhHkHcSXjwhY75gSmB8PN+7fSqdcxS/pWc9AuJ1QcEKWGJVIJzKQ1ApDfqTxQvcfFbgbznj1afa4JrTa77RAftStdSV+Bhnfcs4Ii0 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003)(3023799007)(6133799003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QgDnZVR7ApYcQnlZrIHkZZ0F+6wwPCegMj/5zFaxVgkqFXn0SEb/kZQqZ4yQ?= =?us-ascii?Q?o78kN116Qy2lXR63JBAPQcvuJh8GFk8GZrqUR2XPH4AQuGAIzpWaCE3H9uly?= =?us-ascii?Q?07/G8Ly3l3WiZ/Mhpz6AnViB9Mtl4TymAHH58v/VR/SYSuRKMmADxnc/TI8a?= =?us-ascii?Q?9M1Y1aQVuhfBzNSCjVdMxx9u4NRsTWcR8IJ0niEz+MDq/kn8hJh2D2/0lQ3Y?= =?us-ascii?Q?fn7twDgp705xHfYp8oi/dOJ5qx8Mc6kUqAZ50BDKscOdcZEGOxHsC0iNTQVE?= =?us-ascii?Q?tEetFg+ZDUmg+sIdE1aM36Y2DO178U0hNUZZe4a2jogmfNEDpks9EprmZ+B6?= =?us-ascii?Q?oarVsaDXCrE4iPCGys1wZc8oJV11h0fk3y4iiYr4ekrNXa4rvIuh1EFaJDtA?= =?us-ascii?Q?g63D3tFvsMz88Lv9LQKmrC9AQFKywVXsBb96csF7SmXwMZ5OOQatFRxeaX+b?= =?us-ascii?Q?9U2twPOFhhTBZQWTlnbWUrQ6oaCWELd3LfBQ9pBH81JDyr8P/lafGOCbmZGl?= =?us-ascii?Q?c6WjLD1dl0nwbBCHx1bY5bwpLogqAd6XZGNpR14un2fk8HQf/fUG2SwprFXC?= =?us-ascii?Q?8xsKs/EkYb9d2TSnxxDfw3kCn7Nl8GU4c2EpIG9Khsuj+5LNMgNJn0dunTJ+?= =?us-ascii?Q?aOFG5qkiUfWzVWlDvBJASOjmBeXj8jcjEiFwhsNlL3+4L2l1yelot7KnUDI4?= =?us-ascii?Q?+pxzdeZp2CXEqHSllptTFJHJ3/o4ADIGfngj7lCcoe24k/D4YVFYuDYKZnaU?= =?us-ascii?Q?mj1Zy0QISmNPyKx22ZHyLJnXdaj8dy0/fo80t/C5FNj8P3DDXtnvgLqtJ5FL?= =?us-ascii?Q?94+BIfzBHGFOuVHmaYkpuQw1gHwsikod9Vyl63mwOq5hYOZ4rcYgmN69NRfD?= =?us-ascii?Q?LY9I5unVlVpGui61C40IwxtUkzauxIBhqh3q69FuawR9+FEOT/yiYWdgOUuV?= =?us-ascii?Q?aiRJ+AA/rHFViCYBsMzSQPqZhW42kla5NXYUu4gnhsnIypCm9CWMngCf0IIN?= =?us-ascii?Q?5nWBcrxVxcu5+mTpHYPXbV6y2bAf7+/gazIz3eO7Rlzzo79uWH6ervcJDiNK?= =?us-ascii?Q?lYc6ep4owEkf85AI+fhnXQ4TEXVZ5iFv02UJmQbjAGr3yEP8ZJV8p1/08P4H?= =?us-ascii?Q?Sc2ixKXpXqZ6IAny99f0HG6JZpfRCTwFTY8NGpCypuAlS7N6FyV3Xq4nUtdn?= =?us-ascii?Q?T7HodHdWV2dvKgTeeIHki1IZTjvKGC9JJerDB0sXNDEBvQFUcvp8m1JHvGG1?= =?us-ascii?Q?UY5RYgeIGDRY8X1g4xHI00fGW4IrzCoSe1OuUGn6SBnCts+t//gqvBZ+weJ9?= =?us-ascii?Q?WyUmaY9RN8CuGwzARbVGbsdThqUNgw9sLG8ChaeJOhJfWFc1Ov4bPh1I1GjH?= =?us-ascii?Q?BIXUtRmaLPu29AXJP4STFrs6eL1SSg4/DkYwB5WKo3tgntKTfxcu0aw4EdoZ?= =?us-ascii?Q?gGeTAok6mFT+cjaEGnELcki0HVvvHJqW2AxoxVnyX9OaFQ7mCmT0fOcEGbrT?= =?us-ascii?Q?ECuF0ukU0Bi3Vtj/a3dfr8pD9iZdSz3BoxsdtiksdVFwGm3PoJxmSelvTHZU?= =?us-ascii?Q?mCjbj72rv1bddLMOnhvp4GIcMsjIMAqRq3F/9/a392d41NbL23gXcNd4//cU?= =?us-ascii?Q?yZp1zRZKuI/GpPXVrQDYq9xxIazNsn7wuVP49thkExhlcWJJcUwouZESwCBK?= =?us-ascii?Q?UjKeMARqjF+/PZzR1vgvTXQFmWxRomD1r96XDt8bUSxDpzh83Rsh68kTyaUo?= =?us-ascii?Q?r4KCRiUdNiRqXqnH6Ujclk6B44zqNtqS8A8MHLadvewwzpNFU1034/WXdQS6?= X-MS-Exchange-AntiSpam-MessageData-1: meCNeP+f2g+jqQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 8bbae734-fd43-4695-d7ef-08deb927ce68 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:55.1715 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 26hgt7+lVK9DIh6RDyqqdw597vNA+ph6oa84XcWc2DSFHAiw1omibO7RKhqsxB3U9sZLBuEz66G2+CXO7LKkeg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-720697/1779580977-81772161-83771ADC/0/0 X-purgate-type: clean X-purgate-size: 2009 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779580999482154100 Content-Type: text/plain; charset="utf-8" Allow ARM Xen to accept the 'dom0_nodes' command line option. The syntax and format of the parameters are identical to the x86 implementation. The logic that actually functions based on this argument will be provided in a follow-up patch. --- xen/arch/arm/domain_build.c | 43 +++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 1efddc60ef..f4187512b0 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -37,6 +37,7 @@ #include #include #include +#include =20 #include #include @@ -66,6 +67,48 @@ static int __init parse_dom0_mem(const char *s) } custom_param("dom0_mem", parse_dom0_mem); =20 +static nodemask_t __initdata dom0_nodes; +bool __initdata dom0_affinity_relaxed; + +#ifdef CONFIG_NUMA + +static int __init cf_check parse_dom0_nodes(const char *s) +{ + const char *ss; + int rc =3D 0; + unsigned int nid; + + do { + ss =3D strchr(s, ','); + if ( !ss ) + ss =3D strchr(s, '\0'); + + if ( isdigit(*s) ) + { + const char *endp; + + if ( (nid =3D simple_strtoul(s, &endp, 0), endp !=3D ss) ) + rc =3D -EINVAL; + else if ( nid >=3D MAX_NUMNODES ) + rc =3D -E2BIG; + else + node_set(nid, dom0_nodes); + } + else if ( !cmdline_strcmp(s, "relaxed") ) + dom0_affinity_relaxed =3D true; + else if ( !cmdline_strcmp(s, "strict") ) + dom0_affinity_relaxed =3D false; + else + rc =3D -EINVAL; + + s =3D ss + 1; + } while ( *ss ); + + return rc; +} +custom_param("dom0_nodes", parse_dom0_nodes); +#endif /* CONFIG_NUMA */ + int __init parse_arch_dom0_param(const char *s, const char *e) { long long val; --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581007125695.5849968348731; Sat, 23 May 2026 17:03:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318214.1586648 (Exim 4.92) (envelope-from ) id 1wQwJ5-0006DQ-A8; Sun, 24 May 2026 00:03:03 +0000 Received: by outflank-mailman (output) from mailman id 1318214.1586648; Sun, 24 May 2026 00:03:03 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ5-0006D8-6Z; Sun, 24 May 2026 00:03:03 +0000 Received: by outflank-mailman (input) for mailman id 1318214; Sun, 24 May 2026 00:03:02 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ3-00064q-SO for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:01 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJ3-005yId-8f for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:01 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12400e-2eae-0a2a0a5409dd-0a2a4504c06e-20 for ; Sun, 24 May 2026 02:03:01 +0200 Received: from [52.101.125.126] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124032-1dec-0a2a45040019-34657d7e3800-3 for ; Sun, 24 May 2026 02:03:00 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:02:57 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:02:57 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YQH/wlxKECsi9JaiDpa4H5C2e/Tc0UHzUeYMeWpt7PVnpIf51zx3DAvIyJ/ZliRBxiKrOH5W5gGsieidRqTM65gXbRg1vCWE4lJWrD2ZecGEAs+nkqfiRWipehJHbWlSMsXuoFPKOMmgCJGNd9CLvhL/rKUsdPdeB7uQyT1z75ttU4ZwcISFNUVlkkuMW4p3jt19KOAAfs+RZjaJYQUXz54ZRzPhlQJHq05yM/RI7fU0ZGqXqetJaJk15FwlPeTwIkKYtjs8SzpRV9uCU4Nk0v9rypEXOKed/w2IskMLznkuEmPqJH/oxyJRnpgVGkal6j2xYAU+/tk36tP82Gx6iw== 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=blu4oOd7tpGPVUBQPLctq+uqUO6TNkR+RChL3tWjD80=; b=UW38uiKJ7CT9NDilJO3jMNm6lIz7dxIcAlizc4SaYvqx7qW5HS71OlKC8Y8Unq1niBCDH+gk1ZC8WyIw6rsYOk1T6rtQKonCn1FWddlQ6FS/ZF4A+Pl/aniZUfb8TeFu3oVBhusunMrr6JKI+jt71Xo+rQ4v74u92U3hMxkwhVpaLsVeDiblSy63U8clnl8X6KgvnWUCoqjleyrBtBAYlVSL7ikd8vrDI+2q/pNdvpWTmOFfTCoetNAQJAYLSjVFH7E3QJ0/OkRAFKUtOTE07/3Kj5j+gNAPXvLcBN2GpmQqVClltKX2sCNFm6nZ6gqWpjWB5cy5YqD+1sLyS/na+Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=blu4oOd7tpGPVUBQPLctq+uqUO6TNkR+RChL3tWjD80=; b=rdmA9BUL9vjRZlo4RhpHxqDzfamWF2Pb9aU786Fu36QUjR1uFZFxk1fGMalwj4DTIA4JrVU5RbFVMxxF08z7fq9sqF6BM4U2gWEhqAeYTpKSncpuno6CDY+VFC1bYp0WIGKJQt+WBln3zwzLE0j1Z9w2uxLDlKWt4KjOR7or4GM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 14/21] xen/arm: Set Domain-0 node affinity from dom0_nodes option Date: Sun, 24 May 2026 09:02:02 +0900 Message-ID: <20260524000209.292370-15-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0112.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::7) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 82b99f45-8beb-447e-7c86-08deb927cfe9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: gxwkfaTMKAqlQEEnXHj4KvcQRB0OLOPgWkw+aGwZz37itZOg62wyRn+fXoUniWBfkQgiDe1T5u8yJI5JiHNjgjAYtlPZMxhjpBq8lFtAhslI2JOvKuwEU70VMjxK4iw4OtTlaYTkiPmMXCy9dlc5GwhO2edDdupBt+nJRBNhaFqBiX7keyWeF2Kq5Y8nTCtfdAUUD429wIZfuKcxYokT2dXwWLZBYIhJA5oH+2BtCoLFHvr9f/HYIZBoEqmzTlO++O++Xq8R7+lPgV4rLSYA51IwFZT3BaceBTfmP7qaRN4cmt0eKyWqcBVO7Qow+To97YOuFdyrwiv2AXdBoh+0E/y62dl2grRUqtR+fKF4YHdxfXfexRSaGhKWuLD9YuExtDIE9IARXklShwvEMe4RejaiE/Q102WTty9tcSH8nFScyQtgvpTGwJocWd8N4VWIpUkKdUk6BRMY/DyNSs1VzZx8v71G3OyPny/iiXzJoGfe0G62aYi0Gky1AK+Z49tm6yFzMnnMf7vrsOKz7DodqRWOee719MlGHvRsuAFr6ch2WtgXmOAgCX9qwmcXS8tTFGelDAh3xM452w4z2Pp3AVg23/+/uMPLPUYBLyFljPgvphpYgxF5X51WTMdr31UXBBOIgBC9qPwb/kJnJxEJNMNMzNl0DdkntOk/wHpgClxDmVp7S53YTOwnQ6Xf7Ibo X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?eZhrmdJ2IMwteR9gnQzkJudDtJZI7LA8IjsxR8dIXzYWwpl78hvldT21Akv+?= =?us-ascii?Q?mWm9nYDgwW0Xg/y+kBo54keXhJyXLoIbLwRmJALxXSPEfW8O3CHFbSQtta3i?= =?us-ascii?Q?Nf2zJI+G24EXcQGQ+uhKO+VOkeWkbyF+VstqSwc9/jrLWhULFj/vrYRYwJ6x?= =?us-ascii?Q?E5Q8T7Kn4udr5t4FbV0qQegea/kMdP/iZwOd6lyn6HLQqcptkOt0rsTvMAfU?= =?us-ascii?Q?C6hnQKdQPkTbR8qEWC71HsRioDg2Q5gg3By7va/XPCnAryZZ8V0BRaUWsnCG?= =?us-ascii?Q?kkL+Zq8l6jtUavbV8TGrBYd7CuyDNym7JeZDqh4+j/IPiy2qPrps0Z4aHf6h?= =?us-ascii?Q?2PvY8KBRcIzYrKL23pFX0qFBWU07AGw0/VZf8TSl/GVr0gKwnmU013rRgqf9?= =?us-ascii?Q?3cuKjzchnXvCG0fqZGY4ZSY9FPGJ4kHyRxj3NsUWaK1LpXGaHPeKWpvX5PXH?= =?us-ascii?Q?YIgBUntJWLZeoHmvaBzqwQQCIa4oRwcIUlbtL7n6o5krEeIc9aveunfmc7pO?= =?us-ascii?Q?WkU94IzpLPV+UMkP5Ge112mTFXqMb5CiplzV6O+hrIw7/9kkAW6eq4yTFb1k?= =?us-ascii?Q?DAnjmNCZY6DSnxvWbHpIrYN39ndMdiryeBs9VPvU32c27Z2v9rf9A2bmuUzj?= =?us-ascii?Q?XNVwTaLLq+iYhJcFbNryQUhUoT9KyOqALsRcKBPGdVMt8PYl8zBrc+uJqexC?= =?us-ascii?Q?3rAMkB0iOoGPUi3c58+tcJAucZUmYDVnqBApkUJgl7nmI2LqzK4rgKz7dc8L?= =?us-ascii?Q?aflohRX77DBFIJcetxog+w1BueHYjkPKUpwRZIuauwZVQk4g9GrhBBH/p/6R?= =?us-ascii?Q?qRx48qK0MzDo87/SMZ0vA4byiZFLmmdVypUR322jXF9ECtNH9cwoVGBu4uwe?= =?us-ascii?Q?UE5f2OWwfbPqfPKobr1LU9qYlIWUyjs0Ga0czx2z/oknGxbDw+W+BC8zsYXO?= =?us-ascii?Q?BrN77bzgpwb387/7Yf0/CZj9YjfBUpPrwTaxOv6218ZjB+/7hsyDwJFM3YUy?= =?us-ascii?Q?hIXFgymFrg20OE/RfHShGUVWfjEJpgXX950d39rfp6SxcQqLavud6U/oGwyI?= =?us-ascii?Q?m6vYwbhiQluAx//Pce6keFztGytfvJv12tMPA4PjhigQoLnV5cRFylHGy7Ku?= =?us-ascii?Q?TB1hmJqtpuPo3NidKT+vmi96IJIMmFFubcr6LLK7JC/1Kb87qaTFe0cQkiLs?= =?us-ascii?Q?rcKOaFdAgD9kiTVK+ZAveymkzYHHzv6Ndd0FGbIWwx9SHbS86QNqTX9eXobz?= =?us-ascii?Q?VrDqXo3Ibx1K8jSFdvrtUigXZeskJYOydc8yn9SLP78zDpAEOCjTS4Dgn4oa?= =?us-ascii?Q?nSU22bc+w7jpswMqDvICxS1o1hh+H+NaahxeE4U07BG8QO7JKWRTjPgCelv9?= =?us-ascii?Q?Nl/AVuXy5ZSCLkI/EPUIDVf7XrJEveypDJwDkezO3Rrg+9GMEffjcVslWuO0?= =?us-ascii?Q?bU1EIwweHkoVtQgRbb+U65CkEBq1W1yZBXJk21NFtVYPbxz9i31iTkZsvXz3?= =?us-ascii?Q?EehLEY4GC81PvnhkuPFlqtKEMREyfFyDm5xt/02BzrOkf7KDxwyC2BxQZFkR?= =?us-ascii?Q?hojrPvIdfOJnx9KtukIxJqtKMg0bdyreJUgDc0UBZqmzlmwdU3A+RiDCzoBF?= =?us-ascii?Q?d+ksn0y0b/JHX6KlzaF461t0O0E931OiRPneou4QltWTOeXToH7t5VNZ7MUQ?= =?us-ascii?Q?atcXyMVC5g5/hDojpWsXGLpyWzIZmFJMRzAOIv0+jj9hhPRy+HLYRqAD1c4X?= =?us-ascii?Q?NBC14Fhuacx26Sfi87DI7lW9SOQNSZ/5OFQfk6ixPrMKPs9Knzav9l6r/duE?= X-MS-Exchange-AntiSpam-MessageData-1: fbQEOer6YPHR+A== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 82b99f45-8beb-447e-7c86-08deb927cfe9 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:02:57.7139 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: UM3aiVynNIoeaZMQJIMysXytLRT8ZOJACWBV3UsJp4I3FvL4Sm+7rm4igSaqfJjkrkxv+V9AKGcgXUNeBRxHMg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-ebf023/1779580981-291763FF-D3526000/0/0 X-purgate-type: clean X-purgate-size: 1124 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581008519158500 Content-Type: text/plain; charset="utf-8" Set Domain-0's node affinity to run on the NUMA nodes specified via the 'dom0_nodes' boot command line option. If the option is omitted, the node affinity is configured to use all available NUMA nodes managed by Xen. When Xen is built with CONFIG_NUMA disabled, the node affinity falls back to using only NUMA node 0. --- xen/arch/arm/domain_build.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index f4187512b0..2518909ed0 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -2027,6 +2027,13 @@ void __init create_dom0(void) if ( llc_coloring_enabled && (rc =3D dom0_set_llc_colors(dom0)) ) panic("Error initializing LLC coloring for %pd (rc =3D %d)\n", dom= 0, rc); =20 + nodes_and(dom0_nodes, dom0_nodes, node_online_map); + if ( nodes_empty(dom0_nodes) ) + dom0_nodes =3D node_online_map; + + dom0->node_affinity =3D dom0_nodes; + dom0->auto_node_affinity =3D false; + if ( vcpu_create(dom0, 0) =3D=3D NULL ) panic("Error creating %pdv0\n", dom0); =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581003036928.741671863312; Sat, 23 May 2026 17:03:23 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318217.1586656 (Exim 4.92) (envelope-from ) id 1wQwJ6-0006WZ-Og; Sun, 24 May 2026 00:03:04 +0000 Received: by outflank-mailman (output) from mailman id 1318217.1586656; Sun, 24 May 2026 00:03:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ6-0006Vg-Fp; Sun, 24 May 2026 00:03:04 +0000 Received: by outflank-mailman (input) for mailman id 1318217; Sun, 24 May 2026 00:03:03 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ4-0006Bb-TZ for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:03 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJ4-005yId-9j for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:02 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12400e-2eae-0a2a0a5409dd-0a2a4504c06e-24 for ; Sun, 24 May 2026 02:03:02 +0200 Received: from [52.101.125.126] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124032-1dec-0a2a45040019-34657d7e3800-4 for ; Sun, 24 May 2026 02:03:02 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:03:00 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:00 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=h3incp0fEeHgjGaf/D0IlTarSW4mxbwuYhbOxV1SNEOpru0A1v4mJvlVpzkCixB4J4waFbq99yX0DucCBYYhSQCSkwxzACJfAvEZ1uOFQzUA0WUJDOEKYyrS0QFqKckqopvJy870MsKq/Ep0puPx13Ls3pSMyH7yahUaiGarOA742vKhyP+NrYF5bltAb+T84n6FzvGuJX5kzMVxYNv+aF+HPgMmO9MUPIV6INImEc6fmtYLmYnjLQsTd8lKAjcrm5+UVERVJRIRDfncKMK9sc/QUs3w8KzQW3zbDpzDbpAqcChl3/bKHqqI2PEd8ZyvAo+1tE7fOnQBaajHyLH4KA== 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=uGKyh0qPXMyFNehAOEHpm32bV3yJeO8ltFIFkUh1kGI=; b=a5SitS0aBaLqJ9aeJ3yEpvdXu/CZmYRa/Z3BkRMSpt5OSUfHdGjfkYehoupkt+mFJfUqlljkCmeKqR7+iAVtAxyKvz5AdKWauxJ7msh/cB3kIXvgSt8uWHpmYEM2huLnulhY8QsV2SPLZSvnSaqpG+riuBig7Lieeje/rD5OLvL1DKobNUTg00eMSKPfjkh8cdakEs+/gg6XJ0q38LHgJYOCvqZJNTXPdo6RyvbpM3mJvssyV003vZDCOhhvAqGZMAByjcARIGSWY3fHkzvzIpSpvD0urC0fNiOz8DjOfuUk+naKEi20gChFXYqmnXnzu0Y3+qjXGR/TOwuV42TstQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uGKyh0qPXMyFNehAOEHpm32bV3yJeO8ltFIFkUh1kGI=; b=MiBfZdLPkZj5gpBCn5BDCkD2wzzXcs2YP88gigMqvxXm/kj2HG5PanXlLhNzKl6wlH0XUmS7OOyZ8LfKXuwcVuj9UfXh7eU23xbxvGr015sAL6C3OIBCzcUo/UdCkGCf2A+jsjICySPGNUnT8xwHda/J5EafT130qU4hg3g5KU8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 15/21] xen/arm: Reflect physical NUMA node IDs in Dom0 memory DT nodes Date: Sun, 24 May 2026 09:02:03 +0900 Message-ID: <20260524000209.292370-16-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0115.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::19) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: 1945a39b-5589-4ff2-3dd3-08deb927d14c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: pT9LDoPqhKRQXECn8O2g0PjOf2SvwkyAkDu5MRYymalk1gCqKFG5esyB3YWydLEXKJp0wrWzk3gn1C3RyC2LH2rNJuI90Y7FAYQADw+BdI4CnQ9PS8aeb8LcfPboJQXs/6HsmjW+DRWkrPGn2loWK2yOwVWKtRBK144mfJKzITqbv5EFoNrTZHEN7NIXQN+q+HN30K91BkZ12XVaG8vMaoqVufAl1N8Eg6ZeOJabXSV4PMR5SSN4UlXkcoxWXuKmKPG/doULQenoDSBoB+2XoV3dHIHu4q4aabUAffRsBrTB7dHp7a5cY9PH61izqPBw5su94mfO2J2HR3db+ztZPz6IG+BEb2VEl090LGWJQMYPQY5xZEmfNz63t4qDoinUS3Fd8rB/KOy7nO8gzpYpvkBWt8kZwhNwx1z3mkI7dQBeR63A1y9/hZD5sb7bLJZIJ3e3iPBwfBDF7bYXztYSp0zsx/RiRnpRFIbJwB9jJyMKrgeJlyM5CZMBtwH9i+hSt2x909/4MdoAyNl4CrcSojN1VPKdA3UqUr/lFRH0SoxksNBXsZlLaEIQUQ8i7To05tY3X7tyGUkYfg7HRA93sieA2KeU1WHR4zNkfrSnSa6oRlFLWYErrL2YDWCWVfvfH4j8yn3rAX/K5z+mQlzvBlA3hieqy6IISrKXp4ZVDcpeGAMi2QMcmj66onWQkqqJ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hNq8h7ForHdKvQiRQwB9nOmdZQAsD1FKlKEAY744A1XzjCE/cQmZr+5DB81v?= =?us-ascii?Q?5whY/MhgnoXGIJOTH1YlZzN0Y5JAj/f5QtpPnRJC5Fr6nD9RLJPXlLITCCSJ?= =?us-ascii?Q?6XpROm+DbzcrDD+xSPy0d1QcyVG6UggWzhk/29m4KB//0N6+yMN7VkCKbJMP?= =?us-ascii?Q?r/jhjT8UaUMPKDwiLbKE/htqOcHHiS9cGBLU31wCy0/jPh4HAO6ouSEHkBqF?= =?us-ascii?Q?9sPkPkMT2r5Ap+rjH1RN7ZRflH5HoG9BH3txci/B6zZfIB6i/zG1C4MA/Wve?= =?us-ascii?Q?BqyZW/8X2b7nC1VoweKiTjq6yYpW5XB4AaJi+1QhV2cggWY5c2NczZDfbJRu?= =?us-ascii?Q?lMC9uGH2jTjKpiy46NHh3kavjVBRxs1BSgv4eoSxx1TP/Cdsf/yQRttgBeFl?= =?us-ascii?Q?MIRIkQeAymeSKeB/0VXm8VAn3uchm2CO+jEslaNJfXsm8FZukrTGiCkpcOGp?= =?us-ascii?Q?/e7GaBeTFk1l5i1cbRD7q7a7SH3AzowiB35icqc+z4dYN/+pslbvqrUn664W?= =?us-ascii?Q?AdOrr8hoVXq2Z6Y1XjJ7AIcUG0FtSEQUvw67oD17/74F4AgimH+cYFUvDaQD?= =?us-ascii?Q?KtydYdC3GO6mj8imRbZKYiNyxpwbXcaQWlutaU8aHM3sFlivpvd1yV8XLm+/?= =?us-ascii?Q?j8hjf5qlYAjMqCfL4HPmyFufSQ/cjoooYoFER5qT7MbsynJD9ZJygWK643UZ?= =?us-ascii?Q?ilEMYji2xNemMxpF+QAUd6ufJUtMdqNqRySy2vKVNMWhSFWST/RD1G0L5OoD?= =?us-ascii?Q?cYmATkjc13w7OewOLRQ4qBjxn5JmkmzJMOJ16li8rTRFctb63/+Nve19E7zf?= =?us-ascii?Q?in1kjXT1HwBaKJUpW72TFkRbyW1NV6IF5WDTZVh0o8SHtUWoCJRPt8S7DRAD?= =?us-ascii?Q?Oxx/kAfdTwx2WxmW/E8M/0uzTyk3iHP2RXrC0BxANPnq1q8JS19tHWi1uLhn?= =?us-ascii?Q?2HlOultXpxbIHUSyqB5WQ0qEqiSRJPFGIAJlDQ3z8h60HqTlp0TRgTliq1Kj?= =?us-ascii?Q?UtMg/Rozdi61EBskyuEX00SoPIjU1VRqBsTj/BTx0lT623azadZHq/5dOGoU?= =?us-ascii?Q?iEmG7ylJXJ8PQQovzPGZ15KD2vaN2A9Ov0R6L4TlHSY9IjZLWRDqI+Zui7i9?= =?us-ascii?Q?/CiBeo+76Avj8JpK+eRQwGx52TgSRg5N2afmm0xSbuJHXBeEvSOWqeeTciAd?= =?us-ascii?Q?ikg050sgdb1kIbiU8qoUu4tWTBC51Si7/FSYemfcLDJmLFkmx6MDJnCZ6UzM?= =?us-ascii?Q?Rb9Zkg2OJVnOB9/sgin5ibnCRqwz5B+GjqhpfiTaKSld3U7BqHwcTllGaogN?= =?us-ascii?Q?7vfzQh5u+QrS2eBlmv4p3LMQLH5KAwPdttmXIqBKLkRxKA9iq6ak6mc4wIgi?= =?us-ascii?Q?SwouR6t6fAC8s29kXlMK9mpcYcPclxmmwnPnoQr6gOOtlC5tlbht8Gx09CR5?= =?us-ascii?Q?KLBjCJ/+F6GxXNcObCvh/7keuvnC8o0NwkyqyCDT7+WJGkb38rN782AptmfZ?= =?us-ascii?Q?jlW99Qu+s4A5kP46noFE6VYVJmkOsnh7jaKIIRvsCP222XFItiiHr06bx2MD?= =?us-ascii?Q?7LJKsesVpRulXZYicq9069mY7u/MDUalFLgqrDTS76P7N1B8HMuamVsF1JfZ?= =?us-ascii?Q?ewqpEw5JeF2rUtDE/G7jSuRTc2+IvItOaivQ2u0BY4+Wt2l1cW6KcZpEOP5M?= =?us-ascii?Q?rqUmH21udez8PIzjWkmaX/GUL7+EZMH+3snm10Z/mda6grQy6Ru6pPrjivF1?= =?us-ascii?Q?2KiCb8qWPW7Rjq1F0a+PliBKuLLLUW6bge1S6Z3S/6uZ0sQsQUXT0Iwlb96z?= X-MS-Exchange-AntiSpam-MessageData-1: MAu7AU4DucXDpQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1945a39b-5589-4ff2-3dd3-08deb927d14c X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:00.0545 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 2I0siPZsjxzga0PsiA3ybkzKDq6DwmV9Hne2KIRV4bLTsflzQ8SgXch7w8tAaxd1cHFfVMRnDBP7vnBx2o1lHg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-ebf023/1779580982-2AF653FF-16449E80/0/0 X-purgate-type: clean X-purgate-size: 6804 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581004696158500 Content-Type: text/plain; charset="utf-8" Extract the physical NUMA node ID for each memory bank allocated for Dom0 and apply it to the corresponding memory node in the Dom0 Device Tree. This implementation maps the physical NUMA node IDs directly as Dom0's virtual NUMA node IDs. --- xen/arch/arm/domain_build.c | 22 ++++++- xen/common/device-tree/domain-build.c | 88 +++++++++++++-------------- 2 files changed, 63 insertions(+), 47 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 2518909ed0..1deb4c1139 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -187,11 +187,26 @@ static bool __init insert_11_bank(struct domain *d, int res; mfn_t smfn; paddr_t start, size; + nodeid_t node =3D 0U; =20 smfn =3D page_to_mfn(pg); start =3D mfn_to_maddr(smfn); size =3D pfn_to_paddr(1UL << order); =20 + /* This code is temporal */ + { + struct membanks *mem =3D bootinfo_get_mem(); + for ( i =3D 0; i < mem->nr_banks; i++ ) + { + if ( start >=3D mem->bank[i].start && + start < (mem->bank[i].start + mem->bank[i].size) ) + { + node =3D get_numa_nodeid(&mem->bank[i]); + break; + } + } + } + D11PRINT("Allocated %#"PRIpaddr"-%#"PRIpaddr" (%ldMB/%ldMB, order %d)\= n", start, start + size, 1UL << (order + PAGE_SHIFT - 20), @@ -217,6 +232,7 @@ static bool __init insert_11_bank(struct domain *d, { mem->bank[0].start =3D start; mem->bank[0].size =3D size; + set_numa_nodeid(&mem->bank[0], node); mem->nr_banks =3D 1; return true; } @@ -226,7 +242,7 @@ static bool __init insert_11_bank(struct domain *d, struct membank *bank =3D &mem->bank[i]; =20 /* If possible merge new memory into the start of the bank */ - if ( bank->start =3D=3D start+size ) + if ( bank->start =3D=3D start+size && get_numa_nodeid(bank) =3D=3D= node ) { bank->start =3D start; bank->size +=3D size; @@ -234,7 +250,7 @@ static bool __init insert_11_bank(struct domain *d, } =20 /* If possible merge new memory onto the end of the bank */ - if ( start =3D=3D bank->start + bank->size ) + if ( start =3D=3D bank->start + bank->size && get_numa_nodeid(bank= ) =3D=3D node ) { bank->size +=3D size; return true; @@ -253,6 +269,7 @@ static bool __init insert_11_bank(struct domain *d, mem->nr_banks++; bank->start =3D start; bank->size =3D size; + set_numa_nodeid(bank, node); return true; } } @@ -263,6 +280,7 @@ static bool __init insert_11_bank(struct domain *d, =20 bank->start =3D start; bank->size =3D size; + set_numa_nodeid(bank, node); mem->nr_banks++; return true; } diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree= /domain-build.c index 2a760b007b..61e2e50062 100644 --- a/xen/common/device-tree/domain-build.c +++ b/xen/common/device-tree/domain-build.c @@ -493,15 +493,50 @@ int __init make_chosen_node(const struct kernel_info = *kinfo) return res; } =20 +static int __init make_memory_sibling_node(const struct kernel_info *kinfo= , int addrcells, + int sizecells, const struct membank *bank) +{ + void *fdt =3D kinfo->fdt; + int res =3D 0; + u64 start =3D bank->start; + u64 size =3D bank->size; + __be32 reg[DT_MEM_NODE_REG_RANGE_SIZE]; + __be32 *cells =3D ®[0]; + nodeid_t node =3D get_numa_nodeid(bank); + char name[32]; + + dt_dprintk(" Bank: %#"PRIx64"->%#"PRIx64" Node:%u\n", start, start + = size, node); + + snprintf(name, sizeof(name), "memory@%"PRIx64, start); + res =3D fdt_begin_node(fdt, name); + if ( res ) + return res; + + dt_child_set_range(&cells, addrcells, sizecells, start, size); + res =3D fdt_property_string(fdt, "device_type", "memory"); + if ( res ) + return res; + + res =3D fdt_property(fdt, "reg", reg, (addrcells + sizecells) * sizeof= (*reg)); + if ( res ) + return res; + +#ifdef CONFIG_NUMA + res =3D fdt_property_u32(fdt, "numa-node-id", node); + if ( res ) + return res; +#endif /* CONFIG_NUMA */ + + res =3D fdt_end_node(fdt); + + return res; +} + int __init make_memory_node(const struct kernel_info *kinfo, int addrcells, int sizecells, const struct membanks *mem) { - void *fdt =3D kinfo->fdt; unsigned int i; - int res, reg_size =3D addrcells + sizecells; - int nr_cells =3D 0; - __be32 reg[DT_MEM_NODE_REG_RANGE_SIZE]; - __be32 *cells; + int res =3D 0; =20 if ( mem->nr_banks =3D=3D 0 ) return -ENOENT; @@ -516,54 +551,17 @@ int __init make_memory_node(const struct kernel_info = *kinfo, int addrcells, =20 dt_dprintk("Create memory node\n"); =20 - res =3D domain_fdt_begin_node(fdt, "memory", mem->bank[i].start); - if ( res ) - return res; - - res =3D fdt_property_string(fdt, "device_type", "memory"); - if ( res ) - return res; - - cells =3D ®[0]; for ( ; i < mem->nr_banks; i++ ) { - u64 start =3D mem->bank[i].start; - u64 size =3D mem->bank[i].size; - if ( (mem->bank[i].type =3D=3D MEMBANK_STATIC_DOMAIN) || (mem->bank[i].type =3D=3D MEMBANK_FDT_RESVMEM) ) continue; =20 - nr_cells +=3D reg_size; - BUG_ON(nr_cells > ARRAY_SIZE(reg)); - dt_child_set_range(&cells, addrcells, sizecells, start, size); - } - - /* - * static shared memory banks need to be listed as /memory node, so wh= en - * this function is handling the normal memory, add the banks. - */ - if ( mem =3D=3D kernel_info_get_mem_const(kinfo) ) - shm_mem_node_fill_reg_range(kinfo, reg, &nr_cells, addrcells, - sizecells); - - for ( cells =3D reg, i =3D 0; cells < reg + nr_cells; i++, cells +=3D = reg_size ) - { - uint64_t start =3D dt_read_number(cells, addrcells); - uint64_t size =3D dt_read_number(cells + addrcells, sizecells); - - dt_dprintk(" Bank %u: %#"PRIx64"->%#"PRIx64"\n", - i, start, start + size); + res =3D make_memory_sibling_node(kinfo, addrcells, sizecells, &mem= ->bank[i]); + if ( res ) + return res; } =20 - dt_dprintk("(reg size %d, nr cells %d)\n", reg_size, nr_cells); - - res =3D fdt_property(fdt, "reg", reg, nr_cells * sizeof(*reg)); - if ( res ) - return res; - - res =3D fdt_end_node(fdt); - return res; } =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581013315942.4850154611629; Sat, 23 May 2026 17:03:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318225.1586666 (Exim 4.92) (envelope-from ) id 1wQwJA-0007Ck-0k; Sun, 24 May 2026 00:03:08 +0000 Received: by outflank-mailman (output) from mailman id 1318225.1586666; Sun, 24 May 2026 00:03:07 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ9-0007Ca-Qu; Sun, 24 May 2026 00:03:07 +0000 Received: by outflank-mailman (input) for mailman id 1318225; Sun, 24 May 2026 00:03:06 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJ8-0006z1-Ir for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:06 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJ7-000m7t-Um for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:05 +0200 Received: from [10.42.69.12] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12401c-bab6-0a2a0a5309dd-0a2a450cbdac-18 for ; Sun, 24 May 2026 02:03:05 +0200 Received: from [52.101.125.118] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-d25034.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124037-62f1-0a2a450c0019-34657d76a273-3 for ; Sun, 24 May 2026 02:03:05 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS9P286MB4275.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:2ca::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.17; Sun, 24 May 2026 00:03:02 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:02 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WTqFtlx3L0XOA9timBkUv2ADg+Owsm9yef+zE3fnW61aczKrbYdMnjtmRVSrm/TBvqdrjetv0J/G990o9YPAJGU0cEJwnJTmto6WoNsrQSZTTF+L793ChFAdEznkYxxsVgwsNEYbtt8oiGvk3nYrxrmNSOlq5YH5FYxoi8/SV3lINjla3TfwUG8UXLW0hNGhy0BNS0Lv4XULMV2K41thtBKX9wO/kQDpmT/2JN6tXj4iuXjOhuNJwiSvO9I8oap82aFu04lDt7w+Ji5CJkC+bsieY3VC0fbUBkeieBf/F3jAr+GTsydYiEIYZdQG879SjD5aYcqMbPHmQx9qJTDExw== 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=IISNxGg7j9E7jMdBYWz59g/s/VxE99jHkjaKf+wwH+g=; b=Ut5opo5qzgaEVsx7G5N8xuDiYfy2Ln6pNCndAOV/x6jPwSIqhLbS2iZHb9zexnzNgqOdcuoFpOW2x1AZpokkKh1GrQiRaroLIAEqVGQcrztuUO0//zR7u5MiJshCU+Oivl4M4Vckh80sM+1i4kiqu5kcWpP/5hkE+0dL8bGN+MgzICv8YwpS2I86E/YE6ojWGu4qfVyxUy/fVOB3ztkEzUjRe3vcMMbT7CgXU8jLUTe3r4iX5oH7ktSDteIs2J8S/oo6Epg4nVQeIQGWsa2ck2BjvT/oeuaxDfzIkMTCWdQ8VEzDz+Ts7aaxW9QzEZclXLZB4cvUFKpzD8VvCfkTuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=IISNxGg7j9E7jMdBYWz59g/s/VxE99jHkjaKf+wwH+g=; b=aQfhKj0vmDhv8/vGX4smEsCcfXaj1lI5VereRp2kcgSoEh3GO5QmfFSVstFO0g1FICD4hIJtON5M3tF6OgKb4Jtv43xpkUw6zgWRgVx0OrzObBm/0cql8QGKrn0uq7m945oaNWd9Dfd0somVszYNISzaF+UEpF5cfsWdL0vYt/o= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 16/21] xen/arm: Balance Dom0 vCPU assignment across NUMA nodes Date: Sun, 24 May 2026 09:02:04 +0900 Message-ID: <20260524000209.292370-17-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0114.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::12) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS9P286MB4275:EE_ X-MS-Office365-Filtering-Correlation-Id: f07c572b-31fc-44ab-e135-08deb927d2be X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|10070799003|7416014|376014|366016|22082099003|18002099003|56012099003; X-Microsoft-Antispam-Message-Info: hT6wiwp25e4lUwRYlN0jt1O/UydI2u8o0bVjJbbSx0RJNhi7yyRaZMm+4AKxzv482SkVMVtT3H9jzeAkEzLnItZR1DqDbq3lnV0YjMfTb0vWq6fx6muK4xS16A8aVs3+9uGCttdlWiJ4QlF0ZfUABq8oBCbVZSBNHEXXADropbAG5b/mWtMZevYzkF7cL9smM0336cXBi5uRi7CFFFNuLO+WZoz0r3SmDy/XGQ3bgozb7lj3ILnqGSaFTiV0fEmxtcNY36u/oMOwfwsFUQUW0DvBlUyKmwnf9JL2U74rMaqIqZPk6SkRALVBRAvcl4JyOl3UpWNgeLxp/dMKAjkZ/zBCHa3ZQiqhGWHktvfOnUO697Iq2P3M4f4+xisp7pTFtKF4PFnm2wXSARiHZjvM54/uxPqIZLidRpcpd4WqS2afI50OMFg6MUQkx9AsLE2js4wyJnSBV8esDcc9yCeqXbKbyi5Vk56520Jgs0ItHBPDw/vFQRglvi3PA6WnYe6s6ZQjDwVEYgknXBTL2UTMJi9Z0Xncw+QA27Za7letpNwqrn/5jce38vFVmrrFUPX4oTlCFI32PS70T6ed9wN6N0QZvgjaPdDeLbc1vzp0uhYnsIZDXahYRadz13vkCSiPIKRLFEakg9LMQC9NBQEITuSRBcrHXJxOECG2eAzZkWps/pIYjvmtmTVwS3VWLx3S X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(10070799003)(7416014)(376014)(366016)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?13lMIixZdgvu4rv2RvD14FWWNO7pGOWxKA5xtg+V+gxGmsV4YSyx/Pabx4yw?= =?us-ascii?Q?3C/cWGiq4OK+lD4YkZEkZy8Yz+jqw97LgLj13o2gpTPXbGlahkSFn9bVfdgv?= =?us-ascii?Q?RkUBAEF2gCw+o+hTPL0bKShlEYuv1gDeY8/cODzOG4KduMCrDFhZkmZvoZxc?= =?us-ascii?Q?ugSKkYVzP43pqEEtP7kpy2KI66L6F7osl+OJaXFTvoXUxCoJa6lbu7yF5RAs?= =?us-ascii?Q?bvh5leqf7AdSGqaSz879M82Jhf5h9pHWca3j33S3Xc9ZpXWPoltaAikyYLtx?= =?us-ascii?Q?XxAevijfEIL8YMWflasuAw24NjL1qR580xACC6nIPJT27b9K3aHKx2xugQ2P?= =?us-ascii?Q?Y85Pok76qxuoOhkkuOXrHhj8Tczi9yWgiMg9Iv4aM9/bLX51iVh52+9yW+el?= =?us-ascii?Q?u8onkayItOJj+6DC/0n+RUsTKRJTKcZuphAfjh3Mr5J+ViUmLh7tv9sV4iBL?= =?us-ascii?Q?GrSdxPr+9CfzQ6g4UG/V7dzYH47/A8a6Eev9VTmMiKK+NoGsme6eRCsiLLIi?= =?us-ascii?Q?UNknAJCiA0flzWbeemzUXsgvXwhdPPPXmNtAQDxSk0IpwpqXi5KOcN2eNS0I?= =?us-ascii?Q?nVg5kgr7EjMD6R9CtMx6E91RMjcpZFYZKFD7Qg7ilMFrCGyEBqjIWA9eKzSI?= =?us-ascii?Q?7QhXdLLiZG1jBHmArgzemO7nVjY9NhSNI3FVAGLOF7MP0vrWvW1kcXM3tfMH?= =?us-ascii?Q?e4h53lXnB4anzy9PrXwMGmfIMmYRfeUOmflkBxNsDmxk9Q96Z8kpr58B/Wip?= =?us-ascii?Q?bVyBTIcfMPNzKAhNZiKKt72PpkY40YUhjqs459rnybQLhgZb7GDiJcMNBQLA?= =?us-ascii?Q?QuUphi2VpXPMCthWwk+UzK9tA2N3bKduC75c9HmIX0AHltuHCSkRIz0FMV96?= =?us-ascii?Q?vcDu+8OfPkcb5HnQKcLWHX5QImQak8IunYF0nBH827kx+DoXtiyuJJyw38WG?= =?us-ascii?Q?71MbhLnZef3VVJP8/vRPWVJD5A+xTopuHahxiqT8nf00mcghfm0dsNr+/thq?= =?us-ascii?Q?j6nOCSDSc7DvyLqhx/4xEVWjgjZIZU1Iv/uEd+FaesWWiDUr+Rc+atKSaV7c?= =?us-ascii?Q?p6Fl0n1a7ChPJvE3JcAFZUeStWsQVnw+G+8eCfwrNV+5prbKJCNoNuiUcj49?= =?us-ascii?Q?AqRI+XJqctz2771SP8HI3SEcLL+co69/QQ8C+D5wc7TEfcyy96h0zT9tmZQF?= =?us-ascii?Q?9mcauiTfKQsSmuiuXIBrtV0RIxB/Kwz78S0XxjQffTkqW1nGXol4X2sxa+ph?= =?us-ascii?Q?AjMJ5Du3KdVfR9bYDPz+fAHXFrQmANYc/pB/3r+JTAjVR4kMk32Qrnr/XhRa?= =?us-ascii?Q?5i3daDUV3sEZDlOJ+8/hzondyehV4VgIQqRfwxPXy/DKxBVD40gCUDlEjn6a?= =?us-ascii?Q?4flSEoZsPsueFW9+QO8p2KwngrzEYb6B+Uf3fa8B6SOJPvrsZJH2Q6HO0k3y?= =?us-ascii?Q?UsfFG84Q1oqLxHdkplBF9jZJVRxEurQrRjlzSUr116iUCR3jR8NTIjw4phQo?= =?us-ascii?Q?7Z91Ix7q2vKsXeD8hYP+mns6DJisbUcgEeCwbofNMQKIXaKP03vGBLDRWLmF?= =?us-ascii?Q?r9tPcih7Mn71LviQ/n01UnL52p4km3dMdN4famOuB/49f9FLOeGOcwcn1ZQ+?= =?us-ascii?Q?O4Lb9G2yrCY4RanfkoHMdydoIzfBhXqxcKtWE2yUukw4yUv7KFNyi/AL0aUq?= =?us-ascii?Q?tbN4+hyfkAyxP8l+hf8aizPLIvcr4iByJrwsnaXCiDBdObZ6N9KVJvB5i75j?= =?us-ascii?Q?623dPSuKeP81LRFrknbx+hWSoCTj63aq81VNirEWUeIU1teaGCgKtNDDV379?= X-MS-Exchange-AntiSpam-MessageData-1: 6VWMNAUS3buPMA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: f07c572b-31fc-44ab-e135-08deb927d2be X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:02.4596 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 7HT/UtDRXK5+Y4phWAdKITLzDNKlP1ztooEFcyF/A+xExwGGAST//EzykGfZXVHovw5sNnSVcqh+LYWJWQ+c9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS9P286MB4275 X-purgate-ID: tlsNG-d25034/1779580985-E2169CF5-69CF686D/0/0 X-purgate-type: clean X-purgate-size: 2013 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581015658154100 Content-Type: text/plain; charset="utf-8" Configure the assignment of Dom0 vCPUs to NUMA nodes, aiming to balance the compute load across the available nodes. --- xen/arch/arm/domain_build.c | 46 +++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 1deb4c1139..a62adafa19 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1225,6 +1225,34 @@ int __init make_psci_node(void *fdt) return res; } =20 +/* + * Map a Dom0 vCPU ID to a target NUMA node ID. + */ +static nodeid_t __init dom0_vcpu_to_node(const struct domain *d, unsigned = int vcpu_id) +{ + nodeid_t nodes[MAX_NUMNODES]; + unsigned int nr_nodes =3D 0; + unsigned int vcpus_per_node; + unsigned int node_idx; + nodeid_t n; + + if ( nodes_empty(d->node_affinity) ) + return 0; + + for_each_node_mask(n, d->node_affinity) + nodes[nr_nodes++] =3D n; + + if ( nr_nodes =3D=3D 0 ) + return 0; + + vcpus_per_node =3D (d->max_vcpus + nr_nodes - 1) / nr_nodes; + node_idx =3D vcpu_id / vcpus_per_node; + + ASSERT(node_idx < nr_nodes); + + return nodes[node_idx]; +} + int __init make_cpus_node(const struct domain *d, struct kernel_info *kinf= o) { int res; @@ -1907,6 +1935,24 @@ int __init construct_domain(struct domain *d, struct= kernel_info *kinfo) vcpu_switch_to_aarch64_mode(d->vcpu[i]); } =20 + /* + * If Dom0 has specific NUMA node affinity configured, bind each vCPU + * to its designated physical node. + */ + for ( i =3D 0; i < d->max_vcpus; i++ ) + { + struct vcpu *v =3D d->vcpu[i]; + nodeid_t pnode; + const cpumask_t *nodemask; + + if ( !v ) continue; + + pnode =3D dom0_vcpu_to_node(d, i); + nodemask =3D &node_to_cpumask(pnode); + + vcpu_set_hard_affinity(v, nodemask); + } + domain_update_node_affinity(d); =20 v->is_initialised =3D 1; --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581004105357.5975865594462; Sat, 23 May 2026 17:03:24 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318238.1586676 (Exim 4.92) (envelope-from ) id 1wQwJC-0007kN-QZ; Sun, 24 May 2026 00:03:10 +0000 Received: by outflank-mailman (output) from mailman id 1318238.1586676; Sun, 24 May 2026 00:03:10 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJC-0007iu-FI; Sun, 24 May 2026 00:03:10 +0000 Received: by outflank-mailman (input) for mailman id 1318238; Sun, 24 May 2026 00:03:10 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJB-0007ZW-RD for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:09 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJB-00EXML-7E for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:09 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a123fe6-5cb7-0a2a0a5109dd-0a2a450bda96-46 for ; Sun, 24 May 2026 02:03:09 +0200 Received: from [52.101.125.111] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a12403a-212f-0a2a450b0019-34657d6f18e0-3 for ; Sun, 24 May 2026 02:03:08 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS7P286MB7274.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:439::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.18; Sun, 24 May 2026 00:03:05 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:04 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=n7ee2/ZfYoWpajMoHdRR48YyiCCsc8kedK91ZcE3beF8P6pHybLQ3VmJGmehR1qtJ/wqkO5kmzj0ePty9GGpk10Hma1xkHUFyJSyoSWUWs1eP90U+N8lRTfprd/5LOw5qPF/gsShKHqaF5E4uAAd1j+cuoFdqWci2FWKE8825MsaiAUXHbOA0jsaXrVYIb2V0UPkv6WuvsUKF2c25LL9SdXt08w9X4RvoM+Y2CTjQOZ6SHYM06zQIn2JTw82Nl2TJ38WCPpl92rKcoLOfSLwfe437GRIv3VdamBi9V+dDEY9XuRAOUPV8rWakijbKqYlLYn+0WS//Iq3qNw7SRxawA== 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=obw1nZcPTKd4hlGOSXyksn31SLCWaXqU+VhsOWUL7c8=; b=l/MwmX/6pVpBwjwAvDUyUTTL4p6qPybr8Y5ToiS6+ZeUTrRjX+/l4eTBkioK2jMSJLwx226wxVG6xLMiB3qMYvyX7JhCzMDJ0vgsIQP5ECtwDuGAKyx9f+rWF+zFhZHpcBjwrJ7uRdXS7gakSm35pC3wLL/FUxymX9dwnjevKJFgNyZz+s26187TaAvJIkVTJWoxEgQaxQWKTrk4mau3JhkM4QMHevT4+os3RKidxXMZSMm5PofYxbC7ULDJdcx1tOXj3AvoBYjmTPIIpQLQ7VedKqWh/3XJf/eV/HMuTdslyTiEv7mlG8UIHW44GrirGX3s7pzTGjhLtPvteTEF7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=obw1nZcPTKd4hlGOSXyksn31SLCWaXqU+VhsOWUL7c8=; b=mKb3mNfeGH/snsVm2mUojrrWWo5dJoQKApFX25/zmrme/Y7nodq0v4byvPNiqmwX1+lkXptVdUl52wsZH3xNkFvLL7HP4ceWt0la2Z5O0FRIHbbMI38rNSpr2tXS1iz/svQpJAm65eq7KolwnYUms5a9JuJugMKLmBeRYadpmiI= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 17/21] xen/arm: Export Dom0 vCPU-to-NUMA node mapping to Device Tree Date: Sun, 24 May 2026 09:02:05 +0900 Message-ID: <20260524000209.292370-18-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0115.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:29c::19) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS7P286MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: e575e416-0725-45c0-b0cf-08deb927d42d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: eUUjzRoWNdof1yEWg2wBJRHmN8i6zzkzO8jzF/kVVUtFofk51J5mevw02S8Rj4Uyan2uZvncQoPujPEO/ns+KBfGcSi8kxK5yemDySihTHyXPJUHIjPZ2Z8/ZjjsSoo3VcAOcrzbCgScw5CBNd77Zk53QHKmu8JUIphgeH6LUSSIDrE923sBxLvY/+rAKw1f25BIFkrr+KIbQrCS1msb/nJ8RxKEXv0iKSsb8i8dqst1S1GjjgvL7mbpl6YQxHTbhvvugv4Jkhrelh2OI4KDyFXb+rWut4zadxocGJaYxj0b4lD+E00lTArYSs1dE7BtqbKXdcINeJF+Tc0qnATDE3/Lxc/Kqag+Msoimk+1yQopaL9ynAGXRb7dTK9WO5Lon50zfIToW10b7J58YSz3s/gGKEKx2JLZRnot9L3JfJlfNUhwqG7niU3bC7DzX01hPCyloIi54D3t76ulaEUk9avQFXXU1hKdP38frqM3OdhMO1RmPYmMU1sE+k741/dG9sNYgBcVrsEZjRMZAaCSNSr0RMFSUDovCzuJiGzfajiMuGE/gEo393+aq8YliUem1CUpqEUe2N4fGzPlGCp3+7aVAYZ+sdAI5ANrQ3XqcLv3S2LYp+UKU3WxHMjzQ0h4CyrrPTnlnyU3FeQBCOAIw36AA1Vqks2v56rJCNjKwYD3vw4HnODKIygxAuT9s5kS X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(366016)(376014)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?MifNv/tWTrjP58Y18mD71/yFGOGRtDzEhtTxgz79RrKpTZscJwVxPJTv6JVy?= =?us-ascii?Q?ZSvBJj9Kkvwe3RRbfduHaH3DScn0IYv4RuzWB3VkEH/AiuGzuR3HRPutVynt?= =?us-ascii?Q?zY8F6gVQxsJCxOIfKTKR0JMw34PzLQRBLOKvVY8loxn47dkNPyl20Uwii4O6?= =?us-ascii?Q?k1bsIKjPlQsmgZ8GwrfQsEgVpTsKCIeZ4UhJ11ile5a+rWuHloHmz+/epTxi?= =?us-ascii?Q?3e8+ts/WBPhAwcmFTHL4xwob7cB3VhJjBxecmJGYJzVn374CUi4EhtCA5dZL?= =?us-ascii?Q?YvQF9ZfrHM1rhe3XdngiBso6AFgMLSuLDE8QsCiXrSrLashUWUwVZa72B3ja?= =?us-ascii?Q?8tUGzxVCuj+vdE2idTHv7etDtBo7nFf21ugNFQdW9W8wMxWXT/KXTHTJf2Da?= =?us-ascii?Q?XIv6kVyHOIwnz6zmLE/7/lAqI7nycVLUTnLd05DQvYRBllKQ/O0YF+hVGDYN?= =?us-ascii?Q?KCeelGee6+BdTRMhKBej534cFkcFc5wzcNHA/d/nqOSkUHPC/K0TiNfeiEK3?= =?us-ascii?Q?TT6boz7sTjl5NN+YuHO9XLnuiey9TwVi6g5ZGL4hJuRULx6kkbeiFujpJT7I?= =?us-ascii?Q?PFiUkL6ratqmufFdUO1jDiiy3RZav5ykCqUAui1lFYJe+/z5dZf7SiDHDN3Q?= =?us-ascii?Q?PV9kuInoDstH1xE1WC8M16LjfgtFn0n/fmZ0Nq07vNBuHNL1Dnm6z6yi/NU9?= =?us-ascii?Q?HV/AtMy5qdqJO2VfP42lw5EJZO1VQK/MSNuFi1qGZIX+LeTdEmM+XgsT4sB5?= =?us-ascii?Q?ckIH1iS7hcRQr+EDHSbNlyy0oQZ3Zqf50zNm47zHkwkQ8OgpaPYFAO5gVrrb?= =?us-ascii?Q?NOxEfmQoKm0sbDSzH9bO6NBwS+HAsQCD8nLoC+Zn9sWG6o3zfB85JwFyD0EU?= =?us-ascii?Q?BK2oXHMpTgLPUeXnGOtMdIWKlxo/1TFQwCSluNtR/n6VpgjxPULvCsx3Ke7F?= =?us-ascii?Q?61EmtKwkk5Soi1FNB9iJ5EZG0VAFsU7kObqUCA50LBnbzXgcJUHV+0wjDSs2?= =?us-ascii?Q?NnHyJ0p4ZmNXRD5W4BdWdR8BevV7/zXvsNsauYZeB177qpim1fQDfkudAep9?= =?us-ascii?Q?wDdJ6W+Lb84aVsV1eOyBGF8sPRBA9qQ0YdyRv6jo1as+ryCQhs+TsOdDsaQa?= =?us-ascii?Q?YIWSu3CoW1BQw0MGgmRtBhUVLfI3jtJoOxuA1ttvyHvZisBOccYA02VOuzaN?= =?us-ascii?Q?+/bXnEIvZHDbWS5CuG9Ao/3J/7lc+GDBWAtXCe0DkYvx9wHaOZ6I7zi2Xq4U?= =?us-ascii?Q?agG39x6vSWbcIlwcPeGvrvrcfH1mOseUF812PL7QXna0tiN66g4XqwmYv+Pl?= =?us-ascii?Q?rFP0qj0aodZ1JqFR9BOsQT1i3NdBvmbQjtXz+Ic74jJC40Qv9k44xNXSW+OG?= =?us-ascii?Q?f6wljYuEU/mXbd0q/HvGJ/q8GwwB54ppteFx9OHXcLwBixgA0MzmYrF1c7+D?= =?us-ascii?Q?rSqdKQ+vCTMzILd6jr6XtR4O7FdrKqJy6VsjyIJq8oLhT03cM8fu2lcUhi4C?= =?us-ascii?Q?f1mfPFabX7wG8by5/tPDDmdwpKkCSMWkcuxqf/7PnAyS4pk//NlKY9AjX7g9?= =?us-ascii?Q?YwiPESKd9Cx93DNpwBnDkXo0KDhFsKdHFY/xxPqbQCTi/tq8EAdYSoecIRwb?= =?us-ascii?Q?lTiuyMrb/bMiXnT+JW3bImKc9luwgSHkoYineENjrlzHp4g69LhM9WQkd+Np?= =?us-ascii?Q?o4A5yfiHkVJtTgxO1xpOkZfeULuXOQOdjh6cO/W/p6wxGKxlirhzpnJqjZZ9?= =?us-ascii?Q?4nWagD+Hk4Z2l0aoCPxKND01CqYNAsUN+ujNz9euUYHouJWwipSMA+HFNVKd?= X-MS-Exchange-AntiSpam-MessageData-1: rpo02wt5MAhJKQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: e575e416-0725-45c0-b0cf-08deb927d42d X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:04.9469 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: iWkWR8WP3UlaQwpJj6NdwZEaA8M9qYibV897DI7Lafn4VU8E95XJsTTGC+Dn+4HrmDCKNQ7iMo9lLt117fQjnA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7274 X-purgate-ID: tlsNG-42698a/1779580989-1956BF3B-F36FF2B4/0/0 X-purgate-type: clean X-purgate-size: 892 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581005731154100 Content-Type: text/plain; charset="utf-8" Export the mapping between Domain-0 vCPUs and their assigned NUMA nodes into the Device Tree generated for Domain-0. --- xen/arch/arm/domain_build.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index a62adafa19..11d0fa1233 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1373,6 +1373,15 @@ int __init make_cpus_node(const struct domain *d, st= ruct kernel_info *kinfo) return res; } =20 +#ifdef CONFIG_NUMA + { + nodeid_t target_node =3D dom0_vcpu_to_node(d, cpu); + res =3D fdt_property_u32(fdt, "numa-node-id", target_node); + if ( res ) + return res; + } +#endif /* CONFIG_NUMA */ + res =3D fdt_end_node(fdt); if ( res ) return res; --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581017307862.2274424373811; Sat, 23 May 2026 17:03:37 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318244.1586685 (Exim 4.92) (envelope-from ) id 1wQwJF-0008Cu-7Q; Sun, 24 May 2026 00:03:13 +0000 Received: by outflank-mailman (output) from mailman id 1318244.1586685; Sun, 24 May 2026 00:03:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJE-0008Cb-WE; Sun, 24 May 2026 00:03:13 +0000 Received: by outflank-mailman (input) for mailman id 1318244; Sun, 24 May 2026 00:03:11 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJC-0007lG-Sk for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:11 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJC-005yId-7v for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:10 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12403e-2eae-0a2a0a5409dd-0a2a450bb766-0 for ; Sun, 24 May 2026 02:03:10 +0200 Received: from [52.101.125.111] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a12403a-212f-0a2a450b0019-34657d6f18e0-4 for ; Sun, 24 May 2026 02:03:09 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS7P286MB7274.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:439::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.18; Sun, 24 May 2026 00:03:07 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:07 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=gk/Q7S7CeAKlgmwgwCfdPaRt22BakVe8S2IfAPLUKK+twhwI7Wdz1jN7HGncal39WydNbXhS4kQ1fKL/GShC5C7qogs76vMLqNHI5UMOKO8/JMVtP56wsdQkx86qHQX3ey3JfyOobDdLJwsCSorpwzCMwIb3lnmZgwEB6IDFtwTXJZgFoCRH37+TsVIPjpfRSLG9eU68fut9Ru3Vx8VxubzFChqgJSftDGVZQZUitUmNU2lbvLXPvvFwHqFicR/HyalNknLrJfbVu6/K+Bw+5pLKrV95GKbA03j0CXSu9neJDDbs+06v/RBJ2RXb1hMRpiGLpIppNRBciqz0fCxZcw== 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=b/uOZioLySihrc5rQcsyh87OXtUbbmHXHPRWdNWOE7k=; b=dzmdEM7biGPob/YvNDpWgRfD539rCe8/NNb0MHxR3yTt1qgv41D5tgo09hM4Je9eh13SLLTNn0cweYqcgjM9yK4D7SFttZWN2+xwRu7NRoB7GVWi3xBHb404zU33fKNT/ul4sNFuOpBymh8HhYgR30w4v5Rimy61cmNnzfxUzQZxluJp1ZCATtsJKwGzAzMowhEV39Cltu5/9bkyyFbXtGFsumknaLdQ/xteUf6xVCTSSJaMMeItAsY7yuGCjgX9fjcCu8SeiSJYDZGc2hFJjo9QKq0ZgYzYKNY0C596e607P56rFdJi2czeV+X10DAqYL9nGryKN3GJOhsN2hRBBw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=b/uOZioLySihrc5rQcsyh87OXtUbbmHXHPRWdNWOE7k=; b=nIKYRJJXMQZs5eqyZAK41Gjn0kAZr5pfnH1paEaXIOPH7pB0Cw0+MTFfQZkXOiM/kj8fS9Ajxr+wG9sgJ9peG7visYQ8ADI3ytWyWNLv3FSuV6ngLtt9+LoHOeFtoqu2IfkBnQgcQQmcbd4gQ5ZBf00plDmuoNQmnY0AXnsu8Aw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 18/21] xen/arm: Generate distance-map node for Dom0 Device Tree Date: Sun, 24 May 2026 09:02:06 +0900 Message-ID: <20260524000209.292370-19-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0148.jpnprd01.prod.outlook.com (2603:1096:400:2b7::7) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS7P286MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: db4e0624-4c96-4f22-9af3-08deb927d5b4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 9+vgDBfwZF93VpAd9CUqriBskjTN/zo4hzULGr/G97SZv8++C7CJWPoMg78JQmr9zUDsXrQtMewoO0u9vHdCf5lt0rMJIjGNIFQDAkOFsDZC8PsxUM4grHpqxitWqEarVoMlrsZSncORtE6d7rP3+lxZW9jVlwvSSt6tOqENTsOh3VgQt3vjpmglchdWdIsKBD0+tT0a7VrNYYUglyt6ET2j/U0mKLWvOH/YqdbFreXwf1V+SeiLSMhAN8sZYMFUmsU+2+SEtqRK0JBKuhhUf10nYIPBNHqAJLJyHy9jIE4eBfsfZ8Hr/EXnJotqeVshIqeRhVrRrE07wW3OuMTSFhiOQKbE07/I5U1gQ9wSuT4n9Cphi1XyDT/JOlyEij1KRtn77g3lfxkSD1MBcURcE9yW96HbQGiHrdjGpy9J5kcF36/yWfSWf7bVTicn9KGGFxa5K6OYT+REs2QYRmfMqYK9APXbzYbeBx2asnKAOktFmnk+bi3JUa8FT5bfPSSj4tzDR61EJYuRIHz213stA/au0VW1x8E81sW1LJMgf7S3+w5e9Vvycr6sPbd+sSMJGq2mGIDaVZklBzEoauKMd6f2S+5bHDC9jYtqnVFbHFDryifnzs6C2vElPSkB0hgSJ/vSpIQyFrujN3F2IJcvoyi//H0wGwBZyBxRo8QnLnpW2xBblah05jHqcIdyBZki X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(366016)(376014)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?RHh4CSCAsIo0A7J860PWcvu1lkoBUiCz6OgIQmfIFzo2wQr8g4Wl5AAxlQDz?= =?us-ascii?Q?TC922s8W8xfvByHTVCdHZKxhRDrsnct6/JAEpYJ6R87INBStZl+WDa3Pmn+p?= =?us-ascii?Q?jM9oWCH61KTunr8ZAcaLeluJ99NQMMRlLajTKg2LDjfHYJ3+DnH1bVZFhhze?= =?us-ascii?Q?zEreAGpiTauxAeVm20qFZwJLj4Gr3zuQjBE9rogfPE5NqVIC5EkI2KRnNBkd?= =?us-ascii?Q?jW5ONvccSZZesn5RWb2T5D0YpHntmXXE9RjKrXfT0Unle3Z6Zl5ZBV6OQBiM?= =?us-ascii?Q?s461zBFn9zb0Na24YcZt+E8mKMlzorTrVfiB3MpgJ3ntHpBshhF6CNU8AcxA?= =?us-ascii?Q?/U3jVfHwaL9BIadUORiFKd0/Mt78HuYUQdHNaWvY8vAYG+iDhsS0kjwLGpfE?= =?us-ascii?Q?opqS5t+dGbS2H8Vl0cxXoKTd9ggYTi264682mt8RdPt1NIleyopfytVu1eOt?= =?us-ascii?Q?ldxZKz9wV/BRDuCPvJqp2PckeXKjr3jPWGJ4d40CsuXVMSm/LPRzDv0TWg5m?= =?us-ascii?Q?V5ygNOq7tHO3Hp7s/hKTPSD94p0OH2n055Vy/4pjW/L4q/ELwFjBJM6+lige?= =?us-ascii?Q?Y+lmayFT2jQUuEjcLSb4N1/5yw/2P3v9WGsmFyzIuhibUfpZzypCYMD4QgML?= =?us-ascii?Q?rrgdR/TCo/CwjKQBjCx4gr9XxXMhSJJ7VGvsJgRS7Ju3Y7JKbUoeTdm0hs4S?= =?us-ascii?Q?rQkpNyOcW6iJPIdFuICJtxsi9VbrOcnmITvcUt2Je0h+iAHymRUUKeVRyW2f?= =?us-ascii?Q?iEUYt22QoBNJ8lgDLxlRD+RRBIP+3042C/MzsGULRE3kfhoF8+Kw20J3Hi6q?= =?us-ascii?Q?PsT/+aE/cdN0RZ0qtJuTdHBVqZNr3zxZXdeMVjQIUnorYnHvGoj2BrRoye1r?= =?us-ascii?Q?O8m4eZZvIpkBDYRltrH0w4PQyWvZ6spbaZlZabmvqavt8VN9YBZPu7ExI1a/?= =?us-ascii?Q?+advpLzu6cCT5mYuvjSCJUTWs+tojwZpYXI48IQki6bjOB8qTdS8aWNuFDs7?= =?us-ascii?Q?mQK+Ti3/6nfEzPr/6GhcjJw8Qv9H8ebZWz7z76ZRuypAVSWjpC1FbXsFN2bh?= =?us-ascii?Q?YAmo7kX6WgS7KA2ilZCLa7WyH0F8i8QQ3CJqxBSq6BWFnDmaB1v7HxHKjnlp?= =?us-ascii?Q?kLI0L2sl0ntpN4I5V8Rg+TcLM9fzW1FZyI4wieDT0GD1UF3bsnMuTdcO540T?= =?us-ascii?Q?YboBgnkEQW2Z+SdCRVXZm8++VWo3O02A/Hs8BZAKUlt57aIlVjbr9BEGEmdb?= =?us-ascii?Q?PkLgUzfRsgWihAPIeu/lbOO6GMeN3qQ/A3pC7iNokqRczqpCYDxY1PQlJWDk?= =?us-ascii?Q?tbIsog5orMowu3pLqZeI3i/wCgSwgaVH6GadcVrpAzjGf22U9VlgxWXBo/5P?= =?us-ascii?Q?+9GfYIs9CWUpuwWCA4g2mlcNtXqS7OvObgmrwu26vj/bVkK0KT/EPowsyQDT?= =?us-ascii?Q?ErRJmFgrICpdSDf8uXImeqgM1fo+kNAudH6pJEP44cogFPFd1CTxNCfHLwEN?= =?us-ascii?Q?1M97XlMwiI13rGAVzhv7pgd3QBOAUqGsBCphNpYUC89wgogrkQgb4tm6RgbI?= =?us-ascii?Q?PArbCD62/5Y4+HvTVfBNOjhkJia1yk7NLQlldphrN2vp3vEGAWP90h06TSr5?= =?us-ascii?Q?Gjy/wnGYWnlOQMJv11fq+8qtYMOELg6zdbrTrKeHmnPiHbFXGyE5OGjBTBSo?= =?us-ascii?Q?MuJ3GldkYhTryzcGc2afocxlS36KCay+Ptzt9nyB8FOYwJ9nTvXNxg2epYjo?= =?us-ascii?Q?87NQnwqMLnuvnO2ne/+9+5ZQ/mY13XtQtKYxuP895778hL9cYIUJK+bxoZQu?= X-MS-Exchange-AntiSpam-MessageData-1: WFKQ3vWYpPpySw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: db4e0624-4c96-4f22-9af3-08deb927d5b4 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:07.4429 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Y4YeP49LSEiH+nH1fpAw1lE/9PUpr1B8/AjYJZx7uDfvK/5HhEwSHdyA3dS1Qwv25rhHmagwY3P7WcAF3505Sw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7274 X-purgate-ID: tlsNG-42698a/1779580990-18F66F3B-1AD57355/0/0 X-purgate-type: clean X-purgate-size: 2697 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581017857154100 Content-Type: text/plain; charset="utf-8" Generate the 'distance-map' node within the Domain-0 Device Tree. This ensures that distances are populated only for the specific NUMA nodes assigned to Domain-0. --- xen/arch/arm/domain_build.c | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 11d0fa1233..2bf4b37f89 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -718,6 +718,51 @@ static int __init fdt_property_interrupts(const struct= kernel_info *kinfo, return res; } =20 +#ifdef CONFIG_NUMA +static int __init make_distance_map_node(const struct domain *d, void *fdt) +{ + nodeid_t from, to; + unsigned int count =3D 0; + int res; + + static uint32_t __initdata matrix[MAX_NUMNODES * MAX_NUMNODES * 3]; + + if ( nodes_weight(d->node_affinity) <=3D 1 ) + return 0; + + for_each_node_mask(from, d->node_affinity) + { + for_each_node_mask(to, d->node_affinity) + { + matrix[count * 3 + 0] =3D cpu_to_fdt32(from); + matrix[count * 3 + 1] =3D cpu_to_fdt32(to); + matrix[count * 3 + 2] =3D cpu_to_fdt32(__node_distance(from, t= o)); + count++; + } + } + + res =3D fdt_begin_node(fdt, "distance-map"); + if ( res ) + return res; + + res =3D fdt_property_string(fdt, "compatible", "numa-distance-map-v1"); + if ( res ) + return res; + + res =3D fdt_property(fdt, "distance-matrix", matrix, count * 3 * sizeo= f(uint32_t)); + if ( res ) + return res; + + res =3D fdt_end_node(fdt); + if ( res ) + return res; + + return 0; +} +#else /* CONFIG_NUMA */ +#define make_distance_map_node(d, fdt) (0) +#endif /* CONFIG_NUMA */ + int __init add_ext_regions(unsigned long s_gfn, unsigned long e_gfn, void *data) { @@ -1569,6 +1614,7 @@ static int __init handle_node(struct domain *d, struc= t kernel_info *kinfo, DT_MATCH_TYPE("memory"), /* The memory mapped timer is not supported by Xen. */ DT_MATCH_COMPATIBLE("arm,armv7-timer-mem"), + DT_MATCH_COMPATIBLE("numa-distance-map-v1"), { /* sentinel */ }, }; static const struct dt_device_match timer_matches[] __initconst =3D @@ -1734,6 +1780,10 @@ static int __init handle_node(struct domain *d, stru= ct kernel_info *kinfo, if ( res ) return res; =20 + res =3D make_distance_map_node(d, kinfo->fdt); + if ( res ) + return res; + res =3D sci_dt_finalize(d, kinfo->fdt); if ( res ) return res; --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581016394800.042112766478; Sat, 23 May 2026 17:03:36 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318252.1586694 (Exim 4.92) (envelope-from ) id 1wQwJI-0000MB-Mj; Sun, 24 May 2026 00:03:16 +0000 Received: by outflank-mailman (output) from mailman id 1318252.1586694; Sun, 24 May 2026 00:03:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJI-0000Lx-Eo; Sun, 24 May 2026 00:03:16 +0000 Received: by outflank-mailman (input) for mailman id 1318252; Sun, 24 May 2026 00:03:14 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJG-0008U8-C7 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:14 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJF-00BC9e-Og for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:13 +0200 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a124008-e002-0a2a0a5209dd-0a2a4503cd2c-22 for ; Sun, 24 May 2026 02:03:13 +0200 Received: from [52.101.125.93] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a12403f-672d-0a2a45030019-34657d5d2f13-3 for ; Sun, 24 May 2026 02:03:13 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS7P286MB7274.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:439::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.18; Sun, 24 May 2026 00:03:09 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:09 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bbMPEwJbRaFnrcaQgbQ31+GBmkN1wqmv1jN0WiLSbxZPGxK1gp8UiazRoQMkIp8i/+s/AHAZiWuAQbx0AVfiE9bMCXZeG8GJOCwCE4mC/Bh5fSeU0GW35rCtC+ehRDXOOuNPvgTYNZI5wElzYnRMNpQVfjgejI/44xisxTjFm461xE+sw2vqvEa4mPmLCEsAILwxRaMrbI47U7kwoWUPWt4wgiiVV2A50QrDSXP7cDQIveRbNXnmle3r/xiIGomolfIH4OwzVUxkgymEPPB5B6+bXntUKdJLBHKEup8c4a5GKXKLeV42TDWZsc7gxqQf5JKqjv0uxQJN0jp2+FXBPg== 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=JFwOGfPyzWG9F7U0qyfrx8XENPksC2lqRTWEjzBLvZU=; b=kwOPPbsOkm/Ym8+lBSwC/G52Fk4zYAxLa8TQYhx37D0vCymYWlMPkquAcugVmeHP8PQBV55KgTnqE1DllSxXNtX3DZlXobiWLG1gS170SX0lKLtT6JvFCLTJmio40i6AtIuCTZ1w1ro3VshMvG96ltxdn7c1dUGbvwNmqGzE+0ZaQOnpzjd4s7GeYHJOdY3qVOd/EKkGcci2yjHuwKbnMBSbgsZnbzVm6Yo7G74K3/QfwEl6CITn7jmAZm6gYNkDfxiqS/cm13SoaOTLc9l0ksOb3OwcmYwk3BXf3S3DuZlLzVTdIhfI9o5CqeKdtTnlaOGQgbJ0HWE6XSNwp2iqJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JFwOGfPyzWG9F7U0qyfrx8XENPksC2lqRTWEjzBLvZU=; b=G/HDYjA3qlKlYyAsK2txh+Z3qcTQjx/KAbLnYfS4L4VKBWDbKBW+KMFuMsFBBE6BxcL42fWlgL83IjItGZvUWdlQCDZt13tqUoR7DjVHPDx9j5qZ0GjzmW6rPTnqnQbTY+iQ+BXX0ACGo/rCs4Jmd3MzsG9LN5VM2csWeH3AJ/U= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 19/21] xen/arm: Balance Dom0 memory allocation across allowed NUMA nodes Date: Sun, 24 May 2026 09:02:07 +0900 Message-ID: <20260524000209.292370-20-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0190.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:382::10) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS7P286MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: 3771ee30-d235-430a-b1e8-08deb927d71b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|10070799003|1800799024|5023799004|3023799007|6133799003|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: J4cYOY36nVc8IgqOLKu77NZZ7gIulWg9ummMo+vDp8Gfdo+1N6L4huyxerdC5I4pc4KcoKbPLg989HVsctm8IVdIK/I3KPRonRM712B2hmrhxkvvmdLTWg62eIvyrJx+VpqqU524pw/Z0efbQ0/yu+8gQKjl14gFYxE4JfE2JldZ+j5gF1QFHilBX/zIwMpkkpFbuM9zC+uQMcUa59p+5OCz5AM4aEb1ixUW2lwoUaGaQ5SWnTAU5rLgy/XfG6dPY8Se0hIxezCPTEPar5TeVDHaq6b/kF+B4PbUKGM6lA36kXYjoS/nyQBwxzHklXYZvcGUYh3b1z1aYFYj+rDo6uK9KmqWl1imDS31M0ECC46m7o1VjLq6Dx8hF1jYRVxl9fnV8q4Vv/Q6jBgjct946JkOw7whwLgiiiJdrFOm5vKjxOvvPOxx/lgcNku3kHD+zW76Snt0tfILFYn5TFLnX1FYCKDV3dcLCWoYbUmQPvICDvGPiIN1BGd/7NplUBfoj4ODySnnzjDXyptDn4k/RDknTA/99Llklq6l01zCng2GOvjgioEiCIXkIigdn1gqvwVR2pFsXXQ07Cqtd2dCFLF/6qEXD+5EMMDYeNn2oP5vSkoznbNAaSgfgVPvmpw/nQEFE3qeNsRUKVnB3uY37f7TlfXi0ar7S6Dp/mcFz84pAH6RqwTNuvoIZ3C236p8 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(366016)(376014)(10070799003)(1800799024)(5023799004)(3023799007)(6133799003)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QqbSxH24mN1wUTXhdw8ewsA4mv7ANKQoQ0Zyw58BBgz5IEn2XT502vXh5/0m?= =?us-ascii?Q?IIkdstchwoiTrL56j3jwGTeC9ZvLYdgFppkwTtba9bXZ5qEO4ye30gLOp5LC?= =?us-ascii?Q?lf2Vbcrg32hstmp36qGFyJtJrH1aXxyLh3hOlvcecWGO6m2NR92OQHNF8atM?= =?us-ascii?Q?ROIg883OKNp/8bwCY+KX/mU66I/4bMAerRAxATL8acH0l6h5uTeJh++WTxcd?= =?us-ascii?Q?oLq1RPC5E4G4a7/eH+5jJGYKmXapIa3S6SBW1HJ3mAYIpNgR83BGjPtO4T4I?= =?us-ascii?Q?d7thqsrrpwZ7cHdkxXd0onnshKZP5c8MPiDeO165SgDjacoJZC8jLIwGGTQl?= =?us-ascii?Q?IsHvT2cvt/FYzEfzzj130IOGWZItW0mzIZuIGsSwTATwXc5EDvTQnQq9sszn?= =?us-ascii?Q?fvPI++NVecYKowuSZqZeGzh4uONbL6COTxpR5g2Qj6rRDtrTuXc3SWrbaC68?= =?us-ascii?Q?BphwtLIJrvLMlm/6BVcLXBtEHTi2Skdam8NAm6CRA3zM5se6yYwTO1Jz4C9T?= =?us-ascii?Q?TImZC3DnIbv/6tbHOJ/Ys9rGQfHtDGhTsOBsZBzzeEOhbTQcS2VNNFt1DsQl?= =?us-ascii?Q?1Y+/2GDNDcSuv26AbORq5Pwn34/82kH8WkqGAUnXw2Kcnkn2PGgUKe13a03C?= =?us-ascii?Q?GwitU8StkT5DDyOVcuuHh3DrZOUpE0g7U6ex7OFu/+ZijfoVhNthTjmDaBEz?= =?us-ascii?Q?U3Xq7EdunX8q1ig7VTajJIzLxGWXCN0A5+eOThX9L+BxjNhzHfdBMsgCZ6nY?= =?us-ascii?Q?stLszvTIZWl3hxZijiCoDUAPM0GyEHNz0Npfcm3NJP08pADgiYMual1DCF6a?= =?us-ascii?Q?WehjSTIyOJFHApimP+QDu+n+s8kxLdkT2ruzmTXv2GaXWLkzEufsRflB2AjC?= =?us-ascii?Q?+2+HRZUbLrudXr8Q35AkB0WjG/+csDSVxRMINUYOquwwrZoHTwHm83+LhP6v?= =?us-ascii?Q?fR/DnYmxZJXXtovP+VsiPZJeFpabARUBK2RUNj+wtkxw4TAUNJN8WZtSvKYk?= =?us-ascii?Q?u3EpYPuqrUV+Uj2ALAF8d5rjWNGPY4DLZrmY/Sgq7tFoJBjdceDKzxcoKxVO?= =?us-ascii?Q?p4sJNtsBwxXW/YaYSoB6v7kTEckaHfjtkrzY7/6lYf1IHipt7AJb1wZgC5Fv?= =?us-ascii?Q?j/Qg+ZdqVaqRLQL73ZV6UHwY+BCDmMFKQ/Xnme7OkQ5jUSe48gsuZoYiTwV7?= =?us-ascii?Q?1jkLew0BhdD+Tdosh+alJV5hVJcowb2LlEyTdXK07+0evLgWHao7g3/B/zm5?= =?us-ascii?Q?F8kn8QWXXWkcm/TseTlj/AxZqwxYyDE3mPrs/eaJZZ5XFbpuzEPm2e+pbZY2?= =?us-ascii?Q?AdIEn5sBEC+pG0TZFFYoyh+E6P+NdCfXP1WBEUpWnopN+t/zCBctSL7KdNHC?= =?us-ascii?Q?1aCX8N2RCQWC7tdWJTFpBei3VIFmslfeDZl4+spySQVbBgytxo0mBsYYAX1Z?= =?us-ascii?Q?MWRaj1ZZ/YHPm/Cyw13cSnH+8iuvUfCVAibWLCqs8NZS0Ez7dSiMlbDskPoL?= =?us-ascii?Q?XsueVgBTAbC+G9xuQNWbcNnaRLw/m9dXQTek1s8iEAajGtpsu1tCEf2SQb5J?= =?us-ascii?Q?syLTOSFVEDxFgRsB11gKMypHzGkL588lDNBIZMYONmZdXmqQa6vlenNKdtKw?= =?us-ascii?Q?7zGP5nGTM6wtcYhwhUUhewGz06w8L4mwjwr6PABLXtiXxs7EmBWNaANAphrJ?= =?us-ascii?Q?sxcRW+SCyRJDOFIuCgxYETq9LGNc2REeswlYMdnn8OKP/ACqqvK1+lynz7tW?= =?us-ascii?Q?MR3fTBM6ELPaUmGn3Sm/RGtNcp74iz4bxs7sKOfQBE4laf71bTaXpkkEWaj9?= X-MS-Exchange-AntiSpam-MessageData-1: N8tkEqXc4sI4fA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3771ee30-d235-430a-b1e8-08deb927d71b X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:09.7953 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 6Vuzhg4SQQIdwrDCTF/wLI9+wgp+bDPHoKjhMi8dw843E788/WJVpXu9X7u+YwaE9S6sEoK07gnGhhQhpl2Ajg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7274 X-purgate-ID: tlsNG-33051d/1779580993-3754F938-FA7CA0E2/0/0 X-purgate-type: clean X-purgate-size: 14953 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581018106154100 Content-Type: text/plain; charset="utf-8" Allocate memory for Domain-0 exclusively from the permitted NUMA nodes. When multiple NUMA nodes are available, distribute the allocation in a balanced manner across each of these nodes. --- xen/arch/arm/domain_build.c | 275 ++++++++++++++++++++---------------- 1 file changed, 150 insertions(+), 125 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 2bf4b37f89..7960dcd33a 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -180,33 +180,19 @@ unsigned int __init dom0_max_vcpus(void) static bool __init insert_11_bank(struct domain *d, struct kernel_info *kinfo, struct page_info *pg, - unsigned int order) + unsigned int order, + nodeid_t node) { struct membanks *mem =3D kernel_info_get_mem(kinfo); unsigned int i; int res; mfn_t smfn; paddr_t start, size; - nodeid_t node =3D 0U; =20 smfn =3D page_to_mfn(pg); start =3D mfn_to_maddr(smfn); size =3D pfn_to_paddr(1UL << order); =20 - /* This code is temporal */ - { - struct membanks *mem =3D bootinfo_get_mem(); - for ( i =3D 0; i < mem->nr_banks; i++ ) - { - if ( start >=3D mem->bank[i].start && - start < (mem->bank[i].start + mem->bank[i].size) ) - { - node =3D get_numa_nodeid(&mem->bank[i]); - break; - } - } - } - D11PRINT("Allocated %#"PRIpaddr"-%#"PRIpaddr" (%ldMB/%ldMB, order %d)\= n", start, start + size, 1UL << (order + PAGE_SHIFT - 20), @@ -293,7 +279,13 @@ fail: } =20 /* - * This is all pretty horrible. + * Allocate NUMA-aware memory for Dom0 with 1:1 mapping. + * + * This function distributes the requested Dom0 memory across the allowed + * physical NUMA nodes in a balanced manner. It implements a multi-pass + * scavenging loop to allow nodes to dynamically back up each other if a + * particular node runs out of memory, maintaining a balanced distribution + * while ensuring the maximum amount of requested memory is satisfied. * * Requirements: * @@ -308,155 +300,187 @@ fail: * below 4GB, so that it can be used by non-LPAE enabled kernels (32-bi= t). * 4. Some devices assigned to dom0 can only do 32-bit DMA access or * even be more restricted. We want to allocate as much of the RAM - * as we reasonably can that can be accessed from all the devices.. + * as we reasonably can that can be accessed from all the devices. * 5. For 32-bit dom0 the kernel must be located below 4GB. - * 6. We want to have a few largers banks rather than many smaller ones. + * 6. We want to have a few larger banks rather than many smaller ones. * * For the first two requirements we need to make sure that the lowest - * bank is sufficiently large. - * - * For convenience we also sort the banks by physical address. - * - * The memory allocator does not really give us the flexibility to - * meet these requirements directly. So instead of proceed as follows: - * - * We first allocate the largest allocation we can as low as we - * can. This then becomes the first bank. This bank must be at least - * 128MB (or memory size requested for domain if that is smaller). + * bank (Bank 0) is sufficiently large to hold all boot modules. * - * Then we start allocating more memory, trying to allocate the - * largest possible size and trying smaller sizes until we - * successfully allocate something. + * The memory allocator does not really give us the flexibility to meet + * these requirements directly under NUMA topologies. So instead we proceed + * as follows: * - * We then try and insert this memory in to the list of banks. If it - * can be merged into an existing bank then this is trivial. + * We first calculate the total size required for the kernel, ramdisk, and + * DTB to establish a safe minimum size constraint for the first bank (Ban= k 0). * - * If the new memory is before the first bank (and cannot be merged into i= t) - * and is at least 128M then we allow it, otherwise we give up. Since the - * allocator prefers to allocate high addresses first and the first bank h= as - * already been allocated to be as low as possible this likely means we - * wouldn't have been able to allocate much more memory anyway. + * We then enter a multi-pass outer loop that runs until the full memory + * request is met. In each pass, we dynamically calculate the target alloc= ation + * amount for each remaining active node to ensure a balanced distribution. * - * Otherwise we insert a new bank. If we've reached MAX_NR_BANKS then - * we give up. - * - * For 32-bit domain we require that the initial allocation for the - * first bank is part of the low mem. For 64-bit, the first bank is prefer= red - * to be allocated in the low mem. Then for subsequent allocation, we - * initially allocate memory only from low mem. Once that runs out out - * (as described above) we allow higher allocations and continue until - * that runs out (or we have allocated sufficient dom0 memory). + * For the initial chunk (Bank 0), we try to allocate the largest possible= size + * as low as possible, honoring the 32-bit lowmem/DMA constraints. If it f= ails + * to find lowmem space and the domain is 64-bit, it falls back to highmem + * without violating the minimum size needed for the boot modules. */ static void __init allocate_memory_11(struct domain *d, struct kernel_info *kinfo) { - const unsigned int min_low_order =3D - get_order_from_bytes(min_t(paddr_t, kinfo->unassigned_mem, MB(128)= )); - const unsigned int min_order =3D get_order_from_bytes(MB(4)); + paddr_t todo =3D kinfo->unassigned_mem; + nodeid_t node; + + unsigned int max_chunk_order =3D get_order_from_bytes(MB(128)); + unsigned int min_bank0_order; + unsigned int lowmem_bitsize =3D arch_get_dma_bitsize(); + bool is_bank0 =3D true; + + struct boot_module *kernel_mod =3D boot_module_find_by_kind(BOOTMOD_K= ERNEL); + struct boot_module *ramdisk_mod =3D boot_module_find_by_kind(BOOTMOD_R= AMDISK); + struct boot_module *dtb_mod =3D boot_module_find_by_kind(BOOTMOD_F= DT); + paddr_t required_size =3D 0; + + nodemask_t exhausted_nodes; + nodemask_t valid_nodes; + struct membanks *mem =3D kernel_info_get_mem(kinfo); - struct page_info *pg; - unsigned int order =3D get_allocation_size(kinfo->unassigned_mem); unsigned int i; =20 - bool lowmem =3D true; - unsigned int lowmem_bitsize =3D min(32U, arch_get_dma_bitsize()); - unsigned int bits; - /* * TODO: Implement memory bank allocation when DOM0 is not direct * mapped */ BUG_ON(!is_domain_direct_mapped(d)); =20 - printk("Allocating 1:1 mappings totalling %ldMB for %pd:\n", + printk("Allocating 1:1 mappings totalling %ldMB for dom0:\n", /* Don't want format this as PRIpaddr (16 digit hex) */ - (unsigned long)(kinfo->unassigned_mem >> 20), d); + (unsigned long)(kinfo->unassigned_mem >> 20)); =20 mem->nr_banks =3D 0; =20 /* - * First try and allocate the largest thing we can as low as - * possible to be bank 0. + * Calculate the absolute minimum size required to fit the kernel, + * initrd, and DTB inside Bank 0 */ - while ( order >=3D min_low_order ) - { - for ( bits =3D order ; bits <=3D lowmem_bitsize; bits++ ) - { - pg =3D alloc_domheap_pages(d, order, MEMF_bits(bits)); - if ( pg !=3D NULL ) - { - if ( !insert_11_bank(d, kinfo, pg, order) ) - BUG(); /* Cannot fail for first bank */ + if ( kernel_mod ) + required_size +=3D kernel_mod->size; + if ( ramdisk_mod ) + required_size +=3D ramdisk_mod->size; + if ( dtb_mod ) + required_size +=3D dtb_mod->size; =20 - goto got_bank0; - } - } - order--; - } - - /* Failed to allocate bank0 in the lowmem region. */ - if ( is_32bit_domain(d) ) - panic("Unable to allocate first memory bank\n"); + min_bank0_order =3D get_order_from_bytes(required_size); =20 - /* Try to allocate memory from above the lowmem region */ - printk(XENLOG_INFO "No bank has been allocated below %u-bit.\n", - lowmem_bitsize); - lowmem =3D false; + nodes_clear(exhausted_nodes); + nodes_and(valid_nodes, d->node_affinity, node_online_map); =20 - got_bank0: + BUG_ON(nodes_empty(valid_nodes)); =20 - /* - * If we failed to allocate bank0 in the lowmem region, - * continue allocating from above the lowmem and fill in banks. - */ - order =3D get_allocation_size(kinfo->unassigned_mem); - while ( kinfo->unassigned_mem && mem->nr_banks < mem->max_banks ) + while ( todo > 0 ) { - pg =3D alloc_domheap_pages(d, order, - lowmem ? MEMF_bits(lowmem_bitsize) : 0); - if ( !pg ) - { - order --; + paddr_t last_todo =3D todo; + nodemask_t active_nodes; + unsigned int active_nodes_count; + unsigned int nodes_left; =20 - if ( lowmem && order < min_low_order) - { - D11PRINT("Failed at min_low_order, allow high allocations\= n"); - order =3D get_allocation_size(kinfo->unassigned_mem); - lowmem =3D false; - continue; - } - if ( order >=3D min_order ) - continue; + /* Filter out exhausted nodes to find active candidates */ + nodes_andnot(active_nodes, valid_nodes, exhausted_nodes); + active_nodes_count =3D nodes_weight(active_nodes); =20 - /* No more we can do */ + if ( active_nodes_count =3D=3D 0 ) + { + printk(XENLOG_WARNING "Dom0 NUMA: All specified nodes are comp= letely exhausted.\n"); break; } =20 - if ( !insert_11_bank(d, kinfo, pg, order) ) + nodes_left =3D active_nodes_count; + + for_each_node_mask(node, active_nodes) { - if ( mem->nr_banks =3D=3D mem->max_banks ) - /* Nothing more we can do. */ - break; + paddr_t target_per_node; + paddr_t node_todo; =20 - if ( lowmem ) - { - D11PRINT("Allocation below bank 0, allow high allocations\= n"); - order =3D get_allocation_size(kinfo->unassigned_mem); - lowmem =3D false; - continue; - } - else + /* Target chunk size per node */ + target_per_node =3D DIV_ROUND_UP(todo, nodes_left); + target_per_node =3D DIV_ROUND_UP(target_per_node, MB(128)) * M= B(128); + + node_todo =3D min(todo, target_per_node); + + while ( node_todo > 0 ) { - D11PRINT("Allocation below bank 0\n"); - break; + struct page_info *pg =3D NULL; + unsigned int max_order =3D get_allocation_size(node_todo); + unsigned int order; + paddr_t bank_size; + + /* + * Enforce a maximum chunk cap of 128MB for all allocations + * except Bank 0 + */ + if ( !is_bank0 && max_order > max_chunk_order ) + max_order =3D max_chunk_order; + + for ( order =3D max_order; ; order-- ) + { + unsigned int memflags =3D MEMF_node(node); + if ( !dom0_affinity_relaxed ) + memflags |=3D MEMF_exact_node; + + if ( is_bank0 ) + { + unsigned int bits; + for ( bits =3D order; bits <=3D lowmem_bitsize; bi= ts++ ) + { + pg =3D alloc_domheap_pages(d, order, memflags = | MEMF_bits(bits)); + if ( pg !=3D NULL ) + break; + } + + if ( !pg && order <=3D min_bank0_order ) + { + if ( is_32bit_domain(d) ) + panic("Unable to allocate first memory ban= k below %u-bit\n", lowmem_bitsize); + + pg =3D alloc_domheap_pages(d, order, memflags); + } + } + else + { + pg =3D alloc_domheap_pages(d, order, memflags); + } + + if ( pg || order =3D=3D 0 ) + break; + } + + if ( !pg ) + { + node_set(node, exhausted_nodes); + break; + } + + if ( is_bank0 ) + is_bank0 =3D false; + + if ( !insert_11_bank(d, kinfo, pg, order, node) ) + break; + + bank_size =3D 1ULL << (PAGE_SHIFT + order); + node_todo -=3D bank_size; + todo -=3D bank_size; + + if ( todo =3D=3D 0 ) break; } + + nodes_left--; + if ( todo =3D=3D 0 ) break; } =20 /* - * Success, next time around try again to get the largest order - * allocation possible. + * Prevent infinite loop if a full pass across all active nodes + * yields zero progress */ - order =3D get_allocation_size(kinfo->unassigned_mem); + if ( todo =3D=3D last_todo ) + break; } =20 if ( kinfo->unassigned_mem ) @@ -464,14 +488,15 @@ static void __init allocate_memory_11(struct domain *= d, panic("Failed to allocate requested dom0 memory. %ldMB unallocated= \n", (unsigned long)kinfo->unassigned_mem >> 20); =20 - for( i =3D 0; i < mem->nr_banks; i++ ) + for ( i =3D 0; i < mem->nr_banks; i++ ) { - printk("BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB)\n", + printk("BANK[%d] %#"PRIpaddr"-%#"PRIpaddr" (%ldMB) NODE:%u\n", i, mem->bank[i].start, mem->bank[i].start + mem->bank[i].size, /* Don't want format this as PRIpaddr (16 digit hex) */ - (unsigned long)(mem->bank[i].size >> 20)); + (unsigned long)(mem->bank[i].size >> 20), + get_numa_nodeid(&mem->bank[i])); } } =20 --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 17795810208221020.8878530228651; Sat, 23 May 2026 17:03:40 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318253.1586697 (Exim 4.92) (envelope-from ) id 1wQwJJ-0000Vx-8Y; Sun, 24 May 2026 00:03:17 +0000 Received: by outflank-mailman (output) from mailman id 1318253.1586697; Sun, 24 May 2026 00:03:17 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJJ-0000U0-3C; Sun, 24 May 2026 00:03:17 +0000 Received: by outflank-mailman (input) for mailman id 1318253; Sun, 24 May 2026 00:03:15 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJH-0000Bz-E8 for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:15 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJG-00BC9e-Qv for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:14 +0200 Received: from [10.42.69.3] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a124008-e002-0a2a0a5209dd-0a2a4503cd2c-24 for ; Sun, 24 May 2026 02:03:14 +0200 Received: from [52.101.125.93] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-33051d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a12403f-672d-0a2a45030019-34657d5d2f13-4 for ; Sun, 24 May 2026 02:03:14 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS7P286MB7274.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:439::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.18; Sun, 24 May 2026 00:03:12 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:12 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=fm55Sird5tDdAO1dIPvaBSKgYY5VEkXytGLmdosGj137DdK6s0u0jCTY8MMVCZUYBJAm0YwBELH8cWim/yUIM5I6PvI1klkmXXuS6azH1KF3UTpxbIMPlMLlsLKu1IuVFWf1L2FmAT9GqF71dJH4gHWa28iIkUV7buM+q5HE9lY+JEBnQW+p5CHntdh/MUFEY9HrajzI3QDKaua1TmLt2Wj9rFOooyTKytihCs/Sj+xaU0oy8kAuKXbc9vjnhO7p8fCiQKwGfSNxDu96GJ7DzW5t382l7W0z/TTXxKT88CnLyp69/C8eGcT+wFBsjYHzxGYZz++LtznEhRnYoL6BXw== 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=ZIMyeMl9qEVCA5sGzBca+pRibnJkXfuBoWxVr4f1TOY=; b=Cq1NCCG35u0VI4Q7BpRlGaSjr+eesPp2IY9LE+L8o00lVTCfvwWK3QNp0aMBnRXeXyjhRq+bxQQhF4ZDDYYANs53B+SMUi5EZYWKWK87aK6glI5l51T9bDaQpISFtlNB6Xrw7gAKNn5kis87cIZT0ULH/bWVH0HvTv6vSNvOO4DyyXFWpkDYZpUDVjAI2geURlNurJ5cbAkpscUxHzsIF9najcclg9v9IPKvbAPTAuacxqpivt5DwzV/0hKpicuY1N2WTbE9l4xd3cS8eKfirkBHX6qp7ZfQiV7d4YsGUurTsnarvhi79Y0payc9yreWdWt8ONSAZ0nLyw8xLKDmkg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZIMyeMl9qEVCA5sGzBca+pRibnJkXfuBoWxVr4f1TOY=; b=AyUyAm3Xshs3rj134WDmYes0a8bkF0UDjRzkZPGBQMC0ySGMu1URw7Ddi08HUUvJww77Yd/3u8gNFJR/6b9iem4jqfStptKX0LMPoRoNlz8ygdvDnbnvlCzj391V2+tvhGyAFDyLNYCuXpzHarRUJIE5LxJj1rzQrF+ri77L0To= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 20/21] xen/arm: Use dedicated function for Static SHM Device Tree creation Date: Sun, 24 May 2026 09:02:08 +0900 Message-ID: <20260524000209.292370-21-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0184.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:382::7) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS7P286MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: 28a2ea70-035d-47a2-bba6-08deb927d873 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|10070799003|1800799024|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: nC6ByCnNz0rNYETjdlIZst3TBQsiXbjtbTWJ+6Qty+fPJohNH3sm+/h/TOXx3lEd0A+6nWRuAmu+5KTVplE9krEDHD63oYmb0LhyQDDsTXkyVf4m4LeMlmCx8uls/AuW4Se4/L+E7be/BOoaOP+tAzquWBXMiZdJzkzcj06EicrEnt2Q0GVvwwKneGmW7jywdm737xjKm6m752sOdus9v9JItuW8DdFEpITlNRrlwMitXPNrbkZOE7PYdzaU2FSe67ylOHlFVBsArMW5hoLX+dOfjNoRfj4rmosyxIYhJqTZerUeJs/G9BDIHP05DVCZ7bZAKZLEYa4uXHpxr+RaMpKFKuAwv2/fyF4iw14awV0Vi9PS1q6NpObFYqC0zbFOHIPln7w3Df1Cb09aqmfFmNkGLYrfe8qzhG2AgwP1raFfsPg1MjwND/mxdRwdae4x1JpVyFBwrUtuKkJex5V7JpG8KnG760LdkxN7sPCMpeQbwj+qwJ0c+9a9E1A9g8z5KULJ2ht8ioFQLsKiFTrVTJwQn/gNbavoxDbgnh2xTNEGVRrkmQ56LU60bLeh/SX2iwevGQAwKGpw3nU3zUfexSVFVA+1TvQ1WmQ1a8tkIzTJ5aB3lBiX78zb77b4j4lkqyjU+cHZPebPizXcjs/g1vrtdG+IiYvMQ4UgANjrR2tY1GOjzoKSZNqNSM8DSpnw X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(366016)(376014)(10070799003)(1800799024)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CpFwt2NbQcqjUwIJlzFmBsIwXeYmWlPW5+c1WCZcm/KCsHSs9ylGucWwoIQc?= =?us-ascii?Q?TrvWybxe3HJy0okl61nk8uKDD2kDz2cI3xC1/aIEB6uuz34Q6UmT+Iq9KH8a?= =?us-ascii?Q?S9lMopVn0amct09KeVA7C192Ue3tfpqJSxIAe+mqt3sj7F2zu1Nvp18NxOYM?= =?us-ascii?Q?GdGmBtIQJtFtizDaGtXQgCij3BCWl/btojsqefV82NSV7af6LV9Ho7OERnFQ?= =?us-ascii?Q?lzEKw6ThThrFl4u4TDNFLZh28TS1vIEmMewhxcXVqLsTsm1hZGj1zL7oBFRR?= =?us-ascii?Q?FNJ9by5w2p65k+vISQdJ2zz/CTTfc6K7fegFK7TYx7Sf6UG2anPrrVCylyIu?= =?us-ascii?Q?gm33lgsTFm1+EUOZaQEmj/9cX8/+x+SeS2cOLB9ERLVQBPEZIQqyVUl+GDM6?= =?us-ascii?Q?rW+ronI5jEJkwc5wwBaY/yumU551hIIVgCEnvkw4xYlvcLNZJgDT56lKAplc?= =?us-ascii?Q?Y4YiNxGI4NijjcBWPsPsduIWwq893kH14na/cUSe2aEJ9PghmcYYAdO9Zq8y?= =?us-ascii?Q?65XKTPZYJSv3IVqY4ihFtpxXpUOvskSNk/Gs7taNZTVuLiwqjSjLIIOlWW9Q?= =?us-ascii?Q?BbMNgPZoLNnrAdWA+307Iv/HoAo5OoAj6ij1g1Z/14UwH91C2Aax8P6VcKO8?= =?us-ascii?Q?kuiTtI1fWLzo3bYYi1E7Ef6DRou8tEnOjlKsX0T5he1vj3B/A/19rbz55pC+?= =?us-ascii?Q?g6H+rpX/oBXAMELXpEa/9o3NHFGftp4qjcFUxaIGQcYtHpPmzF30mhLL+JPo?= =?us-ascii?Q?JA2agNVdfCwQNuBaKeTclB8rXJDaWbjd2Okw1zEPao7BveoHYfmABU/h1nN9?= =?us-ascii?Q?ckTMAKts5wHZ9znTM2lZFFlabaNplVjEnVVisNL+wBooDykhq60cAdg1nQQT?= =?us-ascii?Q?9iT9Ivir86J2ZjwVL12v9FBj7g0GSRdBnhpsYlGERghWP6KOdhG9WZq3nR0i?= =?us-ascii?Q?/+X7o9AI6yAofLLfqDmOcwgIezebD2z/3f5RFFoVdTVxHWjP+togmUuyb1qx?= =?us-ascii?Q?5lArlgHWozwbr/8ANZl5qo7dZ9c7Klsf92KK1MbLihXk28MuFI2mb6V37zDD?= =?us-ascii?Q?W/e18vNQBAwbRttc3aRVSNV37wCHVcBa627zkosUrSJiuN4Y4k/+ep0DePd+?= =?us-ascii?Q?GH+14Fgllnha9ioyxUCwP56uROOwYd/KRAEHgOIzsrJGoqkcFampkSwhbqRJ?= =?us-ascii?Q?iLzjv9/eY5/FbnmpzR53ehdl6CboTRsnF77RVethHaKp1KkXYEvuaMdbd78f?= =?us-ascii?Q?Ak30kFco3/31MCE0aBoYB5KHzyqmgo+Bj6H9cuaL9audzVu/SeseNuEDJXpd?= =?us-ascii?Q?vG8n5euuJrXrL/yYssIRDcpMxoIaEKg78oa0dfnyCWXrlYYQO1jj1IU2eRdh?= =?us-ascii?Q?pwW3uiEyKQS/oIW2lgbnNKaSJZH9uhrrpQNdPUHZ2H+iHRHCfqAGBBTDx400?= =?us-ascii?Q?9g64rLpoIWTzVspKANvY50Cx5tbQpLvhOBOhA0SbQrlTsgkEBozquNkJnO8h?= =?us-ascii?Q?Mj6rmG70o9tCvzxvflWfcdmChrxvMiO9M4hz072PtiH1jP5Cq1H86lNbUXiX?= =?us-ascii?Q?sp7jI49AwwMWu9nGmtr8pTld97+7jNA8w4MNWDAXEWAhsZq0TZn/7/ZMtY9w?= =?us-ascii?Q?bFYe7Hu5w2xcLWxpHFK1VJRp69u0wJB9+ggUXyG1BBT6QUBIOYQIRapp1RJS?= =?us-ascii?Q?hX7QoxeyG2E1dwtz3uKNAU7g55C7UMgn2ZnuMvVopG1TziVazA0Py8/wBXyR?= =?us-ascii?Q?b/8HwP4S7TFqZ8wXlD5GTDY5IjfSGu/sjDNoegDhsrLo6cRGolC+HvK1lfMJ?= X-MS-Exchange-AntiSpam-MessageData-1: m+lsLOKVo5ZKMw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 28a2ea70-035d-47a2-bba6-08deb927d873 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:12.0244 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Lw5YKvLPe27+6+LIsF9LQB2JsgZPfPuZxELn3+wyFBArvj33chJfyCIs0pkqZyCPpLZRVEr7CwXgn460++bGwg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7274 X-purgate-ID: tlsNG-33051d/1779580994-3997D938-BD096FCE/0/0 X-purgate-type: clean X-purgate-size: 2876 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581022607158500 Content-Type: text/plain; charset="utf-8" Use a dedicated function to create Static SHM Device Tree nodes instead of reusing the generic memory node function. Since the memory banks managing Static SHM repurpose the 'type' field for a different purpose via a union, separating this creation logic keeps the implementation clean and significantly improves maintainability. --- xen/arch/arm/domain_build.c | 6 ++++++ xen/common/device-tree/domain-build.c | 21 +++++++++++++++++++++ xen/include/xen/fdt-domain-build.h | 2 ++ 3 files changed, 29 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 7960dcd33a..1cd66c9911 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1805,6 +1805,12 @@ static int __init handle_node(struct domain *d, stru= ct kernel_info *kinfo, if ( res ) return res; =20 +#ifdef CONFIG_STATIC_SHM + res =3D make_raw_memory_node(kinfo, addrcells, sizecells, kernel_i= nfo_get_shm_mem_const(kinfo)); + if ( res ) + return res; +#endif /* CONFIG_STATIC_SHM */ + res =3D make_distance_map_node(d, kinfo->fdt); if ( res ) return res; diff --git a/xen/common/device-tree/domain-build.c b/xen/common/device-tree= /domain-build.c index 61e2e50062..f846ca0471 100644 --- a/xen/common/device-tree/domain-build.c +++ b/xen/common/device-tree/domain-build.c @@ -565,6 +565,27 @@ int __init make_memory_node(const struct kernel_info *= kinfo, int addrcells, return res; } =20 +int __init make_raw_memory_node(const struct kernel_info *kinfo, int addrc= ells, + int sizecells, const struct membanks *mem) +{ + unsigned int i; + int res =3D 0; + + if ( mem->nr_banks =3D=3D 0 ) + return 0; + + dt_dprintk("Create raw memory nodes\n"); + + for ( i =3D 0 ; i < mem->nr_banks; i++ ) + { + res =3D make_memory_sibling_node(kinfo, addrcells, sizecells, &mem= ->bank[i]); + if ( res ) + return res; + } + + return res; +} + /* * Local variables: * mode: C diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domai= n-build.h index 671486c1c8..6a809f3f86 100644 --- a/xen/include/xen/fdt-domain-build.h +++ b/xen/include/xen/fdt-domain-build.h @@ -31,6 +31,8 @@ int make_hypervisor_node(struct domain *d, const struct k= ernel_info *kinfo, int addrcells, int sizecells); int make_memory_node(const struct kernel_info *kinfo, int addrcells, int sizecells, const struct membanks *mem); +int make_raw_memory_node(const struct kernel_info *kinfo, int addrcells, + int sizecells, const struct membanks *mem); int make_timer_node(const struct kernel_info *kinfo); =20 static inline int get_allocation_size(paddr_t size) --=20 2.43.0 From nobody Sat May 30 11:16:50 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; arc=fail (Bad Signature); dmarc=pass(p=none dis=none) header.from=valinux.co.jp Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1779581013713178.70816552015356; Sat, 23 May 2026 17:03:33 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1318263.1586711 (Exim 4.92) (envelope-from ) id 1wQwJL-0001B3-UD; Sun, 24 May 2026 00:03:19 +0000 Received: by outflank-mailman (output) from mailman id 1318263.1586711; Sun, 24 May 2026 00:03:19 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJL-00019w-M9; Sun, 24 May 2026 00:03:19 +0000 Received: by outflank-mailman (input) for mailman id 1318263; Sun, 24 May 2026 00:03:19 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wQwJK-0000sz-Oa for xen-devel@lists.xenproject.org; Sun, 24 May 2026 00:03:18 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wQwJK-005yId-4f for xen-devel@lists.xenproject.org; Sun, 24 May 2026 02:03:18 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a12403e-2eae-0a2a0a5409dd-0a2a450bb766-6 for ; Sun, 24 May 2026 02:03:18 +0200 Received: from [40.107.74.85] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a124043-212f-0a2a450b0019-286b4a55a710-3 for ; Sun, 24 May 2026 02:03:17 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by OS7P286MB7274.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:439::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.48.18; Sun, 24 May 2026 00:03:14 +0000 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6]) by OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM ([fe80::c8c9:25cd:8d13:96d6%6]) with mapi id 15.21.0048.016; Sun, 24 May 2026 00:03:14 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" Authentication-Results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=YTkHL1d+Pj+ghszLL6gLtY0iub/5MEqb2C65nUTMwyVjOkqLfgJFxJux2dOx55NuwDkKEHL9Q3duqaZt5j/zy9dxoPYBtB+LUeo8seDP0W2/QVngECQLpWuZlrK9YwaI6P/Y+ZKPa+cGWQuT5WDBEwQ6uovIRJ9cQ7SnqJEWP58l5sWQmHBXWq8yGIKvo2CqwfsFC0K/DvHuNMOjUKNNbcHjtsLM28nZcIlllAncHsevGNXVmWMowCgWaiW/umKWL/n0pryrB1EoCZbmTaeSsEH5cQQHKCY8I7WETeSPi1POLXAi5cql/1Ajc8pqL29G2rVDJeWLM87wWqnq8qsBig== 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=QFbPS7jmT/c7ZeciURJLZIzacMWDfDdD4RLX/C8sWd0=; b=KEMqLlnv5geHRjamJxFZtRE2hnkLyHSvTyUhsU8bVa/xGzce5QuuNP5E8CXNlwDME6HJfH3QA0x250VOa2WnAwUjlYKkdx5MxTHu+Axq2fjhQbwjiVN4NygojI+lkm7gZohbNSv1BZBtx1wAjVj1l1LTajjrzgbGqF6iKEGKHY/AIEWykxEdRPdTeCIt5L3KQGV+E8wSHRV5Kb1cAryRi/SLI+gr9vgQF3uomDE1Z13zOyDnqFJgQ27kX/3IpONeOQ9CKrTF2qXaTNopRqLAL76g52EJlBDnyltDquRzmnCSB5kZw1Cw6HyoRqCzZcAax7IokBDtPXFD2vNG2O0edQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=valinux.co.jp; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QFbPS7jmT/c7ZeciURJLZIzacMWDfDdD4RLX/C8sWd0=; b=Ej2bAuqKg6eM1SOwWyXtfY1NUQ0/D3CA+eHfXonTukKQpsau9PBa8xJl4HWu3jJn/zYEm7pNs/G8gBfpa0P5CWuMTDnjBcwTF3Tn1GJiZ8IMBux89eDAlcHiMdAtVtwMlSS5qJ+ocJfNpXh8TfIAJKd4n9rLhKfb4kqyqYhlg1Q= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp; From: Hirokazu Takahashi To: xen-devel@lists.xenproject.org Cc: andrew.cooper3@citrix.com, anthony.perard@vates.tech, michal.orzel@amd.com, jbeulich@suse.com, julien@xen.org, roger.pau@citrix.com, sstabellini@kernel.org, jgross@suse.com, bertrand.marquis@arm.com, Volodymyr_Babchuk@epam.com, dfaggioli@suse.com, gwd@xenproject.org, Hirokazu Takahashi Subject: [PATCH 21/21] xen/arm: Support numa and numa_nodes boot options Date: Sun, 24 May 2026 09:02:09 +0900 Message-ID: <20260524000209.292370-22-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260524000209.292370-1-taka@valinux.co.jp> References: <20260524000209.292370-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCP286CA0181.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:382::19) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|OS7P286MB7274:EE_ X-MS-Office365-Filtering-Correlation-Id: 35831113-4086-4f6e-f4a2-08deb927da0b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|366016|376014|10070799003|1800799024|3023799007|56012099003|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: sVs47iqhlz4Auo7jLEFr/UcSe1q2oyUaR4WdsAqFWilvKUuiLuYuOlkNIxKtpEey2u4mysIrSvKA8KB6p4t9d4v2/GG+n5B4op1UNLALMEXY8C3EwByH4f0v3oe/lC1zHIK0ErBjuMMkHeMvbVcjquLLnG9vgeyljK75BxaArzb8RQI6Unc7i1cfnQZXbZhm+SG9yMCMiJckZ4MqXGRN3KiGVSAwlpWjDqtbOB/iTeC0PJFtfdQ9fsK9EqibNLzIr6uLDtte0ao9UBcr/LCLfYq5TL/aWr+4Tcuv8x7abaeEmuMe1TVFKx3Z0OlDVT5ANCplylXwmG1cSaOEBQHXr1b9Rr3qBGHfnC/tJOAEiDXfEh1FfNGGpcZYUwPSKJGy9YFl+ZIKawv9jI3RHcw6v9WRLfLsKk1q3kVIrQamJo3uVnq9sHC58QRIlD7x0R1pFVcLjGQs4hPTWMFs/DXuoSb6rlDMUkxwBFcWH3m8Se4WpCKz4aS/3TXymTDOcH10QW6OWF+K/dotPBdrA3e3Bm/jxfIUckliYEVjZ3vNtsgxo7m8PFrqDJzYIrxFOeFd/DR+pZrR0ftt4n++MOZ3Wyxs5JUe8iDy7CXyyUFnvxvYTJGDn3Mg1esxbcVl0PFdx7MpJYDR1LNdF72jENCUEg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(7416014)(366016)(376014)(10070799003)(1800799024)(3023799007)(56012099003)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2PnHRslBYoboaKXpvAAqzmiGy9yMl2sAZLnU6IuKWpJ9alvpOtAxlfC06N7G?= =?us-ascii?Q?RockIEIxN5jC2HCClpMN3klBt3gk0WXvIiIsMigvcn5vn++/D0qEH5lUWVQR?= =?us-ascii?Q?xjwmSCyb9eMZN3hMr+Z/T82PbrZutj4Tmicx4IwyS9WJ8MruYXTv5drqXRJ8?= =?us-ascii?Q?4yvR2Ni+zkfJx0pE9Gp40D0DhJKUPEOIdKk1DBjPiPi5R8vDztdcDuuZOVWA?= =?us-ascii?Q?sqrCOF9O0o62qPRb915UxQWZDtqZXy3bGYF5k1sNxCMWSyl2TXlOSeIWqToM?= =?us-ascii?Q?4HZ8awYWewzBOA4GDcxqkVizO/3H12qTCr6oSUzKjsFtGeQKYlWUch9Tw7fD?= =?us-ascii?Q?729sHmv6rglQ2pEEGI431v6RCqrDu04h3lmRJX3p91HYWSvbJkg6KUX/Ufqs?= =?us-ascii?Q?Z2KQG+kXBDswJQrNajsVsWpeL3Y1V11K0xJ0I4ghuUcHAoVF4Tk3q+JuYRrs?= =?us-ascii?Q?9yaWQEsuEDH+iaYCaavDwXhI5uiF4rd9JTwFaHP+DuqjvmcEfPOTiOzPDQDL?= =?us-ascii?Q?krshy8GQ0myaEWCB4qq6SBRDaUjcX+Mij0JD295GIBzHgXn/yHh42HdEslZC?= =?us-ascii?Q?iwHyTWFZKfmYfKRGaBRMIcvbFq5AbOOlJ9Nw/g3RQyAgex4cNPV6qr+7jH0u?= =?us-ascii?Q?6u27f7zNadiRd49NRQeoA4QRq1SWIjvBnBaikfDmYlqRAoPGE5QvBy4jiYy/?= =?us-ascii?Q?ifkk+3C4SX64oTPXsbqRy7mVdtEhiMVPcVlSdXujWglKt7DvPd8zS3FBUv/H?= =?us-ascii?Q?LBCTqw2TiHrnnJ+CPFaEbpSIPOJhLJdIPVoT5wAlFhKqrjoN91EYqjCIkoma?= =?us-ascii?Q?kUhCOQoViJqSJn1Y/Ax5pneujP00SaZay7j1etwda126bnJrvjfCjBR0zPMZ?= =?us-ascii?Q?Erc1U49a8YaBmxvwzR17G9fV5KA81UeUUHB0laoxtXyk+WV7VmjcklB6CaBf?= =?us-ascii?Q?Gi+/EBjsf+vJBYmkobnwVsqY4BjhPQv/s2i7ABv06/dvOQJ/0PyNtCUFOaKA?= =?us-ascii?Q?dXVSbKd0xWg9J7XlVFwKPkf1i7pzvrJuAnAPKb9LkNzgW7XpVqLXl4HBIdEU?= =?us-ascii?Q?+VAQAkbLM0FUMrEozvE/8aTGqXeKitiKIq8S0rqEvY2uOInAw041AuIq7oEW?= =?us-ascii?Q?MpDzz3pZ9F7XiA1h0iwHuXaBU9Q7orBS3FlGqfaLxiUBBSoDMvmsS3fX1O4y?= =?us-ascii?Q?nM2kOxxWUj7LHypDPIFuXRvWRbg6Poj23l4Vy15tVw33AVmTma/UeGWXsO89?= =?us-ascii?Q?FmKDXL+uYE9uUHZtPsfLVozBWQHfnKgmDoTnObBgxuaF7Am+SNivOiw7jJUC?= =?us-ascii?Q?HqXL/OgKm+BQlDHjE3jBIF9uWYrv6ivafSgFHluryEfUXjIJ5/EZAzuK0gWJ?= =?us-ascii?Q?JthoM0ZTfAMBi0pvU4Zhy/ybEKf9qqJP4aoZAx0qYHiN0yRJ+l+Eyh5kWVlV?= =?us-ascii?Q?+tJjaMF5oqLIRXwqWComwCrOaAh1L3Rb6iWhuIHMhQTGiQVOglDjwpqIIyjd?= =?us-ascii?Q?YlkDtHIxOfGc0tyK5pPBzPWAhktzQvm6tPcPgrObSsviPnsa96fpIbNiiBju?= =?us-ascii?Q?8ZnuKNdX6g5bYiDvN+77gCFBQVyiSskhNdHK7pPmvTwOW3/NHQK2MGSpieCA?= =?us-ascii?Q?UlgIycSOSQ9e77QB6F12YHtj4gbvdevRoZcfnrJUphW6U5XySPRx6G0KBfcc?= =?us-ascii?Q?h+jijyUEw0plEYDaHU6lxloaw9TJ9Mhx/OaRLaVEeu6uNGm+MWJ/FTsy57++?= =?us-ascii?Q?myzVzrA1B5pMspMHZBtmtu2XEXytLT2V8mlWvlPajws0fVgdVy99jQ35An3F?= X-MS-Exchange-AntiSpam-MessageData-1: T4gAhz11bXMQ8g== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 35831113-4086-4f6e-f4a2-08deb927da0b X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 May 2026 00:03:14.6846 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 7a57bee8-f73d-4c5f-a4f7-d72c91c8c111 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: B4uWqq3II6P9vE/8RpVYhzn+K1yeq7vqZVF6VGQ94v2KIGZBam/V2GPjG54BXZ4HegGjKnkWjUYlPfD9nzYJyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: OS7P286MB7274 X-purgate-ID: tlsNG-42698a/1779580998-23374F3B-6E768BA4/0/0 X-purgate-type: clean X-purgate-size: 1710 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1779581015682154100 Content-Type: text/plain; charset="utf-8" The numa_nodes command line option is now supported on ARM Xen. Its usage is almost identical to x86 Xen. The key difference is that while x86 uses ACPI PXM values to specify nodes, ARM uses the values defined in the device tree (numa-node-id). --- docs/misc/xen-command-line.pandoc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/misc/xen-command-line.pandoc b/docs/misc/xen-command-line= .pandoc index 2da90548d8..0f1c0467f1 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -1046,7 +1046,7 @@ Practices](https://wiki.xen.org/wiki/Xen_Best_Practic= es#Xen_dom0_dedicated_memor =20 This option doesn't have effect if pv-shim mode is enabled. =20 -### dom0_nodes (x86) +### dom0_nodes (x86, arm) =20 > `=3D List of [ | relaxed | strict ]` =20 @@ -1055,8 +1055,9 @@ This option doesn't have effect if pv-shim mode is en= abled. Specify the NUMA nodes to place Dom0 on. Defaults for vCPU-s created and memory assigned to Dom0 will be adjusted to match the node restrictions set up here. Note that the values to be specified here are -ACPI PXM ones, not Xen internal node numbers. `relaxed` sets up vCPU -affinities to prefer but be not limited to the specified node(s). +ACPI PXM ones, not Xen internal node numbers, or node IDs in the device +tree. `relaxed` sets up vCPU affinities to prefer but be not limited to +the specified node(s). =20 ### dom0_vcpus_pin > `=3D ` @@ -1996,7 +1997,7 @@ This option is ignored in **pv-shim** mode. ### nr_irqs (x86) > `=3D ` =20 -### numa (x86) +### numa (x86, arm) > `=3D on | off | fake=3D | noacpi` =20 > Default: `on` --=20 2.43.0