[PATCH 0/5] Convert riscv to use the generic iommu page table
Jason Gunthorpe
jgg at nvidia.com
Tue Nov 4 11:00:39 PST 2025
[ It looks like the precursor series will be merged, along with VTD. If
someone from riscv can test and review this it can likely go this cycle
too. I couldn't even slightly test it. ]
This is a fairly straightforward conversion of the RISC-V iommu driver to
use the generic iommu page table code.
It brings support for SVNAPOT which is a 64K contiguous page. Otherwise
it should not change the behavior.
The series disables SADE as the dirty tracking support is not implemented
in the driver and should be done somewhat differently. The generic code
gets further along though this does not include the format implementation
of read and clear dirty.
The format implementation should be able to support the 32 bit option, but
this does not enable the iommu implementation as there seems to be no user
today.
It looks like RISCV could support the DYNAMIC_TOP option. It would require
some additional work on the core side to interact safely with SIGN_EXTEND.
This is on github: https://github.com/jgunthorpe/linux/commits/iommu_pt_riscv
Jason Gunthorpe (5):
iommupt: Add the RISC-V page table format
iommu/riscv: Disable SADE
iommu/riscv: Use the generic iommu page table
iommu/riscv: Enable SVNAPOT support for contiguous ptes
iommu/riscv: Allow RISC_VIOMMU to COMPILE_TEST
drivers/iommu/generic_pt/.kunitconfig | 1 +
drivers/iommu/generic_pt/Kconfig | 11 +
drivers/iommu/generic_pt/fmt/Makefile | 2 +
drivers/iommu/generic_pt/fmt/defs_riscv.h | 29 ++
drivers/iommu/generic_pt/fmt/iommu_riscv64.c | 11 +
drivers/iommu/generic_pt/fmt/riscv.h | 313 +++++++++++++++++++
drivers/iommu/riscv/Kconfig | 8 +-
drivers/iommu/riscv/iommu-bits.h | 4 +-
drivers/iommu/riscv/iommu.c | 302 +++---------------
include/linux/generic_pt/common.h | 15 +
include/linux/generic_pt/iommu.h | 11 +
11 files changed, 446 insertions(+), 261 deletions(-)
create mode 100644 drivers/iommu/generic_pt/fmt/defs_riscv.h
create mode 100644 drivers/iommu/generic_pt/fmt/iommu_riscv64.c
create mode 100644 drivers/iommu/generic_pt/fmt/riscv.h
base-commit: 8c955dfc1d4934202c404591e6f7d1b45fd83d96
--
2.43.0
More information about the linux-riscv
mailing list