All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleksii <oleksii.kurochko@gmail.com>
To: Julien Grall <julien@xen.org>, Jan Beulich <jbeulich@suse.com>
Cc: Shawn Anastasio <sanastasio@raptorengineering.com>,
	Alistair Francis <alistair.francis@wdc.com>,
	Bob Eshleman <bobbyeshleman@gmail.com>,
	Connor Davis <connojdavis@gmail.com>,
	xen-devel@lists.xenproject.org
Subject: Re: [PATCH v3 21/34] xen/riscv: introduce p2m.h
Date: Wed, 17 Jan 2024 11:32:02 +0200	[thread overview]
Message-ID: <3e11cf09b1a9b98e3bd4a82e7f0bd2bcde2ed67d.camel@gmail.com> (raw)
In-Reply-To: <402ece4f-a3bf-4eab-ac4c-ae36490ae114@xen.org>

Hi Julien,

On Tue, 2024-01-16 at 17:12 +0000, Julien Grall wrote:
> Hi Oleksii,
> 
> On 16/01/2024 09:44, Oleksii wrote:
> > On Mon, 2024-01-15 at 12:01 +0100, Jan Beulich wrote:
> > > On 15.01.2024 11:35, Oleksii wrote:
> > > > Hi Julien,
> > > > 
> > > > On Fri, 2024-01-12 at 10:39 +0000, Julien Grall wrote:
> > > > > Hi Oleksii,
> > > > > 
> > > > > On 22/12/2023 15:13, Oleksii Kurochko wrote:
> > > > > > Signed-off-by: Oleksii Kurochko
> > > > > > <oleksii.kurochko@gmail.com>
> > > > > > ---
> > > > > > Changes in V3:
> > > > > >    - add SPDX
> > > > > >    - drop unneeded for now p2m types.
> > > > > >    - return false in all functions implemented with BUG()
> > > > > > inside.
> > > > > >    - update the commit message
> > > > > > ---
> > > > > > Changes in V2:
> > > > > >    - Nothing changed. Only rebase.
> > > > > > ---
> > > > > >    xen/arch/ppc/include/asm/p2m.h   |   3 +-
> > > > > >    xen/arch/riscv/include/asm/p2m.h | 102
> > > > > > +++++++++++++++++++++++++++++++
> > > > > >    2 files changed, 103 insertions(+), 2 deletions(-)
> > > > > >    create mode 100644 xen/arch/riscv/include/asm/p2m.h
> > > > > > 
> > > > > > diff --git a/xen/arch/ppc/include/asm/p2m.h
> > > > > > b/xen/arch/ppc/include/asm/p2m.h
> > > > > > index 25ba054668..3bc05b7c05 100644
> > > > > > --- a/xen/arch/ppc/include/asm/p2m.h
> > > > > > +++ b/xen/arch/ppc/include/asm/p2m.h
> > > > > > @@ -50,8 +50,7 @@ static inline void
> > > > > > memory_type_changed(struct
> > > > > > domain *d)
> > > > > >    static inline int
> > > > > > guest_physmap_mark_populate_on_demand(struct
> > > > > > domain *d, unsigned long gfn,
> > > > > >                                                           
> > > > > > unsigned
> > > > > > int order)
> > > > > >    {
> > > > > > -    BUG_ON("unimplemented");
> > > > > > -    return 1;
> > > > > > +    return -EOPNOTSUPP;
> > > > > >    }
> > > > > >    
> > > > > >    static inline int guest_physmap_add_entry(struct domain
> > > > > > *d,
> > > > > > diff --git a/xen/arch/riscv/include/asm/p2m.h
> > > > > > b/xen/arch/riscv/include/asm/p2m.h
> > > > > > new file mode 100644
> > > > > > index 0000000000..d270ef6635
> > > > > > --- /dev/null
> > > > > > +++ b/xen/arch/riscv/include/asm/p2m.h
> > > > > > @@ -0,0 +1,102 @@
> > > > > > +/* SPDX-License-Identifier: GPL-2.0-only */
> > > > > > +#ifndef __ASM_RISCV_P2M_H__
> > > > > > +#define __ASM_RISCV_P2M_H__
> > > > > > +
> > > > > > +#include <asm/page-bits.h>
> > > > > > +
> > > > > > +#define paddr_bits PADDR_BITS
> > > > > > +
> > > > > > +/*
> > > > > > + * List of possible type for each page in the p2m entry.
> > > > > > + * The number of available bit per page in the pte for
> > > > > > this
> > > > > > purpose is 4 bits.
> > > > > > + * So it's possible to only have 16 fields. If we run out
> > > > > > of
> > > > > > value
> > > > > > in the
> > > > > > + * future, it's possible to use higher value for pseudo-
> > > > > > type
> > > > > > and
> > > > > > don't store
> > > > > > + * them in the p2m entry.
> > > > > > + */
> > > > > 
> > > > > This looks like a verbatim copy from Arm. Did you actually
> > > > > check
> > > > > RISC-V
> > > > > has 4 bits available in the PTE to store this value?
> > > > Thanks for noticing that, in RISC-V it is available only 2 bits
> > > > (
> > > > bits
> > > > 8 and 9), so I'll update the comment:
> > > > 53                   10 9    8 7 6 5 4 3 2 1 0
> > > >   Physical Page Number     RSV  D A G U X W R V
> > > 
> > > It's RSW (Reserved for Supervisor softWare use), not RSV, which
> > > is
> > > pretty
> > > important in this context.
> > Yes, you are right it is RSW. Thanks for the correction.
> > 
> > > 
> > > > It seems that I missed something in the Arm
> > > > code/architecture.As
> > > > far as I recall, in Arm, bits 5-8 are ignored by the MMU, and
> > > > they
> > > > are expected
> > > > to be used by the hypervisor for its purpose.
> > > > However, in the code, I notice that these bits are utilized for
> > > > storing
> > > > a reference counter.
> > > 
> > > Why "however"? Hardware still is going to ignore these bits.
> > Sure, these bits are ignored by hardware. What I meant is that,
> > according to the code, these bits are used for storing a reference
> > counter, not p2m_type_t. I guess I am missing something...
> 
> I can only guess where you saw the field used for reference counting.
> This was the domain map page infrastruture, right?
Yes, you are right.
> 
> If so, this is for stage-1 page-table (aka hypervisor table) and not
> the 
> stage-2 (e.g. P2M). For the latter, we would use the p2m_type_t.
I confused stage-1 & stage-2. Now everything fell into place. Thanks.

~ Oleksii


  reply	other threads:[~2024-01-17  9:32 UTC|newest]

Thread overview: 146+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-22 15:12 [PATCH v3 00/34] Enable build of full Xen for RISC-V Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 01/34] xen/riscv: disable unnecessary configs Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 02/34] xen/riscv: use some asm-generic headers Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 03/34] xen: add support in public/hvm/save.h for PPC and RISC-V Oleksii Kurochko
2024-01-04 11:01   ` Jan Beulich
2024-01-08 14:46     ` Oleksii
2023-12-22 15:12 ` [PATCH v3 04/34] xen/riscv: introduce cpufeature.h Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 05/34] xen/riscv: introduce guest_atomics.h Oleksii Kurochko
2024-01-11 15:57   ` Jan Beulich
2024-01-15  9:26     ` Oleksii
2023-12-22 15:12 ` [PATCH v3 06/34] xen: avoid generation of empty asm/iommu.h Oleksii Kurochko
2024-01-04 11:04   ` Jan Beulich
2024-01-08 14:47     ` Oleksii
2023-12-22 15:12 ` [PATCH v3 07/34] xen/asm-generic: introdure nospec.h Oleksii Kurochko
2024-01-04 11:06   ` Jan Beulich
2024-01-04 11:13     ` Andrew Cooper
2024-01-04 12:03       ` Jan Beulich
2024-01-08 14:58     ` Oleksii
2024-01-05 19:02   ` Shawn Anastasio
2023-12-22 15:12 ` [PATCH v3 08/34] xen/riscv: introduce setup.h Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 09/34] xen/riscv: introduce system.h Oleksii Kurochko
2024-01-11 16:00   ` Jan Beulich
2024-01-15  9:28     ` Oleksii
2023-12-22 15:12 ` [PATCH v3 10/34] xen/riscv: introduce bitops.h Oleksii Kurochko
2024-01-15 16:44   ` Jan Beulich
2024-01-16 13:06     ` Oleksii
2024-01-16 13:24       ` Jan Beulich
2024-01-17 11:13         ` Oleksii
2024-01-17 11:17           ` Jan Beulich
2024-01-17 11:37             ` Oleksii
2024-01-17 13:42               ` Jan Beulich
2024-01-18  9:43                 ` Oleksii
2024-01-18 11:01                   ` Jan Beulich
2024-01-19  9:16                     ` Oleksii
2024-01-19  9:20                       ` Jan Beulich
2024-01-18 11:03   ` Jan Beulich
2024-01-19  9:09     ` Oleksii
2024-01-19  9:14       ` Jan Beulich
2024-01-19  9:30         ` Oleksii
2023-12-22 15:12 ` [PATCH v3 11/34] xen/riscv: introduce flushtlb.h Oleksii Kurochko
2023-12-22 15:12 ` [PATCH v3 12/34] xen/riscv: introduce smp.h Oleksii Kurochko
2024-01-11 16:36   ` Jan Beulich
2024-01-15  9:35     ` Oleksii
2023-12-22 15:12 ` [PATCH v3 13/34] xen/riscv: introduce cmpxchg.h Oleksii Kurochko
2024-01-22 16:27   ` Jan Beulich
2024-01-23 10:15     ` Oleksii
2024-01-23 10:28       ` Jan Beulich
2024-01-23 12:18         ` Oleksii
2024-01-23 13:27           ` Jan Beulich
2024-01-24  9:15             ` Oleksii
2024-01-30 14:57     ` Oleksii
2024-01-30 15:05       ` Jan Beulich
2024-01-30 15:16         ` Oleksii
2023-12-22 15:12 ` [PATCH v3 14/34] xen/riscv: introduce io.h Oleksii Kurochko
2024-01-15 16:57   ` Jan Beulich
2024-01-16 15:20     ` Oleksii
2024-01-16 16:09       ` Jan Beulich
2024-01-31 17:30         ` Oleksii
2023-12-22 15:12 ` [PATCH v3 15/34] xen/riscv: introduce atomic.h Oleksii Kurochko
2024-01-22 16:56   ` Jan Beulich
2024-01-23 10:21     ` Oleksii
2024-01-23 10:30       ` Jan Beulich
2024-01-23 12:24         ` Oleksii
2024-01-23 13:30           ` Jan Beulich
2024-01-24  9:23             ` Oleksii
2024-01-24 11:19               ` Jan Beulich
2024-01-24 14:56                 ` Oleksii
2023-12-22 15:13 ` [PATCH v3 16/34] xen/lib: introduce generic find next bit operations Oleksii Kurochko
2024-01-23 11:14   ` Jan Beulich
2024-01-23 12:34     ` Oleksii
2024-01-23 13:37       ` Jan Beulich
2024-01-24  9:34         ` Oleksii
2024-01-24 11:24           ` Jan Beulich
2024-01-24 15:04             ` Oleksii
2024-01-24 15:32               ` Jan Beulich
2024-01-26  9:44         ` Oleksii
2024-01-26  9:48           ` Jan Beulich
2024-01-26  9:56             ` Oleksii
2023-12-22 15:13 ` [PATCH v3 17/34] xen/riscv: add compilation of generic find-next-bit.c Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 18/34] xen/riscv: introduce domain.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 19/34] xen/riscv: introduce guest_access.h Oleksii Kurochko
2024-01-23 11:16   ` Jan Beulich
2023-12-22 15:13 ` [PATCH v3 20/34] xen/riscv: introduce irq.h Oleksii Kurochko
2024-01-23 11:18   ` Jan Beulich
2024-01-23 12:25     ` Oleksii
2023-12-22 15:13 ` [PATCH v3 21/34] xen/riscv: introduce p2m.h Oleksii Kurochko
2024-01-11 23:11   ` Shawn Anastasio
2024-01-15  9:37     ` Oleksii
2024-01-12 10:39   ` Julien Grall
2024-01-12 11:06     ` Jan Beulich
2024-01-12 11:09       ` Julien Grall
2024-01-15 10:35     ` Oleksii
2024-01-15 11:01       ` Jan Beulich
2024-01-16  9:44         ` Oleksii
2024-01-16 17:12           ` Julien Grall
2024-01-17  9:32             ` Oleksii [this message]
2023-12-22 15:13 ` [PATCH v3 22/34] xen/riscv: introduce regs.h Oleksii Kurochko
2024-01-15 17:00   ` Jan Beulich
2024-01-16  9:46     ` Oleksii
2023-12-22 15:13 ` [PATCH v3 23/34] xen/riscv: introduce time.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 24/34] xen/riscv: introduce event.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 25/34] xen/riscv: introduce monitor.h Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 26/34] xen/riscv: add definition of __read_mostly Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 27/34] xen/riscv: define an address of frame table Oleksii Kurochko
2024-01-23 11:32   ` Jan Beulich
2024-01-23 16:50     ` Oleksii
2024-01-24  8:07       ` Jan Beulich
2024-01-24 10:01         ` Oleksii
2023-12-22 15:13 ` [PATCH v3 28/34] xen/riscv: add required things to current.h Oleksii Kurochko
2024-01-23 11:35   ` Jan Beulich
2024-01-23 16:52     ` Oleksii
2023-12-22 15:13 ` [PATCH v3 29/34] xen/riscv: add minimal stuff to page.h to build full Xen Oleksii Kurochko
2024-01-23 11:36   ` Jan Beulich
2024-01-23 16:54     ` Oleksii
2024-01-24  8:09       ` Jan Beulich
2024-01-24 10:02         ` Oleksii
2023-12-22 15:13 ` [PATCH v3 30/34] xen/riscv: add minimal stuff to processor.h " Oleksii Kurochko
2024-01-23 11:39   ` Jan Beulich
2024-01-23 17:08     ` Oleksii
2024-01-24  8:19       ` Jan Beulich
2024-01-24 10:12         ` Oleksii
2024-01-24 11:27           ` Jan Beulich
2024-01-24 15:33             ` Oleksii
2024-01-24 15:38               ` Jan Beulich
2023-12-22 15:13 ` [PATCH v3 31/34] xen/riscv: add minimal stuff to mm.h " Oleksii Kurochko
2023-12-22 16:32   ` Oleksii
2023-12-22 18:16     ` Oleksii
2024-01-11 16:43     ` Jan Beulich
2024-01-15 10:36       ` Oleksii
2024-01-23 13:03   ` Jan Beulich
2024-01-23 17:27     ` Oleksii
2024-01-24  8:23       ` Jan Beulich
2024-02-02 17:30     ` Oleksii
2024-02-05  7:46       ` Jan Beulich
2024-02-05 12:49         ` Oleksii
2024-02-05 14:05           ` Jan Beulich
2024-02-05 14:40             ` Oleksii
2023-12-22 15:13 ` [PATCH v3 32/34] xen/rirscv: add minimal amount of stubs " Oleksii Kurochko
2024-01-23 13:20   ` Jan Beulich
2024-01-23 17:31     ` Oleksii
2023-12-22 15:13 ` [PATCH v3 33/34] xen/riscv: enable full Xen build Oleksii Kurochko
2023-12-22 15:13 ` [PATCH v3 34/34] xen/README: add compiler and binutils versions for RISC-V64 Oleksii Kurochko
2024-01-23 11:22   ` Jan Beulich
2024-01-23 14:49     ` Oleksii
2024-01-23 17:05       ` Jan Beulich
2024-01-23 17:34         ` Oleksii

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=3e11cf09b1a9b98e3bd4a82e7f0bd2bcde2ed67d.camel@gmail.com \
    --to=oleksii.kurochko@gmail.com \
    --cc=alistair.francis@wdc.com \
    --cc=bobbyeshleman@gmail.com \
    --cc=connojdavis@gmail.com \
    --cc=jbeulich@suse.com \
    --cc=julien@xen.org \
    --cc=sanastasio@raptorengineering.com \
    --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.