[PATCH v3 15/19] iommu/riscv: report iommu capabilities
Andrew Jones
andrew.jones at oss.qualcomm.com
Fri Aug 7 11:17:09 PDT 2026
From: Tomasz Jeznach <tjeznach at rivosinc.com>
Report RISC-V IOMMU capability required by the VFIO subsystem
to enable PCIe device assignment.
Signed-off-by: Tomasz Jeznach <tjeznach at rivosinc.com>
Signed-off-by: Andrew Jones <andrew.jones at oss.qualcomm.com>
Reviewed-by: Nutty Liu <nutty.liu at hotmail.com>
---
drivers/iommu/riscv/iommu.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/drivers/iommu/riscv/iommu.c b/drivers/iommu/riscv/iommu.c
index f40db2cda417..a286f5a24c16 100644
--- a/drivers/iommu/riscv/iommu.c
+++ b/drivers/iommu/riscv/iommu.c
@@ -1424,6 +1424,17 @@ static struct iommu_group *riscv_iommu_device_group(struct device *dev)
return generic_device_group(dev);
}
+static bool riscv_iommu_capable(struct device *dev, enum iommu_cap cap)
+{
+ switch (cap) {
+ case IOMMU_CAP_CACHE_COHERENCY:
+ /* The RISC-V IOMMU is always DMA cache coherent. */
+ return true;
+ default:
+ return false;
+ }
+}
+
static int riscv_iommu_of_xlate(struct device *dev, const struct of_phandle_args *args)
{
return iommu_fwspec_add_ids(dev, args->args, 1);
@@ -1516,6 +1527,7 @@ static void riscv_iommu_get_resv_regions(struct device *dev, struct list_head *h
static const struct iommu_ops riscv_iommu_ops = {
.of_xlate = riscv_iommu_of_xlate,
+ .capable = riscv_iommu_capable,
.identity_domain = &riscv_iommu_identity_domain,
.blocked_domain = &riscv_iommu_blocking_domain,
.release_domain = &riscv_iommu_blocking_domain,
--
2.43.0
More information about the linux-riscv
mailing list