Hello Bobby and Alistair,
Some patches of the current patch series were merged, but some still
require your Ack-by/Reviewed-by.
Could you please look at the following patches:
1. [PATCH v2 3/6] xen/riscv: introduce function for physical offset
calculation
2. [PATCH v2 4/6] xen/riscv: introduce identity mapping
Thank you so much for your attention and participation.
~ Oleksii
On Mon, 2023-06-19 at 16:34 +0300, Oleksii Kurochko wrote:
> The patch series introduces things necessary to implement identity
> mapping:
> 1. Make identity mapping for the entire Xen.
> 2. Enable MMU.
> 3. Jump to the virtual address world
> 4. Remove identity mapping.
>
> 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.
> * 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/
>
> ---
> Changes in V2:
> - update the patch series message.
> - drop patches from the previous version of the patch series:
> * xen/riscv: add __ASSEMBLY__ guards". ( merged )
> * xen/riscv: make sure that identity mapping isn't bigger then
> page size
> ( entire Xen is 1:1 mapped so there is no need for the checks
> from the patch )
> - add .sbss.* and put it befor .bss* .
> - move out reset_stack() to .text section.
> - add '__ro_after_init' for phys_offset variable.
> - add '__init' for calc_phys_offset().
> - declaring variable phys_off as non static as it will be used in
> head.S.
> - update definition of PGTBL_INITIAL_COUNT and the comment above.
> - code style fixes.
> - remove id_addrs array becase entire Xen is mapped.
> - reverse condition for cycle inside remove_identity_mapping().
> - fix page table walk in remove_identity_mapping().
> - save hart_id and dtb_addr before call MMU related C functions
> - use phys_offset variable instead of doing calcultations to get
> phys offset
> in head.S file. ( it can be easily done as entire Xen is 1:1
> mapped now )
> - declare enable_muu() as __init.
> - Update SPDX tags.
> - Add Review-By/Suggested-By for some patches.
> - code style fixes.
>
> Oleksii Kurochko (6):
> 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: 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 | 2 +
> xen/arch/riscv/include/asm/traps.h | 2 +
> xen/arch/riscv/include/asm/types.h | 2 +
> xen/arch/riscv/mm.c | 104 +++++++++++++-------
> --
> xen/arch/riscv/riscv64/head.S | 46 +++++++++-
> xen/arch/riscv/setup.c | 16 +---
> xen/arch/riscv/xen.lds.S | 2 +-
> 12 files changed, 136 insertions(+), 55 deletions(-)
>