From: Jan Beulich <jbeulich@suse.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>
Cc: "Romain Caritey" <Romain.Caritey@microchip.com>,
"Baptiste Le Duc" <baptiste.le-duc@vates.tech>,
"Alistair Francis" <alistair.francis@wdc.com>,
"Connor Davis" <connojdavis@gmail.com>,
"Andrew Cooper" <andrew.cooper3@citrix.com>,
"Anthony PERARD" <anthony.perard@vates.tech>,
"Michal Orzel" <michal.orzel@amd.com>,
"Julien Grall" <julien@xen.org>,
"Roger Pau Monné" <roger.pau@citrix.com>,
"Stefano Stabellini" <sstabellini@kernel.org>,
xen-devel@lists.xenproject.org
Subject: Re: [PATCH v4 19/25] xen/riscv: generate IMSIC DT node for guest domains
Date: Wed, 1 Jul 2026 13:55:33 +0200 [thread overview]
Message-ID: <3c672ea8-3dc9-468d-9ca4-d6ceaf6c8cb3@suse.com> (raw)
In-Reply-To: <018771c4-043d-4b29-ac40-284ee8692334@gmail.com>
On 01.07.2026 13:21, Oleksii Kurochko wrote:
> On 6/29/26 5:19 PM, Jan Beulich wrote:
>> On 26.06.2026 17:46, Oleksii Kurochko wrote:
>>> --- a/xen/arch/riscv/imsic.c
>>> +++ b/xen/arch/riscv/imsic.c
>>> @@ -13,8 +13,12 @@
>>> #include <xen/const.h>
>>> #include <xen/cpumask.h>
>>> #include <xen/device_tree.h>
>>> +#include <xen/domain.h>
>>> #include <xen/errno.h>
>>> +#include <xen/fdt-domain-build.h>
>>> +#include <xen/fdt-kernel.h>
>>> #include <xen/init.h>
>>> +#include <xen/libfdt/libfdt.h>
>>> #include <xen/macros.h>
>>> #include <xen/sched.h>
>>> #include <xen/smp.h>
>>> @@ -34,6 +38,16 @@ static struct imsic_config imsic_cfg = {
>>> .lock = SPIN_LOCK_UNLOCKED,
>>> };
>>>
>>> +/*
>>> + * Number of MSIs available to a guest. Determined by the host interrupt
>>> + * controller, so it is identical for every domain -- hence a single global
>>> + * rather than a per-domain value.
>>> + */
>>> +static unsigned int __read_mostly guest_num_msis;
>>> +
>>> +#define GUEST_IMSIC_COMPATIBLE "riscv,imsics"
>>> +#define GUEST_IMSIC_NUM_MSIS 255
>>
>> Considering its use this isn't named correctly - it's not the number of MSIs
>> guests get to use.
>
> I will rename to GUEST_IMSIC_NUM_IDS then it will be fully aligned with
> dts property name.
>
> Then it makes sense to rename guest_num_msis to guest_num_ids.
That's not going to help address my remark. I specifically referred to ...
>>> +int __init vimsic_make_domu_dt_node(struct kernel_info *kinfo,
>>> + unsigned int *phandle)
>>> +{
>>> + int res;
>>> + void *fdt = kinfo->fdt;
>>> + char vimsic_name[32];
>>> + unsigned int vimsic_phandle;
>>> + unsigned int num_msis = min(GUEST_IMSIC_NUM_MSIS + 0U, guest_num_msis);
>>
>> As guest_num_msis (supposedly) doesn't change anymore after it was set, why
>> would this need calculating again for each call here? Can't you apply the
>> upper bound right in imsic_parse_node()?
>
> Agree, I will add the following to imsic_parse_node() after
> guest_num_msis is init-ed:
>
> guest_num_msis = min(GUEST_IMSIC_NUM_MSIS + 0U, guest_num_msis);
... the sole use of the constant (here). The number of MSIs (or IDs or
whatever else) isn't GUEST_IMSIC_NUM_MSIS; that's merely an upper bound
(which in turn is there for an unknown to me reason).
>>> --- a/xen/arch/riscv/include/asm/guest-layout.h
>>> +++ b/xen/arch/riscv/include/asm/guest-layout.h
>>> @@ -3,6 +3,12 @@
>>>
>>> #include <public/xen.h>
>>>
>>> +/*
>>> + * Base address of the guest's supervisor-mode IMSIC. The value is the address
>>> + * typically used for IMSIC by QEMU.
>>> + */
>>> +#define GUEST_IMSIC_S_BASE _UL(0x28000000)
>>
>> As you mention it explicitly: Is there also a user-mode IMSIC?
>
> I am not aware of such.
>
> I mention it explicitly as machine mode IMSIC exists and it is a
> separate DT node for that.
Ah, okay. Then maybe keep the comment as is. It's not quite clear to me
whether, from an abstract perspective, "machine mode" could make sense
for guests. If it can't, "supervisor-mode" would be redundant with
"guest's".
Jan
next prev parent reply other threads:[~2026-07-01 11:56 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-26 15:46 [PATCH v4 00/25] Introduce enablemenant of dom0less Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 01/25] xen/dom0less: turn max_init_domid into a common variable Oleksii Kurochko
2026-06-29 14:34 ` Jan Beulich
2026-06-26 15:46 ` [PATCH v4 02/25] xen: arm: move declaration of map_device_irqs_to_domain() to common header Oleksii Kurochko
2026-06-29 7:10 ` Orzel, Michal
2026-06-26 15:46 ` [PATCH v4 03/25] xen: arm: update p2m_set_allocation() prototype Oleksii Kurochko
2026-06-29 7:14 ` Orzel, Michal
2026-06-26 15:46 ` [PATCH v4 04/25] xen/Kconfig: introduce HAS_STATIC_MEMORY Oleksii Kurochko
2026-06-29 7:05 ` Jan Beulich
2026-06-29 7:24 ` Orzel, Michal
2026-06-26 15:46 ` [PATCH v4 05/25] xen/riscv: Implement ARCH_PAGING_MEMPOOL Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 06/25] xen/riscv: Implement construct_domain() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 07/25] xen/riscv: implement prerequisites for domain_create() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 08/25] xen/riscv: introduce guest riscv,isa string Oleksii Kurochko
2026-06-29 14:46 ` Jan Beulich
2026-06-30 16:06 ` Oleksii Kurochko
2026-07-01 6:22 ` Jan Beulich
2026-07-01 7:44 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 09/25] xen/riscv: implement make_cpus_node() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 10/25] xen/riscv: implement make_timer_node() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 11/25] xen/riscv: implement make_arch_nodes() Oleksii Kurochko
2026-06-29 7:07 ` Jan Beulich
2026-06-26 15:46 ` [PATCH v4 12/25] xen/riscv: introduce init interrupt controller operations Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 13/25] xen/riscv: implement make_intc_domU_node() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 14/25] xen/riscv: introduce aia_init() and aia_usable() Oleksii Kurochko
2026-06-29 9:54 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 15/25] xen/riscv: introduce per-vCPU IMSIC state Oleksii Kurochko
2026-06-29 14:54 ` Jan Beulich
2026-06-26 15:46 ` [PATCH v4 16/25] xen/riscv: introduce minimal virtual APLIC (vAPLIC) infrastructure Oleksii Kurochko
2026-06-29 15:02 ` Jan Beulich
2026-07-01 10:24 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 17/25] xen/riscv: rename enum intc_version to intc_variant Oleksii Kurochko
2026-06-29 15:04 ` Jan Beulich
2026-07-01 10:32 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 18/25] xen/riscv: introduce (de)initialization helpers for vINTC Oleksii Kurochko
2026-06-29 15:07 ` Jan Beulich
2026-07-01 10:52 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 19/25] xen/riscv: generate IMSIC DT node for guest domains Oleksii Kurochko
2026-06-29 15:19 ` Jan Beulich
2026-07-01 11:21 ` Oleksii Kurochko
2026-07-01 11:55 ` Jan Beulich [this message]
2026-07-01 12:04 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 20/25] xen/riscv: create APLIC " Oleksii Kurochko
2026-06-29 15:26 ` Jan Beulich
2026-07-01 11:55 ` Oleksii Kurochko
2026-07-01 11:58 ` Jan Beulich
2026-06-26 15:46 ` [PATCH v4 21/25] xen/riscv: implement IRQ routing for device passthrough Oleksii Kurochko
2026-06-29 15:55 ` Jan Beulich
2026-07-01 14:49 ` Oleksii Kurochko
2026-07-02 6:38 ` Jan Beulich
2026-07-02 9:33 ` Oleksii Kurochko
2026-07-02 14:32 ` Jan Beulich
2026-07-02 16:04 ` Oleksii Kurochko
2026-07-03 7:21 ` Jan Beulich
2026-07-03 10:34 ` Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 22/25] xen/riscv: implement init_intc_phandle() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 23/25] xen/riscv: initialize RCU, scheduler, and system domains in start_xen() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 24/25] xen/riscv: provide init_vuart() Oleksii Kurochko
2026-06-26 15:46 ` [PATCH v4 25/25] xen/riscv: add initial dom0less infrastructure support Oleksii Kurochko
2026-06-30 7:28 ` Jan Beulich
2026-07-01 15:24 ` Oleksii Kurochko
2026-07-02 6:41 ` Jan Beulich
2026-07-02 9:48 ` 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=3c672ea8-3dc9-468d-9ca4-d6ceaf6c8cb3@suse.com \
--to=jbeulich@suse.com \
--cc=Romain.Caritey@microchip.com \
--cc=alistair.francis@wdc.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@vates.tech \
--cc=baptiste.le-duc@vates.tech \
--cc=connojdavis@gmail.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=oleksii.kurochko@gmail.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.