In this patch series are introduced necessary functions to build and manage
RISC-V guest page tables and MMIO/RAM mappings.
---
Changes in V5:
- Addressed comments for v4.
- The following patches were Acked-by:
- [v5 16/18] xen/riscv: implement mfn_valid() and page
- [v5 15/18] xen/riscv: implement put_page()
- [v5 14/18] xen/riscv: Implement superpage splitting for p2m mappings
- [v5 09/18] xen/riscv: implement function to map memory in guest p2m
- [v5 07/18] xen/riscv: add new p2m types and helper macros for type classification
- [v5 03/18] xen/riscv: introduce things necessary for p2m initialization
---
Changes in V4:
- Merged to staging:
- xen/riscv: introduce sbi_remote_hfence_gvma()
- xen/riscv: introduce sbi_remote_hfence_gvma_vmid()
- Drop "xen/riscv: introduce page_{get,set}_xenheap_gfn()" as grant tables aren't going to be introduced for the moment. Also, drops other parts connected to grant tables support.
- All other changes are patch specific.
---
Changes in V3:
- Introduce metadata table to store P2M types.
- Use x86's way to allocate VMID.
- Abstract Arm-specific p2m type name for device MMIO mappings.
- All other updates please look at specific patch.
---
Changes in V2:
- Merged to staging:
- [PATCH v1 1/6] xen/riscv: add inclusion of xen/bitops.h to asm/cmpxchg.h
- New patches:
- xen/riscv: implement sbi_remote_hfence_gvma{_vmid}().
- Split patch "xen/riscv: implement p2m mapping functionality" into smaller
one patches:
- xen/riscv: introduce page_set_xenheap_gfn()
- xen/riscv: implement guest_physmap_add_entry() for mapping GFNs to MFNs
- xen/riscv: implement p2m_set_entry() and __p2m_set_entry()
- xen/riscv: Implement p2m_free_entry() and related helpers
- xen/riscv: Implement superpage splitting for p2m mappings
- xen/riscv: implement p2m_next_level()
- xen/riscv: Implement p2m_entry_from_mfn() and support PBMT configuration
- Move root p2m table allocation to separate patch:
xen/riscv: add root page table allocation
- Drop dependency of this patch series from the patch witn an introduction of
SvPBMT as it was merged.
- Patch "[PATCH v1 4/6] xen/riscv: define pt_t and pt_walk_t structures" was
renamed to xen/riscv: introduce pte_{set,get}_mfn() as after dropping of
bitfields for PTE structure, this patch introduce only pte_{set,get}_mfn().
- Rename "xen/riscv: define pt_t and pt_walk_t structures" to
"xen/riscv: introduce pte_{set,get}_mfn()" as pt_t and pt_walk_t were
dropped.
- Introduce guest domain's VMID allocation and manegement.
- Add patches necessary to implement p2m lookup:
- xen/riscv: implement mfn_valid() and page reference, ownership handling helpers
- xen/riscv: add support of page lookup by GFN
- Re-sort patch series.
- All other changes are patch-specific. Please check them.
---
Oleksii Kurochko (18):
xen/riscv: detect and initialize G-stage mode
xen/riscv: introduce VMID allocation and manegement
xen/riscv: introduce things necessary for p2m initialization
xen/riscv: construct the P2M pages pool for guests
xen/riscv: add root page table allocation
xen/riscv: introduce pte_{set,get}_mfn()
xen/riscv: add new p2m types and helper macros for type classification
xen/dom0less: abstract Arm-specific p2m type name for device MMIO
mappings
xen/riscv: implement function to map memory in guest p2m
xen/riscv: implement p2m_set_range()
xen/riscv: Implement p2m_free_subtree() and related helpers
xen/riscv: Implement p2m_pte_from_mfn() and support PBMT configuration
xen/riscv: implement p2m_next_level()
xen/riscv: Implement superpage splitting for p2m mappings
xen/riscv: implement put_page()
xen/riscv: implement mfn_valid() and page reference, ownership
handling helpers
xen/riscv: add support of page lookup by GFN
xen/riscv: introduce metadata table to store P2M type
xen/arch/arm/include/asm/p2m.h | 5 +
xen/arch/riscv/Makefile | 3 +
xen/arch/riscv/cpufeature.c | 1 +
xen/arch/riscv/include/asm/Makefile | 1 -
xen/arch/riscv/include/asm/cpufeature.h | 1 +
xen/arch/riscv/include/asm/domain.h | 23 +
xen/arch/riscv/include/asm/flushtlb.h | 13 +-
xen/arch/riscv/include/asm/mm.h | 29 +-
xen/arch/riscv/include/asm/p2m.h | 182 ++-
xen/arch/riscv/include/asm/page.h | 37 +
xen/arch/riscv/include/asm/paging.h | 20 +
xen/arch/riscv/include/asm/riscv_encoding.h | 7 +
xen/arch/riscv/include/asm/vmid.h | 14 +
xen/arch/riscv/mm.c | 69 +-
xen/arch/riscv/p2m.c | 1381 +++++++++++++++++++
xen/arch/riscv/paging.c | 139 ++
xen/arch/riscv/setup.c | 3 +
xen/arch/riscv/stubs.c | 5 -
xen/arch/riscv/vmid.c | 193 +++
xen/common/device-tree/dom0less-build.c | 2 +-
20 files changed, 2103 insertions(+), 25 deletions(-)
create mode 100644 xen/arch/riscv/include/asm/paging.h
create mode 100644 xen/arch/riscv/include/asm/vmid.h
create mode 100644 xen/arch/riscv/p2m.c
create mode 100644 xen/arch/riscv/paging.c
create mode 100644 xen/arch/riscv/vmid.c
--
2.51.0