Hey Tomasz, On Wed, Jul 19, 2023 at 12:33:45PM -0700, Tomasz Jeznach wrote: > The patch introduces skeleton IOMMU device driver implementation as defined > by RISC-V IOMMU Architecture Specification, Version 1.0 [1], with minimal support > for pass-through mapping, basic initialization and bindings for platform and PCIe > hardware implementations. > > Series of patches following specification evolution has been reorganized to provide > functional separation of implemented blocks, compliant with ratified specification. > > This and following patch series includes code contributed by: Nick Kossifidis > (iommu-platform device, number of specification clarification > and bugfixes and readability improvements), Sebastien Boeuf (page > table creation, ATS/PGR flow). > > Complete history can be found at the maintainer's repository branch [2]. > > Device driver enables RISC-V 32/64 support for memory translation for DMA capable > PCI and platform devices, multilevel device directory table, process directory, > shared virtual address support, wired and message signaled interrupt for translation > I/O fault, page request interface and command processing. > > Matching RISCV-V IOMMU device emulation implementation is available for QEMU project, > along with educational device extensions for PASID ATS/PRI support [3]. This commit message reads like a cover letter IMO. At whatever point you send a v2, could you re-write this focusing on what is done in the patch itself? Also, since I am not going to reply to any of these iommu driver patches in a meaningful capacity, please run checkpatch.pl on your work. There are well over 100 style etc complaints that it has highlighted. Sparse has also gone a bit nuts, with many warnings along the lines of: drivers/iommu/riscv/iommu.c:1568:29: warning: incorrect type in assignment (different base types) drivers/iommu/riscv/iommu.c:1568:29: expected unsigned long long [usertype] iohgatp drivers/iommu/riscv/iommu.c:1568:29: got restricted __le64 [usertype] I can provide you the full list when the patchwork automation has run through the series. Anyway, what I wanted to ask was whether it was valid to use the IOMMU in a system if Ziommu is not present in whatever the ISA extension communication mechanism is? Eg, riscv,isa or the ISA string property in the ACPI tables. Thanks, Conor. > References: > - [1] https://github.com/riscv-non-isa/riscv-iommu > - [2] https://github.com/tjeznach/linux/tree/tjeznach/riscv-iommu > - [3] https://github.com/tjeznach/qemu/tree/tjeznach/riscv-iommu FYI, we have the Link: tag/trailer for this.