[PATCH 0/5] xen/riscv: fix boot on missing extensions and MMU setup bugs

Baptiste Le Duc posted 5 patches 6 days, 14 hours ago
xen/arch/riscv/cpufeature.c       |  2 -
xen/arch/riscv/include/asm/page.h | 22 ++++++----
xen/arch/riscv/mm.c               |  7 ++-
xen/arch/riscv/p2m.c              | 72 ++++++++++++++++++-------------
xen/arch/riscv/riscv64/head.S     |  1 +
5 files changed, 61 insertions(+), 43 deletions(-)
[PATCH 0/5] xen/riscv: fix boot on missing extensions and MMU setup bugs
Posted by Baptiste Le Duc 6 days, 14 hours ago
This series introduces bugs fixes that were found while bringing up CI
support for the HiFive Premier P550 board with a basic smoke test. The
board-support series itself will follow separately as it depends on
PLIC/vPLIC and dom0less support that have not been upstreamed yet. This
series carries only the independent fixes found along the way, none of them
need the board-support series to apply.

This series:
- Stop requiring Zihintpause and Svpbmt at boot
    Both are already gated at some call sites that care, drop them
    from required_extensions[] so hardware without them still boots.
- Preset A/D bits in G-stage and in Xen's own page-table mappings
    Avoids an unhandled page fault on Svade/Svadu-less hardware on both
    mapping path.
- Add the missing SFENCE.VMA after enabling paging in turn_on_mmu()
  Required per the Privileged spec when ASID 0 is reused across the satp

CI pipeline:
https://gitlab.com/xen-project/people/baptleduc/xen/-/pipelines/2796673417

Baptiste Le Duc (5):
  xen/riscv: always set A/D bits at boot time
  xen/riscv: preset A/D bits in Xen's own page-table mappings
  xen/riscv: make Svpbmt no longer a required extension
  xen/riscv: make Zihintpause no longer a required extension
  xen/riscv: add SFENCE.VMA after enabling paging

 xen/arch/riscv/cpufeature.c       |  2 -
 xen/arch/riscv/include/asm/page.h | 22 ++++++----
 xen/arch/riscv/mm.c               |  7 ++-
 xen/arch/riscv/p2m.c              | 72 ++++++++++++++++++-------------
 xen/arch/riscv/riscv64/head.S     |  1 +
 5 files changed, 61 insertions(+), 43 deletions(-)