mbox series

[v1,0/8] xen/riscv: introduce identity mapping

Message ID cover.1686080337.git.oleksii.kurochko@gmail.com (mailing list archive)
Headers show
Series xen/riscv: introduce identity mapping | expand

Message

Oleksii Kurochko June 6, 2023, 7:55 p.m. UTC
The patch series introduces things necessary to implement identity mapping:
  1. Make identity mapping for _start and stack.
  2. Enable MMU.
  3. Jump to the virtual address world
  4. Remove identity mapping for _start and stack.

Also current patch series introduces the calculation of physical offset before
MMU is enabled as access to physical offset will be calculated wrong after
MMU will be enabled because access to phys_off variable is PC-relative and
in the case when linker address != load address, it will cause MMU fault.

One more thing that was done is:
  * Added SPDX tags.
  * Added __ASSEMBLY__ guards.
  * move extern of cpu0_boot_stack to a header.

The reason for this patch series can be found here:
https://lore.kernel.org/xen-devel/4e336121-fc0c-b007-bf7b-430352563d55@citrix.com/

Oleksii Kurochko (8):
  xen/riscv: make sure that identity mapping isn't bigger then page size
  xen/riscv: add .sbss section to .bss
  xen/riscv: introduce reset_stack() function
  xen/riscv: introduce function for physical offset calculation
  xen/riscv: introduce identity mapping
  xen/riscv: add SPDX tags
  xen/riscv: add __ASSEMBLY__ guards
  xen/riscv: move extern of cpu0_boot_stack to header

 xen/arch/riscv/include/asm/config.h       |   2 +
 xen/arch/riscv/include/asm/current.h      |   2 +
 xen/arch/riscv/include/asm/early_printk.h |   2 +
 xen/arch/riscv/include/asm/mm.h           |   9 +-
 xen/arch/riscv/include/asm/page-bits.h    |   2 +
 xen/arch/riscv/include/asm/page.h         |   6 ++
 xen/arch/riscv/include/asm/traps.h        |   2 +
 xen/arch/riscv/include/asm/types.h        |   2 +
 xen/arch/riscv/mm.c                       | 119 +++++++++++++++-------
 xen/arch/riscv/riscv64/head.S             |  40 +++++++-
 xen/arch/riscv/setup.c                    |  16 +--
 xen/arch/riscv/xen.lds.S                  |  11 +-
 12 files changed, 160 insertions(+), 53 deletions(-)

Comments

Jan Beulich June 7, 2023, 7:49 a.m. UTC | #1
On 06.06.2023 21:55, Oleksii Kurochko wrote:
> The patch series introduces things necessary to implement identity mapping:
>   1. Make identity mapping for _start and stack.
>   2. Enable MMU.
>   3. Jump to the virtual address world
>   4. Remove identity mapping for _start and stack.
> 
> Also current patch series introduces the calculation of physical offset before
> MMU is enabled as access to physical offset will be calculated wrong after
> MMU will be enabled because access to phys_off variable is PC-relative and
> in the case when linker address != load address, it will cause MMU fault.
> 
> One more thing that was done is:
>   * Added SPDX tags.
>   * Added __ASSEMBLY__ guards.

These are are, aiui, a response to a comment from Andrew. Hence I think
this wants expressing by a {Requested,Suggested,Reported}-by: tag in the
respective patch.

Jan

>   * move extern of cpu0_boot_stack to a header.
> 
> The reason for this patch series can be found here:
> https://lore.kernel.org/xen-devel/4e336121-fc0c-b007-bf7b-430352563d55@citrix.com/
> 
> Oleksii Kurochko (8):
>   xen/riscv: make sure that identity mapping isn't bigger then page size
>   xen/riscv: add .sbss section to .bss
>   xen/riscv: introduce reset_stack() function
>   xen/riscv: introduce function for physical offset calculation
>   xen/riscv: introduce identity mapping
>   xen/riscv: add SPDX tags
>   xen/riscv: add __ASSEMBLY__ guards
>   xen/riscv: move extern of cpu0_boot_stack to header
> 
>  xen/arch/riscv/include/asm/config.h       |   2 +
>  xen/arch/riscv/include/asm/current.h      |   2 +
>  xen/arch/riscv/include/asm/early_printk.h |   2 +
>  xen/arch/riscv/include/asm/mm.h           |   9 +-
>  xen/arch/riscv/include/asm/page-bits.h    |   2 +
>  xen/arch/riscv/include/asm/page.h         |   6 ++
>  xen/arch/riscv/include/asm/traps.h        |   2 +
>  xen/arch/riscv/include/asm/types.h        |   2 +
>  xen/arch/riscv/mm.c                       | 119 +++++++++++++++-------
>  xen/arch/riscv/riscv64/head.S             |  40 +++++++-
>  xen/arch/riscv/setup.c                    |  16 +--
>  xen/arch/riscv/xen.lds.S                  |  11 +-
>  12 files changed, 160 insertions(+), 53 deletions(-)
>
Oleksii Kurochko June 7, 2023, 10:15 a.m. UTC | #2
On Wed, 2023-06-07 at 09:49 +0200, Jan Beulich wrote:
> On 06.06.2023 21:55, Oleksii Kurochko wrote:
> > The patch series introduces things necessary to implement identity
> > mapping:
> >   1. Make identity mapping for _start and stack.
> >   2. Enable MMU.
> >   3. Jump to the virtual address world
> >   4. Remove identity mapping for _start and stack.
> > 
> > Also current patch series introduces the calculation of physical
> > offset before
> > MMU is enabled as access to physical offset will be calculated
> > wrong after
> > MMU will be enabled because access to phys_off variable is PC-
> > relative and
> > in the case when linker address != load address, it will cause MMU
> > fault.
> > 
> > One more thing that was done is:
> >   * Added SPDX tags.
> >   * Added __ASSEMBLY__ guards.
> 
> These are are, aiui, a response to a comment from Andrew. Hence I
> think
> this wants expressing by a {Requested,Suggested,Reported}-by: tag in
> the
> respective patch.
Thanks for a remark.

~ Oleksii

> >   * move extern of cpu0_boot_stack to a header.
> > 
> > The reason for this patch series can be found here:
> > https://lore.kernel.org/xen-devel/4e336121-fc0c-b007-bf7b-430352563d55@citrix.com/
> > 
> > Oleksii Kurochko (8):
> >   xen/riscv: make sure that identity mapping isn't bigger then page
> > size
> >   xen/riscv: add .sbss section to .bss
> >   xen/riscv: introduce reset_stack() function
> >   xen/riscv: introduce function for physical offset calculation
> >   xen/riscv: introduce identity mapping
> >   xen/riscv: add SPDX tags
> >   xen/riscv: add __ASSEMBLY__ guards
> >   xen/riscv: move extern of cpu0_boot_stack to header
> > 
> >  xen/arch/riscv/include/asm/config.h       |   2 +
> >  xen/arch/riscv/include/asm/current.h      |   2 +
> >  xen/arch/riscv/include/asm/early_printk.h |   2 +
> >  xen/arch/riscv/include/asm/mm.h           |   9 +-
> >  xen/arch/riscv/include/asm/page-bits.h    |   2 +
> >  xen/arch/riscv/include/asm/page.h         |   6 ++
> >  xen/arch/riscv/include/asm/traps.h        |   2 +
> >  xen/arch/riscv/include/asm/types.h        |   2 +
> >  xen/arch/riscv/mm.c                       | 119 +++++++++++++++---
> > ----
> >  xen/arch/riscv/riscv64/head.S             |  40 +++++++-
> >  xen/arch/riscv/setup.c                    |  16 +--
> >  xen/arch/riscv/xen.lds.S                  |  11 +-
> >  12 files changed, 160 insertions(+), 53 deletions(-)
> > 
>