From: Oleksii Kurochko <oleksii.kurochko@gmail.com>
To: Jan Beulich <jbeulich@suse.com>
Cc: "Romain Caritey" <Romain.Caritey@microchip.com>,
"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 v2 01/11] xen/riscv: implement get_page_from_gfn()
Date: Mon, 30 Mar 2026 15:40:30 +0200 [thread overview]
Message-ID: <437b0d3c-916d-4513-9159-ee4e4c904bf4@gmail.com> (raw)
In-Reply-To: <ef4eac20-d136-4c9a-82be-72259c088537@suse.com>
On 3/26/26 2:50 PM, Jan Beulich wrote:
> On 23.03.2026 17:29, Oleksii Kurochko wrote:
>> --- a/xen/arch/riscv/p2m.c
>> +++ b/xen/arch/riscv/p2m.c
>> @@ -1534,3 +1534,32 @@ void p2m_handle_vmenter(void)
>> * won't be reused until need_flush is set to true.
>> */
>> }
>> +
>> +struct page_info *get_page_from_gfn(struct domain *d, unsigned long gfn,
>> + p2m_type_t *t, p2m_query_t q)
>> +{
>> + struct page_info *page;
>> + p2m_type_t p2mt;
>> +
>> + /* Special case for DOMID_XEN as it isn't "normal" domain */
>> + if ( likely(d != dom_xen) )
>> + return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn), t);
>
> Comments usually apply to immediately following code. When that's not
> the case (as it is here), the comment either wants moving or wording
> accordingly.
I will move it after if-() statement.
>
>> + if ( !t )
>> + t = &p2mt;
>> +
>> + *t = p2m_invalid;
>> +
>> + /* DOMID_XEN sees 1-1 RAM. The p2m_type is based on the type of the page */
>
> As before - I don't think implying any kind of translation (even 1:1) is
> correct for system domains.
I will rephrase that to:
"DOM_XEN has no stage-2 translation at all, so the gfn argument is
treated directly as an mfn"
>
>> + page = mfn_to_page(_mfn(gfn));
>
> This, strictly speaking, is UB until ...
>
>> + if ( !mfn_valid(_mfn(gfn)) || !get_page(page, d) )
>
> ... the mfn_valid() check succeeded. Yes, Arm code has it like this, but
> I can only repeat that you want to carefully inspect any code you copy.
>
>> + return NULL;
>> +
>> + if ( page->u.inuse.type_info & PGT_writable_page )
>> + *t = p2m_ram_rw;
>> + else
>> + BUG_ON("unimplemented. p2m_ram_ro hasn't been introduced yet");
>> +
>> + return page;
>> +}
>
> Finally, what doesn't become clear at all is why dom_xen needs special
> casing. ISTR that when looking at the Arm code in the context of reviewing
> v1, I spotted why Arm has this special case. Maybe I'm misremembering, as
> now I can't spot it again / anymore. Yet whatever the reason there may not
> apply at all to RISC-V.
IIUC, then Arm having this special case for DOMID_XEN as it is used to
share pages beloging to the hypervisor, for example, trace buffers and
considering that trace buffers are part of common code it will be also
true for RISC-V.
~ Oleksii
next prev parent reply other threads:[~2026-03-30 13:40 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-23 16:29 [PATCH v2 00/11] RISCV: enable DOMAIN_BUILD_HELPERS Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 01/11] xen/riscv: implement get_page_from_gfn() Oleksii Kurochko
2026-03-26 13:50 ` Jan Beulich
2026-03-30 13:40 ` Oleksii Kurochko [this message]
2026-03-30 14:04 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 02/11] xen: return proper type for guest access functions Oleksii Kurochko
2026-03-26 13:56 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 03/11] xen/riscv: implement copy_to_guest_phys() Oleksii Kurochko
2026-03-30 14:24 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 04/11] xen/dom0less: rename kernel_zimage_probe() to kernel_image_probe() Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 05/11] xen/riscv: add kernel loading support Oleksii Kurochko
2026-03-30 14:47 ` Jan Beulich
[not found] ` <05b1bc67-bbed-412e-881e-a3fb2c2d873b@gmail.com>
2026-03-31 15:14 ` Jan Beulich
[not found] ` <a0efb7a6-4854-4fe5-bbf4-2561f25d7133@gmail.com>
2026-03-31 15:56 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 06/11] xen: move declaration of fw_unreserved_regions() to common header Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 07/11] xen: move domain_use_host_layout() to common code Oleksii Kurochko
2026-03-30 15:13 ` Jan Beulich
[not found] ` <57581b7d-cb9f-444c-9321-63b2fc3d09f0@gmail.com>
2026-03-31 15:53 ` Jan Beulich
2026-03-31 16:32 ` Oleksii Kurochko
2026-03-31 19:49 ` Oleksii Kurochko
2026-04-01 5:59 ` Jan Beulich
2026-04-01 14:44 ` Oleksii Kurochko
2026-04-01 5:58 ` Jan Beulich
2026-04-01 14:38 ` Oleksii Kurochko
2026-04-01 14:42 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 08/11] xen: rename p2m_ipa_bits to p2m_gpa_bits Oleksii Kurochko
2026-03-30 15:16 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 09/11] xen/riscv: introduce p2m_gpa_bits Oleksii Kurochko
2026-03-30 15:34 ` Jan Beulich
2026-03-31 16:02 ` Oleksii Kurochko
2026-04-01 6:07 ` Jan Beulich
2026-04-01 13:50 ` Oleksii Kurochko
2026-04-01 13:57 ` Jan Beulich
2026-03-23 16:29 ` [PATCH v2 10/11] xen/riscv: add definition of guest RAM banks Oleksii Kurochko
2026-03-30 15:51 ` Jan Beulich
2026-03-31 16:14 ` Oleksii Kurochko
2026-04-01 6:17 ` Jan Beulich
2026-04-01 13:57 ` Oleksii Kurochko
2026-04-01 14:22 ` Jan Beulich
2026-04-01 14:53 ` Oleksii Kurochko
2026-04-01 15:10 ` Jan Beulich
2026-04-06 15:43 ` Oleksii Kurochko
2026-04-07 6:23 ` Jan Beulich
2026-04-07 8:54 ` Oleksii Kurochko
2026-04-07 9:09 ` Jan Beulich
2026-04-07 9:19 ` Oleksii Kurochko
2026-03-23 16:29 ` [PATCH v2 11/11] xen/riscv: enable DOMAIN_BUILD_HELPERS 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=437b0d3c-916d-4513-9159-ee4e4c904bf4@gmail.com \
--to=oleksii.kurochko@gmail.com \
--cc=Romain.Caritey@microchip.com \
--cc=alistair.francis@wdc.com \
--cc=andrew.cooper3@citrix.com \
--cc=anthony.perard@vates.tech \
--cc=connojdavis@gmail.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.