From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: xen-devel@lists.xenproject.org
Cc: "Romain Caritey" <Romain.Caritey@microchip.com>,
"Oleksii Kurochko" <oleksii.kurochko@gmail.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
"Julien Grall" <julien@xen.org>,
"Bertrand Marquis" <bertrand.marquis@arm.com>,
"Michal Orzel" <michal.orzel@amd.com>,
"Andrew Cooper" <andrew.cooper3@citrix.com>,
"Anthony PERARD" <anthony.perard@vates.tech>,
"Jan Beulich" <jbeulich@suse.com>,
"Roger Pau Monné" <roger.pau@citrix.com>,
"Volodymyr Babchuk" <Volodymyr_Babchuk@epam.com>
Subject: [PATCH v3 0/3] dom0less: various updates
Date: Fri, 24 Apr 2026 15:36:48 +0200 [thread overview]
Message-ID: <cover.1776957840.git.oleksii.kurochko@gmail.com> (raw)
This patch series introduces a new field to track not-yet-used phandles as there
are some use cases where RISC-V needs to know which phandle number could
be used for generating a device tree node.
For example, on the RISC-V side in make_cpus_node() [1] it is necessary to know
which phandle number is unused to use it for device tree node generation.
Here is an example of generated guest DTB:
cpus {
...
cpu@0 {
...
interrupt-controller {
compatible = "riscv,cpu-intc";
#interrupt-cells = <0x1>;
interrupt-controller;
phandle = <0xfdea>;
};
};
};
/soc/imsics@28000000 {
interrupts-extended = <0xfdea 0x9 >;
phandle = <0xfdeb>;
};
/soc/aplic@d000000 {
...
msi-parent = <0xfdeb>;
phandle = <0x1>;
};
Note that phandles for imsic and riscv,cpu-intc are generated in this example
not by get_next_free_phandle(), that is why they have such big numbers.
For non-RISC-V people, APLIC is an interrupt controller (something like GIC in
Arm), IMSIC is an interrupt controller that provides MSI and connects to
each CPU.
So (based on the DTS above) for APLIC, kinfo->phandle_intc is reused, which
will also be re-used for the device node's interrupt property. For all others, I
just introduced GUEST_PHANDLE_LAST [2] and used it for generation [3]. But I expect
that it could be useful for other architectures too so I just moved it to common
and re-use pfdt to understand what the maximum used phandle is.
[1] https://www.kernel.org/doc/Documentation/devicetree/bindings/interrupt-controller/riscv%2Ccpu-intc.txt
[2] https://lore.kernel.org/xen-devel/ccd6d21b224b478c88ca5f2fdd2d1dd507671510.1773157782.git.oleksii.kurochko@gmail.com/
[3] https://lore.kernel.org/xen-devel/fd64b8526a23e9d7775b9b48c5a933b0673c4fba.1773157782.git.oleksii.kurochko@gmail.com/
*************************************
Another thing introduced in this patch series is moving domain type to common
code as several architectures (ARM and RISC-V for now) use them and it
looks pretty architecture-independent. Also, is_64bit_domain() is used by
dom0less common code, so I found it useful also to move is_{32,64}bit_domain
macros to common code.
*************************************
And the last thing is changing the prototype of make_cpus_node() to be aligned
with other make_*_node() and since RISC-V will need access to the free_phandle field
(even if it will be moved to kinfo->arch.free_phandle) and for the reason that
this ->free_phandle is updated in make_*_node(), the kinfo argument is passed as
non-const.
CI: https://gitlab.com/xen-project/people/olkur/xen/-/pipelines/2471778654
---
Changes in v3:
- Rebase on top of staging.
- Address the comments.
---
Changes in v2:
- Address the comments from ML.
---
Oleksii Kurochko (3):
xen/dom0less: introduce next_phandle in struct kernel_info
xen/dom0less: pass kernel_info struct instead of fdt to
make_cpus_node()
xen: introduce CONFIG_HAS_DOMAIN_TYPE
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 | 17 +++++-----
xen/arch/arm/include/asm/domain.h | 12 -------
xen/arch/arm/include/asm/kernel.h | 4 ---
xen/arch/arm/kernel.c | 16 ++++-----
xen/common/Kconfig | 3 ++
xen/common/device-tree/dom0less-build.c | 45 ++++++++++++++++++-------
xen/include/xen/dom0less-build.h | 2 --
xen/include/xen/domain.h | 13 +++++++
xen/include/xen/fdt-domain-build.h | 17 +++++++++-
xen/include/xen/fdt-kernel.h | 11 ++++++
xen/include/xen/sched.h | 4 +++
14 files changed, 98 insertions(+), 65 deletions(-)
--
2.53.0
next reply other threads:[~2026-04-24 13:37 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-24 13:36 Oleksii Kurochko [this message]
2026-04-24 13:36 ` [PATCH v3 1/3] xen/dom0less: introduce next_phandle in struct kernel_info Oleksii Kurochko
2026-04-27 6:50 ` Orzel, Michal
2026-04-24 13:36 ` [PATCH v3 2/3] xen/dom0less: pass kernel_info struct instead of fdt to make_cpus_node() Oleksii Kurochko
2026-04-24 13:36 ` [PATCH v3 3/3] xen: introduce CONFIG_HAS_DOMAIN_TYPE Oleksii Kurochko
2026-04-27 9:21 ` Orzel, Michal
2026-04-27 13:29 ` Oleksii Kurochko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1776957840.git.oleksii.kurochko@gmail.com \
--to=oleksii.kurochko@gmail.com \
--cc=Romain.Caritey@microchip.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@vates.tech \
--cc=bertrand.marquis@arm.com \
--cc=jbeulich@suse.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=roger.pau@citrix.com \
--cc=sstabellini@kernel.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.