All of lore.kernel.org
 help / color / mirror / Atom feed
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 v1 1/6] xen/riscv: implement get_page_from_gfn()
Date: Tue, 17 Feb 2026 10:58:30 +0100	[thread overview]
Message-ID: <5146fc56-9fa7-49c9-8184-954ca84eb439@gmail.com> (raw)
In-Reply-To: <349ad398-8a18-46cc-a34b-576edfb544c0@suse.com>


On 2/17/26 10:10 AM, Jan Beulich wrote:
> On 17.02.2026 10:01, Oleksii Kurochko wrote:
>> On 2/16/26 1:38 PM, Jan Beulich wrote:
>>> On 12.02.2026 17:21, Oleksii Kurochko wrote:
>>>> --- a/xen/arch/riscv/p2m.c
>>>> +++ b/xen/arch/riscv/p2m.c
>>>> @@ -1557,3 +1557,31 @@ void p2m_handle_vmenter(void)
>>>>            flush_tlb_guest_local();
>>>>        }
>>>>    }
>>>> +
>>>> +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;
>>>> +
>>>> +    /*
>>>> +     * Special case for DOMID_XEN as it is the only domain so far that is
>>>> +     * not auto-translated.
>>>> +     */
>>> Once again something taken verbatim from Arm. Yes, dom_xen can in fact appear
>>> here, but it's not a real domain, has no memory truly assigned to it, has no
>>> GFN space, and hence calling it translated (or not) is simply wrong (at best:
>>> misleading). IOW ...
>>>
>>>> +    if ( likely(d != dom_xen) )
>>>> +        return p2m_get_page_from_gfn(p2m_get_hostp2m(d), _gfn(gfn), t);
>>>> +
>>>> +    /* Non-translated guests see 1-1 RAM / MMIO mappings everywhere */
>>> ... this comment would also want re-wording.
>> As you mentioned in the another reply to this patch, I messed up x86 and Arm
>> implementation in a bad way, so here should be DOMID_XEN used instead of
>> "Non-translated".
>>
>> Based on your reply it seems like the first comment should be also rephrased
>> as you mentioned that DOMID_XEN can't be called also "not auto-translated".
>> I think it would be better to write the following:
>>    /*
>>     * Special case for DOMID_XEN as it is the only domain so far that has
>>     * no GFN space.
>>     */
> Simply say that dom_xen isn't a "normal" domain?
>
>>>> +    if ( t )
>>>> +        *t = p2m_invalid;
>>>> +
>>>> +    page = mfn_to_page(_mfn(gfn));
>>>> +
>>>> +    if ( !mfn_valid(_mfn(gfn)) || !get_page(page, d) )
>>>> +        return NULL;
>>>> +
>>>> +    if ( t )
>>>> +        *t = likely(d != dom_io) ? p2m_ram_rw : p2m_mmio_direct_io;
>>> If only dom_xen can make it here, why the check for dom_io?
>> Incorrectly copied from x86. It should be just:
>>    *t = p2m_ram_rw
>> here as in RISC-V for MMIO pages owner isn't set to dom_io (and the same is
>> true for Arm I think).
> May I suggest that right away you use the construct that I suggested Arm to
> switch to (you were Cc-ed on that patch, I think)? Despite the absence of
> p2m_ram_ro on RISC-V, that'll be usable, and it will allow keeping the code
> untouched when p2m_ram_ro is introduced (sooner or later you will need it,
> I expect).

Sure, but doesn't that patch is connected to another function (translate_get_page())
and just fixing the handling of what get_page_from_gfn() in *t?

For get_page_from_gfn() to not miss the case when new type is introduced it make
sense to do the following:
     if ( page->u.inuse.type_info & PGT_writable_page )
         *t = p2m_ram_rw;
     else
	BUG_ON("unimplemented");

~ Oleksii



  reply	other threads:[~2026-02-17  9:58 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-12 16:21 [PATCH v1 0/6] RISCV: enable DOMAIN_BUILD_HELPERS Oleksii Kurochko
2026-02-12 16:21 ` [PATCH v1 1/6] xen/riscv: implement get_page_from_gfn() Oleksii Kurochko
2026-02-16 12:38   ` Jan Beulich
2026-02-16 12:41     ` Jan Beulich
2026-02-17  9:01     ` Oleksii Kurochko
2026-02-17  9:10       ` Jan Beulich
2026-02-17  9:58         ` Oleksii Kurochko [this message]
2026-02-17 10:40           ` Jan Beulich
2026-02-12 16:21 ` [PATCH v1 2/6] xen/riscv: implement copy_to_guest_phys() Oleksii Kurochko
2026-02-16 14:57   ` Jan Beulich
2026-02-17 10:25     ` Oleksii Kurochko
2026-02-17 10:42       ` Jan Beulich
2026-02-12 16:21 ` [PATCH v1 3/6] xen/riscv: add zImage kernel loading support Oleksii Kurochko
2026-02-16 16:31   ` Jan Beulich
2026-02-17 11:58     ` Oleksii Kurochko
2026-02-17 13:02       ` Jan Beulich
2026-02-17 15:28         ` Oleksii Kurochko
2026-02-12 16:21 ` [PATCH v1 4/6] xen: move declaration of fw_unreserved_regions() to common header Oleksii Kurochko
2026-02-12 16:21 ` [PATCH v1 5/6] xen: move domain_use_host_layout() " Oleksii Kurochko
2026-02-16 16:36   ` Jan Beulich
2026-02-16 18:42     ` Stefano Stabellini
2026-02-17  7:34       ` Jan Beulich
2026-02-18 12:58         ` Oleksii Kurochko
2026-02-18 13:12           ` Jan Beulich
2026-02-18 14:38             ` Oleksii Kurochko
2026-02-18 14:50               ` Jan Beulich
2026-02-28  1:42                 ` Stefano Stabellini
2026-02-28  1:59                   ` Stefano Stabellini
2026-02-12 16:21 ` [PATCH v1 6/6] xen/riscv: enable DOMAIN_BUILD_HELPERS Oleksii Kurochko
2026-02-12 16:39   ` Jan Beulich
2026-02-13 12:54     ` Oleksii Kurochko
2026-02-13 13:11       ` Jan Beulich
2026-02-18 10:39         ` Oleksii Kurochko
2026-02-18 10:45           ` Jan Beulich
2026-03-17 12:49         ` Oleksii Kurochko
2026-03-19  7:58           ` Jan Beulich
2026-03-20  9:58             ` Oleksii Kurochko
2026-03-20 13:19               ` Jan Beulich
2026-03-20 14:30                 ` 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=5146fc56-9fa7-49c9-8184-954ca84eb439@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.