mbox series

[RFC,0/4] Proof of concept for rv32 svpbmt support

Message ID 20220705100523.1204595-1-guoren@kernel.org (mailing list archive)
Headers show
Series Proof of concept for rv32 svpbmt support | expand

Message

Guo Ren July 5, 2022, 10:05 a.m. UTC
From: Guo Ren <guoren@linux.alibaba.com>

Make rv32 support svpbmt & napot by reducing the PPN witdth (sv32p34 ->
sv32p31).

RISC-V 32bit also requires svpbmt in cost-down chip embedded scenarios,
and their RAM is limited (No more than 1GB). It is worth mentioning that
rv32-Linux currently only supports 1GB of DRAM, and there is no plan for
high-memory. So, there seems to be no obstacle to shrinking the physical
address space of the rv32 from 16GB to 2GB. We recommend that ISA
consider sv32p31 as the recommended configuration for the software
ecosystem instead of sv32p34. Then we could merge rv64 & rv32 into one
PTE format:

| XLEN-1 | XLEN-2 XLEN-3 | XLEN-4 10 | 9             8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
  N        MT[2]           RSV & PFN   reserved for SW   D   A   G   U   X   W   R   V

We've finished the Linux Proof of concept of the proposal, which contains
three parts:
 - Qemu rv32 svpbmt & napot support & hw/virt memory layout of 1GB IO
   range [1]
 - Linux rv32 sv32p31 & svpbmt support
 - Opensbi needs to compile with FW_TEXT_START=0x40000000

[1] https://github.com/guoren83/qemu/tree/rv32svpbmt

Guo Ren (4):
  riscv: Optimize satp_mode data type
  riscv: Cleanup ERRATA_THEAD_PBMT for rv32 svpbmt compile
  riscv: pgtable: Move svpbmt into the common pgtable-bits.h
  riscv: Change rv32p34 to rv32p31 for svpbmt

 arch/riscv/Kconfig                    |  2 +-
 arch/riscv/include/asm/errata_list.h  | 11 +++++-
 arch/riscv/include/asm/pgtable-32.h   | 20 +---------
 arch/riscv/include/asm/pgtable-64.h   | 55 ---------------------------
 arch/riscv/include/asm/pgtable-bits.h | 53 ++++++++++++++++++++++++++
 arch/riscv/include/asm/pgtable.h      |  7 +++-
 arch/riscv/mm/init.c                  |  4 +-
 7 files changed, 74 insertions(+), 78 deletions(-)

Comments

Christoph Hellwig July 5, 2022, 5:22 p.m. UTC | #1
On Tue, Jul 05, 2022 at 06:05:19AM -0400, guoren@kernel.org wrote:
> From: Guo Ren <guoren@linux.alibaba.com>
> 
> Make rv32 support svpbmt & napot by reducing the PPN witdth (sv32p34 ->
> sv32p31).

Yeah, the lack of rv32 in svpbmt was a very odd choice, given that
non-coherent DMA is most common in crappy low end devices.