From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267725; cv=pass; d=zohomail.com; s=zohoarc; b=Wg3086On8cVvkNIBwm/E4K8yfLgP2P1ooGIXAvvWKC4SacxCbCqjp4OJGthNJD0iuR92Jbl3khxhw0kgdenguof9qsinw2MJTcYmL7jCdFS1y9BDTS3eEWvEDCKQWNEUGh0sMzi9pjZAaM/HJcjRNtQKL5CmVKOX5CmBDzVJEbg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267725; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Wt03HDs8D0xUaaPxP9GLmlyiOrzESbIR6gnC5yHUmes=; b=QVkCypYNcZ0nKAdRXkgHxZiPamMvcOhi3vOK+BG5+6IDhnNbMB5NJnDF+W6/N7EPSTmFkI8uH6Cs8rWUg9qVcAfcSN6kYMc1iGBaF9R/8aHHv/evQcAOvWfP1gDpH3rWKXW3Fthsbt5j2bef6eL5X4R2mN24c21hUGZWUgVcKEU= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267724808554.2549270515166; Sun, 31 May 2026 15:48:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323452.1589129 (Exim 4.92) (envelope-from ) id 1wTox0-0003uQ-Oq; Sun, 31 May 2026 22:48:10 +0000 Received: by outflank-mailman (output) from mailman id 1323452.1589129; Sun, 31 May 2026 22:48: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 1wTox0-0003tW-LP; Sun, 31 May 2026 22:48:10 +0000 Received: by outflank-mailman (input) for mailman id 1323452; Sun, 31 May 2026 22:48:09 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTowy-0003rw-F8 for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:09 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTowx-008Rpn-S8 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:07 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-12 for ; Mon, 01 Jun 2026 00:48:07 +0200 Received: from [40.107.74.122] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaa2-aaa8-0a2a45050019-286b4a7acd57-4 for ; Mon, 01 Jun 2026 00:48:07 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:01 +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.0071.015; Sun, 31 May 2026 22:48:01 +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=eQCVtYYVuhSPpNYC88ZGBCI9MtoOZ9N85ROzpSNBfBJLokcwW37lFMscE7AQ25ApUObg0rrl2oZWOv98NO1KVNO7pTc3W28ae3N4gBlQPOmKRZFza6XPXIj/CeS4CHwrxdOx3zH/nKE707DQSc3gdZXgZVI0f5XcgG2UMeauMuw4sSLyTmnBbJbzC+ahRmyrONi2fuqE7Ti0FR+WOpjxd4GruumZSvojKEwZDl1791dX/ZMFTW0UgECDWmM7a9Ora1eVroz3TAWPgCVIh/QPRQdyJHBO7/MbuODK8ARRQk6+JNj+kO85BVu8XRNVx+LO4lUoTCWCSaYXbxJHw+g0DQ== 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=Wt03HDs8D0xUaaPxP9GLmlyiOrzESbIR6gnC5yHUmes=; b=ZyO/Qd4RgG9dcolUrdzdIlWychMtdEH/4BZCPBOPnHEPCyBKW876x+dOvN3RlJPC17KaGqt387i9kf8PBYrG5pEg4H9lC+E1hW9KTRP5ChnmIRoO8O/EutQftelgBZtIhVvBrctQgbTwSyoaDOC0oqKe1hrmlk41+ibglnhfikYy2m3I06dxc7qu2UBjbob3K3xlIF3khT3NHoYgLNQJM6H/fIa0Y2mdXZYHKPzUb2i0T23VDX2oMPgJ+4JZU/Z1E3Tjoy+rwNEflnEwgX91kvPTeQC+e+/ekXlET+7bkzI8Eoxv11DHfde2YdFF8aCnss6N4RpAvxclH1qv4ss5QQ== 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=Wt03HDs8D0xUaaPxP9GLmlyiOrzESbIR6gnC5yHUmes=; b=G2E4VAFQzhwNLQRetHN+SDJZ1BT5rznuC4o41YujOnExhS0y9dYj78oTDX5tCsduruI6cxJMMOvO3IsDltzAD0bESPkDobjvdax0I0f19smQZpcEgLnvCWPhZZ5TLJihibP1J3Ewi9MhHAXMP9/FeD4//GXJbRkdjj6m9j5pQgE= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 01/24] xen/device-tree: Initial framework for Device Tree NUMA support Date: Mon, 1 Jun 2026 07:47:31 +0900 Message-ID: <20260531224755.9481-2-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: 58e71857-fbb7-438c-e09d-08debf66ab5f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: //OE2mbAY0u5fSfPy1uMFaPDBnXdInI6fTTd/h2Jzj8GtQeJreR5hQNb3y++55h7mID0sQ0zNsKbxR8zrfYxUGFx72wAw/93Wmx6u3ks/A4bRkUaveUL1YZv5ddSy83rp5US+rrLcJlDsExjdc3IvXjY3N0Imo7v/N1X6WEvXx52buYThdu5bGE9qwAYnj6AgD0EEmsnp/4/atjDM1zKdAmhVBxBoGpWYQhN7c8guGPTivfY6kv6eS4LudFU4tuR5mfR+wZtX4360g3C6U9NHug0P2dE05FyUyhDpEuauDD+va3EQKsShvcJp43Uy1c7woDHf/slKeMUdGdb67CYRuj+5aNGDwQp43UwwvfMpGinixv3QIuuzsbni8cOwm97MRPGX8qaJlsm7vTQFWZu5ygo048Kihz/J0wziXafpifkwv3XMxyhYfJGD/0xebSwQSis47zapwmyCUE+n+cA9r+njz2xaKUTEGr69mDyGM5TGL0W9y4n1sn855oMjdAZS0U0TwWEiHmYJZAmBltkgoN9HEUyAU6jefw32MLWPYv8a4CzKO9pagUoP8BzNvd7JFbljVVF54F6UKdqmW/7IuJeVht6keBrajjGK2LxRQR1a9ag2Yb1V4n4KqL58vptiNZV2DOSGlMZP/f7votnP6R4k1Sff+ZYrJT3n6Z4la3A536SINLBFKjk91w++erJ 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)(10070799003)(1800799024)(366016)(376014)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?dpFHFvt3MTHjMT52nWH0VWP5zCH2m/SoGsgRwT/tiXBCYmoziWXEs0saOdnq?= =?us-ascii?Q?xcl4wEwd7A1cR1NGoMWWwnHONHNX96Ehc4Z2iEp0YJzMGefSf1fEBge9MN3r?= =?us-ascii?Q?hin8oIcFLw8l+tnAUWYT1ZsOL+Oj67T+6pTpUmAFVQiS7j+Tz7yl7IzYDrjN?= =?us-ascii?Q?wbGzDFU/5PuffUNCy1JMU4PJn4ylA+LaOYBBZalyAkqzoSaUa+XMf6Ou/2XH?= =?us-ascii?Q?e2RSmSkEy1HIxzmc8ALagokUWXo8gY74/YbDtEJqEqSfvUJkCLV6i9e4IYsi?= =?us-ascii?Q?6eHLgRDcDG30Sjw0zgNyVz+rMZIZjGOdsE4okLrhCrWCwsSfF7/1mCT+YmSl?= =?us-ascii?Q?agfqdzyrYPUGd/eXAzsTuTEiFZXKwZE+K4xuu+LM3HsN9Pm3TN190ssiyXWU?= =?us-ascii?Q?D7cMPPwaDcjCnbrlbhPnI25d1Yr3U4ll2+ED07aM4ld49dTYj718jtucbS2R?= =?us-ascii?Q?325Tc5lvbv5MG43U43SIztJKWbwb999VKOHpbobKHDsrBHarHObisM6U3nDo?= =?us-ascii?Q?xPI9uzf66qosO85BpLvYur8FFK1PxSN6nzOaMbi1CYFIqu00Pajqto3v9hym?= =?us-ascii?Q?TXOr9N60nRGhV5NRoO1q3ETFAdDN4JuqH8KJYzo5QuKCBNy2V2/ay/7hHLO1?= =?us-ascii?Q?YSQB/LRwJ70P1lkO1tz+MrPvYAeSm23LaY708vwOrRvw8gxYFD4Ic0fvgzTy?= =?us-ascii?Q?ONkwjpfkpBsD5cMNJX3ya4sMJ5BQQbxCJBPH4svdG0+0J2bSpT4aLUgTakWv?= =?us-ascii?Q?tWGL6Igvm29mHCD+QrcCR3R7F7bE74HwjG7+TCEV6G4YPcn6pGbVZ6S7ue1e?= =?us-ascii?Q?kz660K8yvfe1xmNfTQl5RHucprJAvJtUz8/B2ghxCHzX+5xPYoKp8jN6bV2L?= =?us-ascii?Q?ExtSByImggZq3LamIapJ727M08KjrXPbS+7iDVRpXHpqh/0BQSmT2w2eEqcT?= =?us-ascii?Q?q6UizEnxadQUbJ1y+tV8R94O0wgdXvuznsmjRg+A4CD90gJZx426EhPOIsLj?= =?us-ascii?Q?iys7DL6OKR3OkRUejYMybzF3fGVaL2GM1bEfTyzyQnTIOh4qSJsLEQBFKvjK?= =?us-ascii?Q?YhzjsdW3dlR2id/1TsN0map2aqNqbQd9EG44qKP42dIif8yOS0HP2Jy4Z1mW?= =?us-ascii?Q?QRXn5zf3NJKCCfHVpLKRhoZ5mW3kvezbnrwpq6u1gQYbcBkgoYoo3Wb3Xx3t?= =?us-ascii?Q?C568bhitBpAuxMh4NQfncyWPc1C8t+6wJm1r/3Wh+LFMytBk4xXaYFgm9tKX?= =?us-ascii?Q?86AeQAKB4YjY89vpz1oguNb6UqSrNjgCH36uEyPDDFVHnOH0JHIF5FVynDsH?= =?us-ascii?Q?wrDtF98G+CTnsxkVS1Q4gfeULv7+hgMEKhmyXIatBWZCdW92bn5JLwL2A7z3?= =?us-ascii?Q?YuliYiWWWuiCmB0BxgDlPUqkuME7cofFmzXti2fIC7uOYPktJr/z7ZFpjvsV?= =?us-ascii?Q?u9NjVVr5vg1JnH4B83+6jF3BH+9OAo/dC3Cg5JRsedVVcSz+fcWPjVBc3JfA?= =?us-ascii?Q?Twakytzge/jm05XbgwR5PfgRsbFu5Ywr+h3SF4f2bLy3V5qlUKHsAsrbDfuX?= =?us-ascii?Q?Y0xtXkLKpikjWDGJAe66fm2sun0Ttk7avqAuLX8PkgvUAX9wkIQxlV9ucNkW?= =?us-ascii?Q?NL/cO5wPM4qVIMWBcVEbAMoNIKr6MdTEV4GLCc9MiIt8wvHtZPXX5eg1Vztg?= =?us-ascii?Q?giK0gj9dZQO6ONAc9kk8SKCgaU4N7iSbpzp64X5l6GVyEZGzJ71MlSDj+vZH?= =?us-ascii?Q?zf+7W1+CGnaq11IO80RBsHiCtX4f6zj12I0tumXagFWcNZ0E0b5Kni8GvGka?= X-MS-Exchange-AntiSpam-MessageData-1: gHnrNTusqsqJXw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 58e71857-fbb7-438c-e09d-08debf66ab5f X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:01.6503 (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: L8kambpaFA462cFEIKVfLFRXkCh/w8caekcgxiHyBIsm+Ck6CMbO4yJdmi8zsqqduLSVFY6lMAIO4zbwoGwg4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-c201ff/1780267687-DAF6E443-B1A0FBC4/0/0 X-purgate-type: clean X-purgate-size: 3575 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267726745158500 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..658aa293c4 100644 --- a/xen/common/device-tree/Makefile +++ b/xen/common/device-tree/Makefile @@ -8,6 +8,7 @@ obj-$(CONFIG_DOM0LESS_BOOT) +=3D dom0less-bindings.init.o obj-$(CONFIG_OVERLAY_DTB) +=3D dt-overlay.o obj-$(CONFIG_HAS_DEVICE_TREE_DISCOVERY) +=3D intc.o obj-$(CONFIG_DOMAIN_BUILD_HELPERS) +=3D kernel.o +obj-$(CONFIG_DEVICE_TREE_NUMA) +=3D numa.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 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267731; cv=pass; d=zohomail.com; s=zohoarc; b=dbe/+hThZyCiC6PYLUv+I+pURLGk7NuNbxa+p8n4eygDIdIlvjyokRLx881Cyr4eV9lTSSRKdovh1crCLQBpCPorMfIItRm1Jjdnr4GHiTbHYzMq+rUkl+7ImLUPwpjMfOKmnrpDbxG78aIkSvNlfiNho4SM6uaIjuq4UuLnF/Q= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267731; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+xd9T2blWYyalwo41o8xs7sEzMUIRZ2JS3x1+k5CFPQ=; b=NeZjgURYdqEDJHHNg4rMucTzhdf++3Qb+T848+Js1MOwK/YZQ7xehZcF3Q2VfzMEO+YAft9ykgZS0jJMujWYITmjLNxCxjXgrWIG+A/Nk2afvoAn98yfLdKwFnoOQuTlQsleh4zVvIbx4uoAhYKyhdgbRdJdvAV4fH6kUnfJ5cM= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267731141354.2877591580324; Sun, 31 May 2026 15:48:51 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323453.1589137 (Exim 4.92) (envelope-from ) id 1wTox1-0003yk-4D; Sun, 31 May 2026 22:48:11 +0000 Received: by outflank-mailman (output) from mailman id 1323453.1589137; Sun, 31 May 2026 22:48:11 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox0-0003xL-Sr; Sun, 31 May 2026 22:48:10 +0000 Received: by outflank-mailman (input) for mailman id 1323453; Sun, 31 May 2026 22:48:09 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTowz-0003s7-H5 for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:09 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTowy-008Rpn-U9 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:08 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-14 for ; Mon, 01 Jun 2026 00:48:08 +0200 Received: from [40.107.74.122] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaa2-aaa8-0a2a45050019-286b4a7acd57-5 for ; Mon, 01 Jun 2026 00:48:08 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:03 +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.0071.015; Sun, 31 May 2026 22:48:03 +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=dyEmGHMEUk2MVjNbtN7aXApMM4WvF8qE/sSPlldn532zv9LYO8Mz5tR9DsantyqhAb1dy2rApaL0tvF+96gOQdj6OwtdCkO1MpmeC7DHmE8PQKxldlR7LckALp2g0vS4VCKpgYzeNJ+xNifKGYcpHrlcW5Q7TIQ3qnPTQ8SuCVldtcgpxMLESn5IvARi8dfJp9YNXb3DANfaO27eQ5lDNlqzjWZha/hnqApeWD8pRipzeRBduRcVuWH0DXrmoiYLQVYZJCZmwP9o/Ujh3l1FC3A+IY4BvfRKTVQvH5r9dCz23l4MmKf6nCnJiaNAD62p/HPaBK0uNkOJAl5uDNbX1g== 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=+xd9T2blWYyalwo41o8xs7sEzMUIRZ2JS3x1+k5CFPQ=; b=FCQIXdeneIxvujDOn28JQTViSU6h/HfBZsGhQAPbbkACasZEvdUU8/SL3VnKuh7PFGdPBgdUy6RPdhdYm/PyPKw+r6Mh2nD8X32jr50EWCy/1zjru5fOPG5vYygDfiz8s3NFoVAj1AMCib/kMcHZ81waFBojO9uWHLPHuANnli2qQd8YCDnkDpQnQrnUMXRFIDK1P0/vJiemxUNmXNhH41m7FrQ7rQZC1TUosoWl6Eus7PMNiY691Y9pA9m1hIhRFosVu092RdmLkrYLiI4k0oamlACCf+WCz47pJWDHSZlgnz1JJH0HyQT9SaQLK3biyLQy/+/n4EC+WgLLYGPIgw== 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=+xd9T2blWYyalwo41o8xs7sEzMUIRZ2JS3x1+k5CFPQ=; b=Q7vYoe1rR2mTao9QtdyEXUdy2joAE8A8slVY0UiGiPKiAWh6LlloX+OG5yNhMJcIBXo9KbhosK5l3ZNVJbbn/cfRHk9J3CS66eex4pJcE/oIrFybWddfsj0/3Kv0sYmBz3AZJiAu07w5a1qdWq+I2jg5gWLpmYVctXg4MLmvEfA= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 02/24] xen/arm: NUMA helper functions via Device Tree helpers Date: Mon, 1 Jun 2026 07:47:32 +0900 Message-ID: <20260531224755.9481-3-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0059.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: 517cdb47-dfd0-4d8e-eddc-08debf66ac98 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: JzYFxdIOz6SoQFRiB4gc2TuWE4fkpifal1AX82K7bT82iqlqo8wXBODfffUYnAxlkk3M9cHYF3jY+ce5yEOBW35hNuewlxIpIC7McJeUdgzN9QB8FcDSXff/d86OoNmkYsvYXBYbyTLhB608BDtJIXWoHaNslJkBkRBXmJPnPUKjJHcwYDUcO+J9UWG0f6OMTAvAIVXwBRWz4oBABMMtcfpVRifMTlLObNScyOjDviayy9odLzDGL6wSAUt5uA0dZapr5n6wRKpn+okd9Cc0PesyGPiMC/9Crai0DGPNsVxYrsnc2DeyiaTxYjNgt3Oh3WZ8m1bcebiA4r3qktKwzPTHGz5N2hEMuw0a5tsYhaYVu/uhQ3KzKMX7eB69X/N+VRsbJNmQ4MrLD3FTbNtGQYjd/wNzNeuWfvbX670kkJGjzlpIdTCIxbdoySmHltMzfrW9QRVE7VrsyEUw9R/VcW1ElQArFUHj/LxLHDQNFMfK4enQsVuZYX2i4xGi4nxYzOyAxUoTB0d3xBTK5Lhag8uNiGEJoA6mZSyqq1xCmGchRtnXoVaUQQ6d3HaG0vjL3sE+wPrqed/1pJteW7MS9nOqTYY4+7H60NrJtnbR5CWRaaMdLgiUQw8DIU8B8TnCbV/7iwUseaTiqnIBnFnBX0IMmdrcoIEog7b0TXBEimNHlkjTD+XBWt92khuDIQb7 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)(10070799003)(1800799024)(366016)(376014)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?IK2jVom6XM1tCnVnYOqqlTxRHYPNIKgQqjzKE29lWe5JOIug2fnJBZmJyoR8?= =?us-ascii?Q?ZKU9uenXv5vd5CpFbRlm6Ava8Kt3hihU+Cw5C6N6OkfIDU4s59o06VDCij/k?= =?us-ascii?Q?ooep4KDk6Sf8uikf/4SY/DxyrsCMhHJP94WgFe25IAuuRieDlIMO0oziLoVT?= =?us-ascii?Q?XP00Idl3LhK/CbaZG5bFkIf2wtN93VFJMUhBcS1Hd8VluQWQllEcrLr0Skl7?= =?us-ascii?Q?Ak+1vEIBQ5jxT1kyf+06fEQCrxFThAi5x+pxqQmCiDoQK3Me4szot6OFSwVq?= =?us-ascii?Q?aJm16l0e30suKj23tLoySNSNP7D3o8/jU/oE5q23aC/wxEE/80yeaB7YE+ik?= =?us-ascii?Q?Lzju6ssNWel6JwynAuG+D1BpMRdilasrzEKQbl2q52E3g/m3kMJt7o53o2bp?= =?us-ascii?Q?AGpn1PfySRMmidF/APEIkXjjzkDQi4xbWJdITm2qA3UbnovB61i+Xw2I3TNw?= =?us-ascii?Q?kswfU+q9BNHiM6lbVGMa7iY5sydErepNX8wSxXAd2VIYYsRSF10X5UjRRDuK?= =?us-ascii?Q?9tYQNNBPkZ9ug3ykWU+xVBkY4cSIz5BAOSZlV2sBOgak2Gy6SGE8/WZUvC/L?= =?us-ascii?Q?S6vXAGWfOsEpS3sNAOq0BYn1sJ7TMVbokyOvXCFtfbs+MnJ2wPoCvEMQHVit?= =?us-ascii?Q?CWYrXWCeE+uZNSKzvV86PTEcB+re35yX534ihZJ9bhy1HCO8W6XQ4wLxERFP?= =?us-ascii?Q?ogh5Qc7t2Eh3Z8gMcpFYjR3WjzypZoyj7ExuJBDvqBDfGoa6+/w707kVdsDv?= =?us-ascii?Q?kaSz7zY67tQkYbAh1IUfx15yVAn9G/8J2PnhDPdavcP2BYSK6FB8tJzJM+bR?= =?us-ascii?Q?Be9necdgEXEGqdrsbthTOrPPDKeTpNhOTvmNWtMBO/knfp33ewxnrqOzxams?= =?us-ascii?Q?Zxjg3KKmDTQF8+QFND/QnJbB6gm7tnpKbKyqHQaY046zqnNiSNgAOZhcaIVs?= =?us-ascii?Q?xMWJi26xnWEN2L/UGN5V5RKvReSI0RBEY3nEIGhr5t336QtmAvtgtDNiTmXq?= =?us-ascii?Q?hJWR9UE6XIxq+2F//kAIMy5IgXiQHlTMfYHiscymaRj7Ie6GtOFsW8PJl1+r?= =?us-ascii?Q?XzT40A9MjbrUyANQ/VHiHmG1UTK2bxPue+kMolqiu2xVt0+1h8FwOmVPm0N8?= =?us-ascii?Q?pFvd4zfXfTgCFhe2nVTKkhS2WDkdjNqbK+cy0Ls9jREcZBcyRj/Bm5JTAY5G?= =?us-ascii?Q?0R6MYGA12KPbCAoglAnQIlS3uxACqslyH0teHRaDDJxnRWO30NcHYzPC6+ES?= =?us-ascii?Q?lAZTgfL3jgA3SgTuc7r6+Mne9QrrBmyAB71tqTFizZnn1V97furABH8wq/ZI?= =?us-ascii?Q?yk/czd3ktZp6d8YiPyq25tlmwsX+yqDeiyhMmrIWhltsqGDTMm7eC2GKxZLd?= =?us-ascii?Q?wVPOmAp8Sx2fMoOty1nxgi2xEMDurI7uYNKYq4sm2UG/BpRVC+BIqjmME6+1?= =?us-ascii?Q?4fEbMfGxuWw8vK4YIBRspBcRYFuJwg/tDhRhoYEwoN/OQyU21WT4X0yv4YHp?= =?us-ascii?Q?qst7CK73zlc4CUQmHkFj6Mxi7CEk/9DHvwzAXmjlaPI42DeQJ+K9PvQWkqSj?= =?us-ascii?Q?f2rqGc61reNdRpclEBeF7aV4wjUwe6hg4sHfrYbkd6J4H8lTCQWu+776CByi?= =?us-ascii?Q?47qjln0eNkn9XkHNZRGn17Jw+LOQWq+tgLCQuSwQIfhI4j71cbbtRjxC6vVl?= =?us-ascii?Q?Yx5diUhNtK6Zvbapr0Jaht7NCwF/naIJubMFRtspa5u3pfW/TLG3t38GDKwa?= =?us-ascii?Q?3LzhHhfYpJmuG4/QFsuxzXDoWN+AhK1/DCPcGtsP8F8djcwl6qm0QM8g2u3B?= X-MS-Exchange-AntiSpam-MessageData-1: Kck3eGiOMAsSRw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 517cdb47-dfd0-4d8e-eddc-08debf66ac98 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:03.7098 (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: 1V0yIfh/+rSJ6w0VHQzqY2mqn70YVBDW7HgW8QBc6zce9/XtbZSdv0jx3e6SjuVZv1SUy5BXbNZDgQZAYM4GRw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-c201ff/1780267688-E1F9C443-2986B28D/0/0 X-purgate-type: clean X-purgate-size: 2693 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267732822158500 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 84c4062b30..10d20e3a84 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267723; cv=pass; d=zohomail.com; s=zohoarc; b=VSOgWI+c6FZds7THlyKkN20xBqzfgCbuMMjSLiLYlpQjv+vqPW4vhJR8quioyh0Qur9NbHUPajEKEL9uW8cpQ3eIJZd2fcWX992skpI7KPm24inoNWEuKiJNYZ3XqH1omgAzejbyeBqBzkpEIRatsAfvAHtBbyl+GEVQYOuY2Tg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267723; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LE6FuAerqw6orzqzu04p0kLbWxovloaphAeAZjKcIaM=; b=XLca3Zr/f3971C95T+zGmI7TZH/a47aXX+fTNpMR9e2+DvOUciUH+Liz1xMmwNOwChnpeIn1egTaQAGT7d3n5XAbEEEVsGQ65KQQnHWn+Uz6E7XKZ8RN3ZpVN0myIdzANbbKwzac+vr8HWeAFjqu5bpeHNhRWhqzbCRE/gi8V6w= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267722972667.3463645488079; Sun, 31 May 2026 15:48:42 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323455.1589162 (Exim 4.92) (envelope-from ) id 1wTox5-0004jO-Lo; Sun, 31 May 2026 22:48:15 +0000 Received: by outflank-mailman (output) from mailman id 1323455.1589162; Sun, 31 May 2026 22:48:15 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox5-0004jF-HF; Sun, 31 May 2026 22:48:15 +0000 Received: by outflank-mailman (input) for mailman id 1323455; Sun, 31 May 2026 22:48:15 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox4-0004bc-T1 for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:15 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTox4-00261G-A0 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:14 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-26 for ; Mon, 01 Jun 2026 00:48:14 +0200 Received: from [40.107.74.96] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaaa-2497-0a2a45090019-286b4a60e9a3-4 for ; Mon, 01 Jun 2026 00:48:14 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48:05 +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=A9haRMnW71ErQtKS09RyRZIN8yMlyMURA/o6+icTpkKp6dUeoOatFX6IGJD02ss64LH+XHsajk0d5mXvgSfYxXb6yEDX+zsT+Eey0GiIGmbYG19OS/lk2+8LHNlffII4SXLoGJZeLcrrwSmgSjOyUijqOmvWCLu5NK494vHHFwi5iWbIi1dEJVVcXslkViSQ/TmyyZQXrc2BH/wrq+Y8DR6nsikiDC8456SQDAat4tHd3hBLSKlcRKkNs6rfkwuBD9PxaEmnHsWC8qjaN0KaSdSIxd9gk7qJvytwF0oFtxs2lS4gdwyKqn3McBop2+xCfzWBk+OD9AwDRdm57BrTrA== 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=LE6FuAerqw6orzqzu04p0kLbWxovloaphAeAZjKcIaM=; b=BLEvkN4y7G72GnrjmO6tIUDLJPSGucfFWcSSOM12slbD2A8a7XAgPdF1hGOm6u0+eEzL5dBLkg9YF8ilAujpdN8OLOgKxAn6Yq2gVT+EYuChQGYqq/+UPrHrbfh438pU91j8nr6aUuEXL7kso4Nw0HUSvt9kLY/FY1xRCjZy/X2FTCeuRhcSp93TjtDcFXj/fZZV85bzwZFR1MFRDGi2ONKSIzkoE42vwQkWdcBGVVe7ceAXOTuLKfwGzHPEz8w5LfK2kWOrI42RNlXjab/U1oetIcU7njYZt4Pmzyu8VICxea4kDf8xFoj2NuaK/EVW0zJbadRM9DCk/OhLiyWeSw== 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=LE6FuAerqw6orzqzu04p0kLbWxovloaphAeAZjKcIaM=; b=aGq4e8hp4on7oFMNkaN+t3V0R5+zK0wHYv17LjdjizdNfjt6zslR2q71QZJ/50rdG654dZjotNnEq8JSONsmjt4KA3HVWJow41byPUVNl4AgZEgHvFrDnRbIh08rwomYdgjMKxbvd102MkuYcT1I/W4Kf6C9HVVBSjDZHkpO4iY= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 03/24] xen/arm: Introduce CONFIG_DEVICE_TREE_NUMA config option Date: Mon, 1 Jun 2026 07:47:33 +0900 Message-ID: <20260531224755.9481-4-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0065.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::14) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: a5947373-07bc-4148-3ce7-08debf66adab X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|7416014|376014|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: f1XizHRWDgi/q5p4k6ds/+pPedi3vcWp+sM4VUN/+aLxbew8Uj930n2ZvFqqIj3Ud0qVlYJTe0rDRbGpOodfjXXb1f+pq5BkTN0peJtjiCkXmry7R9RGnHwrL3V06KS5VkyVdkFhQBVc+U5JEn5T8s2YiUwTu5bGVUNGAMxTCFWzdmW1mOwrrx2cSueZUA61dyeg+n6bd+TiiqGrYysxi+Vuv0WXnZNE0FygQpYYjbmq0eAUi7P2OEyziA1T5B1pb8z+IweGs4/5Sxzy6Lh6O9nUAAmyl+lhMvqCijK68oSEnuEOKl57rI0+ndZfhPV88Kqon1S/t2KbgCoDj70NI6iLVM6YVfQOmz6vOQJ+4TyVZ4KbPQ1VN0871yzpQDO9KuyU2fEJkE1oENHGehwSzr4fpn9v5gZSoMZJWhVsNcWUBzdZV9EthiMaUceXvG7UBhLuQ6hnMMk8e734zruRBrix4OH1oNOrr9c5hjqErr48Wm+wYd35G4vzH76Hl/3I7rGgDTJJlHbgENTrpAk0DMs9ER/uf5b4usSPkp1tICEFFUESM15svO/FS/cPtuPf44UnHbjkY3o/LEhALpV4UH0V37bJOBJN+z/zudIywmz2Eq+ZeKAV8F7WQd5Z48IF6uD9zePonuR0qrccjrIQxOe8R2S0cuKY57GIbeudi0XIV/9++M7xXEtizJphAwbG 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)(10070799003)(1800799024)(366016)(7416014)(376014)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?7gvA4o/jo6nimHWCT+zPxvLfcPtG1TdyfBCmd1GEe6K3F4eXDwJQIP/MUr57?= =?us-ascii?Q?HOcqVd7m5Lev9OA92JavTAfttbp6wwWsgB8w7ozNCOGJpHMaYP4S27pnFjqw?= =?us-ascii?Q?ISfbx0u9hE3PbTgdnuv5nt16WVFQ93pCrbmf45OQd5U9SpYSMe1UxqKTwfzd?= =?us-ascii?Q?Va6v1V3U54EzCKQzTehOSkfFP0ZirPQkDlYnERF/39Fh7TCqjBd8rQcUKqNM?= =?us-ascii?Q?nc9zqNCHdREStgepD1IYS6rG20sDMboym9jQr0h3cEMk685wJ8xmeUWEYCnH?= =?us-ascii?Q?4h7gRWs2b1jQLUotCvfxWYouI14Rv95VGS1bUb9MUihMxqrw12GkCHWLFDFv?= =?us-ascii?Q?qMkmj96Zksc5dH0erAWOn6dhva/LSwq8NLOpaMCV3X7sux5vm72u4/+E/4yL?= =?us-ascii?Q?zcT+d+3RZ5Xtst9U5QlymH1N1XVYyjCLOr7Xzkji7ZwJWtjTZkwcM56M6lb1?= =?us-ascii?Q?6U/bvEErhZYEQn9dtsrHFg1f1Kw7BoJVjNA2cToKTq0lZVOzNJqbGuFrKgN9?= =?us-ascii?Q?NbatolF5R7qYLyNjBUoO8uwECfZPuOn74sdLldpAw875k8PUvrlc8kHvVlh6?= =?us-ascii?Q?rT9X9XLapIeXCEewqOPQjxN9O4vvd+dOwAxRyAurJf7k9rqfLm3F/+ypIsWr?= =?us-ascii?Q?/sq3ZHx0+Qj7EO7eyKU5EMea9CmiLAj3LBsTdlCVBZObjv26NCDZJY3JcrTr?= =?us-ascii?Q?dacGivbWQbu1gAW1ruDX1uPVp9Gq+dNKoqiEUj8kPwbVYJ6ZFBcqWTNpD4Dz?= =?us-ascii?Q?Y4czV1dDVT3U250tUFwKAPAr+tgrryPyDizJulEj0Mh59b2SJRYr5KpC0vRR?= =?us-ascii?Q?Up0T6jGES9Vc/Ly8RzwEVo3WTo0gN2MdiApG/2O3+uFJ4ac13edve8QgGyfx?= =?us-ascii?Q?a/djBZEt60ORXF+NzXlPiY8L4bVClORMlt8481vd6Ez7jz885cDeGb/s0jkG?= =?us-ascii?Q?NPvFbZHCvFnPHFo9B3uDmTuk8nVbTxCIrMhMy3lfTm4vTNA6N7XC5fTn4QJT?= =?us-ascii?Q?qBnZS6msbarRN0UQ/knBBq5DuXzf4QqrZIh7xcY+zFKTPepRg05np/BINjb5?= =?us-ascii?Q?/i6+ezFz+By6QUA8iwON1ecu0ONNtjtmTI0Lc1muQ3PeARg91KcqPlPCm+2d?= =?us-ascii?Q?655xTThYs4mq0/dLgC4T66qMPv0iK3K/mBmM6t5CaSCGcm2gedmj1MWc1GXY?= =?us-ascii?Q?ldlNj/kZOXlHOpz7PudMel9S48kNrImtAYUgwP/pTtmWfE7HNnvTCPRohH9x?= =?us-ascii?Q?L03y1xlJ+8doaWahm+0VRD6pkKmf3UmXLZ46jPYHfU13TDv9oRDXFNv+hssc?= =?us-ascii?Q?gB/Mu8mP2c02GTq68F2hFYsZKYclvmrkmHlmbUCqVNBG1QEHVpt18D/A6Jf+?= =?us-ascii?Q?A1pPedPtFWfNM36e9/QXmmZF8Go2BjoJXYZG1aAjwBLlyoccHJsJHLApFwkr?= =?us-ascii?Q?TjMmgpoYrRwg2IhsJWu+sKkq+/meAaHLqxENkeMh/Bl3Y/56NGF/11hXrzrR?= =?us-ascii?Q?92nCn7h68Xwg6FN4nJxmkTT9Y0vDMPVjUCxrxM8Wz4+ujJtT0faayCCi7GNM?= =?us-ascii?Q?k9BCQZW8JEoraCb8IUIb1ALPrHNfhONThlubC3dgV829DfDmZf5KXi/Vbkpi?= =?us-ascii?Q?EJxNpEP0oDeOu6EMR0P72o5HgDayZJrk6tR9ge0W6V8Nhmz44TkdBNRWLoNR?= =?us-ascii?Q?tSC7rAbByqtulqnmOLfgaYQGVWEa8EAA1L1eRix487SbrLGR7dLFEUX/5ko/?= =?us-ascii?Q?zSu/ew+JMd7z53vpAY/agaLk8GuVHidN7ADhqefI/SVsfSExNFd+Wl6IM8T5?= X-MS-Exchange-AntiSpam-MessageData-1: 6UfVOQeeUB0IvA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a5947373-07bc-4148-3ce7-08debf66adab X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:05.4972 (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: 67P3iszXhtee3EuLqWyZSE/XY51hoUz/q6FX+oYZa99h/+b+8nQww/mxyQeI6yJvJPeYcLWitl5xVCUPVCB42Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267694-89B7BA53-FDE4CDC2/0/0 X-purgate-type: clean X-purgate-size: 2722 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267725047158500 Content-Type: text/plain; charset="utf-8" Introduce the CONFIG_CONFIG_DEVICE_TREE_NUMA configuration option for Device Tree-based NUMA support. Selecting CONFIG_ARM_NUMA enables CONFIG_DEVICE_TREE_NUMA, which in turn 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/Kconfig | 8 ++++++++ xen/arch/arm/setup.c | 4 ++++ xen/arch/arm/smpboot.c | 2 ++ xen/common/Kconfig | 4 ++++ 4 files changed, 18 insertions(+) diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 79622b46a1..e67219e949 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -99,6 +99,14 @@ config MPU systems supporting EL2. (UNSUPPORTED) endchoice =20 +config ARM_NUMA + bool "Device tree based NUMA support (UNSUPPORTED)" if UNSUPPORTED + select DEVICE_TREE_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. + source "arch/Kconfig" =20 config ACPI 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..89fa7d10c7 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -188,6 +188,10 @@ config VM_EVENT config NEEDS_LIBELF bool =20 +config DEVICE_TREE_NUMA + select NUMA + bool + config NUMA bool =20 --=20 2.43.0 From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267725; cv=pass; d=zohomail.com; s=zohoarc; b=W3LWmP7AY9h/Gh+0FuOlDR0+CwEyTCWNtrogj0cciT1vfIZK9b9OzZXjk3mtaF5lXttUlNfbnh4Gr/xwqWcNb7WkwcJEeHHPpvsLpy5qGuRd1IGOfQhZ5KNqZLn7LuvYLzSLLA3y8JqOXJwI/3f7+kujL9xm+agQyoY4NS8ZgxI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267725; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WVIHzGP7xPG+QeB7F8sNCSVrdxqJXbQqFgu/3yZPit0=; b=Lnm7bovubOCUUvqhT9jBGg1NoyKg1NqVpUOHLU4BmmMK3i0EfrqciSGQ39i7VjdTeyfxnDXAh9o+XK9y2TKGgXU7oigMbwmRM8nDLM5v9Ouol7T01SOSr7Z1hzi0sFvG+zIaM8y9D8s7jnS+6ue6Nt0HMOPGqPV1L+nd6cPbN4E= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 178026772580072.19743836477016; Sun, 31 May 2026 15:48:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323454.1589152 (Exim 4.92) (envelope-from ) id 1wTox4-0004VL-D5; Sun, 31 May 2026 22:48:14 +0000 Received: by outflank-mailman (output) from mailman id 1323454.1589152; Sun, 31 May 2026 22:48:14 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox4-0004VE-9w; Sun, 31 May 2026 22:48:14 +0000 Received: by outflank-mailman (input) for mailman id 1323454; Sun, 31 May 2026 22:48:14 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox3-0004Uu-TJ for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:14 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTox3-00261G-AD for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:13 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-24 for ; Mon, 01 Jun 2026 00:48:12 +0200 Received: from [40.107.74.96] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaaa-2497-0a2a45090019-286b4a60e9a3-3 for ; Mon, 01 Jun 2026 00:48:12 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=kaCXhhX0s9QaqCwhpcb7oUWF7lFuuh04ls/ou7jyiX1WfNs/SjNyaH5xTQqhuSPHqTI1JnTNo3Wi2Q4wLSAhGFxgLGlsbjNCrAhzNkQEgvgYrqWSBkDZGfm423IOtYicxeTKQxwH67Ay624vrX6gbbHeVJuBrZzfeNpL//uLI1srIsIPz15dkzWHlVjxZZrm5Dlcn3SH5TvvkUscEkm3lRrgjEwfx5sUpUUoQZbGQ2gJdUlw8e4iuoGr7GsZBWOPOhlhG53by8FMO9aSJKNA93HAAPaW3o3o1c+qO0qO9TRC0rIbXdFdAn3yuo1oCHKio8mbRS/b2WyC8bEc2Ysj+Q== 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=JWow5qs0u1YptLeVYcOpSoeJUt4f1Xj4rE7cnjlofTS5B/y4PYVvGnLZ/hQxFuSSYRFmabRbk96bwvpu4erkvyV1OUrWUfGhU6ezcguJ4o7QE1XYRyX4w9oL/+2gwXfCCRheSGcU1ZriBUufXcHa3VnpvhyOTeCxGNT1HtswBz904NmjWU7D0LUz3a7cBKjOswsJ3v0IsACQS7gzaYHe5rOowW6XbsBoFZHORLDyx6g0nk+DMJMCBSxa5IHnzD8Ks+3qwymc+souAZNn/QB64BaD58uqGJTzWKCur9JrA54tcxlDDIwak6DNf4XWusI3fy/fLugv9/us6RKKTVtpgA== 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=fRZRkTtTEfWtId4Qgq6MmsseBIzf+s5Hz5s3yddKMCiNR4eCgDks4/HNfnvQZcPzMM7yjSpreXs77Hd7MqxgQ25csb4m1rctoenNXdn82ezknzrP2/VhJXGPUMGMcj2oVHg9qsKIZDBbtECsA5YkAztK2kt3KFGm624F9Ihg20o= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 04/24] xen/arm: Configure NUMA affinity for populated memory banks Date: Mon, 1 Jun 2026 07:47:34 +0900 Message-ID: <20260531224755.9481-5-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4P301CA0065.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:36a::14) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: eff574b1-6fe0-4d9d-227c-08debf66aedb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|7416014|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: nmF05ctm3WYYwhR4ulAh7a3Z9MiSR3afq87OJqnKhwu+ODeJtsOQDTTj+j7h96UhaIE/if2u+GQya86nB5yEFP4gAYtZXwBNhjDym0/8GUO3WBOVjyg/0VdvAciZHGhmzKwu2jNPMdbGtWA6komG67UQsRfvX8Kj+Tixq8DbfRqr4r5d0JGLveE2EwIqtF86uT9CZGrDwlPmPrpPijhdBlx1beQTchu5EAsj8pPVDdM6gZGiqWxHXgAYBwHGP5JdbZYr9onfQu76Szu1CQsDA80NRU3n3/YQMf82c8Oh29ChuhmdJQhJ5S94xMexqK93jqTlzz3NoqRlZa3Ww4jqXPeC8i1TfGM8jnQSFmJjcvzbtFCQlP+JGCE00fa2mQEa0pmUwxEGdGE/dBRdZytqPVksM0IL2gJqK5rdBGCoJg9ReAQ6DUT8AU6R5lqKcwou8Q4FX8SQu9Bc7vpKj3TOHaIQSlNPh+SiDwZflzJ/QyZ79utOiTpkpKFaRVfpje7Um0wOTRoyoxBpZanIdwS5Be2kIGx5/sFeB2aqlD1B9G5fQDWBNTTVzlFVkBpFtVpMMeecAJq467coL+oBjvAzd2P33LQBpT4PxmfmWd/+GssnvnzOhRRJLneR/CjoRRCL6Y8hUGUyJrUipJjUSB4b6guOU/KJYc8wWtktvqofCM1HaRsD7jkbonJ1c7Wt6qw0 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)(10070799003)(1800799024)(366016)(7416014)(376014)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?108GtXEKqCTHLflj7hVMOK503QlBOE9bmZTwJp9TvhfoFDqtfekkF9TVZAh5?= =?us-ascii?Q?nvZQByh8+4F8sduNHl/R7zNR1Jgh+QcpUD7Rrvl0nGEtCg53LBbHe0AnCH7l?= =?us-ascii?Q?cZksLeleD+MjfEoYWlLMJ1f/Hqp1Um6J1P8oDiRvwWKMaQxfsl9+jL/yCwHd?= =?us-ascii?Q?mUowfuIMH5XAKAnIV3rVaff3Mr1M6mnzzZAHeyLaBOxEyngO6LQExSBlxkpp?= =?us-ascii?Q?r8a9MU0ekE8mVl2rDnU+giU8VMOuG6hrA5IL9eZXln6NaicIfEL792u/2p1o?= =?us-ascii?Q?AOKbUOVMIhekINCApR9Cgu28seSQscJyRdOHsk6iDz4hGMu4n43GuEQEF7cz?= =?us-ascii?Q?H9xZ+nKc8IW/V3Sykr3VVLew9sDuy0B+N4ceauMJPj09k0c0M7FAC/t4SyrB?= =?us-ascii?Q?8uswg13sCr+qV16Aw6aZ1kOvoVh5WBvcoXlQM+OnKCBrhu0n7l28CDimzfWG?= =?us-ascii?Q?Czv+q5y+sOOxd4TsGW8DidRYhkJZ3/z4kmFwcznzD56KzVIpgzCMZ8kZ6juI?= =?us-ascii?Q?EJK4+hIFjrd4TjYq/PlbPUFPCr6POI8P8IIHMPDRyWvIIezCX29cGrOEP25W?= =?us-ascii?Q?rZhH3r2AhgXnBON+olpssX4/6kOopJvG4nAWfIntsIxuDbVw660blRTeda7n?= =?us-ascii?Q?ODgTlDjHzcqJu5HRCJJu9K3Hv1BeZrEJ7BlPKxNmXz9+gP+bEyzmTqOoDYzD?= =?us-ascii?Q?LVFPcQ0W2ciTWO/J0w6N3mqswfgiWC/3KJpfDN8eY4JCFyJlDHViGTZ64qVq?= =?us-ascii?Q?yE45vR+hQ1WQ3hCRj21jFcohVjeuLx44JeJ5SMrK0/UWN2bjP+u4J4z7FMcX?= =?us-ascii?Q?EvRbEo0NTacvCNHjtWqOw7cnFdTUpn7YUClP0ZgS7csPEXK+C8UloStH9tcQ?= =?us-ascii?Q?a8fLQkMu3qw/JjPw12arfdNFMmcoCQnR7Xtpkb4aiXvJNkuz7eyf+8zxhf2t?= =?us-ascii?Q?sb3FvB+22H6G52RVj3IleTVScbVUMEYRS7iGKzPbhUcRSS7w7+ZJDna+aVWZ?= =?us-ascii?Q?J5DjtShvaOscgkVA/NEsNbRPmI6o0Rmen7lUBrYk7P49c8aD5QaKdpGMz4O7?= =?us-ascii?Q?sXGTOSWMBOiYn0DGHNiqF3nQgtfIbUApgMZL/Ho5GIfVqhwZYTPTaPFCgcap?= =?us-ascii?Q?gXB//GlLRh9odUD5l8dTROxLHBMzCPgb8c0ubgD8E7HKIpyxwm5lMjf21ROo?= =?us-ascii?Q?rkia0HV6vppyS+9KtKbSBjINCqvpy+flZoyqUi6n60Zhv2vBOt3NAEpVIDfM?= =?us-ascii?Q?gYQivcuEwlC/c6BaWL5WJey73iMYKYOLTa/973Ur02JmIdQbldI/VioIVZsu?= =?us-ascii?Q?XJkC/swgedCFRbl5wNnY7Yw4OCX59bzlnSyfYYNDAVHQVDVB1wcN098H7BCt?= =?us-ascii?Q?7drgA8X8kkmaFU4uOUexR6Y+m/pnS8xRYG0HG3JjxK5Undwboz4kRdjrwVWh?= =?us-ascii?Q?UhRXA1brrtCjdkiD+qMv62PyiXlWpMzbliCUeZHxtGJft3P2mRUex4F+Dab5?= =?us-ascii?Q?aYcf7N6MQpUFpLXnFSy8Q5PhFCYa//WYyHi8HmwH342slLquU5+oVjyNzo01?= =?us-ascii?Q?7ca35SOtfbkaSvzhypZzbD0ouWy4rtW7lLRVyLmFCEG/3KQ/CZWQcXdTW2br?= =?us-ascii?Q?lF2tDWEFSP3jAJTTw6EW9GhLQepuIV91nyjSU4/izQGdvPcUmLqWHZsSd2vQ?= =?us-ascii?Q?DYtLe08aNLSSvzcSREn/eoeoz8DSnrfJ2WSHirSYp1Vh+p/3EXxluX/3ZWT4?= =?us-ascii?Q?c9ImvE4VHC17kKF87E54eCC2DkJLVX9FiPT/HGmOqcte+FCWhtz/dakTWeiN?= X-MS-Exchange-AntiSpam-MessageData-1: QyWxSkM8Y3mjTw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: eff574b1-6fe0-4d9d-227c-08debf66aedb X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:07.5845 (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: QDI3Pv4L/moz2VlZCEeY4g//rZeuSu6IYWM33iw9nEBKJXoRjeSb95hUFOO1b+tAIg6NakdNDp8i0NpwXYGj9A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267692-40D67A53-CD208037/0/0 X-purgate-type: clean X-purgate-size: 6123 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267728239154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267725; cv=pass; d=zohomail.com; s=zohoarc; b=M52FPjBdedZuZ0OlkVMzbIE7WwS0P846wfo/qDUAf0uIYiL9m7WDho1AeXukGvzVGP0b7bihsJaKLVGn1QEa3y1jbioWo2ChOIrVKB3g16lGEUWsxopEk+U8Y93DBvSwlG3PLsRb/wznIE/T3AG0DbuMKhHBpjzxX06kQh7NRQY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267725; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/vwA3Er90o7oXhAI2Lat0t7tLEuFxyB9jiPPQO/KILk=; b=ltSFO4ebNOY39AGAZ0f9UOsiQtWlHD+hEn3cw2aLUOOhvieozBqmuR3KAJNSfns5nYGS14sXs9veKvNc7p2IenxNsMR4DXOjimX2nCFfF15ijKL42noYV7yhVXds73oGZo4nk1Oo4P4n65v+6j1fy49w/nLKomCS0HaDbhETUAw= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267725646516.5252003526294; Sun, 31 May 2026 15:48:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323456.1589170 (Exim 4.92) (envelope-from ) id 1wTox7-0004xf-1n; Sun, 31 May 2026 22:48:17 +0000 Received: by outflank-mailman (output) from mailman id 1323456.1589170; Sun, 31 May 2026 22:48: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 1wTox6-0004xW-UZ; Sun, 31 May 2026 22:48:16 +0000 Received: by outflank-mailman (input) for mailman id 1323456; Sun, 31 May 2026 22:48:16 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox5-0004ju-TD for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:16 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTox5-00261G-9z for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:15 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-28 for ; Mon, 01 Jun 2026 00:48:15 +0200 Received: from [40.107.74.96] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaaa-2497-0a2a45090019-286b4a60e9a3-5 for ; Mon, 01 Jun 2026 00:48:15 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=T6d9JGEkyw/BrDUnWuDvXFwBXer/ly2X3iAyIers98Dh6mV8C/bya2PLMZUvu+D7doNgMhMbid6br0NdvQaegMsqBR0lrAM90Ws9mfZVqTMQ7KTJuvKdHbdPJG+n+3XOKjCei+nZBzrGz+PJopQHZc+bAVQyE945drbc3YPYqFVNzEUAzhQNeCdrcWoyiASv8EBSJqnMB4CjRgQ+qhoiOU+XFJpiopnjI+ho+/z8ayh/GoTPLMLaNAFVB7o3Wjn3VMC1QDBkmU8izxu1p+9GzC1rydYPv9OxdGM4RHMqjTjrMV9pQxOVILBB/pGTo+Vt0Q/JmlSpuVCSYJxpEMuNZA== 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=RgSqVc/5o0d1geoZc+qYFEc7W4fZ7MbxzmyBttKdgVhbVJ86BFTOTM88AreEhgyn4NANPfO6gMuviDndPXsGU6xFaox/JVyWEhuCegS1catsNBXlo/G2Lse6f8dq6PKDY6NjDOUGelxqXSuG8s+9byuhC7JtvpKIvjSMn/hbxTLFbOFf77PJzPDqGGYA8P7gSfqaP9ELxmAUfi8Cv/XYt8XTCLKBpsj/uTUOpZcIFlpW2Ng0ob/4VJAlAe9iOJjPoup94XBfQkTbpqx1BzxzUCs7mA6PuLxobo5CeUR+SYOOSVhR5vFMzvILr9hqboxxb128ZepyR6GlPZLVvhv5hw== 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=e5Q8syky6SFTRBzKgf+EfcoPHCEXrhepXWBOX4wTI96SwHvMJceD4WezKmZ27sEoj6Ic3pzOwOxDdmxeKIbNlSQbwWtp+/l68l1HJOpQnedPfdCs/uSThU1xjLSDLKMa3XtZsLczYwLYwbdZbojqp7cLPfOe4Y3Btv9QR49xfI4= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 05/24] xen/arm: Map populated CPUs to their respective NUMA nodes Date: Mon, 1 Jun 2026 07:47:35 +0900 Message-ID: <20260531224755.9481-6-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0032.jpnprd01.prod.outlook.com (2603:1096:405:2bd::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: a895a406-e2ca-4721-0e78-08debf66b00c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: LybIP4KPulTMoUS9xZL7uiv88URmidmsMTSvFMySXk/dUI1MsAzUzEFD6PuU1SMeTTAj3xvJF7LrtM5qHt3zJ+PuuJMfxOBGbwkAMx6t5thJtc4q9NVgeWYRxbggGaxF36j95UEBGvDWYl/GvAoOgfNXS038H8eYLIwn7h29sszz94s0lRnRFbN15Y0T0nqPrQid1J9u9j3HdheOgv2B/aZWVttx7nFbQ/k7DMbpxWtZTeTo9b23cTGxJKTg+ToA0uu+nF/S42LlRXsjpv/wlktAjo6q8WDcZ/xK9sSRnul87F+skY7at+FV4uwFo+Vwgkt+mDLBf4hnJH9nj0mmtIoC6gSW1WBNUf4x9+luhy+OHH20eXyRX+B3EX5JHYqv13zHScizyln0ypinoCojgIn2rzZOA9or4FfWeQbP+LnnV1q2vJy/iYwiHeGB7739uKZbWLl48/HkytiwXVHH0xElj9y+CextyLbaLB1UeIX6SXVFcx269K4NJXa9Z3kL0AzOlxVGnye3JPV/T3TCywkGnEDf16Plkssc6jUtDU/A/ULJaODA11r95EManVwcSS6+Fd//0LZ91q49UTSFAofa49r7wc4nKIjM/OqT+BdnZIKCWTP6dXfHQBJDXfNn1vCmEoFkK/YNqxrZfoYscFJP71n0KWuYvDFyIUXhRxRjqqX/akGg55WDZgJYM3rF 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)(10070799003)(1800799024)(366016)(376014)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?xNUynnJQ1rcU7Lyq6jH/CGRzzZEEoG3mMlplHanuMKoUxzOWFwBCsfHhRzgu?= =?us-ascii?Q?A7VgLVYwYAW3a3GSX1Rbj/+13wS+Blym/1eImwdTM4Tt8kQ2egJCaL1jxLsB?= =?us-ascii?Q?2aDBJgC5x83pG61JcBR2w0sDqfcn5zTAUeSymzleHKBYTGgmvilPZexg+L7a?= =?us-ascii?Q?f9gX9TnTYq/yF+O6KdEc5l9jPoZDAPC1vkNZBUEEKZKRyBmWcMLDFAzFzLpC?= =?us-ascii?Q?bUEk0qVDh2bTW9ta4SbCAxBM1fBKw5woMCz0//JNrYmbkRpTaQY/VZNQOMbA?= =?us-ascii?Q?mwKWN+y9BkUqQyiSd36BOKk/yIaz4ykfLVYW6UdDzcj7B/CB4pZsCmzjv0/u?= =?us-ascii?Q?dsEuMxHnd929yHbcMMrCQs4T1rxUsBZkF6/NrW6RZJF3jB2UK7JuDhJKZw5K?= =?us-ascii?Q?KVjNSQSCeV/mFIGwr1SDQgpHKQZ5IJB+75azyoKKuRVZ0tn2ghamLm1h+cWO?= =?us-ascii?Q?ufPgzGOWtXDobAAJ5qgsTCi1hFtDSq24GrME5cSjWoTbtG+40DNp1iRvlAjZ?= =?us-ascii?Q?GdGkwbOLNPmMdNm0BmTy32mxQQB5QJLQhhd/pSQUVZOZMMsFpxUdtamg6RvV?= =?us-ascii?Q?cw3LzFO0e5NJy5jTfaNYSwDKrhxA7RIKVaGU9kSStBqx1AtfqLWG1TN06wMY?= =?us-ascii?Q?+faVBi+DCXVvmX5oPML2yUBGY9TQjV9rMnghHjGpHkXT2aHbNpMZa8miRlKI?= =?us-ascii?Q?2ryHAzM8f8VJW0prV3Ll4nCUgukgjXmy0wv5PMkGcAVnoUxzF0E16SnFKVDD?= =?us-ascii?Q?OqaZxtWm+DWhaSZNwnk8dXCDzno114dB+bxqtlii2lTPGzjPmrhM9Pj4aBhD?= =?us-ascii?Q?C3D1/YaQd9UOZ9aaqIPaDB7kG9AypOAHBWNJe+JO2C7wIB6WRPwQyzlSKHvn?= =?us-ascii?Q?AKpTenm8mVcgMFTx/ulF/JKU7pBcqC+ZVksrrvBhi6bro+8fT2qdGSOALPGn?= =?us-ascii?Q?MQ/av4BSuDFmvG0wTXo01j3+dLdCgqlv8IALlvo7ozDVIRR86w9JMLNe6Jon?= =?us-ascii?Q?FkY1iEAoS8fzY2M62zigUcv/TX/m9N2qL7cfW5qkB859cbtwX3tpQzP4pQib?= =?us-ascii?Q?KLtFHvYOM59VzSzRWFIjznNQR6BCabGIy48CxCmKco61+XBJ7blCjL4iiCSw?= =?us-ascii?Q?bKHlrYwLjhJjM+JByIkvE9/zfv6CFgq9CeuM/gX1xBnHfloYQ76p9qp9qEJD?= =?us-ascii?Q?jluFaMNAOigp8Rgghz3+TbswTyrpNjpqGgALmFukFh+3QdhlaqZ4bOfkMdtG?= =?us-ascii?Q?rG+4W2dS5bfQ7MOx6mkLGeluQVyfbJlKCQHkqO1+YGAKvRFb6yUwA8O+zdlj?= =?us-ascii?Q?c/INw+X4H9MKsD4UDMAerZz1oKHEFMra4osXwGtVcdXa+CwnnmNgeaO+r5R0?= =?us-ascii?Q?3h3c52AAPj54CU5JQInsPtstXDCbNh3FRj0nOKQnJz1+b1RzL68fyMHopwS3?= =?us-ascii?Q?P5GHRHPzezlH7+UYoDwiTysiKnzLKHgbI4Bh8Gx4M7ArrNLRkJlmD1e99LVi?= =?us-ascii?Q?6sLo1B5Li8AFnyMjSoRB9CRju1VdliPl0YcK8GscIgO/A1QNCH0yS0/sLJSC?= =?us-ascii?Q?HAYJKTqoQXs+c2TLoN2+VA3jJV7VC9Fq0dKz9qzvaDRfYEr4XYPptrcJtUJE?= =?us-ascii?Q?uu3OOog2QfeJSq2+I7/u8BBGSpsbGwStN20RvNx2r9lnGZfpS9vS5dgHjN0o?= =?us-ascii?Q?3hIrKcpoGTGVQ91dU2WwjfKj7R60oPdsHJ9HzRjoAC9Y5ZFi/0iEt198ibwm?= =?us-ascii?Q?6XFzJSAwAeGm/3NV1hiXMWFyOJ1g0NAMfRRYmN1ZLuTyIuG2yu+fFPuP8uNo?= X-MS-Exchange-AntiSpam-MessageData-1: ZErMP6iOjxd/5Q== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: a895a406-e2ca-4721-0e78-08debf66b00c X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:09.4966 (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: /hBphmo/iXEE+Xc/+WD06P5Y4F+tCYXN02wbD50GmZs4B6jQ7fDF4VFfVY9l64inOkH48AUoygYxSokrT7Jevg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267695-8A18BA53-526B891F/0/0 X-purgate-type: clean X-purgate-size: 1552 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267728253154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267730; cv=pass; d=zohomail.com; s=zohoarc; b=PX5KVt+fgciRnkp7kCdwlgX5vzxE8hPGdx33Lmy9SztRoFX1ImxhDUpMPbjK8jb1cph+MeCfcyCQzHajUk91WonvRvmB4JBdxSv9QBT4OJpW1Wqk4wilLlGB2p3E1J66lF5rg17j2ZYaCuYM2PQ/TohPWjVmlUVDlXJJnPGq2mg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267730; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=efsYPuOFBJuGq5l6y14uP1QzlvYcMA2MZ/bYJIg+6Cc=; b=i0o4Cf6betbDBJWe+2IN8yRvo6JMwm+0nz6qIWrJ5W9G2Q6uE0VjI3tyHCMx48J+spjESMMuLNUnuLHQKYUZMsSQov1YTN288YOChyDU66Xa02Tvyoq2frfwgo33hZZUJ0efx0FE/Nfj/DRu8DmCTpWHvbraWAKIK3v5S/GUR7A= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267730727888.8009430601433; Sun, 31 May 2026 15:48:50 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323457.1589180 (Exim 4.92) (envelope-from ) id 1wTox9-0005E3-AS; Sun, 31 May 2026 22:48:19 +0000 Received: by outflank-mailman (output) from mailman id 1323457.1589180; Sun, 31 May 2026 22:48: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 1wTox9-0005Dr-6n; Sun, 31 May 2026 22:48:19 +0000 Received: by outflank-mailman (input) for mailman id 1323457; Sun, 31 May 2026 22:48:17 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox7-0004xT-40 for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:17 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTox6-00261G-H2 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:16 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-30 for ; Mon, 01 Jun 2026 00:48:16 +0200 Received: from [40.107.74.96] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaaa-2497-0a2a45090019-286b4a60e9a3-6 for ; Mon, 01 Jun 2026 00:48:16 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:11 +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.0071.015; Sun, 31 May 2026 22:48:11 +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=N0JIxC0tnbT34W8QBXrZVxvDy/jnjSZMgJdRjOn9gX/WOp3LEoMauN3OZS115ykkerl0HfeGsroKNmqnjSc5p+i3zZEUUa95iBJvfaDE4CtHqIQcaS4vnEeHigiUCkWPxNC4GzMKPRqJRQjV/hcWzbY+4r48KGIWYu3VTyloRryjOwb82weF8dUGBRfxGN0kWZvuFyYgI+bsfYntRTBkKiD4p663Sae4VELvB7SJzqNLGb8vNlGqRosMSoioENW1nUfcSNXGU2CLCI3Dcrxf76CQqFicyzh1MiiIGcIf3v4om1ePwvZQcF0UBHuujRPf6iR+xwUZSKDY9RKpGM6E2A== 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=TAkTfzAdE862CnvJ1EFy2a1OvR2EbdxK/mO9J/GQy3/u6wpnQCIA91QRoZPgztIL3wUJMEFiDKjKNU8eNAmiVTw3OfhbxhuCjkMwm29DP3R8FSSQ9rEfT/CntjcMw+04EqPeWbFK8CK6gOuT72dDXAoIS1Xe6Zjo6SafnUz9AWXiAvWsd6ceq/fLXDlEgapER9PuzcUptl46f4iOCO2odTFhShkNXnBYx1EU+faroIAvyLjU9sd6LlUhvmB+JUHjebIY0Ed0jWpEl9gQX902CRaxmMUzGVxdM7PUxUBumCNDiwSMqsiihp50mWac2qF9GklQgdpKogx72Y2grGbEdg== 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=HRDLv86iCthKlCcpM0Vx+1Qct936BUJVDKiTaQ+FE6Gdag/bkQgFEdzkb2b9qxRUjtg6xe1p2ANCWsl9E9n3Fzxaup7ycYHVC1rRikE9Jqt7/Y47GuS+jFC1tpixI7wwHIRUKs0SuOzmEr9ESqMRe0bBDiM2MtLiLAhhKvo1i3A= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 06/24] xen/device-tree: Read NUMA node distance from Device Tree 'distance-map' Date: Mon, 1 Jun 2026 07:47:36 +0900 Message-ID: <20260531224755.9481-7-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0037.jpnprd01.prod.outlook.com (2603:1096:405:2bd::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: ff31399b-cac5-43ef-00f6-08debf66b13a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|7416014|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: zjxKymjC/PiKco62V6KdraLWGR/woB8ZfiCMM8w/wbm1Nql0fkCZlQb38UkpQeeminjUI6J+hdq5Fp6C73tgDapNb9V4KLp+55sajlrhV5C4K5yS6CwSeL9fd0tYJLQpIcti7uAXR9Ejr4dnHo+nPmH1VeZmXFC6vYHRik1qCDAE61QqExzJgh4xo3G0DkjkSdd+n5j8WYR4o5Ldze+lxOUeeubRVPkLx0CHeOlxGAaaSw0X5lPNEkEyDZCQfS2DWqHYqomROWTGuXZP3IocfbOmbPg4X3MCdSUK1A/4PpuLO1HD7S5+86O5qgPhNXjRnItDWIIMe0uxiB88tZWD3vrunCDhCSlfbWO80DaovXTCCSFFiH5arlXMzIN8h0oUD6BB0qaRneCvQGc1oQlBjFmOr3e8Eddd89TfKQEgQCPdcovqPLhWZQ8FYyT4jge98X0t5+wdD+D1aYSftXFxLbQodbIlPVVmOHunlri5vAtqXPb0fMzHkA9fbUGIYq6t0SNwu9UqSKXI3JaB8B+9hC7ZZsEIPeMuV/YJZ/shykLVnB0uUqjyRkeJ+OV14dfSvgOwa+BhkwdkVIA+1u1U5aZrZPuyVyib+vbg98t9hCP9FgPGUB1MK9ZMYvxxxQlsHzuJlPq7oAtlTTUx5BwYWojzP4A6Pd0lvi33ilInCwr2NMgS/Yiy8fYIR/mCUIjE 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)(10070799003)(1800799024)(366016)(7416014)(376014)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?HrM4xAXfiL05nb9J+RU//xhkP9woLRM2QBDG0cppY5I70ZS5qibepTXahMWe?= =?us-ascii?Q?1ywaqAi9secucJfQygIkYuPITGY+XK8O3D7PDJCSmxWZSDgikZlSmR3Z3c3Y?= =?us-ascii?Q?KS35z6z3l8ZtzAt8AncLuw98K8VNDv3IEUt8gB0O1MNgsyyyzk3f7Qagf9SD?= =?us-ascii?Q?REixOEFZB062/aBX9ymTWodO193vtmDW92uVhc2gdhV4JNZo/5IE2FY0TmRO?= =?us-ascii?Q?xo/PmE0gaNcGaPSBWEe+yotE7F48tkiAftBsx7drYPQ6+1eoMbfPbSJVkVRP?= =?us-ascii?Q?pcnncPDYpNpqhBXY2mOgIQ4o5QB7+NX00ibpKY7Z6iNDDc8I9bP38LDLualq?= =?us-ascii?Q?NyQnnb1PPlXw7q6UwWxRPRC2PoWLV66uMxHnYGbMmxGB4VSSUlEBd+KKRxZk?= =?us-ascii?Q?nCPCRo3iw3/g/qPpP5i7jLKKsHluVInmDRJMLe8oSGzx0/ZGyqlpU/bQpwob?= =?us-ascii?Q?9XGlmmDdCrrgocy40tCLEPUao+jBt4dXMVcJdEhhoxQQkF0xuyJ6qM5XEvLz?= =?us-ascii?Q?6X7GncTDirdPyguiAsMYihs9jOydQ/2nQtV1NgNKNFZwJIigit9M6QxfXJGZ?= =?us-ascii?Q?LZx6IE2aA2Fa1uazwis8yel17kMMrMt0xCwc/Bndja7ZJJyphBCEJnSdLG04?= =?us-ascii?Q?bEkfge+x0xeqGXGIkGXh+2FT//7vKok8cWRoXA8E46FN0R1p1Qkiy0FSeTZs?= =?us-ascii?Q?f7RLmaVeLAKkJWhFi/OvUlqo2ticzRBl6XGJF8bud0bq905mrnienqi1IrJa?= =?us-ascii?Q?c65SELpmYd2IueJYiKQgycBWXUjAr5LRSwuhNToP2ps9vPGX1u+F0AZabuKo?= =?us-ascii?Q?CFu6iH8hMfH2HQisrNxISVCh3EM9xRp+pz32z208mOI1ey4heTin0vAvm3tj?= =?us-ascii?Q?DVb9N3vn2u5Nba9U8HwRfj5WUxi0Rh+kYwWyjQlLdyIT5OAZ2/r+8VdOOdXz?= =?us-ascii?Q?0RD3ga6hmvXfBVBG0ZkcM401p6jiYc5zVA7V/EnEWbRKICygILKoIRgbKPOC?= =?us-ascii?Q?jZwbCsFalr2YeHfZ3uPU+FYq1ZgmIG3OIJbeU61Lo7m+5Q2WXIQYDcuMJn6J?= =?us-ascii?Q?dvWMutDb8LNxd903fG9qYJF+8eAwvY97Pw2cMWeZYfVNJfxAvqQwN4WFtfeC?= =?us-ascii?Q?qR7Zr8eNpDcNjuBYIwnXm/kCCMmgEVrCgXVgzAVkxKWITt5nR7dfxZ8vQvq1?= =?us-ascii?Q?zNuGT3XgarDaXeZCq5JkP8q7NaJ6Sa1Tmq/GQiQ/JS7Y86NnmyKjwcyiBxVT?= =?us-ascii?Q?CPkd9rje4l+OfRuIvrvJKh5NId9L5eEXmWKV0rLwIpQDup3/ATfpzWNRunF9?= =?us-ascii?Q?YzoHaEGoNpO5wHdwTJq7JWN76tntHDNk4qRu+xvxtMKkqb35CeDu3/Y/oMOk?= =?us-ascii?Q?lOVVM0Qew9VMT2pjzeJ7XD0ORs6YYDSUUGvb2Sjk/kGcAaXAQkXIV9Sooi2m?= =?us-ascii?Q?fqcp6EiSG5p2qcmmLzVvCFivX4yHXMiTSt9u8YdickPaOFJl4U0l9DQRjypY?= =?us-ascii?Q?mUoQQ2wW3dLscfm98zjKkJ2/v95D2AUYvJHDWA24rAuOshoYrUD/4QA8le8S?= =?us-ascii?Q?svnPsCX0NpALmxRJFlSZkIu5n3r7XfB9f4k+iHxMSnMI35o4tyUq1JY9B4gf?= =?us-ascii?Q?AoacCW3rVstNm9fYNCwavxIqaUyCYekyzijpGC3wOe+pihe9L+F6OVO9AEQt?= =?us-ascii?Q?0wuUvY6K3dZ3HZ85kFkzUc/OGslJPIMRVyd+627EgKIb0dF9gJsUBQe4bkpF?= =?us-ascii?Q?zkWylNkdf4qkEMWJiN2y8vEe2MNQvKHcZMZhk+sz2SAK9Rhs0WgcW1omXMbu?= X-MS-Exchange-AntiSpam-MessageData-1: O9mNyeCVcLVd+w== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: ff31399b-cac5-43ef-00f6-08debf66b13a X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:11.4743 (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: 6vtR76wd0oCjk5i31crvEXjaRXCb1+poVcRssGC5yfFkuT9HCQFJshRu0a5eNgqZuS1wuNz7XCESb6yZK1LOyA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267696-8AB8EA53-544C80EA/0/0 X-purgate-type: clean X-purgate-size: 4442 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267732353154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267724; cv=pass; d=zohomail.com; s=zohoarc; b=EuBcqtE3wPCUrO0RIbqe7X0E5XtK3oCS8oGUYuF5dwlN9I8nZ/VvsyKXsU1J0eXphgbVkxGvwj+izf0eiJ/Tu88zLvx+cGOHDG/vSNLnJR7H1Og9VCi6gCiSTL4d4AP3WUVoDgmBFY4f0+GNUksJ7Fa+qzeR84k4Z9YUcxfzyFY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267724; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=09ikRB9p2K6n1IXPIFviZ3O5z7V9MxCaGsEM2APynDM=; b=PhCgmAXSiJFlyWZ19bh4rYudiUb0XNehY4zLVWj9nMXnPyA1ubFAaXZ6TlmDSRYQe7FHrZNinkhwA0x0FJMgKepH7jbMmVIhnufgbN2OX/PdEF20RcXJdux6VaOvxoqKG0EvxCb28G/kmW/bLrfJJ4AHjvDCEQr02r11np/boxM= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267724153611.4194867722077; Sun, 31 May 2026 15:48:44 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323458.1589189 (Exim 4.92) (envelope-from ) id 1wToxA-0005U2-M4; Sun, 31 May 2026 22:48:20 +0000 Received: by outflank-mailman (output) from mailman id 1323458.1589189; Sun, 31 May 2026 22:48:20 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxA-0005TX-HE; Sun, 31 May 2026 22:48:20 +0000 Received: by outflank-mailman (input) for mailman id 1323458; Sun, 31 May 2026 22:48:18 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wTox8-00059X-4Q for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:18 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wTox7-00261G-HE for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:17 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-32 for ; Mon, 01 Jun 2026 00:48:17 +0200 Received: from [40.107.74.96] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbaaa-2497-0a2a45090019-286b4a60e9a3-7 for ; Mon, 01 Jun 2026 00:48:17 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:13 +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.0071.015; Sun, 31 May 2026 22:48:13 +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=Od+V9dmP565wnVYERljt2oJQdklz9OYZg92vI+8vrSNdciRXaicb6XBQ16VJQjQbRVOU+kRlN6bl7dqDEOGwRMZdv4mWgLjHq4Mg2mNvEt9mLX6p+BYqobyhQWr9bhcWVOvtUI4D4ChgOQupEAc5F9t/7o1Er4a9rg9zBhHD6kvXBHRpQ8LZM/GjRas7LZVQvKNga3TQuftEfJXqWUu95aj3Z+uOSHfVx41k8VmcYw/F63NDbE8k71BgHC0purSTkfoiTJN3VnayaGIe81JdoveWVY0M03Cmu5/ADPduOsJ91ZX9suM/YAA1ob75kFavuQaeO8U8Ix8tzHcBXUwv0g== 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=09ikRB9p2K6n1IXPIFviZ3O5z7V9MxCaGsEM2APynDM=; b=DRR5+wra/23dHP4cMmtC+pj1zrg0liXjoz1tvA3XPmKHVZ2kb3x7j3/8f9WCVInDsY7SJ2KjqvWK+777GV7sz3MGtXesl2a/bJfd08cGHUGl+AqRXLFWhNgk3a0AA/q8qI+nrvkvO7+DjOdczQiQ1dOSP+5rH5rj3y2QaEn/v/aNEbIpjmhjv0lEhUsYuasAx7RFdAnkJx90lSD6GWNad5VKP/X2ithAH35WXGGWJurHk/D3nfNFhdFd9pZobFxnu/MpaVRtFt5BLeP1rY2fDESnL3tSSse83CJ6CM/D/7F8FhWEKP8Hzl5zF+qbpxTV0AjVzfjk292EcQNprfbSNg== 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=09ikRB9p2K6n1IXPIFviZ3O5z7V9MxCaGsEM2APynDM=; b=r5T84K1YW8aj+HqmUr66H7bKEudgDIelq8grofprLWHrVzFYUGuee+nGMItzpfhn8Hsz2lWoNK84up5eYjJUOYwuWvK+MuGPQKcX5HFx3znnSnISaZtoFgw9OduSRVT1yKyfzC3its8wgFHk9wllLEV6srP3F+X/LVv2rHw3jGU= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 07/24] xen/device-tree: Parse 'cpu-map' node for CPU topology exploration Date: Mon, 1 Jun 2026 07:47:37 +0900 Message-ID: <20260531224755.9481-8-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0032.jpnprd01.prod.outlook.com (2603:1096:405:2bd::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: 0beea134-44a3-46d6-b48b-08debf66b257 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|7416014|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: RA+mYr1790mNnsV72laVkOZ4rNPvbmcQIIxI/GHNqfERuPT6pspYqACd1OkOBIqN5cfU1QnNwn3ilJnYqyc2g/K9pN89cOjpuSmDrxZK26hcLKxKN94e8JW7n7I5xfy9cDM5AsWqhqsEbPQsOlyoUba4iBMMW1ltVZFr+paS6bYOjP74Hh+QiSrGvYlIwIkjrvWr0uDcJveswgVraj196vIE8yHhcPX9Go/M5cHfsfmT7muTw2Wn0z+yT5M+sh7kFOaNaiYKudMpB1Ni9R54MTcr/TfH2vaTKmXNJHTniHvUf/FkYb56eUVVACmVwdaEYTx+qivK+Z2wkz+ZNuXZ59TA8rDJNzvNdZO7Xlp2m6sC2Hqvuf8xU5WHyb88jRHqU4XCixNm59wJQgJFvnbHjtibjqDCv9QH/ibbqouHK6cVBhZEXSMB3HwWS2mXGA+lTFOxoFL/jEQZmYcgfRGno1falLksR3m02ScBOe/jtW9Zyg/NdBxIv3498LjBLNCschMW0ZAtnYo+8eGzLr6dh62xkdKHJdkh8YaHsyks6cPfSyw/0/kGCBXf66EqXJ3rKEhZ/sUxgCMFktZHcOM9Wq/3EkCbT8p8IYwKK9A8ebUmLzlqYAmmscnv8Lr5s3Uo7C6s1mcGw55HnUqx5bkGPr6PEnrRKO6R9CFXeDwq7l0fTAa5uw4ynIyUBZmJQS84 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)(10070799003)(1800799024)(366016)(7416014)(376014)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?CGnrTKkN2CyW/JrNmm53ZkVEw9mHwkDNBw05XuVDN/WNjJ6b+5DJKvT7DH2i?= =?us-ascii?Q?POGVq9yFelU+QTLF0nIzbkDPxkf39HxzL6CklkVv3szlZxejfDmz40MF1BfK?= =?us-ascii?Q?ZMcmGYK67s3H70MsxaM7BzDPNVTvIVho/S5po/9VBWdtzTDsn616+LALSrLH?= =?us-ascii?Q?IC4lZQ5d3CJ76lIkFAhQU8aNqNtSnCalV5ivN6RwCBLp+Jgdhg+RJgDNElGi?= =?us-ascii?Q?j5UyNLISTNeq00A+BBTysczq/cCk26hSX70yTJ5XGWsJu8Vl4NUdSHqFTVg4?= =?us-ascii?Q?mpmHkRpPQXSE5jsk7s0ibghncpKfXm2cC9z5ZSEkctYOqBM45F3flqH6Jl+D?= =?us-ascii?Q?KfpU+2V/sxCWKvy8Sb8iIdBJDxyo0aAieM4o7TuuKPXBe9rCNdljrsU+nn90?= =?us-ascii?Q?aijF/EyvrMWKGIJ/HtWT3nYlj09kpz2jlX1qVY71F369Z0alXyIfVZrCt+OX?= =?us-ascii?Q?+cDRefKcTT0c6GF79n7JgZy7NeA3gjTtH+hiKyU6sXK00f/QNlB5nnTvjO5n?= =?us-ascii?Q?wo3NFwi19JVME3LB3s30dTkSEMdET6Yw4cGdHppiZk1IpMNCMr9Rdupw1d1d?= =?us-ascii?Q?cy11z7YD/N7zh8OXldxV+PxQPSXmKDd985XAI4mzFNIjoZMcAn5uAl3qPAlO?= =?us-ascii?Q?vsufoLKIufmyeZTd2/dlAZHqMCFrrnQGouZh27ry9oTekOggiXqBaFOov3dL?= =?us-ascii?Q?+TMVkMOrjdv7hW847Lbgw044lP+Cy6WSp4NyvA+ZCgVLlmpemWs5xGHchin4?= =?us-ascii?Q?hrq3wiXmxcnzgKfp3RcFAJ6ju0V7wn0olfd/mbeSPP8AkscAJeN2nRkIKC+x?= =?us-ascii?Q?AFHBC6Ovgc6ASNgIqRvRMQPmh7ekc4XcH0UNW39U+FlgiYll+4mTWhzMgaCL?= =?us-ascii?Q?Tz3Cef0Soh3yeljHM2bkOUozFv84K8v+wsLnJDMVh0IGnCQhlp3wmDbmsXVg?= =?us-ascii?Q?Fkm1Db2RQjR6TsBWEHftrxkMvpMAcAea+tidho7Dr5MNJX7eu6STywslchMH?= =?us-ascii?Q?ZrVBspU/QChzlQ1r91BvP/sJtVUQPziE6SwyMKwdAPvA9sp3hCkRqBPOSDZh?= =?us-ascii?Q?wHk/Ipw+DgU/2ST+gKH2g1TCVi8lpJybD/yfhTd63Sd47KjivGqBZyQ4JpHZ?= =?us-ascii?Q?5ec4gzySFMxr/7CIsYLSYunC5YjmTpS4sVWUx3xRCuFjISavgERwSFITfs7H?= =?us-ascii?Q?LjnD+YpB9VPehXybW3QmnfCe1l4HOb5rYqKE4cCBfdORMJc3ojaBRv4ENPqc?= =?us-ascii?Q?HvJQvhTx6vg1NBPUeqdpU4oeEM97S4GTh6zNPZEsNc9OMDyml3TrQsrOXSJ/?= =?us-ascii?Q?eB93Kbxi68/MGwyJnWqTYhBNtxzqjK8xbH3dnZr9dJmkpc57PY+JTY/vhrDo?= =?us-ascii?Q?lsoe0zB6PJuHV1af3kW5Ejl2KvTPBd7yzwzRTixPgnqtCEi3U8N3t0zml+Lw?= =?us-ascii?Q?uQp7O/8nXURdWJ2u5tWNZ3sRRiobfbAWjgBiWtvqtMze1pNS0fcWdaGlUHC6?= =?us-ascii?Q?da/DXsT97WcsAN1QMbAEuHemaNimzYGGdKi0ZUDSGGmPZTQckrVCmj9cMq5i?= =?us-ascii?Q?Vl/Ln6EE55RhMj77s1QNZcH3Xa9b24Z6A9w9xxm5YxX1dJTWYNSY8AhBzu28?= =?us-ascii?Q?RXexHN2lZ/E9EprLJw+keYsTVvYGmWBv665AlPim2xizBJUk9A3BsQmv/H2e?= =?us-ascii?Q?r48Wvlm0/car64SoA95XB3Y3UcM3cMGFJUJ8oDI+Tbu+FfhjUPKRy8Ye0oVZ?= =?us-ascii?Q?/S43PfOCXpTwPhPqlY4OltPy8vyVz1oMbtfipbhabT0da+fsTwp5FrQJ6QBu?= X-MS-Exchange-AntiSpam-MessageData-1: tv7tSO75kUFUug== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 0beea134-44a3-46d6-b48b-08debf66b257 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:13.3377 (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: ZmHs8pbVzBvTiVjOW3eG0wi9/r7qSCRDjkNoRFIU7fqtqVAU7IXzKFZ/AtqfONc17Efaw0jiPrW7oEDk9lX6LA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267697-37F7EA53-CE9D9EDE/0/0 X-purgate-type: clean X-purgate-size: 12559 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267726547154100 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/Kconfig | 1 + xen/arch/arm/smpboot.c | 6 + xen/common/Kconfig | 3 + xen/common/device-tree/Makefile | 1 + xen/common/device-tree/cpu-topology.c | 306 ++++++++++++++++++++++++++ xen/include/xen/cpu-topology.h | 42 ++++ 6 files changed, 359 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/Kconfig b/xen/arch/arm/Kconfig index e67219e949..c673ca345f 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -102,6 +102,7 @@ endchoice config ARM_NUMA bool "Device tree based NUMA support (UNSUPPORTED)" if UNSUPPORTED select DEVICE_TREE_NUMA + select DT_CPU_TOPOLOGY 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 diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index eafa195504..6bcf7e7f53 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 89fa7d10c7..a1db4fcf17 100644 --- a/xen/common/Kconfig +++ b/xen/common/Kconfig @@ -188,6 +188,9 @@ config VM_EVENT config NEEDS_LIBELF bool =20 +config DT_CPU_TOPOLOGY + bool + config DEVICE_TREE_NUMA select NUMA bool diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makef= ile index 658aa293c4..bbe60297aa 100644 --- a/xen/common/device-tree/Makefile +++ b/xen/common/device-tree/Makefile @@ -1,6 +1,7 @@ obj-y +=3D bootfdt.init.o obj-$(CONFIG_HAS_DEVICE_TREE_DISCOVERY) +=3D bootinfo-fdt.init.o obj-$(CONFIG_HAS_DEVICE_TREE_DISCOVERY) +=3D bootinfo.init.o +obj-$(CONFIG_DT_CPU_TOPOLOGY) +=3D cpu-topology.o obj-y +=3D device-tree.o obj-$(CONFIG_DOMAIN_BUILD_HELPERS) +=3D domain-build.init.o obj-$(filter $(CONFIG_DOM0LESS_BOOT),$(CONFIG_HAS_DEVICE_TREE_DISCOVERY)) = +=3D dom0less-build.init.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..82a366f3f6 --- /dev/null +++ b/xen/common/device-tree/cpu-topology.c @@ -0,0 +1,306 @@ +/* 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..8445f5786d --- /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); + +#elif CONFIG_DEVICE_TREE_PARSE + +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_DEVICE_TREE_PARSE */ + +#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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267733; cv=pass; d=zohomail.com; s=zohoarc; b=SfAvSkCWzBq6GcX+TIBdHOmxtlzoebD7LDFvNx+hUTPlGCq46NG49XnYkVTzZ87SLQv33NXwWsA3maE58qfIJY+tKV6RnlybaUVfLnZqHcSM8V4zfOnyPpeLw5CzmQUWYF63qRgjcNEEC1L5EJ59dsxsLMpK3Oqyygcy0Z6+/9o= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267733; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eDDYgiA7UEf0V5xxwFfRaXTUj6xHA+tLO+dwu2CP7mc=; b=cPbB1Nv4wUqHHTlIys6IE87EER1hW7dv/yev81g+VqQX/D2dNbRetWwSB94hm9Xdah1KUZtR1W8i3aYwYbaYHyFpgMrY4fmqWlAVhRqMoIB/2NaD+VUYmUKGEtpb7HkAQEavp9JZLgC35BCWYjeCDS6bO9XV0LRu42MTKR+2hfM= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267733890155.94564698716738; Sun, 31 May 2026 15:48:53 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323459.1589197 (Exim 4.92) (envelope-from ) id 1wToxD-0005mc-1v; Sun, 31 May 2026 22:48:23 +0000 Received: by outflank-mailman (output) from mailman id 1323459.1589197; Sun, 31 May 2026 22:48:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxC-0005mP-Ua; Sun, 31 May 2026 22:48:22 +0000 Received: by outflank-mailman (input) for mailman id 1323459; Sun, 31 May 2026 22:48:21 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxB-0005bG-9p for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:21 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxA-00261G-Ma for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:20 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-36 for ; Mon, 01 Jun 2026 00:48:20 +0200 Received: from [52.101.229.101] (helo=TY3P286CU002.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbab2-2497-0a2a45090019-3465e565b3a6-3 for ; Mon, 01 Jun 2026 00:48:20 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:15 +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.0071.015; Sun, 31 May 2026 22:48:15 +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=YJncUA6ScRXyGcuA5hcsbN1H4MDTGa0PYkmhjUx9CJKEV3z2z+BnGvIe/GLRjFsFUanXyDwwr5lK/ubhUKnM7R9IUNtksSylw8xgSqB5B+oSHyozscdbWQ82s7s3JZO+K6ZkZR6z75bk8+6+OkWMEth3mNn4A4KW+WFnBN3+9R8Wen1syuT5uK+PpmRX/aSep/Cd8kTxUhFWk24SkjMycoHt6BYeWitqD7VPUlirHrcO3X0mN4yzIl0ihmguUxrSbj2yP19aE5EazJMIoj0EEMAYgXriW8telql8cFHD3timouGCiGX5OMkJlwMWX9i9TYfTgsFQKBCCs/2h0YrSBQ== 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=eDDYgiA7UEf0V5xxwFfRaXTUj6xHA+tLO+dwu2CP7mc=; b=qSLtyfi5XDFGixU4sF9Nnh4QnNSIFGHRF/dGMWa9EIyOS5UQl9nR0PKZRk5CDUpJXp8OAPEjYhWrVIp17C0uS8o1d6qs1E0HpgzRlwYNPbTUIjo4eM/k89kZwmh+pCoJt4uAHxb788b7NbPS5sEnsVnBWypPLu2YX4j/EhxitbofaH9/DPCy2bhmDTorn7EUdkKe5pjvRA3kiYodTQ3lZZAaFfUn+hK1BcX4mpZOAt7qG54aXvbLA+gDPhMmw+893tSBytc2UOWbYr0eg4bz/p7wUu87uF0e/2f9g01wRIht9VGKO9hiy3zhi/jVpPSGhaNmvaX6NaIIfBY61hECBA== 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=eDDYgiA7UEf0V5xxwFfRaXTUj6xHA+tLO+dwu2CP7mc=; b=j/NULi/ssrV8OdGbsiXTOhHe3VVfrRjSWbxm5k3QFiAmQQLp4zBaknOfVLXd4qHacvrPLl+i8p7VfXaNASsSFFWT9qoI7SunLF33qp9z7eDGyQ4L71jWVHduu/B6f/N4UsAiF8iPV26IDiByxbcZzC3AhwuGpykrDrSQC8I+58w= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Dario Faggioli , Juergen Gross , George Dunlap Subject: [PATCH v2 08/24] xen/sched: Link CPU topology to scheduler and display via xl info Date: Mon, 1 Jun 2026 07:47:38 +0900 Message-ID: <20260531224755.9481-9-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0038.jpnprd01.prod.outlook.com (2603:1096:405:2bd::11) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: fa13f59c-23d3-4972-0502-08debf66b3cb X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|7416014|376014|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: BEE4y6XnkQov7u+pTJ8zxreZzo8V/kJ/eG4e7k1iBxu2lW6Xlbl4LR8tC40cbl9C8O6vZPKP88815ygU2O453fD7YC2bJK7bZkZb2YzLART4a++Iy001rVaqsF4ruvNU3bNr5tLx4zxbM2I2wD21K0RAVh81fVR7N72ttXu944XPcAN7ZxAcXZjWtsmUMC+HmqXHDsxR4u8kebw7JispPkrc1xC07GAyVzChQQolEoX1PznBEZ/c5XDzTczIIu7M3vXxQ4elWrZKQeWUTs6apDXqrYLcUh3amEj9k4iub//+3UhLNmhduz2fZbtGmqnK3zNOKdNlV5/C4zwXxddJG7IuHEvPrC+cWUxn63aTSUWQ3+7fQ8g0S64iTwF704TMHCK5j6NGHkHG4nafOsyamF1JZ0JjYa24K6SCsQZaoRcsiBcrmg+Wli347/Ill6yOkhq9PjCAjrnqYuMqYq6Pmu8ocV9CMyQaKwHlezfFGSss5AKy+DZ55umZ6jgaqucf9wwb/ij5Gwl6ILbvBBA9EYW3hENLAYwd7hEc/6fkPQSVEgUCGnRHrqVjYf9hIZj9MRJ7SAmeEOWMFiPUXVq4G1zNdA3GMA0FICWRVP8Piym82AmtznBy38dEUtMeh4MIn9F5IDzjEepMbhKCi33zDGE1kbNkt14U2kCbDm3DQ0eHXqIPjJ2tnhm3oAItL5b7 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)(10070799003)(1800799024)(366016)(7416014)(376014)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?2M/X7oD+3mEaX5daVtvgRAPg1P0gL4s2XsyXi5tvZ1YwA0X6UlUSCIVdRVK1?= =?us-ascii?Q?kwtIZn6GVWEdgXChraF1ktKgSZZLzMZTQerpwRklOqEgOp1agSxSBBnPg8wZ?= =?us-ascii?Q?rv+2mDHdx7YZoHa5/yGeJukjJs2BFljEIAI+gyk1Hy2V3qNcc3iSqP+hbZ1c?= =?us-ascii?Q?70W8iVbYzeSKRqJ58KrpxqwV2i6kcDP0oYER5dZ7AzQhkhVfw7SJwxuafvyl?= =?us-ascii?Q?QwISXG0ic3n0XAg3QJSqohfrN0V90QRgp0fHWZU848Fj3aPNrV2FQ4zBV38L?= =?us-ascii?Q?fQM3SlgQ5NC0ZATr6JqRDvlAkViNBZP4PtZyZ5z9h1EKqyIqF8QddEd21SJs?= =?us-ascii?Q?U3zIKDxfvpkauyk1uEpa42wSzJ6hczbI9lfLdVuilXHHv/DYBC4vVSiOeDQU?= =?us-ascii?Q?hL20Ux0L4kLUhBty/fcmOuttY3OTX9WzMXjWLLc8rvEYQYARS+OcJVeAvPb/?= =?us-ascii?Q?3UZzh07IZi1Py1BqR+FjvUe2BrCaO8tSbhyyyzmrafLdBKpCgmcVakeNAXPl?= =?us-ascii?Q?nWGpqdhvq1GwK5enWXQoyOqGIBY2r3Izo1IsUdbVI7xHl4G2yg7lNpO8glCa?= =?us-ascii?Q?eHsxuW4TBgs2cEP84ZE7JRHvO6qaj3Y1fJow1Xaw6fDF5Mh3JdG1+Ht0w0US?= =?us-ascii?Q?FeOpGYwXht5tEABHA8fc3+Nem3//pdoj/HUJs4D2ZMUr9HEd9/ui02KSMX8Z?= =?us-ascii?Q?ykOiGrO91O5HtotBmSlE6nBlQ0esT18TWQoRXy/cIOCI7Miinhq8pwQSwvTW?= =?us-ascii?Q?McatY7TJ16Te+XuD0UEaeFaVdFolgXrBPMu6EQwPkext/dVoYajpYUiyGIFy?= =?us-ascii?Q?tmKLEe2sUAwuCbngArZGWumBIAnbyx2kJ05Qrj8YzR7x3mtZBOSKTYZiXlHr?= =?us-ascii?Q?0k//04vXwE6ZCE8CxcaaTb6XyPZDFYSnzGbmCz83HgtmiG86My8U+xNWC+zM?= =?us-ascii?Q?Jz6Z6T6sHNRuFBZF+bEFuky4y6au5g62DT2NGAr5cBYXmVyiG+1akzKNoKoK?= =?us-ascii?Q?kCsv8/er9vAdNKEjBWg3W4lgEuV951rdEVT2RovJmRQfQASR1DRhCEqRpUlN?= =?us-ascii?Q?T/U0c/6MEE289Xrev+sI+lk50A5m1FIHT5e6W+p5vY7WIXWjMfPLwWghrkJM?= =?us-ascii?Q?LwQRUrESVNSxfRvNzg7fpA0tyhALvmbS5TMd+d4vF8yqsTUGRFXZqJvrh8ed?= =?us-ascii?Q?Tg36htnytIAKoU/do0PdhPwHNgBLIqG/Dcvpm1wfjkI0ppdteWH8/Am5Yfnl?= =?us-ascii?Q?EQpfmIjkYhD0uVC7cO8FJ8FbXcOqhyAGO/klr03JhPcoe3Ix8GbaYnU4cGJa?= =?us-ascii?Q?bMI8sWClrkXsuT4TT8wqDorzMQkFnnRggOYUBw13lF9sOZeMMeA44ZhqOECq?= =?us-ascii?Q?DhTJBiFLGUi+vvYlM7ht5Uaf+dK+ijsr5azNeBhG27G7NuJ3a3fhDvxWMMEE?= =?us-ascii?Q?QJqEbSbc7DDvj69W/BzOIiXJ1dX3Ik3geeWs7SEug8NLDB7JYiLtjidPB3jZ?= =?us-ascii?Q?RZN7nKKSrNDsTZqi7VGZwq8s4kGGayeDUZrLaFSO2cWZTlEYJKT5pufN+yeM?= =?us-ascii?Q?wYLf9BZC2PttEDm9W/ZibYAIvr6ZUUEF2h4ZRpqMtd7ayDD5a7MOXMCnWW8l?= =?us-ascii?Q?uTJlwgcWEOnO0Hbc4+dhTMejsVTJ6LVR3ep5XVwJ7zfD2AsWZn+jO7qvJsiX?= =?us-ascii?Q?+unbJH6arCnCiaplQHzGlmMHYfnbXXs3tqGCj5LhE+WibOxPrWKByQO3V3oY?= =?us-ascii?Q?h98lyNPstJQspv//hMzNNBuqqFAMZZ4bUeJ3tP/NTfpdQ38K6hZE8EknG28D?= X-MS-Exchange-AntiSpam-MessageData-1: 3qcAQ8+XGoRbmQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: fa13f59c-23d3-4972-0502-08debf66b3cb X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:15.7844 (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: 7N80449TkdYafWnGayan8gDVG729LkZ0i/V10N3mKF7FFlD6i61lN9htgxvYAZOk1VfyEz8OyQkGV3XLT16L+A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267700-42772A53-9DCDAF62/0/0 X-purgate-type: clean X-purgate-size: 6400 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267736443154100 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 | 4 -- 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 | 11 ++++++ 6 files changed, 76 insertions(+), 7 deletions(-) diff --git a/xen/arch/arm/include/asm/processor.h b/xen/arch/arm/include/as= m/processor.h index 895d7cd502..b968a1605e 100644 --- a/xen/arch/arm/include/asm/processor.h +++ b/xen/arch/arm/include/asm/processor.h @@ -591,10 +591,6 @@ void show_stack(const struct cpu_user_regs *regs); =20 #define cpu_relax() barrier() /* Could yield? */ =20 -/* All a bit UP for the moment */ -#define cpu_to_core(_cpu) (0) -#define cpu_to_socket(_cpu) (0) - struct vcpu; void vcpu_regs_hyp_to_user(const struct vcpu *vcpu, struct vcpu_guest_core_regs *regs); diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c index 6bcf7e7f53..a8e914523d 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 82a366f3f6..8821ea94f1 100644 --- a/xen/common/device-tree/cpu-topology.c +++ b/xen/common/device-tree/cpu-topology.c @@ -294,6 +294,58 @@ int __init parse_dt_topology(void) return parse_socket(map); } =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; + unsigned int coreid =3D 0U; + unsigned int socketid =3D 0U; + unsigned int clusterid =3D 0U; + unsigned int threadid =3D 0U; + 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->phys_socket_id =3D socketid; + cpu_topo->phys_core_id =3D coreid; + cpu_topo->num_siblings =3D cpumask_weight(&cpu_topo->thread_siblin= g); + } + +} + void __init dt_init_cpu_topology(void) { int cpu; @@ -303,4 +355,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 77475ee363..dcce1e361f 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -19,6 +19,7 @@ #include #include #include +#include =20 #include =20 @@ -37,6 +38,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..81a68fe24c 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 8445f5786d..828c31f7ee 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; + unsigned int phys_core_id; + unsigned int phys_socket_id; + unsigned int num_siblings; }; =20 =20 @@ -23,11 +26,19 @@ 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); =20 +#define cpu_to_core(_cpu) (cpu_topology[_cpu].phys_core_id) +#define cpu_to_socket(_cpu) (cpu_topology[_cpu].phys_socket_id) +#define cpu_nr_siblings(_cpu) (cpu_topology[_cpu].num_siblings) + #elif CONFIG_DEVICE_TREE_PARSE =20 static inline void map_cpuid_to_node(u32 cpuid, struct dt_device_node *cpu= _node) {} static inline void dt_init_cpu_topology(void) {} =20 +#define cpu_to_core(_cpu) (0) +#define cpu_to_socket(_cpu) (0) +#define cpu_nr_siblings(_cpu) (1) + #endif /* CONFIG_DEVICE_TREE_PARSE */ =20 #endif /* XEN_CPU_TOPOLOGY_H */ --=20 2.43.0 From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267726; cv=pass; d=zohomail.com; s=zohoarc; b=OC3hF93oAbJ9AZvdMydkFBBF36ITOYRNrq48ibLbQb/1IO3m0+mAvGrMAILkTR4DzUr+y7Mt11bjjfYTyS8rKIjcz5al9NEi+7xaI4hw5o8VOgoie2VQG+PIkPcwjS4cG4+ESsOvlJ7e1NxXSe8sWsy//ZN1C0rL8Q3/aIg8mQA= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267726; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=a0PpIfsctPCeglWGS7bD14KTjXcY3vIaW0HpDsgassk=; b=L17Zxav+5Y/6l7cjIZFZ1pydB3KEDms7iicJTXfO3fIF0/1Js655WHpVac/glCg/uAteKoTn6KP846zZDmgWvCay8pVZQcJBAD+3Xvo4AA82nFtKZbPDPu73booLmfP2tbr6dFO0BjP0Z+fKwi6OJ12srPYpBOQ+6ysCbnnFZmo= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267726562905.8303856215033; Sun, 31 May 2026 15:48:46 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323460.1589203 (Exim 4.92) (envelope-from ) id 1wToxD-0005pG-G8; Sun, 31 May 2026 22:48:23 +0000 Received: by outflank-mailman (output) from mailman id 1323460.1589203; Sun, 31 May 2026 22:48:23 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxD-0005oQ-62; Sun, 31 May 2026 22:48:23 +0000 Received: by outflank-mailman (input) for mailman id 1323460; Sun, 31 May 2026 22:48:22 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxC-0005ku-AC for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:22 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxB-00261G-N8 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:21 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-38 for ; Mon, 01 Jun 2026 00:48:21 +0200 Received: from [52.101.229.101] (helo=TY3P286CU002.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbab2-2497-0a2a45090019-3465e565b3a6-4 for ; Mon, 01 Jun 2026 00:48:21 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:17 +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.0071.015; Sun, 31 May 2026 22:48:17 +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=ohfPRdR+DVcOyI93eBauyov+S9fRpwaii4znDrTYZZEJroSAXE6pUaT+HobRrZpKC9hB0yEcPfnOrjX9b9zTApi6+SfpRCuPvh35mae0YF0tUjhX4swVxaPVjPdyl3en6A1iRGJkmAScypY2FaWgJ0wY16l2R1qMWHICLDOdDW8blj3N3m4HVW19sACOvWWmTNcSjo/jx4jV1PbS0t8ydVqKF3eQBGuAQSXXpVdOKUGH3u2wC0eR5IK1/IzFpBssyEj6xWkSSfg1esCVE8sTNpo4mBMFczYQ6ogDfqaJ+tf8xOAO8/gZaJuAKGV4/uu1eIEQ1kwG1ZYvok63Hfp8/g== 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=a0PpIfsctPCeglWGS7bD14KTjXcY3vIaW0HpDsgassk=; b=Zue7N3Sfdif3xL3VuJWG7sgLbqmO2UKEF6oxestLTsd+DDbrNrugNOJciG93uNJis8ceEJwMyNVKGCOOW+YMM+X+wB+vXhphzrD/Eif8CWQ+b5979cAXRax2l+u8lI9q+v51I5bZsYnI1vlNnA7EqEylcGFoPcHDtQBAVk7lL80uQ7OPnCdLSeB/j+6pSGIlZeUNZgYDiHH7vi8lKDDeNeYxqiLrNniPb8iv340BtU7NlF7Hvb7sdbh97JTaQ6ETe7i8p0dfRnO8vrQ0M6ZgOkaX1J2DoJJW7dt3/yAbl15bBjDIwiTiBznD57406FreSNwhwK1xFznjfX5uXHTGmw== 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=a0PpIfsctPCeglWGS7bD14KTjXcY3vIaW0HpDsgassk=; b=XgdTMtviog72np0uBqJGRHikrwjNj1DQeo3Nd4B+8syvu62g4FA3bYGTMT5IhzaqJvWpm5LS020obutqzDYH5Yb9oYSwu5xNXEBXdEuV6y1kOMUfDpPigW4xEbiLLWuUsYA27W0R5wBLVChBgLHpEPniX93SanC8rv40Uxm1U/c= 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: Hirokazu Takahashi , Jan Beulich , Andrew Cooper , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Teddy Astie , Dario Faggioli , Juergen Gross , George Dunlap Subject: [PATCH v2 09/24] xen/sched: Make cpu_nr_siblings() architecture-specific Date: Mon, 1 Jun 2026 07:47:39 +0900 Message-ID: <20260531224755.9481-10-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0035.jpnprd01.prod.outlook.com (2603:1096:405:2bd::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: f19261bc-7b32-4371-f53d-08debf66b50f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|22082099003|18002099003|56012099006; X-Microsoft-Antispam-Message-Info: Xn1qSIhhHBHjber0T3MeDCV+Bm+L3NRx+x3hO40cLxG9G5gQFfmQ9WqZ7mJ3avs7w1RIpAZBvVBYOpJ2CFCklugJXYxMAFK5qxfMtMKqI90lFzo/M2TRozChpUdgHE4uBgV2SvfCTtJuBjY+ErLBYHwjxePX7vgn3MoZcZp6HlyDf3C5Cv0/k7Mmkm7UutONqrJzJ2pupfn7dRccoHcU+ijNCQubIqeXe94C2hD6F1hIQNVRwiweSc8ZLMVR8dcgMA3ieRBYZVMOEOGEy+fmzNp3sY8SAIQOlNfwQc+Oe7bmqRz9DLPhUdwHOS+NXR9U8YA4AcdpaWCwW9lirrgXtogRceEhXL/WGVzS+A9EHKOUpXNid1fdoyx1gQ9nXwXV0XBnJMsNNlvNZFCLyz8K8pslAnohnni/47QwovNz5oTXAExV6JIrsAhwWdeNgxuz7FvMjqrrCWjoEJQ0AzwXLhpjzYayeF0Oh/4CvmfkjMrweFikjh9I4D8DUcpWgsBNKNvD09gyu9ON5BmrE+vnAIaUm9npZ07zgOfzO4fevz56EKU/nbEgNAwQ0wRIPzwmCS2vMKN9HQ32KfQ0ULChqTa4NTfM58poxzrvGYXkGqcKr4OdtNH3RlbZKnT8rBCOGzOZkFpngn3Xi2acUJlsPkhe3TsoEO4YqTITmrTTWfFze31VC/YomXUqxS1UaHrC 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)(10070799003)(1800799024)(366016)(376014)(22082099003)(18002099003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ujh9yeE1qwYBs+bUUAjw3i4eC+Mk0FQqmklwqRGY2u0dxfSnB/um3TLVLsNv?= =?us-ascii?Q?YuGpRCTbRkeAYX/riTDifxQCmeSeYXirWEB5Amg3aE4LnsO1HzLKfkLV56Rc?= =?us-ascii?Q?wTGhKwFKLVaslg0c0tgcjm0ezNWq+rs0rvMh8PY7wQB9d7+LJCml1m6WqAud?= =?us-ascii?Q?VG2s30m/TDKr5/IcB9Mfay+JAe7DFdk0N5W+MOAMtmYCtPLdW0tToAhmltDJ?= =?us-ascii?Q?c8Lx5bzxlDXkEWIOvabaONK15n+NsHeGbd10lr/9byT0+c1usM8CiUK/2j5z?= =?us-ascii?Q?hUIqy2rJU8rmUVx97OKWKRbeeW5Assz0gKR8HUieafAUY87MIl2bUMhqZArr?= =?us-ascii?Q?BJBp4bF9NtuVhzOzT4oeqiVfPgiU4pPJfLpdtbom3Z3968tKLz6XhS8X4ZSD?= =?us-ascii?Q?WNMzYHKch1UZtR/Ly11LxgbTAOR13g26tNWE9k86iZt4R0K4HgaeXjvJaWbR?= =?us-ascii?Q?Uq9wpWKDqwyNTtgSpgUyGG0Z5MMg3g3ldbL0NqK6olUsGYBScArTo8FM3cmp?= =?us-ascii?Q?/77vq3c/Mtmct3XXGtb9ndXvuf/MxRLR+37aemyJfHSm6rnuqqPe8iW16svy?= =?us-ascii?Q?qLbbBwfDwZZiC6dNDO2nfkjWSpgxBbxKYHMuzSRey0zikSKGHN1bb+D1aWmg?= =?us-ascii?Q?ADGZ9zzIqdM9KEFnSiib04Nder2EJ7/X3RJAXK5vWhK4H+9Gf6p70m/i4Ts1?= =?us-ascii?Q?deLYcxQQAORs+FnkQK04/B5C/hHuGut15dIPNFIBFHU3efiGEsbOu6rGKGhn?= =?us-ascii?Q?Z5IFxerewY17BHbNd9Cx4B4bW9yTUF2qreuK5EvbAC0i67e+csTXLiJI1vct?= =?us-ascii?Q?AisPs+fjqVOuFw1HiA+RQqtigOXFZaEsyaFoxtKNEw/msqA9EMQu1WQxAPB+?= =?us-ascii?Q?Qwh6mYNDwfPEakG9tXhgRS8ZvLZke0b0Vu/6/9Gaga3C1o8SzUhwe2yQl+sg?= =?us-ascii?Q?NVQSPLTdcpdW77UeXCZ9QL0qcub51LfVQQvKnCWpx2nzr+JAJEEUA7QOVUYJ?= =?us-ascii?Q?RaYAw6w7XpdF6Ft1LA8PkV3h/dOgfNgwkjwuUVKdmLJFdsLXBPmdpUQMo0Z/?= =?us-ascii?Q?iA18o40r+rnrOGDA2M6N3w2tjU6KM9hlqi+EPPYzPJn15Y9J6LkhebLxYijI?= =?us-ascii?Q?8QQ7a6LOgcD7zT5lRWqEWkVXWj0r8vP3z4C0QVZ4zjyzq5tUYpS8uZ5teiRN?= =?us-ascii?Q?S6eGVYKD1tuce6nImW4dZL9F/veTmCXhg74wuELGrMVw7m+sayILgMdPotQC?= =?us-ascii?Q?shfxsy8O6ToEcqIfEqwap+1QYgeN3p+gSF6y90TLbXyBfQYLe38aexHSmeE6?= =?us-ascii?Q?RZfVOQDAMNy3IKV36+ds0eNSAuYv/p4ib49RJKLfRhz8E/2PAz9rNqo+Hvgl?= =?us-ascii?Q?LFxkpu2kbnLoPdbeCBFMXDgFQMWc3wsnSvQ9WeFpdKq4hNt7pm9fU9cqKqPj?= =?us-ascii?Q?5ATdILKO35b1wcUDPnQUE4pJPzgBKa5hq4FYmwVYCr09z4D8dNdKcAo8ZWVH?= =?us-ascii?Q?m3lX8S0nqDfcQfQfNkEiyIIunHILT8BJK/AdPtVcsPqOo0dM+w0srDX9wl3x?= =?us-ascii?Q?2gJQlRywfoZGfwU7jZ78uZ+lFLpv/Eqxr21rLa9aqXV7hjrjZwM85kKWjBsC?= =?us-ascii?Q?NhrUETZEhyFSp4ZeOWGG0GB5kmjEJHC3STvpb7xGqhI0mLUSyuzid2bFdn4T?= =?us-ascii?Q?zSp5lUZpvq3g9ZVknrLFOZDx+UyJtFPnGRjIc/ru9br1l5JAlO/CPdiEZ0a8?= =?us-ascii?Q?C8C651UnNhOxNhORboFR8ADIvkzKNClwrVAnD638q3P6C48gJ2SMUG+/ZM3H?= X-MS-Exchange-AntiSpam-MessageData-1: FNVXF+qQz7LQ+Q== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: f19261bc-7b32-4371-f53d-08debf66b50f X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:17.9022 (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: x2RaMKLTcpMGUlOoqckVxZK2OXiWxf189Hlsr/TiBV9puDgclMZ+7YfurvYGluW02B2+GiCCv3nJiQtvjOlzng== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267701-4357BA53-B1B77CDE/0/0 X-purgate-type: clean X-purgate-size: 2502 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267726805158500 Content-Type: text/plain; charset="utf-8" Make cpu_nr_siblings() an architecture-specific function. This patch provides the implementation for x86 and a common version for Device Tree-based architectures. --- xen/arch/x86/include/asm/processor.h | 1 + xen/common/sched/credit2.c | 23 +++++------------------ 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/xen/arch/x86/include/asm/processor.h b/xen/arch/x86/include/as= m/processor.h index c37bd7a176..3cd19e6d9c 100644 --- a/xen/arch/x86/include/asm/processor.h +++ b/xen/arch/x86/include/asm/processor.h @@ -106,6 +106,7 @@ extern void intel_init_arat(void); =20 #define cpu_to_core(_cpu) (cpu_data[_cpu].cpu_core_id) #define cpu_to_socket(_cpu) (cpu_data[_cpu].phys_proc_id) +#define cpu_nr_siblings(_cpu) (cpu_data[_cpu].x86_num_siblings) =20 unsigned int apicid_to_socket(unsigned int apicid); =20 diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index dcce1e361f..2d93944824 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -29,22 +29,6 @@ /* #define d2printk printk */ #define d2printk(x...) =20 -/* - * TODO: Abstract this properly, and figure out what Credit2 wants to do w= ith - * the fact that x86_num_siblings doesn't even have the same meaning - * between x86 vendors. - */ -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 -} - /* * Credit2 tracing events ("only" 512 available!). Check * include/public/trace.h for more details. @@ -884,8 +868,11 @@ cpu_runqueue_match(const struct csched2_runqueue_data = *rqd, unsigned int cpu) * Additional checks, to avoid separating siblings in different runqueues. * This deals with both Intel's HTs and AMD's CUs. An arch that does not h= ave * any similar concept will just have cpu_nr_siblings() always return 1, a= nd - * setup the cpu_sibling_mask-s acordingly (as currently does ARM), and th= ings - * will just work as well. + * setup the cpu_sibling_mask-s acordingly, and things will just work as w= ell. + * + * TODO: Abstract cpu_nr_siblings properly, and figure out what Credit2 wa= nts + * to do with the fact that x86_num_siblings doesn't even have the s= ame + * meaning between x86 vendors. */ static bool cpu_runqueue_siblings_match(const struct csched2_runqueue_data *rqd, --=20 2.43.0 From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267733; cv=pass; d=zohomail.com; s=zohoarc; b=KNbk1eLDFnV6rfNlC7R4kmcloDnqliB9dYSVT/5MZ4P4OrHmqQ03ViUYMs8MtobIEqZEcyIcQQG1gVsSRf0AmrTM477/fWnz7ASfQdd8nzMXiSapWpWi3tLzsXBB8PfDsk2sKsv2pKMWD+nwpckWlk21iBjizzreje6GVMBap5A= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267733; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=lteRRVaFbxsp6aSXOgwn6Y3jyynAQKzJoiRSSUgWbfU=; b=CbqeuSFKfF7cmjQ8JSuZ/xUsWDB8XvKG4fm7FwHM4A68m0E61U/5Boec7PPNWDGd1bd5fc410feo3ukTwEBOpXXwVaR4LgOzJPzUOVQZRVd+qUcZtUmCe/DXMBSKtHICw5YkJuc9Rh4dA8cn0dUAaA1FhvqF/gWqEnQw+FzsBxQ= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267733022437.2523678891097; Sun, 31 May 2026 15:48:53 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323461.1589216 (Exim 4.92) (envelope-from ) id 1wToxF-0006LX-MV; Sun, 31 May 2026 22:48:25 +0000 Received: by outflank-mailman (output) from mailman id 1323461.1589216; Sun, 31 May 2026 22:48:25 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxF-0006LK-GN; Sun, 31 May 2026 22:48:25 +0000 Received: by outflank-mailman (input) for mailman id 1323461; Sun, 31 May 2026 22:48:23 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxD-0005nO-AF for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:23 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxC-00261G-N4 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:22 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba69-2eae-0a2a0a5409dd-0a2a45099642-40 for ; Mon, 01 Jun 2026 00:48:22 +0200 Received: from [52.101.229.101] (helo=TY3P286CU002.outbound.protection.outlook.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbab2-2497-0a2a45090019-3465e565b3a6-5 for ; Mon, 01 Jun 2026 00:48:22 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:20 +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.0071.015; Sun, 31 May 2026 22:48:20 +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=gW+CU3kSAev9Ela4g0kgVb3ptm9d98zD9IOSYIsltsCzYUse9/xFbMyQaqjzQQu0M3iqDr/4k24kU+myrXvcznPq44JVkVJpxXQEX+/nUWzWs7DfWzvqF71NfZI6zFK+2CVdh01Z3hLoL2csjMJG5ihBeLeWC6M2hFQS3JfOfjtylM3NHaAYR9ekhiwagbqZmO/xUsfLgECBrwvpGrA0/j/syslmRl0p3RXRgCuyjt2bfapUKEa3EuOc6Irjp9i/xV1gNrMkfmDvu3PlM5tPp1S2fuEGwG/BDiUVtsLNYRppwcN/NSwjc6m5/Rri/7LLmE7K9O9JNbNoozqQRsf91w== 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=wEAQgGzmIpdSXvF9uKWdI7u5XAJaOnpDTmYw+G4kJFZdSONg/+m2QcCrszpDRc8jDfTSxXpNBCoPPKEnsBY/nYyRDvDneGMEOZawKrPhsd0rZXWcAve0oULJ1CnYmShUe+xjN96KVddUoT9yV1JzsitF0ofYvkIcARRJ/jiE4RUFLqZoxCSQt98zZXrXhpCbVKActHRFAXXZn7KEs4a7dX6+d2Kqg96OfbBf50Pgy9qnzA+yd2l1BPpJgbrYVzIWUuCcoyBW9ccgMv3MVSdafK+7DGozy5Tw9C57iLl2BvGEEk3YhDB5MB7IXWJjUsbimCLg533QtTbeDDfcpjvafw== 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=OddtpVDGGgQbfqsqlghBniDhyVDgtWjgMmPwwylDTCHgZtSyKWStvbfNzqL8npZVRIB/QI5tPe2i3VJE1S6KiOkXQsmq/9sXgOPpkLrJr8cMFZNrTialoYN2HsXELgWmP0zkbJLugjBOnhG42mf6ogAch/hYZfA9bPkVxk+yi8M= 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: Hirokazu Takahashi , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 10/24] xen/common: Allow building ARM32 Xen with CONFIG_NUMA Date: Mon, 1 Jun 2026 07:47:40 +0900 Message-ID: <20260531224755.9481-11-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6PR01CA0036.jpnprd01.prod.outlook.com (2603:1096:405:3bd::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: 1dcebcaf-2693-47bb-5f41-08debf66b661 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: U3/PkD8s02vQPQn8tWZBFJWgRGSFeS1l8gn9USZlL6RaIJ/xjbXFGxKFfvxaQKU2yixKz0f1i4pSq/4zu2DeWAD/juGhd4BXD0TYQVN5TNqXFdevrgfpmDSEaAOS+UaMm+uIIuZvBuZZDYSSg6gkZaiBcyB4PGir9Cpb7mxP3LrXE1Z2qnfHgEQUf/suhGmbCpXO7EObC/bbUAY6Q5jbO+5LeiZ73XTnP8XpaPh8JCi/2RsTUt5Vz4/ehvbrL6Gw2U40RnRDFm367jSnRFXlAbsAmR5XB142qqXmJ65uCTD73wLZsszOVriufndg9KDYM0Hj7BfvNz9ZISypCjLAdqAZhKG7TzZ+Vh4tGmfMtpPgbzVOlGDpaaefMo+XQhI+XJojn9bK60Nb/JhEX5ibyMOi4Fm6aSqEGqYvG4HWnKOCp+6ntXaRZiFJjIdzvtQTgCcLmgHo9i/FvOxZ6SUHqBP9VQ74E4egn7QT3qVGSLpLVz7bDsl/rLfISFWvpPRJctCyMKj+Lk+4+FL18Mcso8OCyqv0h47KYt6CpqS9TPeAdUvLrSfm9mraRwirs+JiPkF3DASSwbwwQlFUKZISRjK7kww3fP8rX17rT4hQHxx+V+uxUwPJP5asR2t/ZCGD2vTqfpf2cG8ay2RRIgNZP4cgwKDDXHzT09YIx9ZVupEim/G3iXp+rYyaNIVLjOOO 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)(10070799003)(1800799024)(366016)(376014)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?O8UmhziLjNSy9T3fpzrXj76g6cc5xV7Y9jrmPVd82BgLbZ9dWbb9zO7375eQ?= =?us-ascii?Q?AP4j6s+mq+1U7Cz+VWUxT9Jl3LlCPY2cbTHIKljwymugTvvjZs3vHaizNtED?= =?us-ascii?Q?akghbeL3mV+JfY9RWW38781QoosA46+lJTBFHZ00RO+2pP0VSooXjR0RYGHR?= =?us-ascii?Q?8UUXwztbzDOOKm9j5Kt3q5iYEaLpwsMYGrAhodj3pjRvXNFfa1uq/eCvkDN4?= =?us-ascii?Q?jM5zKiKJs1+OBm7fWuz7G6hbHJoNEgeRa4EqqPu0U07eU80Cz0LrHMBLFOUd?= =?us-ascii?Q?700fIaZuqDwtyLbmmbd3dg2N5YobSNzLbkZ+zLt6CaER5RbuP8R/K7k7K7FI?= =?us-ascii?Q?TGjojqbhHj8wPSWYIFWuE4gOibxmeBY8VPO2qK2TXHvIarz7C9cn5iry9/Lg?= =?us-ascii?Q?cE3iSXoeYqHD11twzy00akOQuOx/ELB9wZ+aSPUbSVFjQqmADB9sipgZ24ix?= =?us-ascii?Q?hOruxKZT/9amGVO/x4o5eMEy105Qkfm8MxTt4YVuKpE0Umgr1YXbKEy7hEN5?= =?us-ascii?Q?+wASTnsAdH42Idpe1mU98tX2dXPzELs55fO+JE+b51Znlx6bIoFL0fE6lIgB?= =?us-ascii?Q?6ndGdzBIBBZb58nD0oEe3NQfmEzU1TI5e2RbGhiPqpQxtAXrCoqpBWeBjKTU?= =?us-ascii?Q?qdmf62lhP+YXbnQX6FqiPzAjEXei+OMgYBMSlHO03ThVX/bhJl291fPjECWs?= =?us-ascii?Q?RK4OnoilDNd7di4IiJiAD/v0ixvCnZViPi9gqulg9CZ/Wldd/qjhtgE4qnqM?= =?us-ascii?Q?D3Uytkmn7zeNB2n7mditfcfbtEHH+0M48358lguK1/5cAGzhAlG6i95F9w8T?= =?us-ascii?Q?IEEh2qJI+U8OmJNsQqW9N0kzqGSY9PetP64PeozX00Kyg0RRLbKFlG4Tq6Ss?= =?us-ascii?Q?8GGtEDsQaxvdzTINxj15hCwkGJTMvgeq7Fns61eR1zeoOHSxUlqGU0Lqm3VJ?= =?us-ascii?Q?ecNTH9u1t6j3YfuGmFhakpOYjKGkjjRf4tcqCsz2vcLkFQl3iDZCN2tSKL8H?= =?us-ascii?Q?4i8rMOZpSNZwgYwH9Mr5+USs/fkyyDWj0bRdAP//A9oCqMV/mYi7bfbDYph3?= =?us-ascii?Q?MCezBf/lqf97mGlX1NZ3hWx+30VsPuxOOasQ/WQBVBvbGeGK0D46jvrTDbUp?= =?us-ascii?Q?u1RNlwO+CSEOcZ3pCy7q5jFMc98/+CPvi4eK5ldilJd4VuMmlTnqdl4vkesM?= =?us-ascii?Q?TI5V+YBNVUv4+unkyz/NwW44HoPc3+hL9CiCVp1ON6bA0aoEUHmHE46BWcwu?= =?us-ascii?Q?F+faOhi6tOSyjgTXIkyF3WWRp6mcIiNxFdaB5hnVA0AJHCAg3/F0v6b8PCYW?= =?us-ascii?Q?sWKKtkkQJKrDN5xoM75C6TCXLYft4C1EPz3XAwSCTGH8FuuQk99puTcjcnZn?= =?us-ascii?Q?RdOlfxHqduuw5XAGY7sWSVDZbVnYPQzbjUIcebEQXs0sbtrUCdzqyTfcaWMa?= =?us-ascii?Q?h1jlmtJkpSb3t+5rwhGFuLetTU+r1uIZZu7c/PzXch15AKtVzXG8WICC0Wii?= =?us-ascii?Q?xkrCmgIFLubwuELXgR/9p5fWmId4PriDVj+QurqVvNWzw5r/gkVMzWxl8XQA?= =?us-ascii?Q?ziS9X8uoyJWgAgxTDdcA1yJxQN7eIclrg0I7IFWWMIRAq0F88Arja+JmRXIJ?= =?us-ascii?Q?qgmTC8IR3ZAtaUJHj2hjFF/dRcVgO5B0ISuYMc0RFxRC/yF2WRBrpP5nvFEO?= =?us-ascii?Q?6OmjM2aclsogiScG0OvsYTGlKqNm5wPKaqhcxdCWSIyPYTlVCLiXFV1viiPI?= =?us-ascii?Q?JMB5J10PCnvVd59Hy08t4/iJrJTDa+44on9lIIKctknmrfgm8JnaNKr81j29?= X-MS-Exchange-AntiSpam-MessageData-1: vqHlevb7/hekMA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1dcebcaf-2693-47bb-5f41-08debf66b661 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:20.1213 (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: xL7KDvdTLvhhojZK9zVwxPHW9HMVORT5oHtn0UcFJNFFsX9ApUHgzXNXPNcbG0DHIHjWS//z7YvrUYvPaUuo0A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-bad1c0/1780267702-43D7FA53-E8AA1C4A/0/0 X-purgate-type: clean X-purgate-size: 765 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267734348154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267725; cv=pass; d=zohomail.com; s=zohoarc; b=J6KQZpgtiA80bZwncbHp8bU0auK/OCdphZFmRuQmjaY3VNpitbO2ncGf3kNsU+2w3v7yzfP+YgTubWM9lAHej/UyAWIvY1kP80BiUhaN7HannAX3ipVuOVYp3OgcvHabZbw9cw73aIsJo9qjySHBk+agXNad1ZmGgtbSMjHAOjI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267725; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=v3KGkmY7p7M2J6F4vJvqKMYA8FFzPtk9uty5vUDLtT0=; b=D1xfdAVkwc/6N1OrlaKr+pAC1T9FAbcHlngYG0TibjAmVkL4pBDfTHcrUyN6FuMwCULO60Rvo+MJ3tY4RXgSSI2FS4cQf7Jn9uugrHyIfg5YyVsoNK3Nz46RFLtjhWVXYDVbzNtVpqzodT9bwA/DgL4u8uCED3a1WLLVIR/gdpg= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267725961553.1465836181804; Sun, 31 May 2026 15:48:45 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323467.1589225 (Exim 4.92) (envelope-from ) id 1wToxH-0006d0-Eb; Sun, 31 May 2026 22:48:27 +0000 Received: by outflank-mailman (output) from mailman id 1323467.1589225; Sun, 31 May 2026 22:48:27 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxH-0006cV-1J; Sun, 31 May 2026 22:48:27 +0000 Received: by outflank-mailman (input) for mailman id 1323467; Sun, 31 May 2026 22:48:26 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxG-0006P7-6E for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:26 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxF-00En0E-It for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:25 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-bab6-0a2a0a5309dd-0a2a4504a1f8-10 for ; Mon, 01 Jun 2026 00:48:25 +0200 Received: from [40.107.74.138] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbab7-1dec-0a2a45040019-286b4a8afde8-3 for ; Mon, 01 Jun 2026 00:48:25 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TYWP286MB2972.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2fe::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.16; Sun, 31 May 2026 22:48:22 +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.0071.015; Sun, 31 May 2026 22:48:22 +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=x9Q85AIugoR2y7uVk1WDWnAcwvbC00HJ7aixSJwGKT+7A5MAQ8avH1x/7GaKC7u3iGDzFX/8ysNiGgdSvW7JxPIIPKJOjkwNQmqsPMR78xCK7rcRZDMAZtBgpURfguPhhwd0pGS9eeTDE0gIRumxJs2xb5qcXv9z26iMHIw7pDffueXeHA+mtln/oN2mleO2eg+S/JPrPyW5cgGoubgeI6Ba2yZ9gQzEDvrVnA86V8iwvT5SHvehnHOB1pfnriwsPlcTneYEE8FKQxtjsDm22SVhRrYlj+os33X8day4JYyqDH0pVgR3YETKxRtsx5cZmeDgx0OIYjl+GzOBqDGk0g== 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=v3KGkmY7p7M2J6F4vJvqKMYA8FFzPtk9uty5vUDLtT0=; b=SPZ++2yAIdA3BUUYXLcAofOTV6BX0b0Xu8aor5ed2Bb1MGjq7LeYLlRjECrAejudof764+zYm1jVMT09e2n+j17IrJoU1qysKzk4/w6V1K2qpa/xrjUPoOcRIxiH+5C4/xMGD84ODE6v5jVkfS7UCB2I7aF+fWLGP2PfjYUr4iuglOKOmDM+dsHkoelQrzpz188SMfnBiMPayT4ivH1WYeSmSWpFbjwVfklsFO1EQ/mQkA2PuV1ZuthY5PriVll++MEdsaSbZDB1rJ3RDIs6vkjeBVkJ3cTTq0avUXHZUmm445tswiqLQfJD1VDXboKreKcyKRIGbdzdSwixSfRBKg== 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=v3KGkmY7p7M2J6F4vJvqKMYA8FFzPtk9uty5vUDLtT0=; b=vweD/dkPNDl/6D7fMpOsUH07KVB4p9xz4ULSf5LyE1XASAC67y1BqS98iQnBWsMjOm4bEr1BfzIP1wfzydOrjaQIoSgMc44T3FHRG4m3aszwj8VeJjD8a8S7kAwHQivcoAXxnpg+5Fqn4LBiPwumJAAJUYmkF+95n3klJUYYWKY= 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: Hirokazu Takahashi , Anthony PERARD , Juergen Gross Subject: [PATCH v2 11/24] tools/libxl: Fix vNUMA memory allocation algorithm to support ARM Date: Mon, 1 Jun 2026 07:47:41 +0900 Message-ID: <20260531224755.9481-12-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6PR01CA0040.jpnprd01.prod.outlook.com (2603:1096:405:3bd::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_|TYWP286MB2972:EE_ X-MS-Office365-Filtering-Correlation-Id: 9d9ad8db-f265-46ef-5643-08debf66b78c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|1800799024|366016|376014|22082099003|18002099003|6133799003|56012099006; X-Microsoft-Antispam-Message-Info: eqHm9enbcl9DXHLtLAuKqpk5ilO3SHon4rLqDhQCbjlXisa/Ft/2jB5GMWw38CxEjdkXSbAkyKQ5Wd/8RJUoJganVIdhfiilW6jb5VlFxugDY2hODnm4Y4TazrMyWimgYP6sUtrB1GydTbaJJKQFAUA15wiJAuT3e5IRVi7Sy36BwkYjFDbZs3aUK8NGkrLWlUeLDfcTskyfKKg1UL9H5v1m2oSZf0LGg0wfXPd010PW6692gLrWmqpY0VWm196V4LkBMGagNiiSKIaVrts7KemQ+p38i91oDk5CpMxK75COO814vS3ZWW+nXXJtBPgTW+V1k5W4I7jBd+R4XmOMKU6r7jiMHc1X3jQH7zrmDg4jWV/LYiID21z9xam2Jxevs7ExMxz8rDtGfHOnx6Q0ylZvvzhG7JiwockT1IqEZk+sYDTQ2a84l9tu+HFHNpIRtI8XzTSOcGAtzuIcBM2/t/aKNPoiNjVkJqwYe2cqT2LDRfslC2AuTPjoOC1rWmvdZFGsZKw56I+ydlcOzR3C6glqDa9S03l2/yRhzQK1GvhhRQZko5T6uRODRV53pz8P9hYeAU1IW9lwzwCkCkXly0bJh68cbZBNiWdfve+9HF3AKxCxOFWt6kvZ4qKS7FeJvPG0xrXncuNPHmr6a8Qi3YVzIPOos3xy8x4SVkADTZLD7tpkwUZjqVjAHfFXQf3n 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)(10070799003)(1800799024)(366016)(376014)(22082099003)(18002099003)(6133799003)(56012099006);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?T7tpQmfMkBU9t7PoGlBDqCecQwCfcmaGLpAnPQ3hJl49sp3ndUCb9itwzCds?= =?us-ascii?Q?xwOdd/LctWiXvU3CibJ718w7E1CStJ6vZeZDjrRnbv+DROFHf8Qk5daLjNoM?= =?us-ascii?Q?Qb+jI5OCvj6lD2TQR74FU2Us0/JQF4lqoxwYRttoAAzM1BfDfb8hBFTHtAh7?= =?us-ascii?Q?TNORaa+a1JeCX7GapWYMTkcjcinQvM8M9Zr3WgbLRJZmCRhFSQ2FMT7cgbbL?= =?us-ascii?Q?aIlDl9SfDyCw3UF2oMXvZvPaYq7iwmmx4OejeuOg+VdwbNxPARpcIi2uLEl7?= =?us-ascii?Q?Xg5eM2sx1mtMGmxZ4orRMzGHIQOcizzYxIx3zOgWkqnk91Sjt5U2gXwMx6Jn?= =?us-ascii?Q?ujbo6GEQuj7hBtH+WCJ9iYiSwRVVn6Q6orhcmhIP4CiRXt2cefvUWU+vxV92?= =?us-ascii?Q?tLElBGF7vs8IacOocuUiGGk4SXm5TA+sYie8/DprFveRmzTghII9Pfd9n3FB?= =?us-ascii?Q?bjLu3IcTXEwYIMnnKVi5WCtU+ExbrEfoO4RS7ClRwzMF8LmTJrTHmyTzIblU?= =?us-ascii?Q?IMqy3BnazhJGNNljEe4zPQ2DV8AFhaY5jv+1shZvRUzh34EQHlN19uylvaU9?= =?us-ascii?Q?cbt4PsvpEPqBt3W5OTYhOMMIH/D3xQ4QZDBA3ij8W3iydLy2NkI1zsJXuC7z?= =?us-ascii?Q?DVTBQUgkDLPJkE2/R+Oe1eeGB42xdYwCU2igFoa2yzcz7b0G+pqbbbUZNthx?= =?us-ascii?Q?bArCaPovpztjhzGNKsN/e2ziFptfMQ0D+sqvRjnJSTaZ9GrPvTFIk9Zn3UDC?= =?us-ascii?Q?8S6ohiolVMwV0lj3DPmtUriBc5TOPVeBq3yjN+guO/1cBMUCVEKp2TIhDU2H?= =?us-ascii?Q?BMtOibTjj9XAqpSzFKKET6cRb6L6IzNmsrogKbjwg3JJpQgttKOlR7pBomm/?= =?us-ascii?Q?ot96KIV157SWHowZNUQMqAvfA0779yTfNanWI5NOY0wf7jt1iiPkjmhWPq1n?= =?us-ascii?Q?bl+8bCM2Jxh+tCtDhso8QAO2D4C45KoGqxxj+4HoVKCJe6a61mNynMsxC0zB?= =?us-ascii?Q?AAVHEKCRubBR+Ve56YBZwU3s9XYaj8vXhwv30S+9at1V7/VgxWWXnfgyy9kj?= =?us-ascii?Q?wu3X6vNT8Qf6uqV8U5EyeSUPfHiaZDVw0DNeGal1nr/4eykh/4qG8KzMumaI?= =?us-ascii?Q?8MWR1fTP8zdP/XO96aDlLkANshIGnub89CU0ihq25jLsW5ClfMCiGQUeJbRf?= =?us-ascii?Q?BSUPE91zc/GCp90//XqJHIXzjC/dda2P8UD3AimvyIT7c9YivmCZKjkJ5MA6?= =?us-ascii?Q?mWb9GamhvLJAAimEI5GQMJCGwlnj7dyA220nHij9smHZgSUsQssFMTb18ERU?= =?us-ascii?Q?qBGSltSWvPx8z+2horuIzRck+2czy1hpLE2/wpnSF3T7U6PZD0SXfLVtCJJs?= =?us-ascii?Q?m5fnO/8+LpCvPKVIf58vlSHeDSYakxcRV2fcuNUmNuvJLDDOx1I8PbB6XgOH?= =?us-ascii?Q?egZFdQp8Sv4+O/I7oz6aT0ZIqw1R/qiGJ4xBjXXDewutWv6nKRm7K1yTJI+r?= =?us-ascii?Q?8lvnJ+Ac6VKQ/5GzkA3pcV0jtaT46GJg56SYYviYrqQi1m7VF0RmqBWDw5vF?= =?us-ascii?Q?ESOAti9x01ePDx0Ww1ZFY06bblcz3OcPp3g2Oij0Dx+6n0J4cv7pUScG2fUU?= =?us-ascii?Q?7VCpyQU3C6zndHjOC09ac8FUr+qxwvN00zj8/35AmdZity2guSExb/1aCsr6?= =?us-ascii?Q?mWnchKjqNZprhuBBMAUoSHsyuvHTlQmGomsXFjgwYl9cOpQ7y1NyL8yAjJzP?= =?us-ascii?Q?UFux+TSRVTWjeOLJuzXcBxTKK7PZmrcR2PkYdQL2HZWk4T4FHx9aBXG96z4A?= X-MS-Exchange-AntiSpam-MessageData-1: 6MV0a98T6wfklg== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 9d9ad8db-f265-46ef-5643-08debf66b78c X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:22.0853 (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: 92RmgxP+MjUfXNBugZs/1oWJlI9cCmYFESRdicop3ZECUuODFsACVW/cIETEF2UO7sYyRKZgPOY3yKWeX+hCJw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TYWP286MB2972 X-purgate-ID: tlsNG-ebf023/1780267705-417793FF-11D28434/0/0 X-purgate-type: clean X-purgate-size: 1528 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267728266154100 Content-Type: text/plain; charset="utf-8" When creating a domU with vNUMA enabled, the memory allocation algorithm was dependent on x86. Fix this logic to make it usable on ARM as well. --- tools/libs/light/libxl_vnuma.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tools/libs/light/libxl_vnuma.c b/tools/libs/light/libxl_vnuma.c index d181574782..70a92a7598 100644 --- a/tools/libs/light/libxl_vnuma.c +++ b/tools/libs/light/libxl_vnuma.c @@ -259,8 +259,12 @@ int libxl__vnuma_build_vmemrange_hvm(libxl__gc *gc, xen_vmemrange_t *vmemranges; int rc; =20 - /* Derive vmemranges from vnode size and memory hole. - * + /* Derive vmemranges from vnode size and memory hole. */ +#if defined (__arm__) || defined(__aarch64__) + hole_start =3D GUEST_RAM0_BASE + GUEST_RAM0_SIZE; + hole_end =3D GUEST_RAM1_BASE; +#else + /* * Guest physical address space layout: * [0, hole_start) [hole_start, hole_end) [hole_end, highmem_end) */ @@ -268,10 +272,15 @@ int libxl__vnuma_build_vmemrange_hvm(libxl__gc *gc, dom->lowmem_end : dom->mmio_start; hole_end =3D (dom->mmio_start + dom->mmio_size) > (1ULL << 32) ? (dom->mmio_start + dom->mmio_size) : (1ULL << 32); +#endif =20 assert(state->vmemranges =3D=3D NULL); =20 +#if defined (__arm__) || defined(__aarch64__) + next =3D GUEST_RAM0_BASE; +#else next =3D 0; +#endif nr_vmemrange =3D 0; vmemranges =3D NULL; for (nid =3D 0; nid < b_info->num_vnuma_nodes; nid++) { --=20 2.43.0 From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267736; cv=pass; d=zohomail.com; s=zohoarc; b=M17lvUJQ84MiDu11tTIAMJO3Eez0Y2BVK3edMxq6lhlSJpyFkWwfhH/CN5pBxriF9yUvuodtcQ6Wni6L05c/8XbuPQ62Tw9BRLFWG54ivse/pQSm+F8PVpG4xU/ekK/kDISaIFHzKAvSiH17jYU6McRJk+KRDpg57dTumCgHIRQ= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267736; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=h1fpEhty/L0qcXw9KcXU8OLmSzP52ezRWu7E5NXmfus=; b=EpgVA1k80NVyUDQC3HSHes8vuN414PWBnLl3GS9VK55ex8SKS5V65Hbb9YjZ9ycYxOaSkxt6BtrjH0Xh+CEYY4i/rqiXB9GU+bbLnNscwGo+TuIgk3ZtooeEE5gDx6K5DLWU6OydJHHEcMFFn+tU/zwRKhrMYEe1dfTUXxXaLQk= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267736377371.2453394483466; Sun, 31 May 2026 15:48:56 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323478.1589248 (Exim 4.92) (envelope-from ) id 1wToxN-0007hI-Ox; Sun, 31 May 2026 22:48:33 +0000 Received: by outflank-mailman (output) from mailman id 1323478.1589248; Sun, 31 May 2026 22:48:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxN-0007fx-DS; Sun, 31 May 2026 22:48:33 +0000 Received: by outflank-mailman (input) for mailman id 1323478; Sun, 31 May 2026 22:48:32 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxM-0007Tq-LR for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:32 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxM-00BFyL-2D for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:32 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba9e-5cb7-0a2a0a5109dd-0a2a4508c056-24 for ; Mon, 01 Jun 2026 00:48:32 +0200 Received: from [52.101.228.92] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbabb-63b5-0a2a45080019-3465e45c1533-5 for ; Mon, 01 Jun 2026 00:48:31 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:24 +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.0071.015; Sun, 31 May 2026 22:48:24 +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=GhzpwkBhKvbFzTNhACp5SEuTeee9C7hhyt/3Ppih9lX8sSezcpXvsz0P6oPiLU0T4KmwxFtIEZD72SYGwmYBmB6il6wZYL7FB0ZahEZGodg9ZGNsvoaA0n9S6Ln5U9mSrsoJB1KNlyWzAY5GqSnui+8C+YZJyu6xITzMlyB+4Zj10V+dsWiESJTJ+LXqmZPpdtL7xkrQ5jkfChPYFkV1ErgiQ6tR5VjimBuRvkLXu0PM3a0YYuNLb+1bcwa2nWOdJodaOmBE345wXQXAI1WfqI71nxGydUuANzVeECnBYI9XzOSf+MSiFdEbOcf99/kPQ2DEOC8FssG1fazmrdIysQ== 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=h1fpEhty/L0qcXw9KcXU8OLmSzP52ezRWu7E5NXmfus=; b=dHb2LgQS8Gni1HzEbE4mUDHK8TrYvJ4ecp4bjGk6dPowI2xTIMF6+X1RD7Hitg8WQyhMI2PzOfX98wEtxk/1BdViS3hMNf1hp0xz068vOJMdC4xpWSYT4G8INjxS16B4Du6M47nls3nQFmHnINNE4oNJ6Y019I6Am9GfQMSi8tfmkZhSdtzeA5fICcOp23qjaKf4FHn5mAWadPBHtr2MX6peTwZBffTc+E/3vMxLkHy0wJi/xeTa9shZccgjLjWDTlO2zSuFdtfQub24RvztO7Dua4J8A/CTK1qxhfnEEU7E0nrJmX94/YhiUP6c5p/4a7aIP4kY9YJBwiNrnndLMQ== 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=h1fpEhty/L0qcXw9KcXU8OLmSzP52ezRWu7E5NXmfus=; b=rKPGCe1sb7nEtR+McraBYzKZr0kBnkds7LDGPt8t/AEUKQuRzfviWmsSnegJla4gOs8imR2W7Mqa9YKZ2tPdLr6GLGAew1vbLODeUhSurxE3s1q5usREu427Uk6xex24S6JmL6dOOjEIqEqYgYhpikIUIR2GPjZCXcSzZOWoK7Y= 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: Hirokazu Takahashi , Anthony PERARD , Juergen Gross Subject: [PATCH v2 12/24] tools/libs/guest: Allocate vNUMA memory from associated pNUMA nodes Date: Mon, 1 Jun 2026 07:47:42 +0900 Message-ID: <20260531224755.9481-13-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6PR01CA0039.jpnprd01.prod.outlook.com (2603:1096:405:3bd::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 1e4fca19-caef-4e56-1eb1-08debf66b8bf X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: VUPKfffV0InkQ2UIAVIe8T+rDD3Wj9GgynshFFk3rO8JQRWR1Sx7embUR3x33h8bTVvlAxn/2/6wFrr+wOJLjf2McKnktJTLfvRtxWn4wITnuIh0lkn2JDJ0bZIztWVngmKQt4pEuB46rH4Yj2UBkFJPQx35t8L/v4Wz8+ZJSdxCqt8OdF+i3vjW9AFmGvLt5gYXBykoqa4i3lTrxZE+LDLqAJSQR2MYR8fittMOk/yAkOfO9RhU6p969bg1E0zA8FjL9guY2nFpp9liSL1O430UlDHR5TmPdIIuziy3cVBb9eK3W+AAqrXw73uDpDQZgHtlOwnE5ssLhYBnK2Zbp232xpu31RCrAo4gtQh/baTRKoPai+baLZK3XQxA/86e8d6I2DI/HPMCNXBwleR2yV9I4cxmnFF1vGvgBaBrIsN5O846pdg0aPclqeXqufSGGxLjqBox7ircR7qRgT24zTeSvVzDS5YaFS+2ncMWHq/f5CiHy7yqNByk9SUhXhiz+Ur00M4TMEO5LvDTemiV6/EkI8HW0wJSnx0kkFvh9tf4iV0ZsU5XPf1w+E7VQYg9mIw0FjXseszDlEZtc7IOcoluEs3BKbi870Kq9MtXN0IPQUXqe5yI6vN2aYVTbfSZXrJctHe2rgO3XNyGmimhH8azmnZDMGGtVzoJ+MqNSExH2HvGTdYFD8vZUIF1LHJH 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)(376014)(10070799003)(1800799024)(366016)(6133799003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?XWMi24sZE91OrLqwAda0Vldz8WN9DnR4sX+Z/blioztWshUkKxeIpGtq1LuX?= =?us-ascii?Q?Y1z3jfOsGzR+mb0V31FmG6EgelyjrNZVbqfbxQX3KTCmCl2Svl6XKvrjm+rK?= =?us-ascii?Q?2Vzae9kyFigOUBV8JqhM/qW8DCx8iIWv8G3Z8rqGi5ZQsHDVLTlh68z70LX4?= =?us-ascii?Q?62Q8SPljvVIwY/zRhY37vOkyks0Xin4E1cOv9RgxOp8ZyJ6lSEJvZNG+st7f?= =?us-ascii?Q?VjwZMIQcFtvKO5CcVt2w6VLIJA5+CYbBKP9KAwZ8fn2bgeldlCVN8P0Lb6BX?= =?us-ascii?Q?W/19Bq+nN3mjMEJdz35cuGm6jjp/uZZAnVGtfmJbDZopQEvwwnbwSva4RANT?= =?us-ascii?Q?2gVsyPRx0JJs6f6dxxTFuy1kO3IyqNpzEX42QWyr6XeP6CEoLfJcIMx7fdGy?= =?us-ascii?Q?ZWKaDVupqpgiAjvx6vetUrYXpls9c2WfSXsAsx4qLSU2MPNNYBpm54soI4A4?= =?us-ascii?Q?4FkbpLTJBzxa+2Bqxk8AL3/DhlelOdK2eoqxcJtG/r1fjG7FKvMs6XO4yJK3?= =?us-ascii?Q?TLByvYNPyXBM5i9lfAdT4b0JMe6WNsO1sCTAViDjZi2acATrnY0W9T6RWYZD?= =?us-ascii?Q?ZSAKk1YK9Ey0yfVD9dLIp/SbrePLIgLYLyEEShQQL1t6n3Y2S+W+UxuymZvM?= =?us-ascii?Q?q97LPjATaj7cQ0r3SCeiq6fa7tKIZtOnCYA46cstqwz3gD2DGwJ1nRARR5wF?= =?us-ascii?Q?HnDhrfRd6QLNLKoaDH+B4b7fKQuIXsbGL7/ioBHOI7BFEJuEDLH0aayvM+J+?= =?us-ascii?Q?T/3cjX6cn+Tgb1roEDfY48SXsqedzRL9hIaZLHxDns1wT4evUhOAQ9RVnnjW?= =?us-ascii?Q?qJB13mWe3ESHKA00zxofNWFR4yIAFLlGwwjgSl/oKeIpsDk/E2rh+FPnLMcv?= =?us-ascii?Q?VcTpwG6GZjVVUjERUHPU9xqNanFePxa/VomgQbtXK6uH9aYaIs5LEI3iun56?= =?us-ascii?Q?jMZfEYi69os1zJoZJdoi0LfLei5BSxHS9yGiiQ8h7vWtPTmvpOSJ2c6JJh4+?= =?us-ascii?Q?XcuWWE2ovLWDR7oEp8VX0Wo0XRtmMcMOoYUcqivyH3E69kDHPbEnfOFUZKvF?= =?us-ascii?Q?Lkvj8YzZX+KmkWLtn1WumGqop4vfokoWRqQt97yZ2M95I1hcP/LyMGlTXhUk?= =?us-ascii?Q?B9p2Gyo4GTjsq5VZSOBeDe83jsp5Un8dHCminsB/5zd4lsxu4ZVo5GY044gr?= =?us-ascii?Q?oe69J2eTPS+22d47SM9d545lJDs+mQGLFbYmQcdbSYh8F/LPIpVZnb/Owy0Y?= =?us-ascii?Q?lwym7L8dUvEh9rFCg3+WSxKcLrubfkan05jjWp0BWxZ0T27nN0fZQsAx96oE?= =?us-ascii?Q?WKnC2UwDHZxYQeRLYcEgxQ3PS2fPgS+/+yur8VfBTEaTQoXCig/ICy44MqYj?= =?us-ascii?Q?hDxjJ5oD1JCR6UETxwXekQdd/jEdbQCfJvxJ1a2z9KVnJz7ODvRmdxwuV+R8?= =?us-ascii?Q?856pQtxIU8DHzmu7buL22U8uzKp+plVkYULS28ejOTlGo0K/iqM503/uDv4/?= =?us-ascii?Q?NXydER79mVnCw6hTIj9fDxxybahbqonBTMu01PlkmcmBlXQxoSKjMMiIXfkQ?= =?us-ascii?Q?ky7qNNL+EHXtA8uSTYJK9+W32dG5wShm2s8c8z9hWQwuyAgvNlijIkUD5dRt?= =?us-ascii?Q?fIrgxyvNM+2qUcnCP/OtPwUMZUM+ck2jFgJFFumt2vuerIdhvlj6E4zNyZBo?= =?us-ascii?Q?l7Qhyjmr9VJtcal5bUtlmnz2pPf7DEr+ZOK0H4gvlpeRJaFfxZCrLk1RUYAh?= =?us-ascii?Q?6qE0ExjLuwTLTTduOKEOYnYGIzAewvdqtCirQlakS4cBGkOR+Bh7h34ks27e?= X-MS-Exchange-AntiSpam-MessageData-1: bSk9cEScBah0cw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1e4fca19-caef-4e56-1eb1-08debf66b8bf X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:24.0787 (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: Gbzln7Sm0ZiTZuUcTuvY5WDOh1t267EYITLxLDcA0/2doDGmQ2iEQQcpaRxrQrWUHmor8k5tTWU7Z/KSN2kwFQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c1860d/1780267712-BE776DB1-9FC8536B/0/0 X-purgate-type: clean X-purgate-size: 5735 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267738432154100 Content-Type: text/plain; charset="utf-8" Allocate memory for domU vNUMA nodes from the physical NUMA nodes specified in the domU configuration file. --- tools/libs/guest/xg_dom_arm.c | 62 +++++++++++++++++++++++++++-------- 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/tools/libs/guest/xg_dom_arm.c b/tools/libs/guest/xg_dom_arm.c index c8d0918506..6beab17e48 100644 --- a/tools/libs/guest/xg_dom_arm.c +++ b/tools/libs/guest/xg_dom_arm.c @@ -236,7 +236,7 @@ static int set_mode(xc_interface *xch, uint32_t domid, = const char *guest_type) */ static int populate_one_size(struct xc_dom_image *dom, int pfn_shift, xen_pfn_t base_pfn, xen_pfn_t *nr_pfns, - xen_pfn_t *extents) + xen_pfn_t *extents, unsigned int memflags) { /* The mask for this level */ const uint64_t mask =3D ((uint64_t)1<<(pfn_shift))-1; @@ -274,7 +274,7 @@ static int populate_one_size(struct xc_dom_image *dom, = int pfn_shift, extents[i] =3D base_pfn + (i<xch, dom->guest_domid, count, - pfn_shift, 0, extents); + pfn_shift, memflags, extents); if ( nr <=3D 0 ) return nr; DOMPRINTF("%s: populated %#x/%#x entries with shift %d", __FUNCTION__, nr, count, pfn_shift); @@ -285,10 +285,12 @@ static int populate_one_size(struct xc_dom_image *dom= , int pfn_shift, } =20 static int populate_guest_memory(struct xc_dom_image *dom, - xen_pfn_t base_pfn, xen_pfn_t nr_pfns) + xen_pfn_t base_pfn, xen_pfn_t nr_pfns, + unsigned int nid) { int rc =3D 0; xen_pfn_t allocsz, pfn, *extents; + unsigned int memflags =3D 0U; =20 extents =3D calloc(1024*1024,sizeof(xen_pfn_t)); if ( extents =3D=3D NULL ) @@ -303,6 +305,16 @@ static int populate_guest_memory(struct xc_dom_image *= dom, (uint64_t)(base_pfn + nr_pfns) << XC_PAGE_SHIFT, (uint64_t)nr_pfns >> (20-XC_PAGE_SHIFT)); =20 + if ( dom->nr_vmemranges > 0 ) + { + memflags =3D XENMEMF_exact_node(dom->vnode_to_pnode[nid]); + + DOMPRINTF("%s: on pNODE%u for vNODE%u", + __FUNCTION__, + dom->vnode_to_pnode[nid], + nid); + } + for ( pfn =3D 0; pfn < nr_pfns; pfn +=3D allocsz ) { allocsz =3D min_t(int, 1024*1024, nr_pfns - pfn); @@ -312,7 +324,7 @@ static int populate_guest_memory(struct xc_dom_image *d= om, { allocsz =3D 1; rc =3D populate_one_size(dom, PFN_4K_SHIFT, - base_pfn + pfn, &allocsz, extents); + base_pfn + pfn, &allocsz, extents, memf= lags); if (rc < 0) break; if (rc > 0) continue; /* Failed to allocate a single page? */ @@ -321,22 +333,22 @@ static int populate_guest_memory(struct xc_dom_image = *dom, #endif =20 rc =3D populate_one_size(dom, PFN_512G_SHIFT, - base_pfn + pfn, &allocsz, extents); + base_pfn + pfn, &allocsz, extents, memflags= ); if ( rc < 0 ) break; if ( rc > 0 ) continue; =20 rc =3D populate_one_size(dom, PFN_1G_SHIFT, - base_pfn + pfn, &allocsz, extents); + base_pfn + pfn, &allocsz, extents, memflags= ); if ( rc < 0 ) break; if ( rc > 0 ) continue; =20 rc =3D populate_one_size(dom, PFN_2M_SHIFT, - base_pfn + pfn, &allocsz, extents); + base_pfn + pfn, &allocsz, extents, memflags= ); if ( rc < 0 ) break; if ( rc > 0 ) continue; =20 rc =3D populate_one_size(dom, PFN_4K_SHIFT, - base_pfn + pfn, &allocsz, extents); + base_pfn + pfn, &allocsz, extents, memflags= ); if ( rc < 0 ) break; if ( rc =3D=3D 0 ) { @@ -415,12 +427,36 @@ static int meminit(struct xc_dom_image *dom) assert(ramsize =3D=3D 0); /* Too much RAM is rejected above */ =20 /* setup initial p2m and allocate guest memory */ - for ( i =3D 0; i < GUEST_RAM_BANKS && dom->rambank_size[i]; i++ ) + if ( dom->nr_vmemranges > 0 ) { - if ((rc =3D populate_guest_memory(dom, - bankbase[i] >> XC_PAGE_SHIFT, - dom->rambank_size[i]))) - return rc; + ramsize =3D (uint64_t)dom->total_pages << XC_PAGE_SHIFT; + + for ( i =3D 0; i < dom->nr_vmemranges; i++ ) + { + ramsize -=3D dom->vmemranges[i].end - dom->vmemranges[i].start; + } + + assert(ramsize =3D=3D 0); + + for ( i =3D 0; i < dom->nr_vmemranges; i++ ) + { + if ((rc =3D populate_guest_memory(dom, + dom->vmemranges[i].start >> XC_PAGE_SHIFT, + (dom->vmemranges[i].end - dom->vmemranges[i].start) >>= XC_PAGE_SHIFT, + dom->vmemranges[i].nid))) + return rc; + } + } + else + { + for ( i =3D 0; i < GUEST_RAM_BANKS && dom->rambank_size[i]; i++ ) + { + if ((rc =3D populate_guest_memory(dom, + bankbase[i] >> XC_PAGE_SHIFT, + dom->rambank_size[i], + 0U))) + return rc; + } } =20 /* --=20 2.43.0 From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267737; cv=pass; d=zohomail.com; s=zohoarc; b=Pcj5ivvtZhTtRqCDZeXEjucArNSgy/lja53cCAdEU+DgczwCpAbjM+sn0XejT0TBx7OKeT9Hu3y6KQxmAr/PB9do95y/IRTn1XldHL7vu7YN2i0s92bP22WkjtzozLbE+X6yoKwrodOfqyZQ+AvKbmwb2Dt9E4xVc1w6z/9SnsI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267737; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7/1jjuePRl2BihluZPqQwpapSqp5qYBLP0RAoKJuUMM=; b=VbZ4HFjsvx2pH8/2afDU3P9GjxWnbQ7NEb5JWiIVQJ4HMVk2I9wuPW67qQ73wQWVFwCnpKCkhkYIXb9TJg34tfCD4r44/NZsN34FaC2lGCu7hDpSMgwhsx41g/95Z2HWVJtDehCQtHUMdI8qRI+dCE2KCj2gm+MVTuApyROi08w= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267737632489.18141814463513; Sun, 31 May 2026 15:48:57 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323472.1589234 (Exim 4.92) (envelope-from ) id 1wToxL-0007Gm-Ln; Sun, 31 May 2026 22:48:31 +0000 Received: by outflank-mailman (output) from mailman id 1323472.1589234; Sun, 31 May 2026 22:48: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 1wToxL-0007G0-Fv; Sun, 31 May 2026 22:48:31 +0000 Received: by outflank-mailman (input) for mailman id 1323472; Sun, 31 May 2026 22:48:30 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxK-000732-9p for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:30 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxJ-00BFyL-Mv for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:29 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba9e-5cb7-0a2a0a5109dd-0a2a4508c056-18 for ; Mon, 01 Jun 2026 00:48:29 +0200 Received: from [52.101.228.92] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbabb-63b5-0a2a45080019-3465e45c1533-3 for ; Mon, 01 Jun 2026 00:48:29 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=qkng8pdB40bOngRy4VPOI3CpFigMMbOBmcth24d84ePYynjcrkP/4beY0urPZKOdWSGECUGsf0igmW1cw7sb81dfHZXWHMZpGP4OwNZRFW2ScWcNOi+ojE+ZBWS8m3njBI82p3Ussohowopr82RCPkNevKd+T+9frXo8B2jHTu5uft6Sqqr4mGbzCmJNu/eccrX4jmQOHvl/5dL2kgyuAOpMVWm0T7bubhpj/cjQ15Ji3VYEfSRv9YX4x8dcR5e8GIFjxZml5371aTu+crjocPIo8dQtRo8dEyfmFpsLzNBpRES3GKA2HyMHw56VvXf8YrwdcSu0INjDqZL1kpDYDg== 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=7/1jjuePRl2BihluZPqQwpapSqp5qYBLP0RAoKJuUMM=; b=XdPmrDFCfAHC+6bEw3AzR9ZgmdgqGVHRullXTTPhlDoW8Vh4bHw3hgvEQIfzIwmdUwtyGxqM96TrfoyucODDEZELOH6V2lzbst+8x/t5MmDPtMb/4cqiwHEar1dcMN963BuqBywW66UuMJ7VFksphg6EQrwidyXUDHIUoc30nWOKSBL7XY/nzqEtuwBVqL/JYGX5CPvbaJhh5n7LP7S7SF1iBR3K8RulQXQJXYBfo85lKtPbF+TrDMIBmR1rR313xYroU6PoRHiV4L3ZB0VBcbeT8iCEy1iwZoXFNwh+fRmRCfUznH6kEnVkEoHpfHPf9YmGqh2PrYAYA9ZlgdAs/w== 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=7/1jjuePRl2BihluZPqQwpapSqp5qYBLP0RAoKJuUMM=; b=V2t8hQQYfN9swYxsjRnEUMT7+FTLIJMqj4oMKtu/9mYVaujCyUpHgL+VOg0C+YiFUrXR6ey1/NeaOrnNV+aonoD/bxRPgoXrClNYFGaQahYOwiqaaiDldypuxqVyEDiZOgsGPGc0Z2EPLRrDNLZIOovnOFp5hOS3SfqQC0D9XMs= 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: Hirokazu Takahashi , Anthony PERARD , Juergen Gross Subject: [PATCH v2 13/24] tools/libxl: Add 'numa-node-id' property to DomU memory nodes Date: Mon, 1 Jun 2026 07:47:43 +0900 Message-ID: <20260531224755.9481-14-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6PR01CA0031.jpnprd01.prod.outlook.com (2603:1096:405:3bd::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c5f87ad-c412-4a6e-129f-08debf66b9c7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: T1mouqI8oX/Qv0sQojux+Q+ytCkgl85Q9fvZLZOLnYkYJV2mUj5a9kWB0azAiLzGJcCqAO5+naCdTHueAvliFdp1k6gwxe6IvqSL84HpHcRqPAozpmtWqRtVXpapyrKcS46MKz26OF9caIMKEU7p+jFxJY+8p1/kdQMM6MWscaXn67orgvJdI/s2CcdszKqXkgffXiwb2Xvi4LgJwHMzMzxEwTOTERHSJLk9JLf+vFowQRQrcboNUl7mgl141+4nqvZPhR0ILu/5GR+wt5eRxzkV8kapaC7rCkSrWJT/A9gJSw/bTsRC166Jo1FpTQbzY1JK0db4wPS9mSac/gdpCZOcLDKoQ/wyQ2UZUB8jT5iN4AivFQ6u8KQ+HMUDIMz+WcOAi9KfWxV3rKQ2bhwo/7bi52lb2EtafmnocvUIA1jXOL9udgCHmGX1Gma7Ucjiw9p5ayBPwF/lUOOT9eRBIQ61PLRd837XqCWnRZLq+18MwWWWVC0YM5fQKZIahW8z52KW4NYgXCj5R4vw0hLLWJJd+VRSOkJ8LQUoM/nHVOgUKii3iYoZ1MWWAOs4mpj8lOgmLn1gryq213BaOP/N/9M0GuEgaVceQN67f20OJXinRI/TbDfzt5ej0TYPfsNjR8GqqGKoQa3lxtR7B85oDOrBVnUTXHbTFud/GrhzaTuT6V8+RFCe+6XO6+bLP1Qd 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)(376014)(10070799003)(1800799024)(366016)(6133799003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?5xlKcwDJXm81g43lhZ56okgF6RDlsU7ejF1YBUJymdeUYpt460qyoR6JyM8V?= =?us-ascii?Q?RN/yQYQDjNYD/UysF2xXUerkQUjl4Yp4mgSfx13ocKVWPSbPypyyCBOx4MFm?= =?us-ascii?Q?it2T3UOEvts5pzArVIDCvRfcF7W/KD80qmHSZsM8VXowKwJCJVJ1AIgcxVlC?= =?us-ascii?Q?SubyRghV86vWjBxAL2TMQ6qD0mejhLE8f9HTi7q+kgjyr2ioqOpbL1eHUiPO?= =?us-ascii?Q?DTjDU1fctMnzyJtqTgkEdr6K/gQ78IEFcn+ao4Z+bCuMi27MncEgGxoZ/uIh?= =?us-ascii?Q?LDmtEBfjvJa/vmrkB8Yrr468n22ZIyikQp6hL3f6FwUZywKKmj39xpfwAbrH?= =?us-ascii?Q?RqY/3IPTgIzHtdA95UrUphYh93pfBrXdCrH91p3uDrYUhEujkbq2YsKhmm0h?= =?us-ascii?Q?DFjdptvOpr5+iduUOy1avB1Pr7WvXck1tcsJ1Krbyvs3Fch+WKLYTTPVqF8W?= =?us-ascii?Q?no+x6VD8/m2JI461KQ9fQ8uHHqeM5juKX9mdsWaJ3npOwjEf+jzKc8grwtpK?= =?us-ascii?Q?s8aFXS1iSvin6gYbA5SNkvKl7+gCInyT+5t6fhmU69837u99qj2PQ0l8SMqa?= =?us-ascii?Q?2RfsV2OV1Q8El8IxGZARQtNJiW2hl8HD+EfFIqKP5wJyD1cVy/mOYWitYBA6?= =?us-ascii?Q?wz+5RT/tLztrf5wZSvBCerCoWUmD3oNUOsCxl3LwTXvUAtuVuK7RL3b9NBkA?= =?us-ascii?Q?4QaB+4g9a0IVKekInluv+ay661VPRZ9alcidPOiJYeBxdGgopK5ceHPhEtdv?= =?us-ascii?Q?GtCUyKiJfJf7yyiB4FLhKfVVIUHUZoanxuISkegIHjYMjTsVqJ2eECg1QQh4?= =?us-ascii?Q?qAHo3sxYrww0atKylWfDfBxKT2NrnaQB15MtcUecoEQ8PX1NYe9fjwIuDeEo?= =?us-ascii?Q?xkd5LcEk1vVHE2VM1WQI32HbruEAAaXAjGlPOHR5tmiLVNvqQsNvN175fJFD?= =?us-ascii?Q?KQhLFS2ucMd7vhMl8as96LXeR4cavjm/7bY94kWCX0BurvKBSqPG7gG5dQQa?= =?us-ascii?Q?f9ignM268TTAokrEzSDM5AhJmaegCQZAVMIUT41s8tOByTVLS150T+e2Idkh?= =?us-ascii?Q?4HEecqm2eN24CibH8s5HPcZFY1PVJ64dUyLYNeAQzvwJxT+kq6QlIAPOCCiL?= =?us-ascii?Q?pK6jcMD59IVK0jCAo2clKnuvBkY0FdMT+HHr5wLDOzgNNK7DM9azwIFFz7GX?= =?us-ascii?Q?Jszn9TofACwZU9tLdZTbf0Mcn6dsYkPCqhi/KS+Sh2RmnuJitNXZ9NgVgIxN?= =?us-ascii?Q?dTPrlTVBzmdgq5s8PsdD2cam7D4clgbzLzsl+eiSMMo4kIPRRNsG9e5ozyTC?= =?us-ascii?Q?8R4rB7LB28LvfnhG/1NI++edGzUqbynK9jKR/tOrY7ND713iu6HIWjRkXC4P?= =?us-ascii?Q?6mKVQngIh1geu8MuDuvQ/HIqgP9eKC1CeazkyLMzAdxJG3zoBr546twbtG+W?= =?us-ascii?Q?nmD+TszW15VahJ4ohgz5CHyHFMEdGmShSo/s2DWmAmD3rOAnaLY6HcFoVxBU?= =?us-ascii?Q?iV4/ssZhPHlGgIOV6Q9NhW09Xf+lYWchf8FjTPIAJatG9AQUPqNO1IQe2++e?= =?us-ascii?Q?g20UAaKqxMOC8ASQcxGSpXQL1cC6tfw8D1/681jYso2aX3GCCbRq+t/PFJbt?= =?us-ascii?Q?n/ZyNhVIDTiXFQw2cLjzeaDPptRIAhekKAn6YRcQQJvqSE9A+akDQjPCWTko?= =?us-ascii?Q?6QNSoOUztbmMNqyC4Oc0oYXmf3RZsiiqG//6Sw0VnX3dIbpsCrPtZHWkH29D?= =?us-ascii?Q?DxRKZFaSQ3sfmLhyFQLHqpiDyuWESf7p6peFMTOIN2uD31Xq8vq/xdNE3kMM?= X-MS-Exchange-AntiSpam-MessageData-1: ITtX9Vx1/3BWQg== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1c5f87ad-c412-4a6e-129f-08debf66b9c7 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:25.8217 (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: age/xR9+c2G4rxOvGrucGUSC4Wz2Ae83LE0Wr5Rz/vxYKGvGCdjt6ZsJOWC5t0B1EvdeVsUHJ/RCGTh0QPmBUA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c1860d/1780267709-B757FDB1-1A447DF3/0/0 X-purgate-type: clean X-purgate-size: 3839 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267740455154100 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 | 50 +++++++++++++++++++++++++++++------- 1 file changed, 41 insertions(+), 9 deletions(-) diff --git a/tools/libs/light/libxl_arm.c b/tools/libs/light/libxl_arm.c index 7e9f8a1bc3..6eae33cdd2 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -670,25 +670,53 @@ 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; =20 - for (i =3D 0; i < GUEST_RAM_BANKS; i++) { - name =3D GCSPRINTF("memory@%"PRIx64, bankbase[i]); + if (dom->nr_vmemranges =3D=3D 0 ) { + for (i =3D 0; i < GUEST_RAM_BANKS; i++) { + name =3D GCSPRINTF("memory@%"PRIx64, bankbase[i]); =20 - LOG(DEBUG, "Creating placeholder node /%s", name); + LOG(DEBUG, "Creating placeholder node /%s", name); =20 + 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; + } + + for (i =3D 0; i < dom->nr_vmemranges; i++) { + uint64_t start_addr =3D dom->vmemranges[i].start; + uint64_t size =3D dom->vmemranges[i].end - start_addr; + uint32_t nid =3D dom->vmemranges[i].nid; + uint64_t regs[2] =3D { cpu_to_fdt64(start_addr), cpu_to_fdt64(size= ) }; + + name =3D GCSPRINTF("memory@%"PRIx64, 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); + if (res) return res; + + res =3D fdt_property_u32(fdt, "numa-node-id", nid); if (res) return res; =20 res =3D fdt_end_node(fdt); @@ -1365,7 +1393,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 +1744,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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267733; cv=pass; d=zohomail.com; s=zohoarc; b=Zp5z8BrOkNrfELENtlL3a6q1uqwfmo6/5m7FHgcvoc+ZFWUPWwnfsltk2zb6p/xik5ekGr76HaRYkTkvvdNsQCjLTGQnRask3g+KWUfIY+ytIFMQ/oQOFsmyNRwbZ5jLRnkcMbWPLu57hgHXt/Bx/v3/hZb5wWD5Y3TwTjYNx70= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267733; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=dJizAY35JSMvsjR4vL6kswffWmnRdXb3uawGnTqPjSg=; b=Jakvg+FG2AQRpA3QjV9pSD2H6pfMq9aZID/pQOBpxDavs5whzBeXg2Cj1zg5noGQh5THrpl1hNW84Vpm1yDnfkies/E83Fqacz+l60CvuagmjC30R8HHFgHJWNldktO7/IasjqJ1COPD2Rqn0JthMiJ2OZFy5L0VXJ+Zhe3u4qY= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267733305156.45788398118543; Sun, 31 May 2026 15:48:53 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323476.1589243 (Exim 4.92) (envelope-from ) id 1wToxN-0007cX-77; Sun, 31 May 2026 22:48:33 +0000 Received: by outflank-mailman (output) from mailman id 1323476.1589243; Sun, 31 May 2026 22:48:33 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxM-0007bX-Ua; Sun, 31 May 2026 22:48:32 +0000 Received: by outflank-mailman (input) for mailman id 1323476; Sun, 31 May 2026 22:48:31 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxL-0007Dh-By for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:31 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxK-00BFyL-Op for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:30 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba9e-5cb7-0a2a0a5109dd-0a2a4508c056-20 for ; Mon, 01 Jun 2026 00:48:30 +0200 Received: from [52.101.228.92] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbabb-63b5-0a2a45080019-3465e45c1533-4 for ; Mon, 01 Jun 2026 00:48:30 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:27 +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.0071.015; Sun, 31 May 2026 22:48:27 +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=VWhCYBYjgDVRfsLv0+tiBm0H9tHExWCyoDv6ruTxAv8pAC0N4QFE0YhnstNzdJ/Hd6qjsuLwFe4NczQ4s8UT2uzEvy9ebN14uk2yNEK739jh0xSWiV0LAEj0EvaG/HBgSN1TqgKmb+rRhUiWvc34I3JgV3V8QaiSfhia3w94RbYyWvRmf2d7F86CTBJ8VqNndDprk1JNVIE9z1hAY2mbdOhi0HS1GWxye0+MwgQjzscnofpoI/Hve8voaL9CDvZKDmj3nemPJyXcs8RKdL+pkTJOwK4zl5gTV82zC9dXnUEjTF8FEnEbTZJb+0B2HuvPlGPJjWxnw2bJWN74JFBAIQ== 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=dJizAY35JSMvsjR4vL6kswffWmnRdXb3uawGnTqPjSg=; b=QUTXXRKiFkddXpWcQwdOKqo9JbyE9cylHW/TWG31XgiOn7pAh6YXHYNQAUKTmE1PaDGSwFVvWVpAmXrB5WKdTCmDnDHR3vgEvB5QMdno091nPisDbI2XN8yFJuMukRnIP1min5tY774ZfH2hElUebS/DBpd8EMDe9/QP5JJPIWDAUotLlJFoQukvqC6uR83C/aL6QSu+WdRpx2bBr78UhpMZvWFhI8tAzH6HU2zoYJWJ5QewBMe2+AFU3vfa8fcF4dRlsL2lHjP8MdK55tBbuxLzNEsGaSVfVGLZQaYZcDcuuNjw58WJX3HbxYddkC2x3mqJdwTTEK5+QUgarJ3HCQ== 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=dJizAY35JSMvsjR4vL6kswffWmnRdXb3uawGnTqPjSg=; b=LAM03Iq1gMOE6CuP85ATtm/z2gQBmNdichVJVLolgVsGn4mddds10aoKyL3V1gc7TcyGoELM2wd6AVLL67HPgWgHvSC+d36jkoZFKzmJhOEsC54ZIqlwD7hrbzQpyHfdwLedCQxodvkIQCFkcd5wg+P2OI0y8E7kKWAY2Boybdk= 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: Hirokazu Takahashi , Anthony PERARD , Juergen Gross Subject: [PATCH v2 14/24] tools/libxl: Add 'numa-node-id' property to DomU CPU nodes Date: Mon, 1 Jun 2026 07:47:44 +0900 Message-ID: <20260531224755.9481-15-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6PR01CA0034.jpnprd01.prod.outlook.com (2603:1096:405:3bd::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: d62d177b-6f2e-4205-680c-08debf66bad0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: lHvFDjGkktSbTxOgcUdcUwwR0pLpakSx35u59TAfgS1VfChjXEmikLxsJ1WcgStDKu7dYl8Gz+aQ+emKy5qLuuI+kVoCBZF/936Owk8vnq5lzvKYcF4DUWJ9YQY7z4fs7BxiBTYy22ulzElMT8kvyWbAM26KDLSbdvbyDNXPYcT43exnTDAO3Rg5NgABDJa6FfTYxg09RUia+HxrM/hHfYemqrJop3716JFuWuB/s9j0qIf6DkIxedaitG/W6hmFzFh2tAAt5vmnR/hvEh/U/XlNy/hVT5COUSyff3+Hw/7TKv6UThAoYVgtfaHBX6soT/D9GU+TGFbEES7LfMtslI/V9t0EtQjXPvDo08YzSEUqZl0lB/WE4iHnChKR+H+SlMKTK1kWG16tnzSIFSBx62mF3JsYaaKGl5OxpAwtN2st5iPMlOsqtubQPJVSGlMs/jAW4DPvzeMcH2RwKFrFXZD1CZzm3E1CN2pgMnA2nS5V0Ay2sgbxq+fsbzA0XVLZyjKZFr/FxVlEdjtx84enttB/zcU0xQboA7U+FGwUQ9Ge++tOGvDyqDXdmf1tP7GAqmi30N/kPAhY+3pG9qESp7qQkXqUGlTt9ccIsA2ibBawLlRrbwtJ800oUocMJgS35J4LPFGUJ7MfpgFwnWEmBVp7+2cuLJsSzYG+YOcU16Az1FLeM0mT2VqZ82FEvBxL 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)(376014)(10070799003)(1800799024)(366016)(6133799003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?tbtC/78mxTjYO9BfRi/paVtKhsa1VNOmW3wseRd8sGM4MDsGkgGKVzEv+t7k?= =?us-ascii?Q?Mepn6qMkFgFYa2+PymEPzBjVaxwJ002pFedJ4qv1NkbQHwnqs32HyOEL31RU?= =?us-ascii?Q?T2QlXOtEgPWd0iI9HmzZ0CoznsjIstlPuJd5gvfwWQ9FThpynEiJ4REe+kIn?= =?us-ascii?Q?7XLiGgaSaepzQUW0pvOEIEVPFLHtadHatEUCdbxN0zv7ZMcu+5SgrcQrdrh6?= =?us-ascii?Q?wmISLIYBFI+ZOSl9qqR6cBeOccasLGIMt2lVm+wzIqijG8/LbihlZR5vXZ6x?= =?us-ascii?Q?NriXx/5/DaDqIwBNKdkNzFRaX4xh+R8JKrm16IloCXi7OmvqyUqf9Dtpm075?= =?us-ascii?Q?HXhiqHHwjEM8/P1p6Ee3eDmBp8LP183gtx13Tj4P+tDfeiTDYseEFgkbZ/5D?= =?us-ascii?Q?BHUQNCXCjQDQwUghJU9fbH9Mu10TQxJuWpw/uaNcbazebrkfuYsFSldm/yk5?= =?us-ascii?Q?xR01snf622woNbFULZF9XJTq5aW5rnKmzYz2XIshX0AG+Hqjg/LEU8f53rxu?= =?us-ascii?Q?SIyB4IOaNxV6lWIgnKqX3SvkYEGMbL4E5fgMafkyIBEk2fqxtIjU0J4DVJPB?= =?us-ascii?Q?pUF1KD2Wu/zmw2tTZXgTEK2Otdr2k1pkCoDdXknRNNBeNkswcb/inU0BYNLS?= =?us-ascii?Q?vSwEIL/1qiSl88QHsrqK3ttCUjmF8sVFSn8sn8aPJFTH4p/YmrkT3P9pJBvF?= =?us-ascii?Q?I7RQhh2bNkRFK2lnKzszYO1NNwz+h9QE2xAfWLNGC9JOvzKWYqDS2PkeS/SR?= =?us-ascii?Q?X5u/DlVZulz/bxj78UDY9/zffRS3Fk0Klc5loS3/AFRu6kF4W7wp/y7nyc0O?= =?us-ascii?Q?bN/ECWRG2E1O+vSIAIiiT9zJ87s83vmR+Io2X47iPL7VNUKkUNhovGcO0wAf?= =?us-ascii?Q?L+Ok5yMfls8lP+ZXNxbxzn3H29PYzov1WB+GlvNxqFdQZJBH9kNe7Jaemuba?= =?us-ascii?Q?8cg+O+HwVQyWBh5EGMHzbp67T39jh3OfLvxg/5OWNSVmrJZzJMxDS1TWfXPw?= =?us-ascii?Q?LfTLHu+NrE1PMIYUXkHLR7C9d9TAjaJk54igysPW8IwcznZc4afw5zO+Fvrm?= =?us-ascii?Q?hNp6HPBKMEOwhUk7WmmtvADeDMlljbbNQVJt6NtlbxPfmza2cXcl/iRw8G6H?= =?us-ascii?Q?eu+5jqdkrPQWVWJnYCg4v20vgHUhugSdcpQOFZhyGet+6RwgaXnlSJmBW/vu?= =?us-ascii?Q?kIMGxd2eC+b/xrdjpWUa58AN9VS/OsA/j+zhtP4uxPbUgnXgj/C/D77dHcUP?= =?us-ascii?Q?KnYgMkXFakY6Od36LwIjqfCZhnzOW/X5NTmHV2FiujosyszK0Lu4TP9CWHTv?= =?us-ascii?Q?4cdQYe6y9rNfWVOxyDkFmeM/vsZp0+VOduGZsfdlRzQINvIUFTBmdFAlgVNV?= =?us-ascii?Q?NhBubJrrSV8vmTGcKoQOmEqQQcs+OCtw4LIKctfAIkDzZK6cLNGN4FkCNubX?= =?us-ascii?Q?jtE8/YvWJmlmka2MbSzhFRTpQIZVfZSC5i9BTLLcDyYSkJQa8Nc+0sM3mFoZ?= =?us-ascii?Q?jVID2CQP8g0W4pg2CI3idm6uGHtXb+0Uj1KGw7QpQtfsEVvNZWQpZp9I+4Ye?= =?us-ascii?Q?nX9XLz32n70wWcK1Kopwfhmv3sXG6bhnXs8Y3+nO2or57vM9cLNKwl67r71t?= =?us-ascii?Q?e+ZeDlVQvfGqqz4T8/3wUI84eEomF3CgskHIHKDti90S/tgcuAw1TaIhFBPe?= =?us-ascii?Q?dcGtyyiQJzSJeZ3Bq7r7JhssuWBtV3FIdohSRZ3rYOohiwsmATx2j3s0Fylo?= =?us-ascii?Q?CMAYVwRRrBwaB0WFUqoMVgk+lsh4we6OYy12tU/j0FMJOaqBuszpdpXdci8W?= X-MS-Exchange-AntiSpam-MessageData-1: qyig9pLEGm8ZkA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: d62d177b-6f2e-4205-680c-08debf66bad0 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:27.5697 (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: ZHKeD0SxjfdPZVoU4YFCg7P4eINz4FufPI6N23CdoS7H+xF649sNm3MERTBWnREvKEwLzMXkj8mS5cT7BF+MjQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c1860d/1780267710-BDF6ADB1-CB423CD9/0/0 X-purgate-type: clean X-purgate-size: 2298 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267734807158500 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 6eae33cdd2..4b0ed99229 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; } @@ -1390,7 +1402,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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267733; cv=pass; d=zohomail.com; s=zohoarc; b=BnWoJW+/bYhOvjTPLXr9e+0Yf0VNIImSGehAOfXCG9mSjfWXNPqMPSi4MseMfdsVUlfcRf0a9DUkfqfmhMtH1jMljuoaFF6wVgmAu++mK8KaLnG0sNrhLKOBlvqfDf3yXfyYKpIgYKhxf/W0KSwknBO/SlgF4xPZjbUpwFTvYIU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267733; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5vjE+i4Pyy0yY3FTsKfqjfjpLb47e4a4LegkVylR5Ng=; b=TDwCYjhEaGLT0zQx+qv+rIdeujpFB+ppe3ka82R506Le6TOQXW57cZ5YhymZ7B4+qfwYhuMlzmqIPxT3RCNwcXHKiNKs+zs7xvTpl4yYnivE9enfGZ6aI+IUazFIrzTT7FEt97mKDht0QlzI9lroCr0onFXei5x9jh6eAN6KQaE= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267733542634.4552742106075; Sun, 31 May 2026 15:48:53 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323480.1589260 (Exim 4.92) (envelope-from ) id 1wToxQ-0008Ok-NR; Sun, 31 May 2026 22:48:36 +0000 Received: by outflank-mailman (output) from mailman id 1323480.1589260; Sun, 31 May 2026 22:48: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 1wToxQ-0008NE-8W; Sun, 31 May 2026 22:48:36 +0000 Received: by outflank-mailman (input) for mailman id 1323480; Sun, 31 May 2026 22:48:34 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxN-0007hS-Nk for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:33 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxN-00BFyL-4B for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:33 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba9e-5cb7-0a2a0a5109dd-0a2a4508c056-28 for ; Mon, 01 Jun 2026 00:48:33 +0200 Received: from [52.101.228.92] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbabb-63b5-0a2a45080019-3465e45c1533-6 for ; Mon, 01 Jun 2026 00:48:32 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:29 +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.0071.015; Sun, 31 May 2026 22:48:29 +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=LH645p5Tyh9SuZcgihSaeZL/hM9dbpGypGgpOJuwyo93Lq5E+D2vTH3arZiwhGnUSyzW88MVWaRAmHyYeFnbbsCQPysZFQaoCiqOme1TEQIYDnNsNfaWfjU47iUvEtg+2qPc51BXQxNher1UM2qUAzgLnBouuwksJfNwyBmTbM1cJOY6xn4pQrueoCA9oyH5g+1AYIioo29eZbUt2BoHYYzm3h3zx3KlcOMPoEl3bqzsXBHL/eHIozRFK5SX4QTda0RiK+k4CktZMSjyTZ0Ovu0HNmyRApDbj/a0lknYKkvXNfbGF4GdcMC1Qwdup2qs/oAFyKrfWwFO84oHgZ5Lig== 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=5vjE+i4Pyy0yY3FTsKfqjfjpLb47e4a4LegkVylR5Ng=; b=zA5o2bPkcmTKsU9gkrdgUO3ALTwvk/L0G2gxYBtoBXKqZP1kXhigfTtnDnsuqPFswmHdmwtL8waDOaLnwnY6FA6CAYu1WCHVCb8FVpbkFsnwMBdB3/+6toTFBQc2Ym4cTHFo/f1FYFU85eWYOk7mrV1OmvtZuyAH9/SP1dPVPEGUylIf3Bk06myAOgxzEQpcWx0xyq38bEpSAaqzmJFOLJPVHP9fatskfq0TcKFRi2M6um4x+fnhpN/l03Lt6Tm8CCGey/kWIRGs69pvq7hE0OWpn6gOO8fMQR0x3v9E+KZHH3Jb8Ee/yF6bxrb2uauW2FVAye/k+dHP5ixK8tqqiA== 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=5vjE+i4Pyy0yY3FTsKfqjfjpLb47e4a4LegkVylR5Ng=; b=YjFPGhv23AhC6UmxObqW8Eq1zFOdjYT2HVPbC/Wg+i1JwlOsxxPWgzSgh/b1SP5O3H4syN8U+DhPqXh/VmrypjEfwgPgu29QkiZ+CKlYBTi+90kRkBeQ//sQJxMxnv4gAI67DWO8VUpKFF4B0MtktUbWD0BTw6MeguQ2EzSI45I= 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: Hirokazu Takahashi , Anthony PERARD , Juergen Gross Subject: [PATCH v2 15/24] tools/libxl: Create 'distance-map' node in DomU Device Tree Date: Mon, 1 Jun 2026 07:47:45 +0900 Message-ID: <20260531224755.9481-16-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY6PR01CA0038.jpnprd01.prod.outlook.com (2603:1096:405:3bd::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 299f53b1-bda7-413b-d05f-08debf66bbe0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: auvvSF/S1nxpM/lcQtTLg1WvEmxBOjloLQKTjTAgz/nuTzODcHXs7Ltbb4XpDa99AgGs4shKTls3xEkySZ868eVaW0ETiUu/IoNpCW2ygmzBe9d4opKRPDfEoZXq0RXYVk/lofxtcfKsyukPnFo2zL2R2YnbkkoI2JR08psxImHGMIuaEOXE6uvcjDSSDnolWDu9R8YCmlT0VC16ai1+NcA96UdXRvCiRK4I1oRFETeQ9vifo136uQGa7jyeIPNbdPJEZMluA23vxjP8sTNTksPh+VrwDXwbqIgXFxVbRGjUor59OQD087xuyceLmJlj7UWcm2d+Sd5Pui68hd1mvJAFks8RdOxBBh+nOfkI9LT1mO0f4sZV7zulnWv4BE3Bwhae2/76MjHPswvjweY7GRwj5I21dXAkLaICi3cjeXF3Rj7+XSoV1/VzSb87pzmrFB4CV1r02gq4XvoWlV5PVmXarW0wIdK5+kzThOeETFMpixB/nRPSigvZrf4NnHeNqggjbNuOs5ep/uFoimB2Z4V0Nf84sQNvxHKo99K0KSX/a9ntdtYYQaj2gdjnv1NQgnY0jRz5E6nf+cGHmiA5sRUrivJZ6XOwFIsKfHFssxFUlx7IjLhzSuilywMy2Z8ZZky5k2HDWOAuOtr+BzFMSAjDPZpsVQhxlpY5d8+SWPDHuf9WMuv8uDo5cgwnIhjp 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)(376014)(10070799003)(1800799024)(366016)(6133799003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?9UanKKOCxZi5m3rEHuAqFl7ewkHNHkheXWOuRXGO5Ah1QJKIHu7C8J+iRgQ5?= =?us-ascii?Q?/+nfgejz6Iu81MLrz68IcMLgt9GaaZcxyAGxx3xqXBSqvTT6UCu/PERdRYxe?= =?us-ascii?Q?U9OK+qrFens143MyI+CnJJmz+sjxAHa7+9W095yiJuERI3528A8jnyPTi0gQ?= =?us-ascii?Q?5qEE0KNKfevrsrvmiHHNylCnxVN6VISAAyoUQ3itUAW2sYeHHNy3FRQePrhA?= =?us-ascii?Q?U+jo+FjsetDZHn/N4entD0eWe2hHQOg8hhfPp/zOHmkiLfW0nFx/zuDa0BW2?= =?us-ascii?Q?ZtI/SX9TBuxbOB/a3+e9ylGY5vnOn5Zx83V/JswRQzHfD7GHGM2TN1cNF/Yj?= =?us-ascii?Q?1GSKashohqvPtOnl6Zvps/kpUNlRIKAifOyl9Um2h3TZRdmcCn0Py3HoaU8K?= =?us-ascii?Q?32K+K0wncoDGsV/nN7Z04qJ7nPFw9QV53XCdHzSRjlPKegsURKkypgnpsvUm?= =?us-ascii?Q?9DykY2Nh2Gs6vFUfYlhoZjqFPfzPn5oW/WMRGPY0NpptatWwPblsTbCm5WfJ?= =?us-ascii?Q?xL0q14yYHj14ep5YkO021r8Vy9rCb4aNtadrsps6+85AHKphxYtQoVaBjDkX?= =?us-ascii?Q?i/GwsWR66EbgXD9Tww1w7/doekT+QSgpy1JGoFYn6o719KQDmK6YYATJgnTP?= =?us-ascii?Q?QPvuKutpr+rsSDBS2Sl07cX+C6I1VUnWf+HEyobRXXzHJv9kAfbSrW+CLRZw?= =?us-ascii?Q?QpNVICiMbJySAIq15ppRQxNlXfk0ntLSwktOdeGyg8o1AkkRrOGxPLzS6l60?= =?us-ascii?Q?N7T+DjbbWq+HUV935A7sto3sW9GhoP47rtzAr5X9EmcA4VwA4PzVIsiD26Vu?= =?us-ascii?Q?gYcy0Iu2oR9yxgSYyJ/fYucJqUops40aGe4ttipQ1IPcTEL93mynUH3fbHay?= =?us-ascii?Q?AjrR1BGp5Loq43PGaUQlSFbWIsqRk52QQDDyZcBC5qEYwlpBkIJ5U0B6gwFW?= =?us-ascii?Q?cb/cjb/uphtSvoNCNXFN8nfLlk7VozFh034ldFmPz1x8cJXYJSUlotMfL/mL?= =?us-ascii?Q?ffScq/uOteqaRIGhKMcQsYIb6Pn3mX7SmzwLjGBEk9n+f/sa+MTMMm8bYYUU?= =?us-ascii?Q?XjdRRI/HjO1KK7Sdhv+Ev0LDVHKi+39dfhcfQJtkghGB6hzHKmB327joi6HW?= =?us-ascii?Q?gvkjtHYL77DAisd3Ss7Y90NIrinBxxPFLOkdyy2Co+gSL1qd7S37l4Yac1YV?= =?us-ascii?Q?ddyqE1bVbBTzy6wxXgaMKMmqT2ig2WWSylx/9RvxIaoP96uy3NfQwbsOlsi7?= =?us-ascii?Q?QhZHcMwgXQp2vhwzXLrWBk4Z5dNjpgYKkwpE/M86wWxMo7ipZ+FG5TpP21VQ?= =?us-ascii?Q?IHJT8q4aEODmNxpNb5zmwAG5gHy7KFbsZ4oqch+FYz3feWgDYk3obhToM74m?= =?us-ascii?Q?UfAztpf7zmKhcCn+4dbmAiO85cknW2M581yRgDY13y/4/CnS+FEPwn/35AhC?= =?us-ascii?Q?dyLUxwdnJuEKEBaEjscH9xaeQnyqdrlVUvdyjIsv+0w0ewdbxNz8B1IsXdzn?= =?us-ascii?Q?lCTpTYG33FH6I7y3lFkBXmEpyVgxyfLmj2gxccBNPbedMhSK2Z3JNXdT9WVX?= =?us-ascii?Q?DwfCHuCD8aoJ3lZxxWl7yWocYxE/+D3B1pIWe3vlNvAHWu8TjbahIJVHAe07?= =?us-ascii?Q?tpweLtIaKf/LouVzRjmOhjUdn4k8eJ8PpY/aqpUC+l1SMbjfxyKlIQGSPK8A?= =?us-ascii?Q?uxczIeMLZXkbOuz8S0q8lqXA/DBbJ2X8CHXMvz5baq7hqvjBT87iD7e77Qkz?= =?us-ascii?Q?VHBi6c71FTZU2Id94RGqTfmWZ/w8vdyiuJEoYCvjPEyqVSoj2kdl4Vb+8R87?= X-MS-Exchange-AntiSpam-MessageData-1: MK5cR7io9xoDeA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 299f53b1-bda7-413b-d05f-08debf66bbe0 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:29.3582 (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: sWx9NwwGGG9/qk380X191uOiCYKYIBokaZAOMXhd6bfh25XF2kvYef+oQTHrTZOyhWHGcvgO4od4j/Rlz7B0tA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c1860d/1780267713-C5784DB1-B0A279DA/0/0 X-purgate-type: clean X-purgate-size: 2062 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267736373154100 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 4b0ed99229..466bee95ad 100644 --- a/tools/libs/light/libxl_arm.c +++ b/tools/libs/light/libxl_arm.c @@ -738,6 +738,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) @@ -1407,6 +1440,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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267744; cv=pass; d=zohomail.com; s=zohoarc; b=KiMq+vYJZREVXupBK9bq0KyW5IbqglUj5DORC3WzaQstFgsNX576zu7CfPtX1xj5/OdZJOWT2m/nwhBxp5j/SBAtjOjqmmrOlGBoIZgJ1BuCz71tIKuxz5HuDExPhjbMjp9pwwzyRhmAnEYTi4EsquVZAloDpB7rEgWT4zRYsms= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267744; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0S1ZqEU1iZpAsWT1zego46VY83uaoXXJ+aqFDfCXlC4=; b=keVPvJKDREu7myArPdzf2s+iIl0HbUz4T/z7O4frx0rugqSyC923+QwqFtJjBIIAne0Bk7Ft474nsnDQLn4JveuUo6UWf7D4IXsbM4qDDH5D1Mg+eLCLG/W+8ydAoKAYbzkYF9w7/Y4I0iayTrPhFQ8i83GfkNfY6TAbO2IjX7c= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267744404948.1273043070923; Sun, 31 May 2026 15:49:04 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323484.1589265 (Exim 4.92) (envelope-from ) id 1wToxR-0008T9-8t; Sun, 31 May 2026 22:48:37 +0000 Received: by outflank-mailman (output) from mailman id 1323484.1589265; Sun, 31 May 2026 22:48:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxQ-0008Rd-OB; Sun, 31 May 2026 22:48:36 +0000 Received: by outflank-mailman (input) for mailman id 1323484; Sun, 31 May 2026 22:48:35 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxO-00080R-PB for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:34 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxO-00BFyL-61 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:34 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba9e-5cb7-0a2a0a5109dd-0a2a4508c056-30 for ; Mon, 01 Jun 2026 00:48:34 +0200 Received: from [52.101.228.92] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbabb-63b5-0a2a45080019-3465e45c1533-7 for ; Mon, 01 Jun 2026 00:48:33 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=bpHd8jBPXdEwmyW+/QmQKZ8cRXwoIT6mhsCyqfFyjQBfBxs6htMGiMgaDjfAjwIGNMptSv+ZQ/UPIEPYcu/1cVz7W8WYb6XNIscen6iV21UwF50+CNMkJ+WrdlyphYU1kiGgEpFo8RhLfgR2y6XBeUSeUAJxFZ+QlPvV22l1z05fyH1txUPtfqaI2GXg44a98HqleEP3lhYJ4dVf6/Tj8sg9f1YEIz4pgAk/Lh4ZCDcSJYuS0AyxLBcDBnY2O1du/cLsFxBYeH9AWwwRys0h8FwvJybwULCLkPc24cWjVWaoGVfVenG53sYBRIaIzkWe/BhTMFTgTM2AlRDxPGZhSg== 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=OdxHnWN5FfywG36/xtS9hEdLYQErrFfiobgHvq7DBYySZSgfdiom4W5YMAZ6lrkSfsKbpT09YN+QIcaG6/NeJMzHkQlUIQZurkU9ONqHP0fbKNlc82v1i27vunxAJ69GZHMUW0AIWRF0eJBl7m+RddNvHz5IUVuHiTpiIqz+IY6sCS6iVqwq5V4fMVQGGoeTLp2I+QuPq1k9oRISjTNTjpGi7A/HXWZzAeZrBOHGsNkwIyJFOOPFuAYZQS7+LyvE5reqBn8zPm39Lg7Ds6RHmmw/an0bWoMmXImrUqkOnTqGiLQ3iUMSc+PAELAbLGbnaNZhna7gw3PgJHGtB5Rnkw== 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=TFK7b8Fp5eJ0T3jN9bwLONn9I65mslkUIFjjm5kHs2HgL0rdu5WS32BGr0yRHA1T9ROlbbm4fTCpNzJdujqcMqHApuAEG6gvNCCkxMsLjiVgHrS0DIFX81F9Bt9ZDsZCjWoIAWyTyeU4j703ohFN7BLg7muQVcF86XftOrr9JQg= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 16/24] xen/arm: Introduce dom0_nodes boot command option Date: Mon, 1 Jun 2026 07:47:46 +0900 Message-ID: <20260531224755.9481-17-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0079.jpnprd01.prod.outlook.com (2603:1096:405:3::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: c6c8d835-c04f-422d-03ce-08debf66bcf2 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|3023799007|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: kIID5X4oQZfjDpnc0Qs6y3LPfOqS39JiyOd6d4WlLDyqq40WcR97wQFpVQZt3aG81lW4+958RbKjDnUTl4FjdSUCKTJUlEd/VkjLT9rv0vMeKt5Um2+01WCCyVxbVvyK5Q9u81hRR8dZvs9CSOGrYXPya+9PIJ4yJy7tOfxBfXYMwXW6W/4kvoiNm2rOFPU3uFH7Y8Fg7G7X3KMBizly+P10jOJVGdjBSpsbz4Vxv/K0MfyqYxLg15q4a16NSbrwqae1sDDkjVnG/ot69TYBklDwnQT7378eAwO8TRuYFFB3yBecUrs8tYKxE20yN+Qk+ALD1gwHp5ur7mC5h5c36hXBAIUyeiD6hlgRF4PkGYrS2qi7oVSKd8Nn18q/zwLPfavJVQ20d6CPUf0VqRqkpTk4NNQQ1W3KSF3ISqjXEqfjrDApir7YMa0P24gf5xMOM0KZVcxY8hDXvYMMlAiZlcgLfpDvdYYDFhALNhOhUx5l9mxWuiM1PpogH01FcqgGkxXTbY174lYdSeX1C1szKIiGCbRJS0jUNm+3bEAqQrl/kUUtTF2CVegTjohcsD/pFDN+ssVjcA8wMenpvieaaCxlzB+q6mTWaOmfHrSAe98aT21p0bymvNI360jYEfIXysAXSbDzbgsh8zzRqqm5/4Ntk26P3rm8pUXGPVr0nBzymu9JL2R2irYgai3yIgRN 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)(376014)(10070799003)(1800799024)(366016)(3023799007)(6133799003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?bs5TU4A6cqwI5/Dao5ubP2sKGtWx845cY7rsjYinYIGtrxIH7aDGj0J4lMTv?= =?us-ascii?Q?f8FP/AyVWCjNRLpylAvyTRp/K4EJRMv0D0/vVk1WUq9m8HaKCLLnsuYLXpKE?= =?us-ascii?Q?EUoc29Jv/5CpJr1FHaRlHYFCzEf64GkGNsWPmSZnX3yZe/+Do+PEiglNgyKE?= =?us-ascii?Q?NnFUviok7PdW7qg+6MX+zGFISZEpk+v5LRF2mf3akTG3nBluU7Ssb1qY4VoO?= =?us-ascii?Q?1UjdwAo90TYGORNXn02We9YMLbMI9u+l2XKqxSvDrH43Fjo3EqLg+RrOKwgo?= =?us-ascii?Q?NeiVRoyCf3lwMj4HoNGW+hUP2O0eDQUNESYo3UDXXAdN+ynhfv2rsr1foCPD?= =?us-ascii?Q?StYu0wO6Kf28GdA7jP5Q82CqFFtrUsEoFMSZxkA+jef5v8C4CQ5Drm0+eaGw?= =?us-ascii?Q?TR1wSyi7twuwNvQry3TFFHvHR5rHdx3I9nJ8BBLYhe/p4XAdNdH1Gp5Y66XO?= =?us-ascii?Q?P/tx8d055gcapz1fKkp79ZCh5R0+JR408RJ7/RzJl9QrQT5wuG4zMi3MYDv7?= =?us-ascii?Q?iASMKzpzeoufs2pHrU64ctTgizPU4xeBNYF6ZAcqFshO8K1Rm7q1eNI4e7il?= =?us-ascii?Q?d3TxV66JCT343+Tm7W/+DmwcK5bBg+0ITNpCtOwWjoQ0KSfKFejBfaGU81i1?= =?us-ascii?Q?RHECT18uWvTt7VVbyLq8qcYZVflodGsH2tNbGwQPDzTZskz5ebKivFFTktya?= =?us-ascii?Q?kq0OxhD5RIILJ9AIPl8MagiVkW9J8llQ1oczpupCEgowMm0rtIOt2PTjy4tJ?= =?us-ascii?Q?PyaMLquU5aVfDAPy1MHnlrMcpZP0xhpGEHs3i8PmHtNKegqfrUXQwcFGLjIm?= =?us-ascii?Q?uI3K1+cVTPomSnGXMdU+2Ry78Vv1nypbjIZS6l5yLZqLnKrgNboX4Dqj+s5u?= =?us-ascii?Q?TsZfVURGvq5OX1TGgC3uOogmW/vnsUGVEhcaHikE4oBtWnVjg+02JH9QUJl9?= =?us-ascii?Q?PdeVcqts8sZbFYzLntDAiUw3JZWI4tEolZLMTmZ09V/ePofELNCL9apYRI1q?= =?us-ascii?Q?LTczOVYYj8L4RS4lLjdCBcxzsHUr1p3L+9t+QiRSGWq19CNCbKGGteU9HBwD?= =?us-ascii?Q?AqTOHWszUEuM38J9Gb+RMkrN1dZbPVbFRhs+acUECjxisvxW83rdyKDu+Y8c?= =?us-ascii?Q?wD9zEz7JDFSY7CcNE9H4hE6mp9W6cl5sB1xr5+u6zpCRus1/hzfk+2P+1dyC?= =?us-ascii?Q?i//qz6VLnAiNyeEjRdzbknbQflm6zmOlA3F44jMHAU4L81z12+zJIHbbpoCM?= =?us-ascii?Q?l3mRZPzGtqO5eV9/hx9cTonupzHpVwTeh0Y5k2JZSEe4bOhX/qPJILIOTWt2?= =?us-ascii?Q?67zdazKKCR/FyktbOZYfgNOy4dsN0KEyQZ3T54ACOEdPz2CnqQoVlL4GfBLh?= =?us-ascii?Q?w7GmuIBtHfTwPphyDBz0V57PQOX/mHrrYR/wThy64WyYdZW+6txruXtHWrgP?= =?us-ascii?Q?RWFaUuWw0B1hVc02by0fzYX8d0GEgbL1L93gptww74TQ6dPWrKIDDGc2q7lw?= =?us-ascii?Q?6iFri6zC3YZsf+ojoV7sL/jFx7m4T5fCPfk/9RaHQ9i4ciNYDgDZlrH1v/kt?= =?us-ascii?Q?F+LXQWqRyELhyCkrY8qDBch5CApabd2AOyrj9rxMo8k7mAd+QUYFNgYeWduU?= =?us-ascii?Q?q4KAID6rluX5Y6zV3c3p1LHNccXY8ahILv5dvQ6qPKmMcXnw1Z0JF8FdZvVS?= =?us-ascii?Q?6PrD7j518X0vApaNuL8GZTAg73re0OpmXQh8SCTig/QM87/FFUrhwmAu66oR?= =?us-ascii?Q?xG4HmTsnfYYLt3PrIdcv7Rl5iUgTMIKSTb53v8RgIWpM40xWu6CdrnvrsJBM?= X-MS-Exchange-AntiSpam-MessageData-1: Grn5BGB+LaerfA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: c6c8d835-c04f-422d-03ce-08debf66bcf2 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:31.1363 (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: TerW7po7DWIrWZTxWPfWeNzvCy6G75BBxSu8g85YlIKHkNEU907r/RKgLHrbf2+Zzlg/BETZ/d9fpcLiObL4Yw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c1860d/1780267714-C487BDB1-D88EFF32/0/0 X-purgate-type: clean X-purgate-size: 2009 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267746516154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267732; cv=pass; d=zohomail.com; s=zohoarc; b=V5mDXZGl7cuvw6DbazWDctczExWH8+D8tZJVcepu4AMm4DTZb36uwHPFXG02QycSPFm+9rDbWbttskzm48QGKZrn2N5zcTW22DKoR9/XhM3Myhur4Br+MoWi6hiG3JAeEwPXW785V9MdWJVJpBFuwRvrQ+M5mfmyR+LgDjOwxEg= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267732; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=blu4oOd7tpGPVUBQPLctq+uqUO6TNkR+RChL3tWjD80=; b=PyVk5PevZQHv0TkJq5PeQ7A3kgBHHgXHBbqYVu9lrk+USLcR1hxBtdc686F3fI3Gh3l7jYevTWSbuikWyZoCN/RHwUzcVDh03FP/6qSLHT+x88qEWM9SBYPBh9N4T1/GFtzTI1XPNdxLN2rvhLhRJ1v8ckr9poLqP9PlIzR7Rww= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267732955314.0265907214042; Sun, 31 May 2026 15:48:52 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323491.1589271 (Exim 4.92) (envelope-from ) id 1wToxS-00009F-0l; Sun, 31 May 2026 22:48:38 +0000 Received: by outflank-mailman (output) from mailman id 1323491.1589271; Sun, 31 May 2026 22:48:37 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxR-00007H-8i; Sun, 31 May 2026 22:48:37 +0000 Received: by outflank-mailman (input) for mailman id 1323491; Sun, 31 May 2026 22:48:36 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxP-0008Ff-S5 for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:35 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxP-00BFyL-82 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:35 +0200 Received: from [10.42.69.8] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba9e-5cb7-0a2a0a5109dd-0a2a4508c056-32 for ; Mon, 01 Jun 2026 00:48:35 +0200 Received: from [52.101.228.92] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c1860d.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbabb-63b5-0a2a45080019-3465e45c1533-8 for ; Mon, 01 Jun 2026 00:48:34 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=c6Q5mtityzBd7qYg2foubso2g4yc7t8YIdZFfKJuF2WOk/oYQyadIadSnb96FNNNc2u4+4laOpP1s4/BJKiQRZXvU2sbXKOc/wGygTSjAR1kev1cCn0MEPf1W5dzSI3glWSqpTUn2kEnboegPmSEehE1IpqJuwBwpxx5lsRfj/s3mFyzmOSPkNF9q441fYb7lTw65NkIeBu/eEDYFAurgt5vgsQoxPRn+dFLjW5O7/q0ZmmFhwWbWbdWivUJ5yt11TcCY2rim4TwN4jTL8hG1rFTmL8e/bEM3zJlcQRdJz+9sWNCmDMwuDaQlUjLvYFgv+yxurD7irL4hTHTiDFjPw== 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=Qh16dJHsz0wWcE0ZzY+1DmXKRyQMfbCG9QlZY0Dg6Os6CJ0IjHV+UQUlrdgn2JS0BhM6jVzRzifx6VEYSl14WDCLG4mbB+F8Vny2uepS8mO5u5bMVLUzgw5suG9Ez6MwJen87N39vda9odOgctHnSS9sGXDarzwujkyIjQPc/QOPl58qgMZM1UVxWLbRXOvvFVCp79Z05QVAJh+IV9+LsBZbAarbCyMGelB8pIgxsYUS8RUSzLzhCi/MWyti1fnmfYwnnFmhCAKsCL1SgnT0qoKjtkgu6FPRnw6kIdU0wWL0AmFT35XjuzwgXPfAFtrBsgVqo5H481FwZGFbggdQ8A== 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=na/x5IqZvYaUXrQQRgowSu+s5ndA9SRjc3EOIJqqCk6QOJ6bQ7Xwyy1qtZjZO15iR6yOmjUnZupMH5MKzr2pnE69APRkCG3//4SxaKzlNBBCDGZZarw0GoI6rAig5D1170TeKJ4+LrCsTIOFjyetFbV+42ymdG6NtUJmGploE2s= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 17/24] xen/arm: Set Domain-0 node affinity from dom0_nodes option Date: Mon, 1 Jun 2026 07:47:47 +0900 Message-ID: <20260531224755.9481-18-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0085.jpnprd01.prod.outlook.com (2603:1096:405:3::25) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: e609a69b-af85-4586-7c9f-08debf66be0c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 7dplkf+LJiv01GKxtVK3w7saMsXcJLX8P8xpRrz/lN/JfCWm/Fyx6SPWv9xO6dNLh/2Sj3gpbKCjhG112wU/jfnXG0pA05JPaZnxGDbB2VWh6Mm+o83PnwLlJgg4w7fHLBbDoUM1lEEkiqNhQLE+GVh9p+KSAqmVkZ5gzA2AB8O8h152fl8EhIbgl0e8A6y7xSp/f9HTVCYGhWx2kDffpFpgwdGnEBOezjMTwj4ydUbd+7UtoMVuzzHqSW9sq6/UAKau5+YTlEYWeCwstU9MIPTlgYow4rsKX8RHOTMyJVJZQfbEAgW6hZqIHeKUjMEI+9UO2/ea121lW3ojtQH3Uwoqulx5n1XZ/9ycyL070invM1bH76PBls0PkiPh/wpdYdyZHUJyNsL+EvWI+jIIcW9U7e/dGFi1c3KCTi1Ojeq2FnJMk8+IMcnCx/+62ziOxQf2KbXSTwbrERj17ri3ChYcQPXTeGcWaEVhwh4I1TU/f1y41KVP6CsorqWh/2vwj/JFKR4em04pwbrGdc9Hn/WdXJbBBKG1fEPTL8VJUvf7NrB2+mrOBznC2gISmV64pT0Ve4u5cvIIJeSvVC4Ai3QWIi8ybxKdVGP16/tnMcwgj++y3Elao6nMkRVs5/9hXbHvn2mSF7fGBv5VFxDOZCVW+6KOiGAfo7qHh56Hx/vrx7fpaVORECgrkH3QtPH+ 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)(376014)(10070799003)(1800799024)(366016)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?y5foH1bkD5vNMmq+xnBBLa/hoHMUOW7ZdugNRiQWz3LlJBiJ0ErcFN6vhP5v?= =?us-ascii?Q?tIyyru4qlS4caakRQqGIBLh0742snkT7hIwX9H0fSP/Zc27hfufIgTgTyru2?= =?us-ascii?Q?/li+HzpJhjITP1qD5yn+ZzpquZ0apjj+1BhWMPqi5BYf5Ph3E8hBMLDFKhJu?= =?us-ascii?Q?el5DNzmARHOeKafOAq5Da3L6gxOFToQhU41uEczuqL//xxU36DJyIANygFld?= =?us-ascii?Q?ljGKdCefujg6HprpoXaSK5OkIjaZ9KgYj+8ZR5BqN0nAM76jocdwXxmTxaGH?= =?us-ascii?Q?dz3X9QD3B3FgKE/QawiW18PK+Ah9kO1Zg8SAerCSuFWwU8QAC00rm0Myh8YQ?= =?us-ascii?Q?pSFhT49l5MZg+X4sN50nlTxoTLBTcSNNpsAuk1Ri1nMXMx3r3V9g/rnAWyw9?= =?us-ascii?Q?wV9K9Q0seFMuz5zhmdwRr0jKyFSAJg6ll/9HdvuZzGnvY3V0n43KqUoqPaT/?= =?us-ascii?Q?6epyKPOqwmkkyGaySY5JL77RZ+RLkOOjlSUNbHAHD34XC96RwKEzcBR+PWDU?= =?us-ascii?Q?heLB9LW4r4S5QTOC84KgRcOJtqlzi1p7ZvUfU6ENA2MaRF9pa4hx0vHivNZb?= =?us-ascii?Q?Z5IOLTIrihf/I0rCY919khOQm4wFawp+qBK/eOkoxZSjB1hltqh+zjuaUPJX?= =?us-ascii?Q?ossgXftc2mZqFnp3S2PQR9oPUeyiRXDKHslbgf7jtP7DiK9PNZn5yVKXQSJ6?= =?us-ascii?Q?b/VSPP9ih2kGPIXV/jJ/FrcP9JTaryu3kRi8EoKO6bonjfFFzXWsd0K/IUXd?= =?us-ascii?Q?250ZBOq3FinEz0tlCYm+43qdh4nCliNRV/JudzluUtK73rRIZ2FSH1zGC+wp?= =?us-ascii?Q?Hd8hym2g26YbvIUAjhC9ibueqi1d+zyJt86lekrRfxh5pxosOFkQ6FeeQ8/N?= =?us-ascii?Q?BvuKzM/nogna1kV2dK2Vp97UFl+vVKAQfZDElfgcDqmcWoCDwvteD1YIoN6N?= =?us-ascii?Q?w8VxHprQat5AfqC6Z6YbV3FYMFZEUhWvPV8nIHJaMKPZwGuOmRe3BYe+Tsr3?= =?us-ascii?Q?Fbhn8yvF2XL3bzh8HfyffyxCTaq1h6wA76k1Bpq4jR1YfX40yIUYhD590pbt?= =?us-ascii?Q?dlQ+1VtD2Z4hU1kjgtU0YI7lc5CSnJHleX9dAB1Rb1ZlfShzD7FIRnV8GE/v?= =?us-ascii?Q?vwGOaEEZIOWrI0SE/sRU11Cx+t/F6bpwSmTbuWtmTZPSfhy/H3G5qRS8Hyxy?= =?us-ascii?Q?6yrgauhglIWRpquzwXK7O/eXgFTi0f3BVKjef1K8sgiAFxk5NZWheWqWZmvN?= =?us-ascii?Q?+stCXi46oC5N2mnYbMxrDd89PdMx8NzDxZhPeAD67Dl9yLIlScjwebih+uqc?= =?us-ascii?Q?Z7LWKvmPeD6JtTcBCyBNORopJI+U8824I0pR0gCOmFReyBTjvvHUl58Tui+8?= =?us-ascii?Q?CGOxA+WiaevK1D3QHz3yHtZ5SV0zA+/HeP5Cj5LVfEEGB65Qs9Hf9waeU2SZ?= =?us-ascii?Q?+YYBAzuB9rZaEikOILuN7HQTQcMzPi7JCeCd4QDViB5U9vxrLq13kwmB0F5j?= =?us-ascii?Q?UwrOv/O11Pc8EVMIWhuFLCnMwrvYPV7vDpv9BUpC6vKCZsxZtwQAyRXnayt8?= =?us-ascii?Q?SgH8oW6Tc/Rg3+3at08ABSiD6MZ1BgNTAtoj3vStnmQFIeNhfGdbbit2eLs/?= =?us-ascii?Q?+YEC8GJxmaiZwDQm00KQ9H5Q9BXkXYqYhiyX/DGWLsZ+7ACtqtrHEmV7BK6N?= =?us-ascii?Q?8UCZE8UjMjpITJN6y3VSY466SNrlOvK/0UYr0IIhfn0F05FSEN+0OGioIxYU?= =?us-ascii?Q?aZ019nSTIc7Hfa4LEvi2Ejyg0GAoXO+Z2ohU8nKO4Ee6QBafY2tdCEGTfR+O?= X-MS-Exchange-AntiSpam-MessageData-1: E9WIAQlcVeMvAw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: e609a69b-af85-4586-7c9f-08debf66be0c X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:32.9773 (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: DFndWUW8O5/K5CEwNnShd7ByTIxEJ3oaiLZwFBIzpZflF8IkLWz+bFNTZiU+ZebpuGgEgY4MphXef2A33FNa9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c1860d/1780267715-BC965DB1-8B909A34/0/0 X-purgate-type: clean X-purgate-size: 1124 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267734350154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267752; cv=pass; d=zohomail.com; s=zohoarc; b=ApGDfEf6DA+VtjqyEsaF6+URYvchCsPvk7fkB9mG8WcD4epomQGLQ8sFDYdKthsaqeo+0QZoQD5+FIqr2rut57oCbzemABNi28Qu7diswIOVjrAducXZYQgIF9kR9T9ozkKciLB+90QisPXKQyFgwFOtLSRlN7LMnF4wSFrUatY= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267752; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=uGKyh0qPXMyFNehAOEHpm32bV3yJeO8ltFIFkUh1kGI=; b=RIHedsKug8QWW2VaQbz9xxSKrFZzdEnZktLl9Xi3sH2FT8X08j5Ktyuokou6374jqbQ8jo271pFu35dteradaGblEIxZB7Uy4Rx0hVPHfDN6+AdGO6ucUZdjCsPqWWPSRrxW3+IbWEuxwhQyRAGlk3rqoEDiHJO3004uobjFGvc= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267752079801.7410731716103; Sun, 31 May 2026 15:49:12 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323500.1589289 (Exim 4.92) (envelope-from ) id 1wToxV-0001RZ-RE; Sun, 31 May 2026 22:48:41 +0000 Received: by outflank-mailman (output) from mailman id 1323500.1589289; Sun, 31 May 2026 22:48:41 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxV-0001RE-Fj; Sun, 31 May 2026 22:48:41 +0000 Received: by outflank-mailman (input) for mailman id 1323500; Sun, 31 May 2026 22:48:39 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxT-0000nm-IQ for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:39 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxS-00Fm16-U6 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:38 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-26 for ; Mon, 01 Jun 2026 00:48:38 +0200 Received: from [52.101.228.101] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbac4-aaa8-0a2a45050019-3465e465f6ed-3 for ; Mon, 01 Jun 2026 00:48:38 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:34 +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.0071.015; Sun, 31 May 2026 22:48:34 +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=OayNDmZBClsBgcVZruXnA3HwMZEkUmiFGJVwN+9L8HS9ECC9yv7Nh8qunkrpeiCFVIB+LN7thoB5M2cgSc+4DeXq37GDxEM0jmTv2J8Sp01BZCmVPp3eQfyCE5ZgIQCxEIgwz+VbsKOAIHvjYeWsRC1qWYQdXp3Vfkv7rlfJpSuD8kutrRSd2J5+JnxfAbjEDEeUNbcV/+C43d9IQK1EylaM00CwznnAGEhsm2q3fSbpQSrlWUs96bwQmZiqGJZtqvZVm0E+Xnu9K1MozKF5a7t245pGKRDX+oMXG5jdzwJ4kR2m2+akINMuDSinPBXnkex5kAhrkdUb1MNpcBltrg== 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=kYJTiBTr/1o7XAHAvAHWZ/IjiofRayAvcbzAyW8WjutNerA1zC8qrYEo0gqaUG9V9HLpHl4VTv9MgD006hc5ZR75CSgM+L2dxx8h4zLoy6MF5ie2lJnrPxcCfx6gWiD87cVy1nCrnfKrJNttU/SDn4bXVxuijoqdQJfCJs8hHF6/up60r8HkANv52wUKur8Pukma8bvOHr1EI9nK/2gwlCd6IFwO/aEp1Cc62D2fPDKl4Kwa86dppOSauJhv6NbmWZhOZbcWqyTJedNtaR+h+ZmLgaIhnKYkG6jSCcW9INiL0GahfZooEEouxjdWCx1L8oClWafahspZcvZg1GR9Yg== 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=DD0a6J+qAvFh6CyXblcPXX5HffSljmsWs8wjqKzhwlhDM8lK9h65jAnoXSlFcoVHMcX0r4uSXh/FgI/NUoDWTvFC5SEdTNKK5gcYvobGj19XLRB9dbpT3gJyjF5QBTnYxUuCop1qX7dVdXEfV6obwzVsRZCykLYEjpE5idkgKwo= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 18/24] xen/arm: Reflect physical NUMA node IDs in Dom0 memory DT nodes Date: Mon, 1 Jun 2026 07:47:48 +0900 Message-ID: <20260531224755.9481-19-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0080.jpnprd01.prod.outlook.com (2603:1096:405:3::20) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 0d2eab98-da8c-41e6-0daf-08debf66bf21 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: eyZpEX8gsDGf4BqyKMinizSuABiE2sx5i+TH6mU60dBL7Zc5El6S1J94HZbtkyUmZeas2DSmWla06dZ7wOtA0M5zKf4yov0+B8FqylHBJqbRD4qc5vj5VK9kMRfLe4wZIENEmiZAS5TZbc+pr73QD/Iipwl+OSWaRRE/HQQfMpoqKGVX30pXXLnhI9fOx9wk5vaXTQA8BowmVD0ktkk3P/kcUoyHvfibCbHbnYaB81FCjBPcm7Km+E4vNqJwDHW93dpONfm3Q2ec4cYTPjbQSMA1maD2BclxSgic9lzejvaA5psABWPOgRgeCdXmG2XGU4DuqvDwp1/OIibIc1mIwxcyM9IuJfzxS52yKzakzIpQXvGWObbrj0l3aEpl3wVUFpbNx8cdeg4z3lHq7VZOQ/bt799P6ExMKwbMQhQFhzwy3owXD0TwFb994gGzZ39ZPNm5N+7R5qiNQuDE7nIjbTux1wXivWYnaRDDnltrtExRAiK44L0Pl6D0XKaDvXTRlZhmE1eBtADMDLJcZp1P7AdTFxuU6eqbnNJED96W5jn7+4lY2pcDNAKz96c30bzN/IXjYRkBOSme0tMnM/EgjJ+bGkOcAQcNix4o7XXvtzZuB7h/PZLu/1CTMM8B/lwbfMD3M/n1AGX91Qumrs0qe5EHgoFvj9aIIKY+Gm1cy98jIsMpWvL4bTb5Y2unnS24 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)(376014)(10070799003)(1800799024)(366016)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?hsEkJa47CjRa8cDPUunwckkw25QhOlBDm9wgiR2DwCYXlqQTpxODnGzw6q1x?= =?us-ascii?Q?3Kg/VBq9OJ/+lTNZu/bBZd5/pozEceV4Q9ezbVKbTK0BB4JMvMFHParJDY4y?= =?us-ascii?Q?JXpLrSDnyez5d0ZZSCEYcuY/mq52h/XnBLJGnz0jDtxcFI6J68um1cRGAjSM?= =?us-ascii?Q?yz0aMrwFmLhTRYgUtDiAb7N9nevjleLmkEfCys9JXfAzESIkEXhyUTeiA/An?= =?us-ascii?Q?3T5u6xxhu9URc+MAgdgOGlIXzSHXifCBkLgeROaPlJE38Wh0yS/Apy0QGiDk?= =?us-ascii?Q?6L68YDJOi0AkO48dmLtina+CySM9i0twwVOGb4xCfCttZkekMWFs3WituQRr?= =?us-ascii?Q?e1NgSVks5EyEL+cP9aXyCUv9m32YeV3U9hgixdUDLWAQzWxvd54J5eM8qIvH?= =?us-ascii?Q?gW7OHot7X5pa7FoeiSGXA0OQdL2TYDitHo6RE1o7UqMcoXj2mqu3NqEWkhfn?= =?us-ascii?Q?Jnt5bJilotUJS8mPo4ok74Ehvg3xI+gjE27C5PYFUM76YNnIPkb2TE+guTcj?= =?us-ascii?Q?tXmnv46rDMBlD5UJjqfffmVSqcBnn5FQZWy+2cNx+JAHgR7ohdoCBwctfC1X?= =?us-ascii?Q?YIlx5cWanb2Eo3H1kCanUlPiX3Kl8jeMS4eANPEFRTho38G3FzVlb6orWZs2?= =?us-ascii?Q?B+VBzE9/Nrofsia1StMWA4xkw4SUjJ/EhhinMPEzRvVG9jpo5p8Py+KeUz4Y?= =?us-ascii?Q?NN413ChZ7Fpmob5fAxyD3u6yonZtngpK/tHR2MIfwzlob49h7tGkqRKamqsl?= =?us-ascii?Q?0o58+h36z+yU4tksS6ia5kLMaaar1PSbLzprVZiyvXvW1EgCw1l5ZfZvU6Vp?= =?us-ascii?Q?MA+4lsbDQBobtYdT5dZiwuPP+9BWztQhzFJ0qc3ihsS9Sj0Rd/Lyh1fA6mki?= =?us-ascii?Q?TqCJy4aroGHcx65TF/DIFNctRU9pY6IUrrf/KqyxDVM99m6QGZp1Zp/psDb2?= =?us-ascii?Q?cKGsCIqD7SUUqJ2C/B8reL5wFtmFn3NgSmALq5EYRWNpHtWEY9uj03FhGxgN?= =?us-ascii?Q?vIQvnyAjpYgKKEcNDHMsSPKaYNFl5d9FtjN+yuHb0skB9kNsf9uus//nYV9O?= =?us-ascii?Q?EnTFaMimOw46yxLJk7Bj995TolOub/KIC1kUU9RmfZOwhqnqd4wTnAje/CNh?= =?us-ascii?Q?T58hMZO3S35WaIhrFuIPu/TB0EvHsK5bgWiNIRBwOidOyMc3iGATsjlfDXsh?= =?us-ascii?Q?EE7jIIazTEqz4dhq0H71y9CXGzCM/oE9bj+5LM7cCqcDvkgmpRmmH6e7YkIp?= =?us-ascii?Q?ShdOQ1eSAxb+VR+iB4HT81FIHjBZxHzVj9pshwL1CRKWYCI21LtPX7C5+86M?= =?us-ascii?Q?OTaAxugbMRAJwK++RQEq0+e8AW3BgxS5xARUh8D3wuU7jJd8JYie597yN72w?= =?us-ascii?Q?jdizof55ql0lQ6+aYHbBRICqMayidLenEVZNrSAyQR1nv05n0Ztv8MhZ6gWL?= =?us-ascii?Q?VF0ov5BCzYTq9QZqPrX3JbjVtnXGCNI/3YNQD6/cU+T0e6rommufVKx3x4Rd?= =?us-ascii?Q?wtV/noFdN+cPFPyngM6+bhw686Ui+5GFwVN2pUCYB8fQhKbSpltH7nCooajf?= =?us-ascii?Q?d26bQDsZPcyDh1zH829mbwzbMEHK8+WLMWCEcsVhK+9Z8lpudhWmCbIVm+ja?= =?us-ascii?Q?IhlEM3GugndsYNUu5Q8j+MeJ6QiBmCPXPxVKO835PyDhK/FkWV5vV3ligviG?= =?us-ascii?Q?iWlU4ecxAGsbnH+SCa8appnGKayeXkFAVcisENtaKS1Cv6jsqjHLuacMjalX?= =?us-ascii?Q?jSYZiBkrhfnx25JV2WZeDfOFedBon4suSfhyGN7+WNabzmhVxXFxvn4lMXEz?= X-MS-Exchange-AntiSpam-MessageData-1: JmHHt9vxCBOH6w== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 0d2eab98-da8c-41e6-0daf-08debf66bf21 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:34.7961 (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: Q5rnACMLN7bDQJmXkBRdT/8scko5OaRt0er7i+9F/lyRwqnAYuu+zJe04poPqF4bKF2bmDtFmG/GXVTHzwXIMA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c201ff/1780267718-E2591443-A09229D7/0/0 X-purgate-type: clean X-purgate-size: 6804 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267752902158500 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267742; cv=pass; d=zohomail.com; s=zohoarc; b=MjXtW7kjHocdsLxOkjmLdKB7vrjbKBisIaWkUufVawEwLaj924NCOzfOJv3CA/QEpoRIVxaaTgOs1Wzh1NrD6qEMv7sYnv2quPapOldHCqQG4dnIQf9nRDVibxTaEkEqu1wcIUD3BjdXXRc2GX2kTmsf668FoKZ1zZNG6WOp0aU= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267742; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=IISNxGg7j9E7jMdBYWz59g/s/VxE99jHkjaKf+wwH+g=; b=FjOFVks5UM5OMoTH3UL5grMsxAvAaW/S32tslBcZN51m7H6IxE3Fw3daL3LlWI0GgLGf/9FHi3fuVUii3k9HA1zRxF2gWaorxgwu8eSKwjE6mxnNeJyicWkiM+o6fuEzyAlvpDXWGGDt8Wkmuz4cADJvtfFLqACbivmmURcCSzk= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267741999705.2522803402555; Sun, 31 May 2026 15:49:01 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323504.1589295 (Exim 4.92) (envelope-from ) id 1wToxX-0001lZ-4Q; Sun, 31 May 2026 22:48:43 +0000 Received: by outflank-mailman (output) from mailman id 1323504.1589295; Sun, 31 May 2026 22:48:43 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxW-0001kP-Te; Sun, 31 May 2026 22:48:42 +0000 Received: by outflank-mailman (input) for mailman id 1323504; Sun, 31 May 2026 22:48:40 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxU-00015x-Im for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:40 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxT-00Fm16-W0 for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:39 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-28 for ; Mon, 01 Jun 2026 00:48:39 +0200 Received: from [52.101.228.101] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbac4-aaa8-0a2a45050019-3465e465f6ed-4 for ; Mon, 01 Jun 2026 00:48:39 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=COCk8re3RfSIKMmvtRUc/dRmE1x/Kf8g4evLN+yMXXopCC+bHZy+NXptUic2FSl7tYFDfBAqLetqGXaVUKFKJ4nSSUvtbahQh7WaCfgLuMtzQUXF7N+8ePAVKpfFUJqCpzrf1mRwbNi1x/A/7dkRjiYhNUtcK6DYAhkCp0jVmQOgspmX328JbUQI7m3UsyDfLDHGz+bWdF8xv0g3Fbu+9vHVv9U2NR3RHEvcR3pqVJ8MAQrP0drKx7jly4Z9U1q5EccbnwGBPjjKQ0EAx0YNbSgFBSQdBMt8V/9s1iId+2pBj2M93VmAOTIQdnLvkPtN+cfCuT4EdFHCJn663sBiKg== 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=IpRy2q8LMgJQWhb8ZthAW54qsiJcMQ9/a75Vaa522GKYsooKuaWr2M9KmQkPkxXrwK/zpdIgSMP2EHJkTqjrQ9TOL4Vv9BDmvYyHVlmCUYYyy9VpuH1YbkI+l3GazaIlxcfft7/5AUkAlb980IFsdB/ak+rKWbfIrXKGlt2MyX3B7sFfs/XIMkJ7R9oew+FFaE+pzTKHlp50YMAQhnfe5FV3lacTS57D2x0wpDzZgmbsuNJc11feM5HU2oEFP5J/VbPqH/A/8agzYfdrXF8Tf+AYLVZ7K78Y/89doE6JUg+glmi92yuLDA64IHAunkuRiN4zfZVxI2kK3x87LV/SRg== 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=IzNEOckXna7VZxMBqejxMv5fgYtcD8yJM2zmxSGH3Ml1wTXul0P/EH7oOa5kJE2fNkADJiRH8stkoGDuLMF4vwaSs5XRkFuS8kzJ+ry555xO7Ulr2o/lFRVQqUOMsAdIexrxWMBpg3t16rchWQQNfbfdamM1Ck21K5PcLco1fJc= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 19/24] xen/arm: Balance Dom0 vCPU assignment across NUMA nodes Date: Mon, 1 Jun 2026 07:47:49 +0900 Message-ID: <20260531224755.9481-20-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0092.jpnprd01.prod.outlook.com (2603:1096:405:3::32) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 1bc2b39a-2596-436f-de9a-08debf66c028 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: 1WWImC2jJ26bJa8rPJbfAJuzVL/ZEseCnAS9f6LKGaUDN3U4t+PL1O6E2RjdCEOFQX7w95N+7VM9EK7csizBPViH6X5yLpoEn1ridRo7ZWOyhnNXq0ALZL2JrLBgwcqrXnfdlae4EFNswi2iiKQvZfUK6DoSqTGiyVzvCtwgxvz2NQWBcqWl69mA4nprwAaYGo6TLvhFhlk38oyvHpxzcw0UxJYsK9eM9t0c/IAmg3Wuf4tVYgeN77U4uyte9pDKugWilOniLeHORFdRIZ+CpTT9BO6PG0x/nXPOoRGPZBpKelna4qkKvrudRoKbVJ2zlrAAYb9QoVub1ZQKpm6PKSEeCoZp7R5NiPh/qi5ZppJ9B7MRwey8sIuZdgoZsHwJgRsBNAH8LcdvnfUtj1scwGsQ25n7Vb/hUzg8dfVy8yK/1N0Mju90JbdLMKI7nR2q+7sOdkU1xYVQxjE5NA8I3pchhyHyk8uAjyqiPpXF/0g3P13m6TZ9jDmunQ22ZFMkxjvCal2FvHdhIwZJZ4CYAhGAX7ayQC4g0JJlLJ3SROVfz654OeagycPvua+taZxlUYMJBXWQ75VGiTEdYOYsWwJpIyjDCv35Cd9v2nF7vt7OZcFMOKFOYkUBlu2rD+5WnojOz2l9VbTrBptjmlHBk7EhgejGRN0EFpg33XZZVp8TUENV+NxirtHE6IPqwb9B 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)(376014)(10070799003)(1800799024)(366016)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?O9qGmcUVeGZASHH6LuBQzktE9CRYPNZC0HqlpWK1IkxBxcHFnJjthrTaZ1Ln?= =?us-ascii?Q?kV6HgaeEoaA2JqTUyimpCdswUG2zX6CAgeVBGQXAMyMXm5r5WywjaK8fMRv9?= =?us-ascii?Q?Mc4xBrPq1S0L4vrVwjvv4wGEG3JeLVf17V0NQqWG+xI/J5UEsJ7sCblIJrmB?= =?us-ascii?Q?rRw8ZGdeL5FXs6AWET4QxBlXjUHL7X/e+SumhewPzpXW7Dm+dGsr9Rnbpshh?= =?us-ascii?Q?TdKCw1LXO5AY80vOk6omtIKC2dL6w7D5Asb8uo1tw29g86SvwNFCzbBG4BX5?= =?us-ascii?Q?EXcHcwbklxW5h+tEd9C1Ufo4ZV4FKq14sy+1/25KxrWThmcbiXDcNWTGru6j?= =?us-ascii?Q?XFn4cgv8lNwbeR9H/olPcVptRJpdO0W50bVossdOD+2nKqTQfssmBC6WyPis?= =?us-ascii?Q?BV4ZhSkw9NtCvFPqo9+2gJkk5EiRGmoHwwGrYFZZXO/5k3MbGQBlIb8T70zt?= =?us-ascii?Q?TCmyrTAevq52/gWd0ndgZuXfNGj9GJIMxfDohQ1UFFf11YJQAWBVvO3Zp81v?= =?us-ascii?Q?u7bIOdTiZcoYRWhQSykzh7Hfn0ct7HLhWq+QpPLVrAaHfyXYZn2wIpty5YcC?= =?us-ascii?Q?623ffhMFUONJGy/Wzg6fbzG0LQeyfouIjczqHbD1qoQy9vBn293HudKbdio/?= =?us-ascii?Q?4d7Qrw4/TrAxSOYuleOMRt2ETpizZGi31J9atoP6+rBAk0dA3I3bLy21et61?= =?us-ascii?Q?IIRBmIknMqBBGGUjYTfjuAIS3MESJxf1claq09nB+m32a3MCqyXyKnFNHW4l?= =?us-ascii?Q?hEVOiSbz7Ve33V9BgZyw6kr9cNfsDYEJCcGhgED63grYxvlseiHxu8bsCXxK?= =?us-ascii?Q?d0vvzdqgdr5f71iu8DJqTK26sG7U9/uQ5MDcS17+p0GVt0y1d4t6rsa5DaaN?= =?us-ascii?Q?lNa5U8MhdAbS/p07wfEx/m4ztw6iG79+CQsKDZS33ipbJO+eF+YQUuKpJ2RQ?= =?us-ascii?Q?tMisNDaulCgY2otCQatQoK8Bb9RGqdyFOjgYt8uEQTN06ps+KRA09+s69945?= =?us-ascii?Q?+Mo/GbRNqHfA1zMJBWDJR5hU9zjIvwXBXmbsPM9zWHugQnciOuTMuB738NJI?= =?us-ascii?Q?dpz6CmVDGQgS09mG5BTWyoi3lZM1AwaBX06MYI42hdramL8Tow4z0x3feJBC?= =?us-ascii?Q?A3pm5turwu5LIiScqleR1hoMCd/F6Ag9shPy0sbgEiz3VN5NehzL3bLlDTRX?= =?us-ascii?Q?3BzF9Ejyzs0Kv/sHHnQs4pfN0JPTInc2+lymRWTH7WeeauOr66fchesRmqCk?= =?us-ascii?Q?32YBaBHuAOZfIzFsi0hU8Cot80pfHCV39xK+wJddunc4getkP6VZxgbILC+z?= =?us-ascii?Q?m0IvHYXE4FBcht7QaDzmxW/FrHqlwwnB9dnkFDxHcTo0KZDyx6riJnw7phl9?= =?us-ascii?Q?S7PBa/baFl/li0iS55QOyAn+UJtBaeWYP/uVuLmUvq/9V9yyJ8iSWtVA7RLm?= =?us-ascii?Q?ijDI/iH35Oe/ClsJuVja/+sxdkZijQoqB3gg3zezSLdpd2ndW8CItHKBSCZ0?= =?us-ascii?Q?9jPfxhQOobSNvxkZ4qMDSMXphk5sqltdCw+ah5mZVJmTiQBEQEV8HURIdty2?= =?us-ascii?Q?o4hYEde6CIbeE0bxVIAcoMOZLL5sg+X4sICUwhFn56LXEUytKGrZDfTLLGnI?= =?us-ascii?Q?hJKmlKxkp1fVmVC3TZNluOoLDkBK5zVCYopAf6t0lWKnprUq9iwBJ97UFJRs?= =?us-ascii?Q?UxsugkIQBixtwVOBIR0mZ5NpOAGc0j/KNzY/vxLdsh4AIrc+KtODn32QQFTB?= =?us-ascii?Q?EoDfYRdRwP22jJHx5Q6aLE76M7Yjq9QQ3aDR7UdFGnEkfGWsilnL4rdvm5Jg?= X-MS-Exchange-AntiSpam-MessageData-1: ltMrkk7yWSIGaQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 1bc2b39a-2596-436f-de9a-08debf66c028 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:36.5265 (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: wRLAjlebmi30tNOmSDwP1XbByKv89S4B6Oe4VWhmQihdg3t1pCN9nPrTle6VTMFGT9XdWpdF5VJ8V9yPZ8867w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c201ff/1780267719-E2F94443-F76F4A0F/0/0 X-purgate-type: clean X-purgate-size: 2013 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267744499154100 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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267748; cv=pass; d=zohomail.com; s=zohoarc; b=W8nTGnDmmiDSpQ/yQLnd07itJi+OQTs1jyLExu/j//NGknIYUDYr/hCv6/EAnh+IGMi3aERj1o3ARgBt8ips8JvVzF5aw8toE7jYibqNmJ3CDUfn5mM9tE44H4uYzyKXfDpidtxVkzj+KZ/Fzum6NCsia1ZXGQXtAmay5AMlfYc= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267748; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=W9KK8YwpRHhqIreVEfhPTKBReSTnp2RvVZda1V4U6DE=; b=V9mQZNY7EapughPhhIc7Vjcj2V2ROeVVqNlPalokfYfCjrHHJK9VHsk3pjSpsry8wNh3GMckRaAHEtVYdrtV2O8O/R50i/U8OTwDLBynX9Sk+TQLYoEDiNl8O0Q1neoKXu8YVY48El3aFrTNYM3Enqcml3ZzFmQ+7CMNxDPxby8= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267748655578.2942832901402; Sun, 31 May 2026 15:49:08 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323508.1589302 (Exim 4.92) (envelope-from ) id 1wToxY-0001wd-5i; Sun, 31 May 2026 22:48:44 +0000 Received: by outflank-mailman (output) from mailman id 1323508.1589302; Sun, 31 May 2026 22:48: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 1wToxX-0001uT-MH; Sun, 31 May 2026 22:48:43 +0000 Received: by outflank-mailman (input) for mailman id 1323508; Sun, 31 May 2026 22:48:41 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxV-0001RC-LA for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:41 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxV-00Fm16-1c for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:41 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-30 for ; Mon, 01 Jun 2026 00:48:41 +0200 Received: from [52.101.228.101] (helo=OS0P286CU011.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbac4-aaa8-0a2a45050019-3465e465f6ed-5 for ; Mon, 01 Jun 2026 00:48:40 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=HiIbPPLYHuFi/y3k6XctHZpvOYdJYgk5tcredRJyaiNz6KAhpuEpNhlhE6dfrebrBMOlUSV0s+2ZEAOiKInm+vROe3JqRsmnijWZrGwcWXHLtIczPreYOxa+i/ECwd+wBHFDr/XoweAmBVpjmWe2UcHUp91+aeinGqhfcqe+7CzANV8oTIQOaCUGufHktGulFwqYPze+AWax5KlTNnqkGHMsttrt7CxfKWVxUsSPuHzxBEQ60pZ3y4zFH2UrAk20xk3774b/OOp7OJ7PavOv8QqMd/XOTVZqEDDtxG3UQyjT200PDsNtZ72IoNGepShAcb3RqxWIX166ihpwkcNxPA== 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=W9KK8YwpRHhqIreVEfhPTKBReSTnp2RvVZda1V4U6DE=; b=f/XiGkWHTI+66a9YFCaKJu/v0GYo8VwGk2tQIehSpa2nZ1encmmW6lz4dLLuWrL8p3Nllr/AurkXyzsnZNs/MrcdHFQB0rkYuPp5Yy/qRUx3cskBWO17u/bwXRkqrCM7+DEPdl4BO7FEEmAB+AbTGu7jXgvd/EBv2VZ2ChSZTAxQonfCoFfcDr/AUn3Y0e1PRuOE+MbUlHo6LBdm4G29SJJfZ2iM098AOlncMcKL6s4b3RmfMeP1Jn7OBzQtMx/6La39Fu0SXkCrbLzKzFitKlDbjvLAF9jMLs3nC5TGZ3VFClujcPCe2BjH+wSd03un32tlLCfFGeaE21T0qHbj5Q== 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=W9KK8YwpRHhqIreVEfhPTKBReSTnp2RvVZda1V4U6DE=; b=fPb1nJGITrF4BbLq8APlvofJwmR2rUaRPg+UrNishozwntCz1aZ11nYXyiZD+lOt1zsF1VW50Uh+ImF5TWCEyebL8LR/JP+ivYpN8zeTkOIXqg6fLyPTKEyXxgUcv2RddlNydxh5adkc+YcrwozGQa8qY/7T/NcWL+sdzdtGOWI= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 20/24] xen/arm: Export Dom0 vCPU-to-NUMA node mapping to Device Tree Date: Mon, 1 Jun 2026 07:47:50 +0900 Message-ID: <20260531224755.9481-21-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0088.jpnprd01.prod.outlook.com (2603:1096:405:3::28) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e9bb4f0-e03a-46e9-526e-08debf66c18a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: d1IJakb66M7sLDa0Jw2WE3zMYsTjQMk5FOvHU1IpecmDoWngcTvUytmm3fFCo0Prldk+Z8m5wp3E6z2iaMrrsMsayWiy8ahaKG/QgjRQeypgdManivhcF1EvZXsuGJZViFa4LeGFpTYciOvwJ1QE9JW0rRlHURNkQIG+tc2LoX+0ufnCRog0t2a1zlbYzczWyOIZNWNAVvIYzCu2kLLehie/JuNNP3fNZGESvKtxm/+OZWoIjOS+AQAb+TRDeanA0GzGv46JUI0YjtAj7ae7qYM3d5fHJuh9o7N31kIelAcPerY95XvBQHQAI01wYRdjsRm7IDTWs7YMs+nEjz/6Kf0P3YPQoon+xlQjFVCt4WgHsFGLS8hZQAYIyr6NJxvbSZb6retUPX/tQNukSCvFnLuyT1UoWR7uHzNXsGz7oF73qXgLjBJxCXHmakGbWyCbqEqk9vQPOHpdz2JcAdRMbmDxo95Pgc2cvtksWuVBT6tdPwg6GZ/yT8eih/kbtEuls8dCgUGKMjUT/DoEsGcRfb1HNlL/h934CeeiZeChrnwDiIAEwXmlBJi85iEGXbwY48NfAb2xVzXKzFZQgBERULWbaLRVEVRNcq0vOYOWxnuQuK3X+A6f0+DEooI2Rpor/Ip3jrmv4YILYafwNTtKd1nbg2JWj8QNhsNbWFWMiVYLCfyt4LEQ+Hj1Rumy25iy 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)(376014)(10070799003)(1800799024)(366016)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?pyKlzpzg7oJTCxjhgaEhBiivX6icqdXFjb3vDlFUw+JXB1i87rE+2SjTzczk?= =?us-ascii?Q?tYKviDzmcg6dg7mN5jhP3p8Ue11HCbryKSi9kAPEKfuT6YdXyVYgWJVrssfr?= =?us-ascii?Q?eH3HaWvQVm24D57op+ZjRP6R3OekLU5x/waQTj7A8cpDBrIwLZHj3dV6k6Qv?= =?us-ascii?Q?VbPJ+t4oCRbyTyyv4vQc27NfgGS5d8zAUW4shpxSJJrAgxogiXeEUNK7gTo0?= =?us-ascii?Q?3JZagHEUVgli96kFqXG4+lkL5MYLt4U85kYspnp3kCutzYI8CjmS4IpwYzJT?= =?us-ascii?Q?lIHAKPV+S/zxCkwf3QIWfD/jkqIPBh0iURD+qcp2KHzgJRx4wN3Pi1+YtSQM?= =?us-ascii?Q?7ER4h1N/e3aEUc7FT0NmqELENQ2dgm4hMd82Is20j4vQQX/ZKtcKIPrvWiaI?= =?us-ascii?Q?gSxj317KpWU1DI85m0V7KQoIzSLpSv/XjcSDuqFRKBDrfYAVTWogxoHDS74Q?= =?us-ascii?Q?baq2OKCjkzflT140QO5jpeLKh4COBIMgAOGnUNmn6Hv03bJet0iWTNbHy2vq?= =?us-ascii?Q?18aCHbsIcm2mW7MZ1ODZ4jA1EwG1WlhJV89dAPeXv2KZlVa9DHT7cb49RpaO?= =?us-ascii?Q?53PJuUQoGXc1yc2O0Nnn8nQcFZvfBb9Zca/EF0xQPz+6N9uMmhc9Jtp4s8z8?= =?us-ascii?Q?3kdjICFvAN2d1ZzGs4l86vFPtnaO22RDJ5v+44EnshCSui8saTXCfz3LlcFA?= =?us-ascii?Q?fXgEtna98lPEGrLQT7u7CZzSBJ9ZSnSOU2dt3sUz6KMmuAGDIErw/CCPM4h7?= =?us-ascii?Q?/JJt/YAtEBD+tCGguheMaXGAy3JtOA+Z2sFbCN1dj93WvRI+kzxNzgeXhDa6?= =?us-ascii?Q?sRtfcE1py6gf6micCOifxuY4gtXx+6ATvSKkx9vHMwfawVFOOHRQE4RsRsbm?= =?us-ascii?Q?YXM1VUwMxufPuvzlQj7ViRiliqZE7Q19hkl47+3AIG9OwLTswNLHv5OcTxpa?= =?us-ascii?Q?HtcnwXaYLzjGbfC/09CfjFTp10s+f24BGGMqU6f2yqHZxmfNgn7VIXBMW2Gw?= =?us-ascii?Q?WUZuHtuc4Gu0aKf14qONdNqyn0Eh86pKuVFpMZDRueX/ynXY02fQBwqtrOhx?= =?us-ascii?Q?qePmsJZiCr3yevzEDvDjIxW9FSss95d2eX24Umsrho7B8R65+Zb9CLWe3o6X?= =?us-ascii?Q?Zxy8L+cHZOv49zgkwlHY/FzJWZ8I2i9wqoVDDrIG8iFa7YGjsIOzUOwo1MKB?= =?us-ascii?Q?ivninn76QN0/SifIFrvptfXBW4ReG5YQeP/ebsLxsRlsouxSRKZ1zpG/a9o/?= =?us-ascii?Q?3kBLLisMXsMHS/sX5dijHlxoqOE0GeFyEc7Pn3cDsFjYG3lzwtCskQdmGMfW?= =?us-ascii?Q?xGNA7PoP5L9F74199BBs9cB9D0f/qaFsoBRRymPdHsuZzvSTqTa5Fu0O9UUY?= =?us-ascii?Q?RjAxR0pVTI7Bi8wKvVkIhNPDiHvoeN9Y5nnfOP7901MRbrIJanMRhOaCjBAg?= =?us-ascii?Q?DMHgrc6NbxNnQNNMIPn6igPtT82KrX2+DyMBs962fPEyL5eUpTPWFKYtyEp7?= =?us-ascii?Q?fWJX7lCivvTZm/Cy1maL7q9D1FHp7FS6ll89sPjqsNIvghizVUykMYj3n1yg?= =?us-ascii?Q?L7/LIU/a5db53TZ2bvagR6q0XOmX6EIDDOc4hbOccjV2D7pI003YNw3F3OxB?= =?us-ascii?Q?kB4dS4Jl365kxaoJp/cNQs5IKDwVysgAnmjgt2FXbMHUsnAWikMGFwMPy+mZ?= =?us-ascii?Q?L2ZUsWb8IhzIe2kW7lEbb3/sUf760VmhS1G2jLVF2jDvGo9J8Vv7aju2wbpj?= =?us-ascii?Q?XKhsEo71swpBQEPM8E5AudSzsH88BkyE/K6shDe8P2LgitJLHR9ib8xEMNFm?= X-MS-Exchange-AntiSpam-MessageData-1: 9HB5AuCd/7UudA== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 5e9bb4f0-e03a-46e9-526e-08debf66c18a X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:38.8476 (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: bup2DnDE1QKKRJzmKcaLxzYKOeLAFx3dux2nsXPFbHBGzLybUNR+e2YytK01YHUKO2SyTTw8km/n8YyBg2MGug== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c201ff/1780267721-E338A443-01C9ABE8/0/0 X-purgate-type: clean X-purgate-size: 884 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267749018158500 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 | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index a62adafa19..750c3d53c2 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1373,6 +1373,14 @@ int __init make_cpus_node(const struct domain *d, st= ruct kernel_info *kinfo) return res; } =20 + if ( IS_ENABLED(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; + } + res =3D fdt_end_node(fdt); if ( res ) return res; --=20 2.43.0 From nobody Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267746; cv=pass; d=zohomail.com; s=zohoarc; b=VaVuJe0yLdDsg3kPoqUtU5fJLaXbIS5nJGNLHkuO0a74TqJ6nzgkAyyH3frnX6H9Qqmlf0H7YaLyoEzpG7OH/IQu2hum/qe2+9wVtgXYOaMoeTHOcyXvvPXtbCBVvF50PVDj4EMcODO8/Ry/+mwYcsrP/IWUFBLnYhaCdomHzJk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267746; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OGUG4toyQhvtHpHBNUMbmOTNjuI/mfXhzDrcWgQ6WgQ=; b=KWS1NondJbk9Va/F7jlb7l6srMHqg/0fZ7M0JwlJWQa4Z6U1HTSt15lEqOnNRQcBxjyW8wRgTLvy8hK0zcnXm0c7hk2f0fJbjKCyIitKg+oQ11PVG3MFhpe1w6qQMwyeEGoIbm6LhLzKPgI4cmtJ+5S/TuH2SDR7RUFDpHnY6/M= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267746516134.0361353455188; Sun, 31 May 2026 15:49:06 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323513.1589315 (Exim 4.92) (envelope-from ) id 1wToxb-0002ik-Gc; Sun, 31 May 2026 22:48:47 +0000 Received: by outflank-mailman (output) from mailman id 1323513.1589315; Sun, 31 May 2026 22:48:47 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxb-0002i3-5o; Sun, 31 May 2026 22:48:47 +0000 Received: by outflank-mailman (input) for mailman id 1323513; Sun, 31 May 2026 22:48:45 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxY-0002Af-S9 for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:44 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxY-00Fm16-8z for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:44 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-36 for ; Mon, 01 Jun 2026 00:48:44 +0200 Received: from [40.107.74.72] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbac9-aaa8-0a2a45050019-286b4a488211-3 for ; Mon, 01 Jun 2026 00:48:44 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:40 +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.0071.015; Sun, 31 May 2026 22:48:40 +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=hcCBheyRDbuiknfa6UmHFZq6kmq2Fx8Kw8rTPWl/W9nGgHpi7f8wMGyzcm91YITjSsi3YBo5kLJZuzAUr+rtBv/2q/IpLsYvSDstKHL6uynyHOOJRlegU7BGHlEOvjd1m9IPPF45ReiM1I8+UNfjY1YjTdUAB6tUawT082gSBzDi2YvnNyYZMMrgCnmz5ykMpZnPa6MBJFrYcs01wXLtVsd7PqKxDH50i02GxHdkbnF9zdiWJlvcmyYG9cOm0k/1aG3GmEVEVPNpb60z5zElUQ7yWJyDuND9L23GIKOxopaR0LxxKnitAGR8XgiruChqmR/p+oSODKnFbBCqa6bryg== 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=OGUG4toyQhvtHpHBNUMbmOTNjuI/mfXhzDrcWgQ6WgQ=; b=dHU9ewvS7NF6P50AfgWziG0Cs/NhpjaqD6CefIIZO571elNmdTYSg7WAUQmfgtb6S2FgkbzLrCdLyi6LX8bQiPWmQcT7/eVkmkhMn2NyXiMJo2a+SMqG1amWVe6ErZPpNst6lG+Bf1H/AV0NlYdMfuloLM1BBIUpRsRuNXWpsVoDHSPTFWkvCYgBbhNNS+uYaTeLiRmkNpM6WU6U4avLcBEMzpfZmtZRByTLexSKt6q1R4avPD40oupGU6sol7l7mJJ1trzC5q/d9UIBgFcptvESPbpnNhAAlrFtS7469+xphajm1B3HIUAhfMToRbLFEzjooLrK6uNHcwjp/ncjeA== 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=OGUG4toyQhvtHpHBNUMbmOTNjuI/mfXhzDrcWgQ6WgQ=; b=R3OnYP2nnGRMMqvJRRRlydtpPUBFKm6cm1fr/nvIShDW4XNxQ02dJoQLMOoYbMMNSNDOM1Stp3jvEYdYfv3VflYJCMN0p8guiZcWP/jLnZjUXkkODl5jfvNUdjqtT9ZUbmUZf7kKY8zT2fdPutqT3VMIFHmTQ4UXjBd3McrNVmA= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk Subject: [PATCH v2 21/24] xen/arm: Generate distance-map node for Dom0 Device Tree Date: Mon, 1 Jun 2026 07:47:51 +0900 Message-ID: <20260531224755.9481-22-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TYCPR01CA0093.jpnprd01.prod.outlook.com (2603:1096:405:3::33) To OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: OS9P286MB7222:EE_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f9c12e1-376d-4fd6-50f6-08debf66c2a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: hRWnCCZavgLhNZs7v3jCIUJO3FriLEUc7TQO6dOthBG1EHMcm0EHL9hArfyPh2YPT8PXZ84Fx3/9vtqESZxpRN+yH65xojK0KfUBvSq7rRsLCaya/PeBXMjVd56WpHchAsxURsI4YwpwcN9HFdVOf5G6YaKkaIcFzIrbpJYDTnYBSBEUPHKlrWPRMq8L+2j5R8CwAdcCJcJlqoAirafmpdy9+KPwe3LPSbY6ey3MMIxXG1tUJ3Bq2zLfKJZ1HJ9Ud36J6VW8HioCuBkHoXFvycxrP5UVootA/w8/z+q2DXe1D4/O6bekwe4e2h7Sasn8Vf7E6EpacXWv42QL1NMXihu6yiqxPpSWk3hTWZ6QIm5fUHpnElxTU5zuH8IRsnO5Q48KzqSnohaiaZk8oVJFh6Yu6ZTTciyryZOFfJ/yYjd20w/WdL+0MFr/4MvNOpC3h0cksDNvcM5mERqnY8McQnsiEQg1uffEKEErs+3OWe+T6m0rnjZJffG+8c/9NLR+y1FSIRqK7bf5bw3Vd4Xz+ygDOi6YZlVarc+IBKCi4Mnrh3EenIH5w4Mo2Lb5EmRBXmM3bjrxZkhu8oE93PNyBz98NpZ2sYlIgzRCygmZLzQ+FwClvQpuz6o106vQwrr4KIn1/FOERFCz2gmb8XPAfiD8iAzqNRuoNaLP0yBlNRErHDDs9ysheTuTyD8qUuz2 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)(376014)(10070799003)(1800799024)(366016)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WYBS4XF7RJ88x+S5WcEVBlU7ogqRQ6u2mwYAUExfO9XTEo/ro8jNN9pONDnF?= =?us-ascii?Q?omUmTq/oD5Ri88+nItpHWzrdWcMsPpZpeK7UfocYEgRfvwTU6id5MLtuO/5L?= =?us-ascii?Q?hFSwE+dvvAhdjzgATaLhA4sYXLGDTR7f2t8gTT4jVHNe0hYWrfQrG2NMlSI6?= =?us-ascii?Q?YcVADKiew0YCaD8exw613J8BAuYFOkadw5QwupLQekBCUu5hnXwW+v6ZxvWW?= =?us-ascii?Q?/zG6mxL7p4dC+Po5804mphqG7UwHAmDEWl/zIynvS581ly8OzN+q9zSfoFKH?= =?us-ascii?Q?9kcHjZbH6NiwGWrHu6sk0HZeOzO5qnuAvHqjHCVKwLlzhMK6Da6V2BVESBj2?= =?us-ascii?Q?Z2ycG7oXKsH8zHxzk0vb8adgxifxlOoQGmoPgP4EMiqPiCN+g5gcHv+E627J?= =?us-ascii?Q?HdzRuq83pxrjNuWjv/BpDmWPPPQ+ApdVfYzT5b8GMVz2UegR3hDUX65ROqgh?= =?us-ascii?Q?1rhuJ46SLQVHNIyKYH2aEWU+wa/dJ0UutaV1SGToiUyHipKqhzBLVh4nN8ta?= =?us-ascii?Q?JuNMPWEhnV90TmtuSGEYTyC6oBI6f+WONdmZ2P15Xp4nIh4SG+9JUvetYU4j?= =?us-ascii?Q?T30+EfJ2CcGMKLH+lvbqXqlwZwLTqI+8qX5qI0Ykd5HdcSGthdld89RBuceB?= =?us-ascii?Q?F3zxz2qgbm1W0PrF9/jn4BcGnFR5RDiuy5XxVlVL7+lQ+7mT2bPwiE5Y4fko?= =?us-ascii?Q?XVgkEBsuNT+APbGoGjBdRDo0fRJUhcwQPTDU4rNquXC3Tt71pdsyBw9CqG28?= =?us-ascii?Q?OVfeb+G/0d6LoJ5pU13Phh8awKja2i3/MaeUzbp7q2H+4o1Cigu730RSW4il?= =?us-ascii?Q?WTbEAcfn8FtnPyVcxfFDysILzItsTwGEDcmP6xlxLlcEV9kM/GWmJ4ObvLmm?= =?us-ascii?Q?06IyFBzLQNXcF6Wg0h/QRXoLMOVG1md2VSugBXoBnFuZATD9oRXzAlR5gLsG?= =?us-ascii?Q?GCf0ZU+Vi+ShenFDvM8yeg7KX+gDmz9NfSw99LUVlsTSLAOE18S0NMGUDSBi?= =?us-ascii?Q?W0ie9IvHBsHCoC/tH/3jCkaP1UVcol7wO+fjcsRQv76FlaeSjDjdFP8GXZlE?= =?us-ascii?Q?NjsBijF5wl75nz23JWD1p7zhITWCCnxye8+hzrXtEkwccEqSLkAbns+Nq3M6?= =?us-ascii?Q?5uGb0yr4akLwKZ2BVFaxN8ysC1QnH/0yZcqC8AgTQya5Q5jsiZYsZVar7dHy?= =?us-ascii?Q?1468L+xqlnPAUWrhMwiBPlc7rfm1Qcw69t/1J1aNu2eoK6OCkYDgXxgAkG3A?= =?us-ascii?Q?SQaNJGYTrhkCTeRDXffwCDHfmereFWoxr/fLuW0WmApW0xC+XNohVGtlHkZS?= =?us-ascii?Q?heK6rQkF1Cx5CxWs+XlbBvGO5UtMItMzPz3f0S02+LNrrvqnjY6PX3+umKAp?= =?us-ascii?Q?4ufzx7YeGJRNHrTvkjKEIRDI/2RHN/qWxIQMi8/Ajb3HNZPLFp1rSLXsKTlP?= =?us-ascii?Q?3z/pyHJwZYkxllW9Y1qXKSphuAws2XFqwVvlbX+X2Vh5AbUwzcR6vpc9TcfH?= =?us-ascii?Q?z2RvrzD+SyURKtbBxEvpMMEhUCdIdPLkgE+Yy6kEFOywNqV9DGRvY0y4LqBC?= =?us-ascii?Q?jVBX2TUThOzJ3eXQLU2Qw/UJLR5XIARMci1x5Dtjm82HFmQmp5KIa8a1i9Cv?= =?us-ascii?Q?nOA9PAj6+b3UQMNwK1MMAN12GItqNE97Ag3uSkXG1X/X9mZO4ZcHzwGwR9t4?= =?us-ascii?Q?58OXggnMc+KgJsT5luUGjvHyrJAXMO79GEO/kAUDc4ThNEerjRmgbhWVprJR?= =?us-ascii?Q?1EapDtEfACmJYxteItjOtVy0LBXvFDuM3mOFGqWTCRMobJLDhFPNXJiOIuvv?= X-MS-Exchange-AntiSpam-MessageData-1: MEMh6z8qv5+0qw== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 4f9c12e1-376d-4fd6-50f6-08debf66c2a9 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:40.7319 (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: KYKsFKmRdvmentGKtVSvVuLARwgvCVDfSuVIQHz1E3Av6jTSmjF6l36apCdHgrBLJopWMRe4J93PuHVEeV6niA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c201ff/1780267724-D3B60443-E7334E72/0/0 X-purgate-type: clean X-purgate-size: 2697 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267748572154100 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 750c3d53c2..e71d6cb254 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) { @@ -1568,6 +1613,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 @@ -1733,6 +1779,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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267756; cv=pass; d=zohomail.com; s=zohoarc; b=nENHOcwXrEUfG3uVQ2hjOobDM1PkG+6xOg5B/TuswhRtfONsstCUi/Ngx4duM0By73mWBi4Z6t/Iks9qRHk3h7y+UJ8uitrbsMUEYZBvQAiizg1Jf2JY2S49KTT/IUjMzxYQG0iM8Sa0B0/09mWTWctXWUi+Xr3TR8DFgais2lI= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267756; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EAMUs1xUJCNoKg8WlgclnCXqbMXhEf4+WGLaU8dCiJc=; b=VBffkJZ91pTdueXKeQLzRDQC4r8xdQ/JvkzARFoOUC0asaRpwtm2th4mwwYb7aPh+MsCnJqEJ/EK/OZf7xU1H/ALeZuQf56Ti28gflHjZnKkicxUw6/Uq/efmdRwvy159JWf49Qu578ghEM+mS1GU2ekhL7GO7RDKSeZHDgRRpI= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267756750309.037460973403; Sun, 31 May 2026 15:49:16 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323516.1589321 (Exim 4.92) (envelope-from ) id 1wToxc-0002pQ-EP; Sun, 31 May 2026 22:48:48 +0000 Received: by outflank-mailman (output) from mailman id 1323516.1589321; Sun, 31 May 2026 22:48:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxb-0002mj-Pb; Sun, 31 May 2026 22:48:47 +0000 Received: by outflank-mailman (input) for mailman id 1323516; Sun, 31 May 2026 22:48:46 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxZ-0002SZ-Sj for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:46 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxZ-00Fm16-9I for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:45 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-38 for ; Mon, 01 Jun 2026 00:48:45 +0200 Received: from [40.107.74.72] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbac9-aaa8-0a2a45050019-286b4a488211-4 for ; Mon, 01 Jun 2026 00:48:45 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:42 +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.0071.015; Sun, 31 May 2026 22:48:42 +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=yaHkrkXT2EPkX6rRsXwOBNwKqYgTYjkhmcex/SZTsbr5IAoXFHk/iisAVr6RmCHkFCcRzeOWWRsq0PkUuxCDMAVhaZ6kpSzHOn8xTghYaY2fs4JDa6U5hXgKS5YYZfn7d/1kW5jIKi599EXkt0CfrIeR0CV4+ARr+ocDFS3UCBY4Nq+wUSNPP1K2ZpRWBSx1uO9YRDu067chnS8FEAAp/AM3z+NOP0gcQjIPJx/mkXBBxGsR3w2Dzh1RVf+m8DZFJnom/4pIYtU5m6mypxrOFw3OpKIXa6obx+Uf1xbD4SgyBmAwFR1KmB8uVG5bieBd/yh4al0jb6uKx2FSbrxLRw== 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=EAMUs1xUJCNoKg8WlgclnCXqbMXhEf4+WGLaU8dCiJc=; b=SihxXPh4L8h2ZrFCRpltH+zifmO+pMaxdH9esm7iW68bzS1xxQULVyoeiTABqO2S07ZUBo/DfF2kCYrUuzJFoGZWrzj0eAC4kv5NTU1iwJVQDFZq4MFg6EU89eI2jzpLY0RfV3NrBmTXmC2qul7c05VbJSEb5kyHlzTeyxSEdDkdIbmnneDlI+xzHUho+M00FUSdPxm1JNq2Y/7pddEcGDraBKxakw+qVXardZRpqiDifmtkwsMeI9B/vc8LK8YqWYy6ohCPGu7Hr4W9lNkhjJZQpN/y4i2WfH9Y0HJ6Y4BGhyzc8gaxy6jmbiKumdZDwxAlwAc2sEmiHtXCcfF6iw== 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=EAMUs1xUJCNoKg8WlgclnCXqbMXhEf4+WGLaU8dCiJc=; b=vk+upCfHuUIIykL98reMWGcb2F3cfOpZ29t5xv199AoSXi/x7iSSgU9u260CL39pUI7cDo+7Wxgxx22iSzqU6fNGCeUFnLNEbMfkbl06+10IMoCluYgFFFX8lyj+a5RqTUAT3et2GiQ9qO/RZUi0k5qTRaD9YqF9erAdGesLNBk= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , "Daniel P. Smith" Subject: [PATCH v2 22/24] xen/arm: Balance Dom0 memory allocation across allowed NUMA nodes Date: Mon, 1 Jun 2026 07:47:52 +0900 Message-ID: <20260531224755.9481-23-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0117.jpnprd01.prod.outlook.com (2603:1096:405:379::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 065bc7e4-e427-468d-0464-08debf66c3a6 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|5023799004|3023799007|6133799003|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: Cumi8X9iRL6k+aqxPVveSwhKzV/SOUSVl1dOlvK4/TfNkZMYrQKKzK+A1LBNubjbiyX0p7GMUsnx9oGYHzHSqiZQP3GIxmp0z1gnE99BAb1kisAQ4lgi9S6Y2nsZtV+FSmdYmo554Tg9kLl0FtFsq6u+WoJOOZkuSwNfZn7nV1wH9Aqdbv5tESKSbsX88f4qmWLRa0JL3/a8YbTCnlAc7q2iBI5J8H37YMGRKFwk7kLuoqOrhyfCnyRzqlulLFVHjr1hMwbgcuSpDydSSnDdKuMidcEw32yyAL4fGca1xcDSjBlY27xxXJhAqbjEN+51zze5y99hi9a6tZ4oGU9Ij4c/F49m9SR8odFRJOFboktxPVnA5k3SX1Km1pAmB+qtonRyLFSrixy+ibdQkQ3N3Xi3jaHLdps7y4O+eAQsSQEHD94tujDBccEG3DNw7WASEZKJ225NF4a33QRa1hDzwn77Nij/TsDIExpEuJp0xhSCG++qEqNfgcYw8kTNnh1sYWHyeli0qfqHlRNWFf4QqBrvjngTS9dcWTAG22UNkQReTCsm18CEBc72bUwPhpmPIPI/cQzYz7YuDRpskneJbFbf9R+cM0w+lp5M9OElhL23h1s9AAo7hCYYBdMk1+fkOzyc8d0JUeq+NRWnouu4x2YCj10i1u+rHEVyVJs1Tx+Nwb8FRpXHUgBugWTHJcL2 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)(376014)(10070799003)(1800799024)(366016)(5023799004)(3023799007)(6133799003)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?ATpiAgJaoO7M+i5qVj6HfOw7+1P+83mPbgS6X+erM3zqntFrI8AJ73Lx4SSE?= =?us-ascii?Q?VTx+ZX055iryuLI4nTs8hY8dX4IDvrKSVSywbWkEpxrqWyRhZBGJ3ULjKlZy?= =?us-ascii?Q?Ukk7SYtDLjgpXxwfZZ0qgQiwGf5yCzqHHF9jkwFBC3x2jZbbMgt3jSoJCRPd?= =?us-ascii?Q?0RMjb8JB8+if+4LxWTXekPFIOgSm225STvqOBsPP8CsS+3UKq+v7Y/gjf5YS?= =?us-ascii?Q?GYuvUNs2RmdVI5vngq43uSrN/BYdOUOOhgS/xpTnw3eOjx19pwm6VELngOHO?= =?us-ascii?Q?m+v34dwxTfXhbIgOQxTGP5Ukwdth0LrwmgyNSMawByHqO+z9tRYzpcxo6xKS?= =?us-ascii?Q?hlBY9nayOJyf6MvCvIWbplU2bC+MEEN4H014mEzb40Ohi/ZMxpKAai8NHjPK?= =?us-ascii?Q?gz8oXtT0WRPMLe484UWe+lOwIgkk73pRkWBI3Jl3uomZJANqe9ERoEIUfmkd?= =?us-ascii?Q?oHdwDpgGpP/y5StFCbDijtll+oKxSZZBqV4BsGUXhVg1n9ikD+7x6E5zhUmZ?= =?us-ascii?Q?TPMO8ZHxkzps719AqyQmnYzAFiUSeJpitrEaWHRkbeULuHQQFUx+66UoJJYK?= =?us-ascii?Q?v8IP4dnO7AT99RxKMql8LhV30PUfLW/17suKQ2BbCxwuDIGn0E83Qbj9azGB?= =?us-ascii?Q?Wklggx2pHYj/DLh1fn2+x1wVKrg8Dcc0bhUrvGkIIqL30XTiDwb7DESZFKbV?= =?us-ascii?Q?/nkoa1mcyAEyurOQkppFkjVLHn9M6F0Xg3VqFzO62rRNJKdVtl7fR46XYnLx?= =?us-ascii?Q?Fic4QWutSIwx6Bu35eGHJMDK+IhsuUDggZB4dGJb54c4jHf49thELxKOSmbJ?= =?us-ascii?Q?IlKzjF7LbLme9esTRtOlRHwHBYLs06E5q0UHL22pgaGJPZC3Cv4JHZpP9j6y?= =?us-ascii?Q?Xg4MLDd0I/H+JIwPbdYE6uvrFFQj/c47v+iO9d1OygQ3HqzlOyZuwqjNeO4+?= =?us-ascii?Q?cW57EY39iGUBOj68hGKUqIa3uBx+c9uxZ9Z6ckOUwyr0JIQ3+1pjMZ7TCmAm?= =?us-ascii?Q?91z3qytsltco8W/uvdgUGhTJHHvFOaByG2oFgENPfaQp44vi0qiuzHzQG2HV?= =?us-ascii?Q?uTu0h8gMa/NMdcJWjhY2rIQRhRSAsWHJNmB0NuZ+eKTwtOlDn/Tede3z5EI0?= =?us-ascii?Q?WxBou1pjR8HI/OAPmPvuRgDTh8npO0uBf1MaGfVqhlgUjshK7dI3Byt5NM77?= =?us-ascii?Q?pCUdDBo26P8ca71IcEVHPT+gy+kIw5x02RSp8h73IhLZ+8Rx/7tR1Ku9sD/1?= =?us-ascii?Q?F7g3sXi14vM5q1laRUoilgmyjGs76sGgHy1Sd/OROa+fTKsjN/sDb7bXGhro?= =?us-ascii?Q?qZ/B2hpI2xkATcBRqvtAy4ermQD0+k4spNm7sZIVvhKlged7rybBw0OCXefQ?= =?us-ascii?Q?2G8N7ZEOJTOyZ0x44xQbz6zqejCjTSx6qtaCxHr2IJYVkrDD+nH+CJzZECqQ?= =?us-ascii?Q?2oLLpSyR4Yeh6lv7GGtHSCJmtVbnvMYInu/CsCUI0ogNu859HM/xfdWs9TaZ?= =?us-ascii?Q?IGAlYaR3r3Cf9DrfBmDsLZBzctJnqt8ClpweW+1LaUKOz6Y9HdgsEM8QyTH5?= =?us-ascii?Q?lZL8eogt21GD0q+YQTyG1qn+w6ZTie5G0KWu25Ne6LblhczureeEEUQN8yH9?= =?us-ascii?Q?AXIzJQ7nBq+Y3GXjhZlO7WBxYoBbMMIQrDoLl9aQQcbQPzYR2ZBJpqwU2kvd?= =?us-ascii?Q?z86MtmVzf1Rn/1iOIkIaUmHTskR44tcxg4DKMKiphgiipJ7Cgfhn2s6zhjRX?= =?us-ascii?Q?3sAstN7Cn5jMb8oLu8/9mMmxb+e3MU3A40/RaggbQq1lZOv0uxftyjXcXHDs?= X-MS-Exchange-AntiSpam-MessageData-1: /WgulL58IG1V2g== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 065bc7e4-e427-468d-0464-08debf66c3a6 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:42.3762 (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: bJmPk1gMiATuwd0GZxcwELsGKZTeUWF+eLzd7KXp4csNnrgOBXH3mjqiAgyzLyh25Gyu2tl0vKv6nOUZTAHn/g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c201ff/1780267725-DB563443-A3F10B2F/0/0 X-purgate-type: clean X-purgate-size: 15121 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267758920158500 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 | 276 ++++++++++++++++++++---------------- 1 file changed, 152 insertions(+), 124 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index e71d6cb254..29b09e3da6 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,190 @@ 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)= )); + paddr_t todo =3D kinfo->unassigned_mem; + nodeid_t node; + + const unsigned int max_chunk_order =3D get_order_from_bytes(MB(128)); const unsigned int min_order =3D get_order_from_bytes(MB(4)); + const unsigned int lowmem_bitsize =3D arch_get_dma_bitsize(); + unsigned int min_bank0_order; + bool is_bank0 =3D true; + + const struct boot_module *kernel_mod =3D boot_module_find_by_kind(BOO= TMOD_KERNEL); + const struct boot_module *ramdisk_mod =3D boot_module_find_by_kind(BOO= TMOD_RAMDISK); + const struct boot_module *dtb_mod =3D boot_module_find_by_kind(BOO= TMOD_FDT); + const struct boot_module *xsm_policy_mod =3D boot_module_find_by_kind(= BOOTMOD_XSM_POLICY); + 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; + if ( xsm_policy_mod ) + required_size +=3D xsm_policy_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 >=3D min_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 ) + break; + } + + if ( !pg ) + { + node_set(node, exhausted_nodes); + break; + } + + 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 +491,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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267747; cv=pass; d=zohomail.com; s=zohoarc; b=I+zYq0FeGs3c3SLLqS/Xf2axDuNL5hQpTEDnYiYAwQJjHKRIXM6yr/AG23iCLRGIGJDN4tLeqoN8M6y+1/cz9ROC8bPEoi2W8wlcjkiYFhCpKwaZAffpSJv1j+0HoSQxA0/LaGJJA3jZTzm0L8+NJk85MvTbkuCj/Pc4lkSAj2k= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267747; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=5QuO5xKA+OIjYqQ6fhQKlx60t+usshVfR/LPkpUASg8=; b=KnD6MDjRjyG5E/VkegknOyn9lBqyvhfk8mWhstjJ+e/FksfFfCPK66TdlImt1G2ZFulLxx5XLVulO7pyvxm2jWXp0FM+l0qFrFEUAJIIQwzM1uP+BR+8LJm4ohQo714dwE9S/v5ggY+gnIRT+cdGbxX6jpeZJlZkvNja2D5bu0w= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267747362814.838073394464; Sun, 31 May 2026 15:49:07 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323517.1589325 (Exim 4.92) (envelope-from ) id 1wToxd-0002wE-24; Sun, 31 May 2026 22:48:49 +0000 Received: by outflank-mailman (output) from mailman id 1323517.1589325; Sun, 31 May 2026 22:48:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxc-0002uW-IF; Sun, 31 May 2026 22:48:48 +0000 Received: by outflank-mailman (input) for mailman id 1323517; Sun, 31 May 2026 22:48:47 +0000 Received: from mx.expurgate.net ([194.145.224.20]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxa-0002dW-SZ for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:46 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxa-00Fm16-9M for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:46 +0200 Received: from [10.42.69.5] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-e002-0a2a0a5209dd-0a2a45059030-40 for ; Mon, 01 Jun 2026 00:48:46 +0200 Received: from [40.107.74.72] (helo=OS0P286CU010.outbound.protection.outlook.com) by tlsNG-c201ff.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbac9-aaa8-0a2a45050019-286b4a488211-5 for ; Mon, 01 Jun 2026 00:48:46 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48:44 +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.0071.015; Sun, 31 May 2026 22:48:44 +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=vp3Xi3Z9sJgaxeHqtC0xyNEuwdq8qStvMvGRDJ915w5mEbZMsKR7d6AxhmdvTA8C4KxEi2Hxr+8Q1L6KdCKgQ1S4j2QNWXcU5d33v1jRkae+ungc4q9Cf3K/MIY3kBnlQMcFDts05VBBrpP25eh/ueQaz46yZM9YFbVg2l/KenPy2LvvDRLh/54KkYlYRPQ4hDwWinyDNs1R+ts1t1Yv6g5R32wA8jWUOB0AJMaLaOS6nVeMvinSEvuhGQPPdUxbQJLp4s0FDggBjDyumLzGH3o9a6SOlyfpHoVkGC5rlVhGk+ud5KPBTzEL2HMec2CNmWN8smEy6IK22EzerOAoFg== 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=5QuO5xKA+OIjYqQ6fhQKlx60t+usshVfR/LPkpUASg8=; b=JeDzHJ2lbKaDYe4W4q0rFTl2pA5nQi+nghna+uIwB0lpbCPOKy+XTQwo6C9WFSIW+ux2brURbSJf+iHSKPhkTvSHnsxuYfeNlxtvq11VAavP5kedBtcvotJlFxrOPyA3En3d1ybBfdOjZ1rQ9NXupOs3HPXVlluEt+KlDFJA6l29aZBeyRLRn112colY9/2A+C8f3ThWkOT0+915TII3TGiC8czg2kezpcv7QXquGpHeqlO+aZi0Yate6Jx33cyznAyodCDk4/Pa3dg986Z1he6+M/JcD/qQ461HH7IlAmtBh9Qn/0tjF0chkx04qDyiTAHqb467wdI1+0Pxjao/Pw== 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=5QuO5xKA+OIjYqQ6fhQKlx60t+usshVfR/LPkpUASg8=; b=wbciOWzfwifwa5XOyreGKIe9018F88af4WsV3MaA8c8q0e5OLHneGJIgbbkTKwU16IjunYoGR9qXN7ZmyT/q9ShmTAS1AQgEOFTLGyTvuoSlczOO7kkh165e8VrXS7YxJnT0u7zhv5yO6mABx+c1uOEXxkeXQKrROxi/uBO89Jc= 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: Hirokazu Takahashi , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Volodymyr Babchuk , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v2 23/24] xen/arm: Use dedicated function for Static SHM Device Tree creation Date: Mon, 1 Jun 2026 07:47:53 +0900 Message-ID: <20260531224755.9481-24-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0125.jpnprd01.prod.outlook.com (2603:1096:405:379::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: cb660076-0a7b-4a80-3b1d-08debf66c4c5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|7416014|376014|10070799003|1800799024|366016|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: X56eCUsDMDlkksp+/n0hpvle4d7x+JK4wADV6pAViumoJJHgT/rrnjcrfUbALctDWm52WV04XfzG4AKtItrN9GzSMuFnrnk1cmhhG97yH5r4wnjnIPxtcp2tY+dGc057gYpi/yM2YijLpAPu2aZInQv/TLVmTsdXOp1tGgH5Z9w+auVw+HoYbq8N0gy5urAysOgiYypi7rJ11Cnxms344ipv68OBJ+CZm0quKHAtZgaUZujOyY3A8RpPlA+xOPtuNHmPZ6pYofI4+NL6PG1y/A1lLPt9vAREYLF5I4a2FwEbQfVrNG9cvpf4dDb0olaeuJrJwrRW6Sx/WDQeaCP09zgu5NqVqulIO5aKLnaKirusP3dJAfR57Pc+Bds49spYNbnL5CB9AfMcWCH1XYKn3kwuLwA3h/IANZHPrGljDRlugiFAif0CzlVivAkzaPgzLxoZRSELQRTXok59PlN6oj/L+SUFUaVrZepJVGDDXOp8XWfqXi/hSjfdYELGz4On3zAXnnhQcuqlDhfzz62s/GRDB0vUR9wcxKPlWL0Du+hTAciPDrf92BEASYThRVXlI17qAnivcSUEh44nz5G4zvvyE9RlJOUAHp9jzf3u07JB0OqZHNKzzrA5mgpQbxQ1JrLjPc+QO0zAhGgKD70QWUr2IKPbEYCLEQ+fuNgagXaTr13jhhF9z8ZRQhLbuo9q 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)(376014)(10070799003)(1800799024)(366016)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r4fc/RWf0I1k/6uxjKEbtJjkWVhkIgQ39q12SWwpGrnc6/g0J9fDxI1k40t3?= =?us-ascii?Q?ascf3vfBy4BxvobWlTJP2UpaAkcS9CuPamxv+fLh0d9UAOISJ7vFTU+R9mQ4?= =?us-ascii?Q?Tm7nBnruDelwrm8f3w/14LcAGmM1RrA2qrApYCZYhBlNz9uTi3KfvxJOI/Nt?= =?us-ascii?Q?FZ0iSEQG4BjS6EKutj3y/BOpyHV89YRJgnmwi0CjXBs7EgNlyuvuh9nCd4BB?= =?us-ascii?Q?7R8Ao0CaBJtUjlc5nFmbQ9ViSPir+c+/WWAlkxyVMhmwHwB5TIzLEi9YQYcx?= =?us-ascii?Q?ltIyLM+jC8w4l32XAf7gWBRk0ni8RLTbf0D/fGs0NSTFOVeMcLoY1v91zyrD?= =?us-ascii?Q?c13LxQ7oB5MXbNNMqxUWG+IcWQ+v0QUg3kdv+NvH5+CqEno6RS0zdXnT5xmg?= =?us-ascii?Q?id//Vx8XCRevid1OCpu0Rz0YeT+Mo6cgzFqzHwAaCiylJIfnAxjWt0A6gs/U?= =?us-ascii?Q?dc/CRQi/n/x4ApCuZzxhilpKKnn0qqwqaGK+zjotHLDCTHxmpXIBaoNzzp9b?= =?us-ascii?Q?kkdfBLEjlkaA7GD7w28c9Dxw/8QKXBx8FLXtw9hvBkjTqQON3eNdtlZqm3bx?= =?us-ascii?Q?VaYZ8TrEByirUaD9jY55P/S5Q1L28cdwwSXDheREsd2NdIFP+n2Jx4Kkv2HT?= =?us-ascii?Q?L1cxi8yUoLFSWGQCol+YxN2DMnskZUsvBTN2w0hZCZDtUp+d4Ks3ZcvAFe6+?= =?us-ascii?Q?Ec3l65JW8oJAE+7a22P07Mrg8m9+2avpYr3tFEW3GYaZs0CoNCMAjcc4eK9y?= =?us-ascii?Q?YDfbjzWTYG5tCoIvds6XSDbSzaTMcEp7lkL++92U1Ir994zxPlgF16K9tDDa?= =?us-ascii?Q?g3uhI1YSKhocARgvRqOzEejDczP0MvPmp+hffKEdBnmaV0C8uqLzmIM/T2Id?= =?us-ascii?Q?Ow2UhymqQSFYqecLpms+WhRyow9P2OlITTw3IWd9rA8vSROajoqQDGhlkSrR?= =?us-ascii?Q?vVyKhfJ2MyX35bGNGXbk0FuI3Ai57mTRarCk/1ErPQyD/buaMdCOmQm3ZAQ7?= =?us-ascii?Q?NzPKNpJikY6TObKXMSiruAvAytrTjaLTJOyZaTfii4HKAOMrpgR9i7t+9oK3?= =?us-ascii?Q?Q7P+j4q8abfpYUCXKZU071LE7Gjrlf+Dkmt9C8PzNHQ7Sgl7sBxPWtkR/t7h?= =?us-ascii?Q?+nCvafZ2BAHKZ/WQkGBOIgEhsRq7AuRx+pvx2gjumN/c16bc5qTcvyJammMu?= =?us-ascii?Q?VXtb5PG2gqY1K5hJvi/4H1XAGeo/VAHNPeQNqh04RhnH/jnnbB7UjPK3V1bU?= =?us-ascii?Q?f6+djHGYWlY6tXzVJ8UHsF9NlzzSRmTzkgrl9dJmclkCPboaM2LrwlpUD3jS?= =?us-ascii?Q?OEFWHNQoIvfr/q9ei6zBDqGpqZqwx/0FMHjqkLHj2xrgRLCqJWyB8kakTMla?= =?us-ascii?Q?jnbwNr60seSCZUeaPZdcj7ErSbmimpTlL4hSIOXNm9ZFbTWAuda6+UXC66lS?= =?us-ascii?Q?8D1c1TKAPMXZjEY7jnqtBkqITGVpWrNcEYnNOGK2R9mQTa2rPHl9pMHJBAvN?= =?us-ascii?Q?rE//kJOBNLz+XoR1amv+9z1hXFyl+DbapRkEeRvshDEmw4zG6UdTfzFSIfr4?= =?us-ascii?Q?Qd9upTxen3DJZkjzmy6Ttepn7n6KnI9bDelCHTieefXxUzXW0LUs0NNa3RnN?= =?us-ascii?Q?c97X7JxpX44SAzCl6SsWDccjWPjj8vNyeYPHXNJCr4AVs+IrK9YtBDPsztt2?= =?us-ascii?Q?DeMFzb9M1BINZBCdc3IaGVldJSqJghBhF0wDvdBxA0uOGl6D1AAlp2ImmZJv?= =?us-ascii?Q?ajXLuWE4VluWW9uCPKgYsCpGI76n4xQmpbsqKSdFnHGj5sqUZKHzp39e0sdv?= X-MS-Exchange-AntiSpam-MessageData-1: oYA1rPtRy+k0NQ== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: cb660076-0a7b-4a80-3b1d-08debf66c4c5 X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:44.2602 (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: 9EkPQpLCjCNxzIiyNsKUUHvx8SPHNzA+D9TjcedoyaP1DlF8IW1VMO3eGQ6aL71uQU5O4To6rFt3pNZc7t64gg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-c201ff/1780267726-D9573443-59CCDCD9/0/0 X-purgate-type: clean X-purgate-size: 2876 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267748882158500 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 29b09e3da6..497789ee1c 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1807,6 +1807,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 Mon Jun 8 07:39:08 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass(p=none dis=none) header.from=valinux.co.jp ARC-Seal: i=2; a=rsa-sha256; t=1780267757; cv=pass; d=zohomail.com; s=zohoarc; b=maG0jZYxKv3NQkVbqDxOxp3F25xw+H8kVpGJ/yXHIfVS9ueb2/GPLxYPxV8s4GJ5NaK+lnuVfvI40VADPCGd9RIczEuuy1PZVrjzSdmN8u2zStVsQuM7R1n9wfxaUbDKD8iIK4VtrwVLlfYx2lUG25jDR/kM0qRkmepZfctkoIk= ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780267757; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=s3XmMr4E3+akgf1HAcBTnf26av6T0gioo48e5/4KTcg=; b=WLGPMTsajVugjOLKV5F8K74NOOjuKF0QUqfFg/6KGWKotOiDEcbpedjZPUBnaFV84+DGqibTV9ip9nGPSGjUlb5grG7/GaRKtCALln28AvIuJKVUMypI/onuu9eElrlvuBVJmEfw6qZSpJyYYSmhoe7D6/jt+ihqJ5/2UcV9PC4= ARC-Authentication-Results: i=2; 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=pass (i=1 dmarc=pass fromdomain=valinux.co.jp); dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1780267757965229.90361754249727; Sun, 31 May 2026 15:49:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1323530.1589341 (Exim 4.92) (envelope-from ) id 1wToxh-0003th-6v; Sun, 31 May 2026 22:48:53 +0000 Received: by outflank-mailman (output) from mailman id 1323530.1589341; Sun, 31 May 2026 22:48:53 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxg-0003rc-Oo; Sun, 31 May 2026 22:48:52 +0000 Received: by outflank-mailman (input) for mailman id 1323530; Sun, 31 May 2026 22:48:51 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wToxf-0003OJ-0w for xen-devel@lists.xenproject.org; Sun, 31 May 2026 22:48:51 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wToxe-00En0E-Cw for xen-devel@lists.xenproject.org; Mon, 01 Jun 2026 00:48:50 +0200 Received: from [10.42.69.4] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 6a1cba94-bab6-0a2a0a5309dd-0a2a4504a1f8-28 for ; Mon, 01 Jun 2026 00:48:50 +0200 Received: from [52.101.125.102] (helo=TYVP286CU001.outbound.protection.outlook.com) by tlsNG-ebf023.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 6a1cbacf-1dec-0a2a45040019-34657d668b12-3 for ; Mon, 01 Jun 2026 00:48:50 +0200 Received: from OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM (2603:1096:604:458::18) by TY1P286MB3278.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:2e1::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.17; Sun, 31 May 2026 22:48: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.0071.015; Sun, 31 May 2026 22:48: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=bRkteYs+NLUCNXsxCNLzOsZq667fqTekJTnrHRvQ08jwYCXlYqSOEyhMfzNGv36TirMhUO2bdhshJEg1+cSe21k7u/bKZpjjHHGMuenezs3meJBZJAKnmdEdZXD3RP+uhGG/7+Kv+I1g/koCVb8gE2WTVm2oDnfHCePgzEX2Ek/nCfLlG/cXMe0eA2jFXDGxlaIZs4X1Ze8ppRykdmNvsmpMfnoaW2iuQf6611ZCu3F2sqK9MhYG70+mcsSyvRv/Xv5U/OTtqROhe5piuq/LjJLjgaJ8Cxmk0xYUliG917E3uKoRhP7TMgAFwNCb8R2RiyCZiu6loiVWoyYoH2YRew== 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=s3XmMr4E3+akgf1HAcBTnf26av6T0gioo48e5/4KTcg=; b=T6iKCSccDDHiJkHvDFWzJ/BwrGp3TTY9krdB8g+vp5hvGqJdu6W6iT0isQQUI37YDvMuAjURPLkmF/VsodlMlPigOzpjnP92kOsWUnMKGfJZqLlS0y+IBA5JjqPpBvgJFmLkxCPlvGPsoIdgFshtFBz1V77Vo19pW7iAtIULBEvd8kjGHrMRwFaNyAQcpBHiN6zFXLIohI8CgPN6rKCSQFLT2YUM7O+kvBaUecPbip3mTtEhtAFDMNe6cHX6eUE3Boa4TJaPQtb416LtUp8e5dJo/SYvKqqCXPnkqgPRyBi8S3B/kySrNOF5hY2bp+426ta2y8YgQwmXtvfUqkIqnA== 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=s3XmMr4E3+akgf1HAcBTnf26av6T0gioo48e5/4KTcg=; b=rGQTi1hkjOQEDOIhNiXO/Z4Xvbt+FTa/W1sHHh7dbDsAO04hCvCRG6T9uhuDjYX+3vZp2hk9UipZKYh+2cUU2MUTKTz4OIm8FXk+x664Ys92gtCOAGUWbjUjI7JSW649mnChednPR4Aawt0JySS0MF+sHB+/L+FOCDR2ihTLevk= 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: Hirokazu Takahashi , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini Subject: [PATCH v2 24/24] xen/arm: Support numa and dom0_nodes boot options Date: Mon, 1 Jun 2026 07:47:54 +0900 Message-ID: <20260531224755.9481-25-taka@valinux.co.jp> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260531224755.9481-1-taka@valinux.co.jp> References: <20260531224755.9481-1-taka@valinux.co.jp> Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: TY4PR01CA0115.jpnprd01.prod.outlook.com (2603:1096:405:379::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_|TY1P286MB3278:EE_ X-MS-Office365-Filtering-Correlation-Id: 3eb66169-8a08-4f4c-cc24-08debf66c60c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|10070799003|1800799024|366016|3023799007|56012099006|18002099003|22082099003; X-Microsoft-Antispam-Message-Info: FJUywyCTtOHsTKeg+am8duIMaVPFio3GjK45JLlgUmdOUbFnmwWzgO/9LO9Pw5D+B0qYqUKeQ5hN4OeMKUxcJCdc9vsM9z3EXD2viC4fEZbrnyJpsTvS4eBTnRAGzqmvI/Ll2rYCANOuOQN175Lx7EsdmExVp8GFlob3TuOX8cVwELQXsxS7adLYuKR3aZl+nGDvGCNTjX6svK5o2l/zyZoid2ZHNLfrCJrPuvLNYBw/k4wSx8HZxkoVext3CgbzIcnU9NANngZhohO9TTPNXGC441KA8ddD2Sx3/p2KpzRRMvNuK/7eTKIIsLMWd17yLi1CB9PA+F4J7xVBrDShg/l0sLFRGnC3HraR58Xhn8ns5sViYihQ5sCY/Qfd5ikXQk3PESFWDNInWep5Xe4cI9kYNltPEiHxcJhyboFqg7HeenA3shoFzS3hHkF1eieILZAbNL4YE0hbn8VG+odBb5VL2jjYeid1pgkm6w0PRbSh/i8hZRWEQf8JHL5OEAeIGx4YyXmepg6XPQeMGCP7ErDmBpTuBsIMx3Z91xEiXSpcs669MzJOlhDExkZd5ECdUGBzcSLoPwPYqsqxJ4N+6ntL5Icug8zz4cJLaVMrrB1H4uD1TtuadT1W3fLbOK9Q7AHc6TBEDMlWJe6eHPSClQ== 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)(376014)(10070799003)(1800799024)(366016)(3023799007)(56012099006)(18002099003)(22082099003);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 2 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?jD4UckMd8tOn6BqDXe2az43yMAyxSNPW6gIJbkOiZ+QvMMFmQGjxeMv8rxCH?= =?us-ascii?Q?uwT+YT4DKR1lhE+NZZDf7yPIca3SPbtzJqG9/gKamasm7Le5dm/BiuVUKAS6?= =?us-ascii?Q?M+piZ54808KNIbDl55PwgqJpPji/JkfwahruHemukepEfh81dlDSy1r8k2dB?= =?us-ascii?Q?rcna9+yYUKn66wC5s/Lv3q25p8HOAB9T51IKOjXo5Iw25BHHLQg3gty1ZTiG?= =?us-ascii?Q?VeT616eX5P0c7ZD0zkPk4HrLVg5U2wysqC5pTRi1R2T/Fr+dKgwkCm95i4Rh?= =?us-ascii?Q?IZqg/ONpdCcyug95SXAXGUBe2vOkuE4b23RwbiB6J/jAETjYW2x2VTCxjgcb?= =?us-ascii?Q?fhPOXiV89XdHy1OtmbYDRm5SIBCDsf4RDKR/kPw7digoQbfsUkG9RAQ50jxe?= =?us-ascii?Q?BWmZ+JOLcAuqIXp/Vp0NWiVKESUMhC/sA1S87UyGS4vTd9UEgp1vMZBe03OZ?= =?us-ascii?Q?KUn7u3L6bYkCxbwrwvTI9yXGP1dbzRKzs72WkS2nfKhiBlIA/mkS823v5K00?= =?us-ascii?Q?B/ajegjMwcubybr2w+89NLdVZXnjiccnldMLNiZBhcDhtPWCdo631s2no/rD?= =?us-ascii?Q?BGpOHnbnUFh1Q8spX+OQ/sNOLpYP9uhspQtyKVQ95Hk77YNuL0JDCxt1F+hR?= =?us-ascii?Q?7I2BOti7JLvo3zk7Kvm5ZWW3Qkcq6opNCnhY67rPMQOyOBKmMsnrmdc8DR8e?= =?us-ascii?Q?iZvra6Aph6QlqRUCdC/yTXgDGZPSoFQaqkRCYpG7M6sf7x4QEt6kenA/o5qa?= =?us-ascii?Q?mUVFTbUVO7VTUF8cgyBExHurr0DiYBGEePe0W5D+Ynd0edQKMETqQvdv3MUZ?= =?us-ascii?Q?VQ5NYAWOJ5wl+K03tCrdRTlHypTQIQKqSzOY3YRWqFCSqc6hrTPQlJyEQnxi?= =?us-ascii?Q?ZO1gYeag591zDfMB2MoqnQj3D2ijWdknvpMDbGdbGBasPzbq+258KuUGhzRT?= =?us-ascii?Q?Dl8BB3O48IHXvmE7kDdlgG//DT/K+DaedSZa4Kqa1l3ALUrX6/tpgbkKS9QH?= =?us-ascii?Q?0CNNyBVRLNLoSNgcX7pFz7TbcW+hfYNt0ysTJVEoRMy2hGik86RjaQusO430?= =?us-ascii?Q?xE4nqjSkUwRiiIRHL0ezMs7lvxcdw78zWWG//F3pI2szDSRBQREW1Du+Zciy?= =?us-ascii?Q?IKpbqaIr6CrZ8DWA+D/3ZQuEDGDflj34pKQnzoGeIcmF7LCWbIkx6X8eCx9r?= =?us-ascii?Q?jydREasCfVmq8JjBof7m/wqcFfA3/u1RNYoO8r3KTQ17ddPdkRf9ofDofpi2?= =?us-ascii?Q?m5xNwUy2QzzGWl9N/h6UPN5mdq4xTnVD1ESxA1VJa5k5Wb5l4Q392VynQCJz?= =?us-ascii?Q?yNGuJsJKUkIDE+Siox2GZGUMTfvRlQlv7uorbS9n/MZ/YIzkRBCeMDAV3b71?= =?us-ascii?Q?W43aoNoSisttS9s00UIgLkK/7rDK1M5/IglJOICYIMMe13PbuNBe8uv0k4SQ?= =?us-ascii?Q?FSTHBTzr1HZqa1BmGginVlwvVfy5yn6w7z2TgIdM2vXR4miGWdydPDpgMf/x?= =?us-ascii?Q?aRdIgaYhuTLflxurQ7Kp2jpKOotn2eXJ4vc9LzVlG6UDfTtCh64Nltg0dc/n?= =?us-ascii?Q?/MP2Tev4mlwCxfVnUh37yBF3CflN+jfJnWmOL35NpjSQeuel8gu4AmFzCyJU?= =?us-ascii?Q?1NcVnWiku+nPMIatK84wsrf+dDpHbp9ZjTK4jhPaaTjK6ctwlFex/maViqMi?= =?us-ascii?Q?foBvI4fDpOVtK/gRo74hhbJv4YGW8sOkKVW98bEVz3LpXdSz5Oli1QoDbBYY?= =?us-ascii?Q?fy3N213TxkA7PUERToHEtIwvkYeJ8RVLQoujHUbQH6Lv4/myHmoxCwrI5vh+?= X-MS-Exchange-AntiSpam-MessageData-1: msz62ZHVuRl2gg== X-OriginatorOrg: valinux.co.jp X-MS-Exchange-CrossTenant-Network-Message-Id: 3eb66169-8a08-4f4c-cc24-08debf66c60c X-MS-Exchange-CrossTenant-AuthSource: OS9P286MB7222.JPNP286.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 May 2026 22:48:46.4114 (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: tlGp30Hdd034s6RanQoHhdLcP43DqTUXdPgxMkyLTjgtNFt8tD1sdCyE3WSjFI54Y2n4IR9o4mRb7oUe2OaEEA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY1P286MB3278 X-purgate-ID: tlsNG-ebf023/1780267730-42F653FF-134D48AC/0/0 X-purgate-type: clean X-purgate-size: 1710 X-ZohoMail-DKIM: pass (identity @valinux.co.jp) X-ZM-MESSAGEID: 1780267758909158500 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 8c89b7852c..909d5889e5 100644 --- a/docs/misc/xen-command-line.pandoc +++ b/docs/misc/xen-command-line.pandoc @@ -1050,7 +1050,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 @@ -1059,8 +1059,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 ` @@ -2017,7 +2018,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