All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Beulich <jbeulich@suse.com>
To: Oleksii Kurochko <oleksii.kurochko@gmail.com>,
	Julien Grall <julien@xen.org>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Bertrand Marquis <bertrand.marquis@arm.com>,
	Michal Orzel <michal.orzel@amd.com>
Cc: "Alistair Francis" <alistair.francis@wdc.com>,
	"Bob Eshleman" <bobbyeshleman@gmail.com>,
	"Connor Davis" <connojdavis@gmail.com>,
	"Andrew Cooper" <andrew.cooper3@citrix.com>,
	"Anthony PERARD" <anthony.perard@vates.tech>,
	"Roger Pau Monné" <roger.pau@citrix.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v2 16/17] xen/riscv: implement mfn_valid() and page reference, ownership handling helpers
Date: Mon, 21 Jul 2025 15:53:28 +0200	[thread overview]
Message-ID: <03212046-e60d-4c8d-9d9e-897666e95f91@suse.com> (raw)
In-Reply-To: <133e13bc-39a9-4691-b383-8c62c2775c01@gmail.com>

On 18.07.2025 16:49, Oleksii Kurochko wrote:
> On 7/2/25 12:09 PM, Jan Beulich wrote:
>> On 10.06.2025 15:05, Oleksii Kurochko wrote:
>>> Implement the mfn_valid() macro to verify whether a given MFN is valid by
>>> checking that it falls within the range [start_page, max_page).
>>> These bounds are initialized based on the start and end addresses of RAM.
>>>
>>> As part of this patch, start_page is introduced and initialized with the
>>> PFN of the first RAM page.
>>>
>>> Also, after providing a non-stub implementation of the mfn_valid() macro,
>>> the following compilation errors started to occur:
>>>    riscv64-linux-gnu-ld: prelink.o: in function `__next_node':
>>>    /build/xen/./include/xen/nodemask.h:202: undefined reference to `page_is_ram_type'
>>>    riscv64-linux-gnu-ld: prelink.o: in function `get_free_buddy':
>>>    /build/xen/common/page_alloc.c:881: undefined reference to `page_is_ram_type'
>>>    riscv64-linux-gnu-ld: prelink.o: in function `alloc_heap_pages':
>>>    /build/xen/common/page_alloc.c:1043: undefined reference to `page_get_owner_and_reference'
>>>    riscv64-linux-gnu-ld: /build/xen/common/page_alloc.c:1098: undefined reference to `page_is_ram_type'
>>>    riscv64-linux-gnu-ld: prelink.o: in function `ns16550_interrupt':
>>>    /build/xen/drivers/char/ns16550.c:205: undefined reference to `get_page'
>>>    riscv64-linux-gnu-ld: ./.xen-syms.0: hidden symbol `page_get_owner_and_reference' isn't defined
>>>    riscv64-linux-gnu-ld: final link failed: bad value
>>>    make[2]: *** [arch/riscv/Makefile:35: xen-syms] Error 1
>>> To resolve these errors, the following functions have also been introduced,
>>> based on their Arm counterparts:
>>> - page_get_owner_and_reference() and its variant to safely acquire a
>>>    reference to a page and retrieve its owner.
>>> - put_page() and put_page_nr() to release page references and free the page
>>>    when the count drops to zero.
>>>    For put_page_nr(), code related to static memory configuration is wrapped
>>>    with CONFIG_STATIC_MEMORY, as this configuration has not yet been moved to
>>>    common code. Therefore, PGC_static and free_domstatic_page() are not
>>>    introduced for RISC-V. However, since this configuration could be useful
>>>    in the future, the relevant code is retained and conditionally compiled.
>>> - A stub for page_is_ram_type() that currently always returns 0 and asserts
>>>    unreachable, as RAM type checking is not yet implemented.
>> How does this end up working when common code references the function?
> 
> Based on the following commit message:
>      Callers are VT-d (so x86 specific) and various bits of page offlining
>      support, which although it looks generic (and is in xen/common) does
>      things like diving into page_info->count_info which is not generic.
>      
>      In any case on this is only reachable via XEN_SYSCTL_page_offline_op,
>      which clearly shouldn't be called on ARM just yet.

Assuming this is from an old commit, then I have to question this justification.
I see nothing preventing XEN_SYSCTL_page_offline_op to be invoked on an Arm
system. Hence (unless I'm overlooking somthing) ASSERT_UNREACHABLE() is simply
inappropriate (and wants fixing). Luckily it being sysctl-s only, there's no
need for an XSA. In no case should known flawed code be copied into another
port.

Jan


  parent reply	other threads:[~2025-07-21 13:53 UTC|newest]

Thread overview: 161+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-10 13:05 [PATCH v2 00/17] xen/riscv: introduce p2m functionality Oleksii Kurochko
2025-06-10 13:05 ` [PATCH v2 01/17] xen/riscv: implement sbi_remote_hfence_gvma() Oleksii Kurochko
2025-06-18 15:15   ` Jan Beulich
2025-06-23 14:31     ` Oleksii Kurochko
2025-06-23 14:39       ` Jan Beulich
2025-06-23 14:45         ` Oleksii Kurochko
2025-06-24 10:33     ` Oleksii Kurochko
2025-06-24 10:48       ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 02/17] xen/riscv: introduce sbi_remote_hfence_gvma_vmid() Oleksii Kurochko
2025-06-18 15:20   ` Jan Beulich
2025-06-23 14:38     ` Oleksii Kurochko
2025-06-10 13:05 ` [PATCH v2 03/17] xen/riscv: introduce guest domain's VMID allocation and manegement Oleksii Kurochko
2025-06-18 15:46   ` Jan Beulich
2025-06-24  9:46     ` Oleksii Kurochko
2025-06-24 10:44       ` Jan Beulich
2025-06-24 13:47         ` Oleksii Kurochko
2025-06-24 14:01           ` Jan Beulich
2025-06-24 15:32             ` Oleksii Kurochko
2025-06-26 10:05             ` Oleksii Kurochko
2025-06-26 10:41               ` Jan Beulich
2025-06-26 11:34                 ` Oleksii Kurochko
2025-06-26 11:43                   ` Juergen Gross
2025-06-26 12:05                     ` Oleksii Kurochko
2025-06-26 12:17                     ` Teddy Astie
2025-06-26 12:37                       ` Jan Beulich
2025-06-26 12:16                   ` Jan Beulich
2025-06-26 12:25                     ` Oleksii Kurochko
2025-06-10 13:05 ` [PATCH v2 04/17] xen/riscv: construct the P2M pages pool for guests Oleksii Kurochko
2025-06-18 15:53   ` Jan Beulich
2025-06-25 14:48     ` Oleksii Kurochko
2025-06-25 14:55       ` Jan Beulich
2025-07-01 13:04   ` Jan Beulich
2025-07-02 10:30     ` Oleksii Kurochko
2025-07-02 10:34       ` Jan Beulich
2025-07-02 11:17         ` Oleksii Kurochko
2025-07-02 11:48     ` Oleksii Kurochko
2025-07-02 11:56       ` Jan Beulich
2025-07-02 12:34         ` Oleksii Kurochko
2025-07-02 12:49           ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 05/17] xen/riscv: introduce things necessary for p2m initialization Oleksii Kurochko
2025-06-18 16:08   ` Jan Beulich
2025-06-25 15:31     ` Oleksii Kurochko
2025-06-25 15:53       ` Jan Beulich
2025-06-26  8:40         ` Oleksii Kurochko
2025-06-26 11:01           ` Jan Beulich
2025-06-26 11:55             ` Oleksii Kurochko
2025-06-10 13:05 ` [PATCH v2 06/17] xen/riscv: add root page table allocation Oleksii Kurochko
2025-06-30 15:22   ` Jan Beulich
2025-06-30 16:18     ` Oleksii Kurochko
2025-07-01  6:29       ` Jan Beulich
2025-07-01  9:44         ` Oleksii Kurochko
2025-07-01 10:27           ` Jan Beulich
2025-07-01 14:02             ` Oleksii Kurochko
2025-07-01 14:28               ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 07/17] xen/riscv: introduce pte_{set,get}_mfn() Oleksii Kurochko
2025-06-26 14:57   ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 08/17] xen/riscv: add new p2m types and helper macros for type classification Oleksii Kurochko
2025-06-26 14:59   ` Jan Beulich
2025-06-30 14:33     ` Oleksii Kurochko
2025-06-30 14:38       ` Oleksii Kurochko
2025-06-30 14:45         ` Jan Beulich
2025-06-30 15:27           ` Oleksii Kurochko
2025-06-30 15:50             ` Jan Beulich
2025-07-02 10:13               ` Oleksii Kurochko
2025-07-02 10:36                 ` Jan Beulich
2025-06-30 14:42       ` Jan Beulich
2025-06-30 15:13         ` Oleksii Kurochko
2025-06-30 15:27           ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 09/17] xen/riscv: introduce page_set_xenheap_gfn() Oleksii Kurochko
2025-06-30 15:48   ` Jan Beulich
2025-07-02 15:59     ` Oleksii Kurochko
2025-07-03  5:59       ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 10/17] xen/riscv: implement guest_physmap_add_entry() for mapping GFNs to MFNs Oleksii Kurochko
2025-06-30 15:59   ` Jan Beulich
2025-07-03 11:02     ` Oleksii Kurochko
2025-07-03 11:33       ` Jan Beulich
2025-07-03 11:54         ` Oleksii Kurochko
2025-07-03 13:09           ` Jan Beulich
2025-07-03 13:28             ` Oleksii Kurochko
2025-07-03 13:34               ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 11/17] xen/riscv: implement p2m_set_entry() and __p2m_set_entry() Oleksii Kurochko
2025-07-01 13:49   ` Jan Beulich
2025-07-04 15:01     ` Oleksii Kurochko
2025-07-07  7:20       ` Jan Beulich
2025-07-07 11:46         ` Oleksii Kurochko
2025-07-07 12:53           ` Jan Beulich
2025-07-07 15:00             ` Oleksii Kurochko
2025-07-07 15:15               ` Jan Beulich
2025-07-07 16:10                 ` Oleksii Kurochko
2025-07-08  7:10                   ` Jan Beulich
2025-07-08  9:01                     ` Oleksii Kurochko
2025-07-08 10:37                       ` Oleksii Kurochko
2025-07-08 12:45                         ` Jan Beulich
2025-07-08 15:42                           ` Oleksii Kurochko
2025-07-08 16:04                             ` Jan Beulich
2025-07-09  8:24                               ` Oleksii Kurochko
2025-07-09  8:41                                 ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 12/17] xen/riscv: Implement p2m_free_entry() and related helpers Oleksii Kurochko
2025-07-01 14:23   ` Jan Beulich
2025-07-11 15:56     ` Oleksii Kurochko
2025-07-14  7:15       ` Jan Beulich
2025-07-14 16:01         ` Oleksii Kurochko
2025-07-14 16:17           ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 13/17] xen/riscv: Implement p2m_entry_from_mfn() and support PBMT configuration Oleksii Kurochko
2025-07-01 15:08   ` Jan Beulich
2025-07-15 14:47     ` Oleksii Kurochko
2025-07-16 11:31       ` Jan Beulich
2025-07-16 16:07         ` Oleksii Kurochko
2025-07-16 16:18           ` Jan Beulich
2025-07-17  8:56             ` Oleksii Kurochko
2025-07-17 10:25               ` Jan Beulich
2025-07-18  9:52                 ` Oleksii Kurochko
2025-07-21 12:18                   ` Jan Beulich
2025-07-22 10:41                     ` Oleksii Kurochko
2025-07-22 11:34                       ` Oleksii Kurochko
2025-07-22 12:00                         ` Jan Beulich
2025-07-22 14:25                           ` Oleksii Kurochko
2025-07-22 14:35                             ` Jan Beulich
2025-07-22 16:07                               ` Oleksii Kurochko
2025-07-23  9:46                                 ` Jan Beulich
2025-07-28  8:52                                   ` Oleksii Kurochko
2025-07-28  9:09                                     ` Jan Beulich
2025-07-28 11:37                                       ` Oleksii Kurochko
2025-07-28 11:49                                         ` Jan Beulich
2025-07-22 11:54                       ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 14/17] xen/riscv: implement p2m_next_level() Oleksii Kurochko
2025-07-02  8:35   ` Jan Beulich
2025-07-16 11:32     ` Oleksii Kurochko
2025-07-16 11:43       ` Jan Beulich
2025-07-16 15:53         ` Oleksii Kurochko
2025-07-16 16:12           ` Jan Beulich
2025-07-17  9:42             ` Oleksii Kurochko
2025-07-17 10:37               ` Jan Beulich
2025-07-18 11:19                 ` Oleksii Kurochko
2025-07-21 13:14                   ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 15/17] xen/riscv: Implement superpage splitting for p2m mappings Oleksii Kurochko
2025-07-02  9:25   ` Jan Beulich
2025-07-17 16:37     ` Oleksii Kurochko
2025-07-21 13:34       ` Jan Beulich
2025-07-22 14:57         ` Oleksii Kurochko
2025-07-22 16:02           ` Jan Beulich
2025-07-23 19:51             ` Oleksii Kurochko
2025-07-24  7:58               ` Jan Beulich
2025-06-10 13:05 ` [PATCH v2 16/17] xen/riscv: implement mfn_valid() and page reference, ownership handling helpers Oleksii Kurochko
2025-07-02 10:09   ` Jan Beulich
2025-07-02 10:28     ` Jan Beulich
2025-07-18 14:37       ` Oleksii Kurochko
2025-07-21 13:39         ` Jan Beulich
2025-07-22 12:03           ` Oleksii Kurochko
2025-07-22 12:05             ` Jan Beulich
2025-07-29 13:47               ` Oleksii Kurochko
2025-07-29 14:48                 ` Jan Beulich
2025-07-02 12:52     ` Orzel, Michal
2025-07-18 14:49     ` Oleksii Kurochko
2025-07-21 13:42       ` Jan Beulich
2025-07-22 13:38         ` Oleksii Kurochko
2025-07-21 13:53       ` Jan Beulich [this message]
2025-06-10 13:05 ` [PATCH v2 17/17] xen/riscv: add support of page lookup by GFN Oleksii Kurochko
2025-07-02 11:44   ` Jan Beulich
2025-07-21  9:43     ` Oleksii Kurochko
2025-07-21 14:06       ` Jan Beulich

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=03212046-e60d-4c8d-9d9e-897666e95f91@suse.com \
    --to=jbeulich@suse.com \
    --cc=alistair.francis@wdc.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=anthony.perard@vates.tech \
    --cc=bertrand.marquis@arm.com \
    --cc=bobbyeshleman@gmail.com \
    --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.