From nobody Tue May 5 08:56:09 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1776349298; cv=none; d=zohomail.com; s=zohoarc; b=D57r6oR+3XDKEs8xCtSNrF8//uaXA34+RQ9JsjCX4i7wAdYUQLWdZBTKpKFiRSsv/cZhTks1z3mZuO5RIHFatMaOKvjnE+QWGHn19e1hp5dl0mitJT44knJk/wtp7NCWS+HCTDaq9y1i7C7jUkZrtQzZoVOF4Cj23h0pGmA8F6c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776349298; h=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=s7asg+oRMzsxXoRo6Oq9BgsaNNgnJ/iGaE08Tfel5jA=; b=ZJw8SRZz5eNiSWGfwr5t7UIzSwzUZAj+DDwtWE851Cfja+ZMw2BSp7M/8LgcbK4MUIyk2pJDHaMInc2fW4LrZgHUZa8/31Twv0u1BjgOMJGf63IBPVJpuly29rNImuQZpgGP5pUZgLaJ4sV+D3qpfYBS6UsIqiG9w9WvVl6MHFA= ARC-Authentication-Results: i=1; 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; 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 1776349298507743.44692784976; Thu, 16 Apr 2026 07:21:38 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1283529.1565732 (Exim 4.92) (envelope-from ) id 1wDNaj-000564-H3; Thu, 16 Apr 2026 14:21:13 +0000 Received: by outflank-mailman (output) from mailman id 1283529.1565732; Thu, 16 Apr 2026 14:21:13 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wDNaj-00055x-D5; Thu, 16 Apr 2026 14:21:13 +0000 Received: by outflank-mailman (input) for mailman id 1283529; Thu, 16 Apr 2026 14:21:12 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNai-0004sq-Bm for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:12 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wDNag-00EUAi-72 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:11 +0200 Received: from [10.42.69.2] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69e0f057-e002-0a2a0a5209dd-0a2a4502bd98-0 for ; Thu, 16 Apr 2026 16:21:11 +0200 Received: from [209.85.128.42] (helo=mail-wm1-f42.google.com) by tlsNG-720697.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 69e0f057-af86-0a2a45020019-d155802aec67-3 for ; Thu, 16 Apr 2026 16:21:11 +0200 Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-488aa77a06eso131938125e9.0 for ; Thu, 16 Apr 2026 07:21:11 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2026 07:21:09 -0700 (PDT) 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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776349270; x=1776954070; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s7asg+oRMzsxXoRo6Oq9BgsaNNgnJ/iGaE08Tfel5jA=; b=j3OGgoR1ibG2dCT616OWsU5dHd9vpjBobG8+4C8IoDJyZRi0cCPTBHN9WekvJUT7Pd 1Q+dLynlmYcQ+WNF5mqiY7t0b+J5UuMXw7+LF4zgm3Kb3cmzq26/FmppczQCjmKDh1x/ i9aKvQ6nkwq3+h9GrFDOLApEIMccdyIafdzq3A+N+FyC9qr7i4YzeCyJM/t49mDiIahk hZyF8GLwPyS72ZQvJ1Ltdb67BrbMWbiY+YJ7lqLb+pHuIHB7Q+uzoPvZ92r4Arq6qrLN xnkSZGbdd/kCYfi/YPCl3vRhCkG5a6s7b6DQOMRVjfp/tgeKdiN57Zf89b2TbV4x/eLV oqeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776349270; x=1776954070; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=s7asg+oRMzsxXoRo6Oq9BgsaNNgnJ/iGaE08Tfel5jA=; b=Rny+/oqrxxmAUn7ySWJ+WObDiw3bafO7uQ9x9ELGY+CuF1LVb+qYNPMMrO+QMfgpId IziYhVw4uW66ubPWITZn2wgIo3ZQ0h9N9w/wTUJvbeCvnSicKCHWC2yGcXJf4Tl7C8Lm g57Nh9hkB8zvJd1IIxTKeWsduekO/AZ65oez1T6qpttccXIIXTEWvWjI+yNE2OZ5S+bO y47a9ahd3rrJuOJCuXRe/NfPK++/Y0adda+HZ+ia5I/bpeGPXWcy6ScX5SEwVY3yEesW itTn/srfarCEd5LFR0aL8Odu8fiGgJKMgpfcZgeiCIYXRThoHbQyW7JnCBBYPP0Y5FK3 gzXg== X-Gm-Message-State: AOJu0YwYNg+LDl5tPLmNYiOQeshPb/tyhnMXJgQ3RVncpaDuoL1ZRqPM g1wRXq2C293fQccDQVn115bca4fGb+ws1kORWGXhfErz8RL7s+jIIgqWAOuMJQ== X-Gm-Gg: AeBDieuHwmlM3qSwdrIoemrE7fZ65mMWdb597R2XUjiIoEOdQsNRaTjGCGy0qKl6tz7 3+39pmulFuY/kUPDuyEBwiZ11gX5MNYK15MZ0eWJUd9Ra7VS7xhQ5vv/AYZuXE+awSAzjVWD0eX 2W2O7sRiSYxSkIwsvP3xYSek32QIveudbzWqQYHc1Lkgl7KAU9BqIAw7E+A7WaVdI2X/fOYCswD Sz8TB92A/Rery5nW2fnKIDS2spKRsPURTTDV8ICO6CeiI/8FlfYRcsftkYb4H4e/JkDjIbuBSg5 NffgbUZPUO6y9450x/vMhBEcBNycC3pd3nxQbaxKK7gZMjoUxdJMywsXq/55ycIWhbvrbIYF/Nu vfN99QXlMR+CkWLBQ+SU39u8GsQiiyXnD38aKEU7K3fJCrVhkT5p2z6Z9605LdL14HHsa5FluYt E8htLkBzBuDv3itZVzH3qvl0R2enCzp33oYMxsRLVwNlQtrcedwxQXO6K/kSZNEY0kKaNsLbVhg abv X-Received: by 2002:a05:600c:8b2f:b0:487:1520:d107 with SMTP id 5b1f17b1804b1-488d688da37mr363620945e9.31.1776349270314; Thu, 16 Apr 2026 07:21:10 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Oleksii Kurochko , Stefano Stabellini , Julien Grall , Bertrand Marquis , Michal Orzel , Andrew Cooper , Anthony PERARD , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Subject: [PATCH v1 1/3] xen/dom0less: introduce free_phandle in struct kernel_info Date: Thu, 16 Apr 2026 16:20:58 +0200 Message-ID: <58f59a071f6329acac610688a6c25b67b30e5b92.1776340422.git.oleksii.kurochko@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-720697/1776349271-B3563161-B83B048D/10/73395122804 X-purgate-type: spam X-purgate-size: 5091 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1776349300784154100 Content-Type: text/plain; charset="utf-8" There are cases where it is necessary to know the next available phandle number in order to generate phandles for guest device nodes. When a partial FDT (pfdt) is provided, special care is needed during initialization of free_phandle, as the pfdt may already contain a dummy interrupt controller node with a phandle assigned to it. free_phandle must therefore be initialized to one past the highest phandle already present in the pfdt, to avoid collisions. Since free_phandle may be needed for the very first guest node generated, domain_handle_dtb_boot_module() is moved earlier in prepare_dtb_domU(). The new call site also aligns better with the existing comment stating that domain_handle_dtb_boot_module() must be called before the rest of the device tree is generated. Introduce get_next_free_phandle() to ensure that phandles allocated for guest nodes do not overlap the Xen-reserved phandle range. This helper will be used by subsequent patches (by RISC-V at the moment). Signed-off-by: Oleksii Kurochko --- xen/common/device-tree/dom0less-build.c | 44 ++++++++++++++++++------- xen/include/xen/fdt-domain-build.h | 6 ++++ xen/include/xen/fdt-kernel.h | 3 ++ 3 files changed, 41 insertions(+), 12 deletions(-) diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr= ee/dom0less-build.c index 840d14419da2..9205f01f0a49 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -389,6 +389,24 @@ static int __init domain_handle_dtb_boot_module(struct= domain *d, if ( res < 0 ) goto out; =20 + /* + * Find the highest phandle in the partial FDT so free_phandle starts + * above it, avoiding collisions with pfdt's own phandle assignments. + */ + res =3D fdt_generate_phandle(pfdt, &kinfo->free_phandle); + if ( res ) + { + res =3D (res =3D=3D -FDT_ERR_NOPHANDLES) ? -EOVERFLOW : -EINVAL; + goto out; + } + + if ( kinfo->free_phandle >=3D GUEST_PHANDLE_GIC ) + { + dprintk(XENLOG_ERR, "Phandle allocation overlaps Xen reserved rang= e\n"); + res =3D -EOVERFLOW; + goto out; + } + for ( node_next =3D fdt_first_subnode(pfdt, 0); node_next > 0; node_next =3D fdt_next_subnode(pfdt, node_next) ) @@ -459,6 +477,8 @@ static int __init prepare_dtb_domU(struct domain *d, st= ruct kernel_info *kinfo) BUILD_BUG_ON(DOMU_DTB_SIZE > SZ_2M); =20 kinfo->phandle_intc =3D GUEST_PHANDLE_GIC; + kinfo->free_phandle =3D 1; + BUILD_BUG_ON(GUEST_PHANDLE_GIC =3D=3D 1); =20 #ifdef CONFIG_GRANT_TABLE kinfo->gnttab_start =3D GUEST_GNTTAB_BASE; @@ -499,6 +519,18 @@ static int __init prepare_dtb_domU(struct domain *d, s= truct kernel_info *kinfo) if ( ret ) goto err; =20 + /* + * domain_handle_dtb_boot_module() must be called before the rest of t= he + * device tree is generated because it sets phandle_intc and free_phan= dle, + * which subsequent node generation depends on. + */ + if ( kinfo->dtb ) + { + ret =3D domain_handle_dtb_boot_module(d, kinfo); + if ( ret ) + goto err; + } + ret =3D make_chosen_node(kinfo); if ( ret ) goto err; @@ -516,18 +548,6 @@ static int __init prepare_dtb_domU(struct domain *d, s= truct kernel_info *kinfo) if ( ret ) goto err; =20 - /* - * domain_handle_dtb_boot_module has to be called before the rest of - * the device tree is generated because it depends on the value of - * the field phandle_intc. - */ - if ( kinfo->dtb ) - { - ret =3D domain_handle_dtb_boot_module(d, kinfo); - if ( ret ) - goto err; - } - ret =3D make_intc_domU_node(kinfo); if ( ret ) goto err; diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domai= n-build.h index 1d9e77df0eb3..220ae46ddbe1 100644 --- a/xen/include/xen/fdt-domain-build.h +++ b/xen/include/xen/fdt-domain-build.h @@ -63,6 +63,12 @@ int find_unallocated_memory(const struct kernel_info *ki= nfo, unsigned long e_gfn, void *data)); =20 +/* Return 0 (invalid phandle) if the Xen-reserved range has been reached */ +static inline uint32_t get_next_free_phandle(struct kernel_info *kinfo) +{ + return kinfo->free_phandle >=3D GUEST_PHANDLE_GIC ? 0 : kinfo->free_ph= andle++; +} + #endif /* __XEN_FDT_DOMAIN_BUILD_H__ */ =20 /* diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h index aa977a50f4fc..3527934b2a00 100644 --- a/xen/include/xen/fdt-kernel.h +++ b/xen/include/xen/fdt-kernel.h @@ -44,6 +44,9 @@ struct kernel_info { /* Interrupt controller phandle */ uint32_t phandle_intc; =20 + /* Next free phandle available for assigning to guest device nodes */ + uint32_t free_phandle; + /* loader to use for this kernel */ void (*load)(struct kernel_info *info); =20 --=20 2.53.0 From nobody Tue May 5 08:56:09 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1776349287; cv=none; d=zohomail.com; s=zohoarc; b=PPnhIBjZo1d+zMJHy09QI8lygP2y+QwRTHyxReQN+0JJr+yycNcR500jPpoxCzwcobso1o1wX2O9UCS8NrzYOW3mNSHODDNVHnfz7vxNI7lTdOsDjXQB1l+MhhVx31mJvxQdGn9pzrHVhORbvapUYaj8qhzq6h1O2cmvKvT4EgA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776349287; h=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=s8Y9SzzS4bvv10F/vEf37vbkhG/m9fzH1k9xycRPAmo=; b=i86lU35ThLkiZiXTdfX3odSy59N/2G/A4EjrlR78K7BGbVHKFQIgVkzvhpyeVU9msYoR3HxwZzv3UTjefLiBkiovi25YHrFdh9DRWE2gQ4P25bhdZzsU+JF3dTXU7H9AAJr0YnbAdM/va0YV64WrsF9wrSYF4hKteJQWBvwc98M= ARC-Authentication-Results: i=1; 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; 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 1776349287004164.3613405457172; Thu, 16 Apr 2026 07:21:27 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1283530.1565740 (Exim 4.92) (envelope-from ) id 1wDNak-0005Jw-RQ; Thu, 16 Apr 2026 14:21:14 +0000 Received: by outflank-mailman (output) from mailman id 1283530.1565740; Thu, 16 Apr 2026 14:21: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 1wDNak-0005Jl-Nv; Thu, 16 Apr 2026 14:21:14 +0000 Received: by outflank-mailman (input) for mailman id 1283530; Thu, 16 Apr 2026 14:21:13 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNaj-00052Y-4L for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:13 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wDNai-00EKYV-HA for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:12 +0200 Received: from [10.42.69.9] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69e0f052-2eae-0a2a0a5409dd-0a2a4509bd4e-30 for ; Thu, 16 Apr 2026 16:21:12 +0200 Received: from [209.85.128.44] (helo=mail-wm1-f44.google.com) by tlsNG-bad1c0.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 69e0f058-2497-0a2a45090019-d155802cb11a-3 for ; Thu, 16 Apr 2026 16:21:12 +0200 Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-4888375f735so80629695e9.3 for ; Thu, 16 Apr 2026 07:21:12 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2026 07:21:11 -0700 (PDT) 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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776349272; x=1776954072; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=s8Y9SzzS4bvv10F/vEf37vbkhG/m9fzH1k9xycRPAmo=; b=KsedUVEYmAPLDSnr7VQAL8KARAQobm6zXx+3qL/+1546osO1H1FnX/BUIUgXziBZ6n tpSmYL7FE3wa0Er7slIHzZ5TnPp132gAVm/Ko46CWEZdN/0bj+IWI8KurQ5GXWz/p5Lf UGmWMdNSWhIVS1HE7mRdjxCpnSAiLMPPx2Hk1ahuYJUf3EhWdbGXm7bde0ts0Z1jOnHR KDzh2DeGDw9B3iuyMv8VyVg/uPstdqgkIv4aQDbLgGCXqZMXUHoE50rWPk/k9pFKE9I4 iNJlG76OdV+bTjRsr9YuoV+lEKoN+uxDQLPHK6PQbCrC5hyew5hYPkmQd6kzb6dYrGe4 nXwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776349272; x=1776954072; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=s8Y9SzzS4bvv10F/vEf37vbkhG/m9fzH1k9xycRPAmo=; b=BTItFXrr7mEbAjI6ZteRH0vwJdt3R+FP1B2rab1zhtbxoxCfri2Vu7UWxAlSsOfvSa CmZwDXuvOwu6L2Dw1gifqnJomfbl44iIOD4K1ybZbFFtOThwzrQ/b03EVrrpTsw0pNk2 x+somUiAg2Cj3n5ZObbx1Qp8fyDzJqMPI7lLpeqX2YGdWS1/T0Xlgt/+f2K7YqR1VjPK A5xTp1eT5G79qztU02FpmYzZCqtNtOrUsMHX9EZPuY2ayjwrLwxO7iJ2+g0fBuky/Q/8 93YLPf9f7KRxBGia+cpTdwuIm7wxQMV1H/pVbTAnrIctUq1bIUzSvvr7ZeZd0m7NY9UH FPrA== X-Gm-Message-State: AOJu0YxJtGlx9k0ClEfufeG+Hw4CwLEjRYeV6xL3UD9rIusJwOvCHOkl NKMgmzwJZmAWR3AzLu+GDKLGbkFPM6aIU4M4Ooe8ddeIA3piASrvzr1N7SDzIw== X-Gm-Gg: AeBDiethoCL2ynJxyvFNcQOn5FwFRHcgmjX24BjdaqsJG3MIGZYfcflHKgb5bl43gAq /+pikjh8EofX0I3FWUwVyzfpyZoj16qTRABVC/R1JIk1dy8zYJ5465w/DZv7GtLgyjJSarBKcms 3GoMLsoaV57+ZHvLFC/6CCW/pHdZruOtjeprLORrVSExiQTm9nqE9uCsmc72GM7YC/tdCTkpS1z eyErNkc3nsUZIdsobl2p4EkUmOxCsgBi2U9Lv2Nmd3Uuy0ODuko2kru1grfWUkRKiecTr9TowGK sAB/pCkNzKKJRgNf1AG79C+WvWqojk81p4hf9GV57TFB0J3zGgRIbPhB+rmE6DzKj8YEkCRVUei JJtJRFUnkK9AnXiOvoWjyeWLHI+q6lc3iYsuJwtIsxj/n+JaaHcwLDwAyBYNGeyBfHJWSNhA/lP XgjnOeP3hLG1Agm14dBThMK6IEwSdAGS3iACFC/XZr1bk98ekmZCOcIzkWqImaSdjU25x0g2gtW RaQ X-Received: by 2002:a05:600c:c10d:b0:488:ae4e:51a5 with SMTP id 5b1f17b1804b1-488d683d633mr253284465e9.15.1776349271643; Thu, 16 Apr 2026 07:21:11 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Oleksii Kurochko , 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 v1 2/3] xen/dom0less: pass kernel_info struct instead of fdt to make_cpus_node() Date: Thu, 16 Apr 2026 16:20:59 +0200 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-bad1c0/1776349272-92573A53-93FA7BC1/10/73395122804 X-purgate-type: spam X-purgate-size: 2867 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1776349288754154100 Content-Type: text/plain; charset="utf-8" There are two reasons of this change: 1. Align prototype with what other make_*_node() are passed. 2. A follow-up RISC-V patch will call get_next_free_phandle() inside make_cpus_node(), requiring mutable access to kinfo->free_phandle. Signed-off-by: Oleksii Kurochko --- xen/arch/arm/domain_build.c | 5 +++-- xen/common/device-tree/dom0less-build.c | 2 +- xen/include/xen/fdt-domain-build.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 60a7cbf915a5..6740da3d324b 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1164,7 +1164,7 @@ int __init make_psci_node(void *fdt) return res; } =20 -int __init make_cpus_node(const struct domain *d, void *fdt) +int __init make_cpus_node(const struct domain *d, struct kernel_info *kinf= o) { int res; const struct dt_device_node *cpus =3D dt_find_node_by_path("/cpus"); @@ -1178,6 +1178,7 @@ int __init make_cpus_node(const struct domain *d, voi= d *fdt) /* Keep the compiler happy with -Og */ bool clock_valid =3D false; uint64_t mpidr_aff; + void *fdt =3D kinfo; =20 dt_dprintk("Create cpus node\n"); =20 @@ -1626,7 +1627,7 @@ static int __init handle_node(struct domain *d, struc= t kernel_info *kinfo, if ( res ) return res; =20 - res =3D make_cpus_node(d, kinfo->fdt); + res =3D make_cpus_node(d, kinfo); if ( res ) return res; =20 diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr= ee/dom0less-build.c index 9205f01f0a49..64b12d6aec62 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -535,7 +535,7 @@ static int __init prepare_dtb_domU(struct domain *d, st= ruct kernel_info *kinfo) if ( ret ) goto err; =20 - ret =3D make_cpus_node(d, kinfo->fdt); + ret =3D make_cpus_node(d, kinfo); if ( ret ) goto err; =20 diff --git a/xen/include/xen/fdt-domain-build.h b/xen/include/xen/fdt-domai= n-build.h index 220ae46ddbe1..2349baba3427 100644 --- a/xen/include/xen/fdt-domain-build.h +++ b/xen/include/xen/fdt-domain-build.h @@ -25,7 +25,7 @@ int construct_domain(struct domain *d, struct kernel_info= *kinfo); int construct_hwdom(struct kernel_info *kinfo, const struct dt_device_node *node); int make_chosen_node(const struct kernel_info *kinfo); -int make_cpus_node(const struct domain *d, void *fdt); +int make_cpus_node(const struct domain *d, struct kernel_info *kinfo); int make_hypervisor_node(struct domain *d, const struct kernel_info *kinfo, int addrcells, int sizecells); int make_memory_node(const struct kernel_info *kinfo, int addrcells, --=20 2.53.0 From nobody Tue May 5 08:56:09 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; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1776349299; cv=none; d=zohomail.com; s=zohoarc; b=VCYVkLocfVFOW4H+IzdvdsxWCP81xWxuo1NmRdNd62Gv3Re6EQqjaFovsMcOx8eMc/3bxyhgfw/q76xTZ3Bfe4Bp2QNogd6+5zSKpKm8pctJlYFuIN2I4bdHEGh6FXzx/QL5WDppGgpcpt6T3Z+feIE4Z+z09mlCu5QfqJUFPMs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776349299; h=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=OlLqvIvTkFRs8hkQkfaNXDqEZXGwCjef7xkJAk72j/M=; b=TzLRO1pRdHOGDg/3LO+s4SjTIHknjQO6qjsCqbjQGiK8s8JyUDj9aDSiOS5iJhUzhpESWUU5Bob0BRegU3cWXGCFIxuln8CqBcLZ0gVqB2aG5LKKfSOiZgW/Vq/htt6F3147bM3ztL4rNDn81r7FnbZ7vNv5UrPgOK/OptQKQ3k= ARC-Authentication-Results: i=1; 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; 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 1776349299608402.7861111559462; Thu, 16 Apr 2026 07:21:39 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.1283531.1565749 (Exim 4.92) (envelope-from ) id 1wDNam-0005YJ-28; Thu, 16 Apr 2026 14:21:16 +0000 Received: by outflank-mailman (output) from mailman id 1283531.1565749; Thu, 16 Apr 2026 14:21:16 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1wDNal-0005Y8-Um; Thu, 16 Apr 2026 14:21:15 +0000 Received: by outflank-mailman (input) for mailman id 1283531; Thu, 16 Apr 2026 14:21:14 +0000 Received: from mx.expurgate.net ([195.190.135.10]) by lists.xenproject.org with esmtp (Exim 4.92) id 1wDNak-0005Iy-K6 for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 14:21:14 +0000 Received: from mx.expurgate.net (helo=localhost) by mx.expurgate.net with esmtp id 1wDNak-00GoVN-0I for xen-devel@lists.xenproject.org; Thu, 16 Apr 2026 16:21:14 +0200 Received: from [10.42.69.11] (helo=localhost) by localhost with ESMTP (eXpurgate MTA 0.9.1) (envelope-from ) id 69e0f053-bab6-0a2a0a5309dd-0a2a450b9f54-24 for ; Thu, 16 Apr 2026 16:21:13 +0200 Received: from [209.85.128.54] (helo=mail-wm1-f54.google.com) by tlsNG-42698a.mxtls.expurgate.net with ESMTPS (eXpurgate 4.56.1) (envelope-from ) id 69e0f059-212f-0a2a450b0019-d1558036e46a-3 for ; Thu, 16 Apr 2026 16:21:13 +0200 Received: by mail-wm1-f54.google.com with SMTP id 5b1f17b1804b1-488ad135063so77998165e9.0 for ; Thu, 16 Apr 2026 07:21:13 -0700 (PDT) Received: from fedora (user-109-243-69-121.play-internet.pl. [109.243.69.121]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488f096d110sm59803515e9.11.2026.04.16.07.21.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 16 Apr 2026 07:21:12 -0700 (PDT) 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=20251104 header.d=gmail.com header.i="@gmail.com" header.h="Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1776349273; x=1776954073; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=OlLqvIvTkFRs8hkQkfaNXDqEZXGwCjef7xkJAk72j/M=; b=oETgS9gbScgugEcQwyFfwNnN5WAfaaEyIsu8B+SdEfdI9cuKmqU5P9onAs7alfgQ13 MPPAdjlZB4JKHct64LQcFkCZjGs00n+HsIHx0gZAdlxLltweVY174lAJB/nbktH0b2H+ 3MPLjMY6FOWv///ky3M+2R5qEN+d860rg+HCBL6yj43Y19kHsO5OgKnaO+n69f+PS2TF 6GHOdFEpihK63T+jwKSeL+CAMo4hQOQGGtZV2Nx1v5TNRwptMU+9nvWLG/JpllKu4VFS AxQbvUARaA73grIagj//7vyBErupjbNSkVkxibbAb4+S3m1n+Yz3LvCVLVhqaQn7LLMa tUcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776349273; x=1776954073; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=OlLqvIvTkFRs8hkQkfaNXDqEZXGwCjef7xkJAk72j/M=; b=HZlsEoJjoQagRmbVNuiM6VZzAb4C1q+MvkOacgZz0z9qDq/3xN9g062Wp9Eys9ko4t mpOZl/M+6k2tqbsU+lL7EFdAig20ocD7X6+ZqOnXCZfiIs+smKeeB2XjjXKKwsd4xYlS BjZ6kmM8dD8ZXtK4TY1RAM2T0Kxg2vF3P7gg5kK7zCk5QF7j9cLuGz5iLI809ZHq8CxD +MwY6Q6O9qvloNhKqryjF19j1hfr3JISHzJoGEXZIvEd+MS1YNmNyATUyXAM3jYxbCuA BEeJXpoeXmaNjXIQw7BUKXOoTaMLuSIBfWpeSiukReSJnBZnZpuesJW/UngaXW2rd+GB nDSw== X-Gm-Message-State: AOJu0Yya36pDGKnJ1fMoZPVfyOpx65SumsN8gZ+0xDYnyytrmF+vAIJB yiBCKBBkBx/t6xcIfcnSua7CXO28VXe9QxuufXRHOPT1l1YBwNYqXPuJb9RHVA== X-Gm-Gg: AeBDiesU98CBWRI0bJ7JkcxZdgWKcOqzM+yQDHehCqmmQX43e18g8/TzxeLv/weo5/I HyplA1oK14Ck3vvLh30LYQSIDTnudI2JZlb3UcIZpRhrCVM99vlwSN7JQbkJoq2pM3ouqcw5xp6 dvhTH3zjfP5IlcJHOs37eXb8PSiYLBRzyBMp4gFElr+plkgKsn9p2jRbeHu1zE504oGT+P8Lmak 3al0Oecy/BiAW0WZpAV19bn3Y5tRbqJaeh76kI6wDj3raXw3o3kKJf18OqFdKKz/KNWrjjs+eoQ KxPh9ogG+PGdQUNT/6gNH4bg3m6FdKOPm8XM2TKF5CjkIHtDZp9dTsXe63KzLEDhog47GYGyWOl DnBQpyptVxxycJFGLaR4S5gYU9qAfFS/vJwZn5MsX0HwqcFcp0peuIMv5avlhGU7GWIFJmbfHKH 3kHuAjpywB+yjcFnUiODq51UQyr3RLr5TsDNX7HvhAQ3CK9UIL7gkNkCrdn0FQnCAmSKbm/+BL7 Lqz X-Received: by 2002:a05:600c:3f0a:b0:488:afb5:6a21 with SMTP id 5b1f17b1804b1-488d68764b0mr362614505e9.15.1776349272848; Thu, 16 Apr 2026 07:21:12 -0700 (PDT) From: Oleksii Kurochko To: xen-devel@lists.xenproject.org Cc: Oleksii Kurochko , Andrew Cooper , Anthony PERARD , Michal Orzel , Jan Beulich , Julien Grall , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= , Stefano Stabellini , Bertrand Marquis , Volodymyr Babchuk Subject: [PATCH v1 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE Date: Thu, 16 Apr 2026 16:21:00 +0200 Message-ID: X-Mailer: git-send-email 2.53.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-purgate-ID: tlsNG-42698a/1776349273-06573F3B-97F78B3A/10/73395122804 X-purgate-type: spam X-purgate-size: 10470 X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1776349301093154100 Content-Type: text/plain; charset="utf-8" As domain type is part of common code now there is no any reason to have architecture-specific set_domain_type() functions so it is dropped. The CONFIG_ARM_64 guard in xen/arch/arm/domain_build.c is intentionally left unchanged: it is ARM-specific code, and ARM_64 selects HAS_DOMAIN_TYPE, so the semantics are identical. x86 with CONFIG_64BIT=3Dy shouldn't use is_{32,64}bit_domain() as x86 doesn't have support of CONFIG_HAS_DOMAIN_TYPE. For x86_32 it is fine to follow generic is_{32,64}_bit_domain() implementations. Generally it probably would be better to introduce CONFIG_32BIT and use it to define is_{32,64}bit_domain() as if one day CONFIG_128BIT will be introduced is_{32,64}bit_domain() will be defined incorrectly but considering that CONFIG_64BIT is maximum supported bitness it is fine to define in this way. Signed-off-by: Oleksii Kurochko Reviewed-by: Michal Orzel --- xen/arch/Kconfig | 3 +++ xen/arch/arm/Kconfig | 1 + xen/arch/arm/arm64/domctl.c | 4 ++-- xen/arch/arm/dom0less-build.c | 14 -------------- xen/arch/arm/domain_build.c | 8 ++++---- xen/arch/arm/include/asm/domain.h | 12 ------------ xen/arch/arm/include/asm/kernel.h | 4 ---- xen/arch/arm/kernel.c | 10 +++++----- xen/common/device-tree/dom0less-build.c | 5 ++++- xen/include/xen/dom0less-build.h | 2 -- xen/include/xen/domain.h | 13 +++++++++++++ xen/include/xen/fdt-kernel.h | 5 +++++ xen/include/xen/sched.h | 4 ++++ 13 files changed, 41 insertions(+), 44 deletions(-) diff --git a/xen/arch/Kconfig b/xen/arch/Kconfig index f9230bfaf872..6c53149f7ee1 100644 --- a/xen/arch/Kconfig +++ b/xen/arch/Kconfig @@ -1,6 +1,9 @@ config 64BIT bool =20 +config HAS_DOMAIN_TYPE + bool + config PHYS_ADDR_T_32 bool =20 diff --git a/xen/arch/arm/Kconfig b/xen/arch/arm/Kconfig index 2f2b501fdac4..79622b46a10d 100644 --- a/xen/arch/arm/Kconfig +++ b/xen/arch/arm/Kconfig @@ -7,6 +7,7 @@ config ARM_64 def_bool y depends on !ARM_32 select 64BIT + select HAS_DOMAIN_TYPE select HAS_FAST_MULTIPLY select HAS_VPCI_GUEST_SUPPORT if PCI_PASSTHROUGH =20 diff --git a/xen/arch/arm/arm64/domctl.c b/xen/arch/arm/arm64/domctl.c index 8720d126c97d..9e9a29eb1e78 100644 --- a/xen/arch/arm/arm64/domctl.c +++ b/xen/arch/arm/arm64/domctl.c @@ -21,10 +21,10 @@ static long switch_mode(struct domain *d, enum domain_t= ype type) return -EINVAL; if ( domain_tot_pages(d) !=3D 0 ) return -EBUSY; - if ( d->arch.type =3D=3D type ) + if ( d->type =3D=3D type ) return 0; =20 - d->arch.type =3D type; + d->type =3D type; =20 if ( is_64bit_domain(d) ) for_each_vcpu(d, v) diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c index 4181c105389a..6f73c65e5151 100644 --- a/xen/arch/arm/dom0less-build.c +++ b/xen/arch/arm/dom0less-build.c @@ -237,20 +237,6 @@ int __init make_arch_nodes(struct kernel_info *kinfo) return 0; } =20 -/* TODO: make arch.type generic ? */ -#ifdef CONFIG_ARM_64 -void __init set_domain_type(struct domain *d, struct kernel_info *kinfo) -{ - /* type must be set before allocate memory */ - d->arch.type =3D kinfo->arch.type; -} -#else -void __init set_domain_type(struct domain *d, struct kernel_info *kinfo) -{ - /* Nothing to do */ -} -#endif - int __init init_vuart(struct domain *d, struct kernel_info *kinfo, const struct dt_device_node *node) { diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c index 6740da3d324b..2fd89b3a1345 100644 --- a/xen/arch/arm/domain_build.c +++ b/xen/arch/arm/domain_build.c @@ -1178,7 +1178,7 @@ int __init make_cpus_node(const struct domain *d, str= uct kernel_info *kinfo) /* Keep the compiler happy with -Og */ bool clock_valid =3D false; uint64_t mpidr_aff; - void *fdt =3D kinfo; + void *fdt =3D kinfo->fdt; =20 dt_dprintk("Create cpus node\n"); =20 @@ -1774,13 +1774,13 @@ int __init construct_domain(struct domain *d, struc= t kernel_info *kinfo) =20 #ifdef CONFIG_ARM_64 /* if aarch32 mode is not supported at EL1 do not allow 32-bit domain = */ - if ( !(cpu_has_el1_32) && kinfo->arch.type =3D=3D DOMAIN_32BIT ) + if ( !(cpu_has_el1_32) && kinfo->type =3D=3D DOMAIN_32BIT ) { printk("Platform does not support 32-bit domain\n"); return -EINVAL; } =20 - if ( is_sve_domain(d) && (kinfo->arch.type =3D=3D DOMAIN_32BIT) ) + if ( is_sve_domain(d) && (kinfo->type =3D=3D DOMAIN_32BIT) ) { printk("SVE is not available for 32-bit domain\n"); return -EINVAL; @@ -1896,7 +1896,7 @@ int __init construct_hwdom(struct kernel_info *kinfo, =20 #ifdef CONFIG_ARM_64 /* type must be set before allocate_memory */ - d->arch.type =3D kinfo->arch.type; + d->type =3D kinfo->type; #endif find_gnttab_region(d, kinfo); if ( is_domain_direct_mapped(d) ) diff --git a/xen/arch/arm/include/asm/domain.h b/xen/arch/arm/include/asm/d= omain.h index f95ad1285e6e..2d4c1bdecb66 100644 --- a/xen/arch/arm/include/asm/domain.h +++ b/xen/arch/arm/include/asm/domain.h @@ -18,18 +18,6 @@ struct hvm_domain uint64_t params[HVM_NR_PARAMS]; }; =20 -#ifdef CONFIG_ARM_64 -enum domain_type { - DOMAIN_32BIT, - DOMAIN_64BIT, -}; -#define is_32bit_domain(d) ((d)->arch.type =3D=3D DOMAIN_32BIT) -#define is_64bit_domain(d) ((d)->arch.type =3D=3D DOMAIN_64BIT) -#else -#define is_32bit_domain(d) (1) -#define is_64bit_domain(d) (0) -#endif - struct vtimer { struct vcpu *v; int irq; diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/k= ernel.h index 7c3b7fde5b64..21f4273fa1b5 100644 --- a/xen/arch/arm/include/asm/kernel.h +++ b/xen/arch/arm/include/asm/kernel.h @@ -10,10 +10,6 @@ =20 struct arch_kernel_info { -#ifdef CONFIG_ARM_64 - enum domain_type type; -#endif - /* Enable pl011 emulation */ bool vpl011; }; diff --git a/xen/arch/arm/kernel.c b/xen/arch/arm/kernel.c index 3c613cdb233f..bc9aad3f5f45 100644 --- a/xen/arch/arm/kernel.c +++ b/xen/arch/arm/kernel.c @@ -101,7 +101,7 @@ static paddr_t __init kernel_zimage_place(struct kernel= _info *info) paddr_t load_addr; =20 #ifdef CONFIG_ARM_64 - if ( (info->arch.type =3D=3D DOMAIN_64BIT) && (info->image.start =3D= =3D 0) ) + if ( (info->type =3D=3D DOMAIN_64BIT) && (info->image.start =3D=3D 0) ) return mem->bank[0].start + info->image.text_offset; #endif =20 @@ -272,10 +272,10 @@ int __init kernel_uimage_probe(struct kernel_info *in= fo, switch ( uimage.arch ) { case IH_ARCH_ARM: - info->arch.type =3D DOMAIN_32BIT; + info->type =3D DOMAIN_32BIT; break; case IH_ARCH_ARM64: - info->arch.type =3D DOMAIN_64BIT; + info->type =3D DOMAIN_64BIT; break; default: printk(XENLOG_ERR "Unsupported uImage arch type %d\n", uimage.arch= ); @@ -345,7 +345,7 @@ static int __init kernel_zimage64_probe(struct kernel_i= nfo *info, =20 info->load =3D kernel_zimage_load; =20 - info->arch.type =3D DOMAIN_64BIT; + info->type =3D DOMAIN_64BIT; =20 return 0; } @@ -397,7 +397,7 @@ static int __init kernel_zimage32_probe(struct kernel_i= nfo *info, info->load =3D kernel_zimage_load; =20 #ifdef CONFIG_ARM_64 - info->arch.type =3D DOMAIN_32BIT; + info->type =3D DOMAIN_32BIT; #endif =20 return 0; diff --git a/xen/common/device-tree/dom0less-build.c b/xen/common/device-tr= ee/dom0less-build.c index 64b12d6aec62..418282a6a549 100644 --- a/xen/common/device-tree/dom0less-build.c +++ b/xen/common/device-tree/dom0less-build.c @@ -809,7 +809,10 @@ static int __init construct_domU(struct kernel_info *k= info, if ( rc < 0 ) return rc; =20 - set_domain_type(d, kinfo); +#ifdef CONFIG_HAS_DOMAIN_TYPE + /* type must be set before allocate memory */ + d->type =3D kinfo->type; +#endif =20 if ( is_hardware_domain(d) ) { diff --git a/xen/include/xen/dom0less-build.h b/xen/include/xen/dom0less-bu= ild.h index faaf660424b2..4118dec76c0a 100644 --- a/xen/include/xen/dom0less-build.h +++ b/xen/include/xen/dom0less-build.h @@ -57,8 +57,6 @@ int init_vuart(struct domain *d, struct kernel_info *kinf= o, int make_intc_domU_node(struct kernel_info *kinfo); int make_arch_nodes(struct kernel_info *kinfo); =20 -void set_domain_type(struct domain *d, struct kernel_info *kinfo); - int init_intc_phandle(struct kernel_info *kinfo, const char *name, const int node_next, const void *pfdt); =20 diff --git a/xen/include/xen/domain.h b/xen/include/xen/domain.h index 93c0fd00c1d7..5951e7e6928f 100644 --- a/xen/include/xen/domain.h +++ b/xen/include/xen/domain.h @@ -13,6 +13,19 @@ struct guest_area { void *map; }; =20 +#ifdef CONFIG_HAS_DOMAIN_TYPE +enum domain_type { + DOMAIN_32BIT, + DOMAIN_64BIT, +}; +#define is_32bit_domain(d) ((d)->type =3D=3D DOMAIN_32BIT) +#define is_64bit_domain(d) ((d)->type =3D=3D DOMAIN_64BIT) +#elif !defined(CONFIG_64BIT) +/* On 32-bit-only platforms all domains are 32-bit. */ +#define is_32bit_domain(d) (true) +#define is_64bit_domain(d) (false) +#endif + #include =20 typedef union { diff --git a/xen/include/xen/fdt-kernel.h b/xen/include/xen/fdt-kernel.h index 3527934b2a00..2c9bf4d4ef4f 100644 --- a/xen/include/xen/fdt-kernel.h +++ b/xen/include/xen/fdt-kernel.h @@ -9,6 +9,7 @@ =20 #include #include +#include #include =20 #if __has_include() @@ -69,6 +70,10 @@ struct kernel_info { } image; }; =20 +#ifdef CONFIG_HAS_DOMAIN_TYPE + enum domain_type type; +#endif + #if __has_include() struct arch_kernel_info arch; #endif diff --git a/xen/include/xen/sched.h b/xen/include/xen/sched.h index 212c7d765c3e..4314bd195457 100644 --- a/xen/include/xen/sched.h +++ b/xen/include/xen/sched.h @@ -668,6 +668,10 @@ struct domain struct page_info *pending_scrub; unsigned int pending_scrub_order; unsigned int pending_scrub_index; + +#ifdef CONFIG_HAS_DOMAIN_TYPE + enum domain_type type; +#endif } __aligned(PAGE_SIZE); =20 static inline struct page_list_head *page_to_list( --=20 2.53.0