|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 30/39] xen/riscv: define an address of frame table
On Mon, 2023-12-18 at 12:22 +0100, Jan Beulich wrote:
> On 18.12.2023 11:36, Oleksii wrote:
> > On Thu, 2023-12-14 at 16:48 +0100, Jan Beulich wrote:
> > > On 24.11.2023 11:30, Oleksii Kurochko wrote:
> > > > +#define SLOTN_ENTRY_SIZE SLOTN(1)
> > > > +
> > > > #define XEN_VIRT_START 0xFFFFFFFFC0000000 /* (_AC(-1, UL) + 1
> > > > -
> > > > GB(1)) */
> > > > +
> > > > +#define FRAMETABLE_VIRT_START SLOTN(196)
> > > > +#define FRAMETABLE_SIZE GB(3)
> > > > +#define FRAMETABLE_NR (FRAMETABLE_SIZE /
> > > > sizeof(*frame_table))
> > > > +#define FRAMETABLE_VIRT_END (FRAMETABLE_VIRT_START +
> > > > FRAMETABLE_SIZE - 1)
> > > > +
> > > > +#define VMAP_VIRT_START SLOTN(194)
> > > > +#define VMAP_VIRT_SIZE GB(1)
> > >
> > > May I suggest that you keep these blocks sorted by slot number?
> > > Or
> > > wait,
> > > the layout comment further up is also in decreasing order, so
> > > that's
> > > fine here, but then can all of this please be moved next to the
> > > comment
> > > actually providing the necessary context (thus eliminating the
> > > need
> > > for
> > > new comments)?
> > Sure, I'll put this part close to layout comment.
> >
> > > You'll then also notice that the generalization here
> > > (keeping basically the same layout for e.g. SATP_MODE_SV48, just
> > > shifted
> > > by 9 bits) isn't in line with the comment there.
> > Does it make sense to add another one table with updated addresses
> > for
> > SATP_MODE_SV48?
>
> Well, especially if you mean to support that mode, its layout surely
> wants writing down. I was hoping though that maybe you/we could get
> away
> without multiple tables, but e.g. use one having multiple columns.
I came up with the following but I am not sure that it is really
convient:
/*
* RISC-V64 Layout:
*
#if RV_STAGE1_MODE == SATP_MODE_SV39
*
* From the riscv-privileged doc:
* When mapping between narrower and wider addresses,
* RISC-V zero-extends a narrower physical address to a wider size.
* The mapping between 64-bit virtual addresses and the 39-bit usable
* address space of Sv39 is not based on zero-extension but instead
* follows an entrenched convention that allows an OS to use one or
* a few of the most-significant bits of a full-size (64-bit) virtual
* address to quickly distinguish user and supervisor address
regions.
*
* It means that:
* top VA bits are simply ignored for the purpose of translating to
PA.
#endif
*
* SATP_MODE_SV32 SATP_MODE_SV39 SATP_MODE_SV48
SATP_MODE_SV57
* ----------------------------------------------------------------
-----------
* BA0 | FFFFFFFFFFE00000 | FFFFFFFFC0000000 | FFFFFF8000000000 |
FFFF000000000000
* BA1 | 0000000019000000 | 0000003200000000 | 0000640000000000 |
00C8000000000000
* BA2 | 0000000018800000 | 0000003100000000 | 0000620000000000 |
00C4000000000000
* BA3 | 0000000018400000 | 0000003080000000 | 0000610000000000 |
00C2000000000000
*
*
=======================================================================
=====
* Start addr | End addr | Size | Slot |area
description
*
=======================================================================
=====
* BA0 + 0x800000 | FFFFFFFFFFFFFFFF |1016 MB |
L${HYP_PT_ROOT_LEVEL} 511 | Unused
* BA0 + 0x400000 | BA0 + 0x800000 | 2 MB |
L${HYP_PT_ROOT_LEVEL} 511 | Fixmap
* BA0 + 0x200000 | BA0 + 0x400000 | 4 MB |
L${HYP_PT_ROOT_LEVEL} 511 | FDT
* BA0 | BA0 + 0x200000 | 2 MB |
L${HYP_PT_ROOT_LEVEL} 511 | Xen
* ... | 1 GB |
L${HYP_PT_ROOT_LEVEL} 510 | Unused
* BA1 + 0x000000 | BA1 + 0x4D80000000 | 309 GB |
L${HYP_PT_ROOT_LEVEL} 200-509 | Direct map
* ... | 1 GB |
L${HYP_PT_ROOT_LEVEL} 199 | Unused
* BA2 + 0x000000 | BA2 + 0xC0000000 | 3 GB |
L${HYP_PT_ROOT_LEVEL} 196-198 | Frametable
* ... | 1 GB |
L${HYP_PT_ROOT_LEVEL} 195 | Unused
* BA3 + 0x000000 | BA3 + 0x40000000 | 1 GB |
L${HYP_PT_ROOT_LEVEL} 194 | VMAP
* ... | 194 GB |
L${HYP_PT_ROOT_LEVEL} 0 - 193 | Unused
*
=======================================================================
=====
*/
Do you have better ideas?
Thanks in advamce.
~ Oleksii
>
>
> > Microchip has h/w which requires SATP_MODE_SV48 ( at least ), so I
> > have
> > a patch which introduces SATP_MODE_SV48 and I planned to update the
> > layout table in this patch.
>
>
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |