Due to changing the referenced specification version, this patch has changed a lot in this version.
This series implements basic functions of IOPMP specification v0.9.1 rapid-k model. The specification url: https://github.com/riscv-non-isa/iopmp-spec/releases/tag/v0.9.1 When IOPMP is enabled, memory access from devices will check by IOPMP. CPU as an IOPMP requestor has not been implemented because the IOTLB does not support recording sections outside the current CPU address space. Changes for v7: - Change the specification version to v0.9.1 - Remove the sps extension - Remove stall support, transaction information which need requestor device support. - Remove iopmp_cascade option for virt machine - Refine 'addr' range checks switch case (Daniel) Ethan Chen (2): hw/misc/riscv_iopmp: Add RISC-V IOPMP device hw/riscv/virt: Add IOPMP support docs/system/riscv/virt.rst | 6 + hw/misc/Kconfig | 3 + hw/misc/meson.build | 1 + hw/misc/riscv_iopmp.c | 1002 +++++++++++++++++++++++++++++++++ hw/misc/trace-events | 4 + hw/riscv/Kconfig | 1 + hw/riscv/virt.c | 57 +- include/hw/misc/riscv_iopmp.h | 152 +++++ include/hw/riscv/virt.h | 5 +- 9 files changed, 1228 insertions(+), 3 deletions(-) create mode 100644 hw/misc/riscv_iopmp.c create mode 100644 include/hw/misc/riscv_iopmp.h -- 2.34.1