From nobody Mon Sep 28 13:18:02 2026 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3642376A06 for ; Fri, 21 Aug 2026 11:21:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787311266; cv=none; b=t4Pqz2cGYq8eIReFzQxYsROD+T7aKR7F7XyvVyZLeeQ+McX2FLVCcL2w3F5GEJU807rj35fwg1XWtLijgrIhycPFHyh5+voVEZdfbVOiZpW1QF+1+3lCPs/+IvUReyjFRINwL9MHd6Y2Zg9B4xOZLbBKBECFzh2TdPG+w+LNvO0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787311266; c=relaxed/simple; bh=2Ehhxr5sZt1etqrPz40lBO3pcztuZGvMX3uBN50/GPE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=CZHLMT8KbUiturp2rPIF08vjkKBR/ET4/zblZAyk1r9gQHsjvu0HROaK8/suVCECCT4gr8TRAoufVxB8urJxI41XypwUw6fsBLPJ0qFsbC59X9871OhWwx8mRCOVLv8lQweM9TiouUVgZmPcQJASOPXkhtma65AgAeZ/C4rY+Dc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=Ko5RYagc; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=jGJsjUdZ; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="Ko5RYagc"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="jGJsjUdZ" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 67L9LfOw3029206 for ; Fri, 21 Aug 2026 11:21:04 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=qcppdkim1; bh=5l6M9iiZG4HxQZx3hP6MptgfUIGjm2MZVOi Lw3ukGRs=; b=Ko5RYagcamr0fiRE24YDV9mACZ4Zdm2AG4zoj9AN9YsXNprSvts oqgVhhtXi9wpZop2/8RFRv4/mgH/He2KbRrvwa8ivXaO/6gWhcb024qveT2GsBTz ilRgPKGinggBaqRB22VIOHdAmUAIw1E2QHOPobFBT6OmKDYRxxNgMBD805B/d7FL F0eCjgFL9V8z6Ds+3iFd1cJvCKHVslII4SgSWe78cbAhgp/pGTI1PWENJ7iEoHXO M06JqjSeMQdcA1xwE7dZqInbbl9j84MmoCJCmogLPN4Ktg9aC2avRI47MfDJbGSa DN16eCnLRazRtRFLpf+sDfxURIOHCkQ9NVA== Received: from mail-qk1-f198.google.com (mail-qk1-f198.google.com [209.85.222.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4g6fg9sdnd-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 21 Aug 2026 11:21:03 +0000 (GMT) Received: by mail-qk1-f198.google.com with SMTP id af79cd13be357-936e393061dso74051285a.2 for ; Fri, 21 Aug 2026 04:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1787311263; x=1787916063; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=5l6M9iiZG4HxQZx3hP6MptgfUIGjm2MZVOiLw3ukGRs=; b=jGJsjUdZi3T3Zg/SaVhin5ojqfj3F+GQORKax01Ue0lzpUSSxrZZ5YJ6EFh2y6/fR4 ChsUmUxc/CVNQAQhF2Lf3P6inZN0mzlvP4fp/UBogf08iBZ+SoXS8TprUR+4mwfzFlo/ 8Tbq9FyBgqUqFgihr0CXxEZICfZUZq4GtpfWDA98WrPC6mMOfpNAHd3DTv66q3HObNmj 2k/5Bu6NBglnnI9JwHJadrXzcupq08TqbFwMNdYx1zQnua/c4+LtPwmd404CsTywN3as Ldnhn2BE+LwuFqkHsaS0Smxwg+bbOyGTFxfszGlCgGy22YF0ur1IlRjYYq26dz8BB/hq qb1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787311263; x=1787916063; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5l6M9iiZG4HxQZx3hP6MptgfUIGjm2MZVOiLw3ukGRs=; b=QbwPaK30Bf5RRgO/QK82ec913h884MOkcMq9hCWjuL93Ju+26U/5l+zlN9cfH+y6l6 3gA19+ZiTsESPZAl5d/N87An2XNyDpBIbeXK+659U/9y7iE71Uug7bKYwsbwPLOFWm9L zEbha3qiO6WGCLNcltSNMlbZNMBr6a/w6IXUI1mjD5KmUzNGsfcKxlj/pozQQuUi+/nE b911enTCyhSjA9yJKs8dTgJ90fh4Vc60741KOk8Y4SOTtSvBZK6BDsjyPisDR6TGf5Rv NpZuB+zagpecJCuujF/Mm6bKdB26wLhP+98/I+1lLIvkMQKOU8+U5RZZA2DZex13PYWi D9eg== X-Forwarded-Encrypted: i=1; AHgh+RoN+zJ++kq4k1LI56xyrVyL5JTW8zYbvezhzMXXQzobVmtfnYwCWH0qOdIHAQ6q/jiNfCLyCRGXTA2VQeM=@vger.kernel.org X-Gm-Message-State: AOJu0Yxbo+NU6wjvGZYkBMNxnB5r/Kfwo6fCsI680wyL0qe6/kFZxE8T bGh9M7I0B3fsC+sHj5ANkLEo9ncfa1ChAVUUv59XrFH8rVnBu7fPEVsLc0YtGXB/aB5KdiH8k+H EmEyNx68JrgApYj0bh1WUEvB5DEMLlnQaJZfEUpQaruMlVzBfntr8XSmeT+gOU5wJyY0= X-Gm-Gg: AR+sD11loIFwuqvPsTFHz6Y2B6a2edm3U19KBEzNVmoSSWSqzPvnTwdOJYSCKjgbhsv 2TLnd4BkT8gQOtAtTKMQJjdhYhs7gN+nHmmfk2nK2VzZO0fUhBTbhMrPFFm73Y8UgEZamc0ujOA g/nmG5auiijrgWolS+Ak/Jdzgak2IkgiWehrQ7szv8omiQRUJKeCzrmgqQ/0Ib0HiX6vqewTxNR 2KGrbifSWHre870qBVHH17zq+pKrGMkBJh4+v3xpXL4/20lC3kPMjQJ18VTkedDllLFD5GxJphh lfKa27abVUf9Qkq/FWjhQVTJycIofXLQj80UWfIHXufrj4uqJHfm5Kmr43io1dnuNSz0zeZ3MAz ERC82bs66W7ZrfWFeYfwtUBlSZjrZzAsEqfE= X-Received: by 2002:a05:620a:2b8e:b0:92e:f372:7b5b with SMTP id af79cd13be357-9373942f05bmr482727285a.10.1787311262843; Fri, 21 Aug 2026 04:21:02 -0700 (PDT) X-Received: by 2002:a05:620a:2b8e:b0:92e:f372:7b5b with SMTP id af79cd13be357-9373942f05bmr482721685a.10.1787311262450; Fri, 21 Aug 2026 04:21:02 -0700 (PDT) Received: from localhost (ip-86-49-251-7.bb.vodafone.cz. [86.49.251.7]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-499b9b81602sm15837745e9.3.2026.08.21.04.21.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2026 04:21:01 -0700 (PDT) From: Andrew Jones To: iommu@lists.linux.dev, linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: jgg@nvidia.com, tomasz.jeznach@linux.dev, joro@8bytes.org, will@kernel.org, robin.murphy@arm.com, pjw@kernel.org, palmer@dabbelt.com Subject: [PATCH] iommu/riscv: Report cache coherency capability Date: Fri, 21 Aug 2026 13:21:00 +0200 Message-ID: <20260821112100.572037-1-andrew.jones@oss.qualcomm.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwODIxMDA4NSBTYWx0ZWRfX/hCoZZRg8aLt QL6BSU+2fWFlKDRYOk5lklHH4QcKR/pbjSgcjUEBBexb5EooJrb8UuaHtWys+5KuB4qZmrg5VvZ FyJQjqUpseWJV0H+QMYbbNFBBj1dICJCHQKVZr9GrxsrwGqn4OyyP1hXq9v/7cTrUGThWMf28zD l8TEhGxGD5587OoEyStEs8VrfFn47/RiYpTPSai6p34eeB4IQdm7Nmb2R22Rvb2BlihQDrI9Jmd P0HfKGyH4ZNGCDYEmJ4ZdrgdWurapjHbSKuV3dba2cKyX3SnqzCo30PMnN6nq1+lDfh+PffN4SY kXdasJl9iQMjkxncQgwsY3mJIPWDGJqp4PaqHuaLv8IhTNwH+CmxD0F2SaS7APVtQQfjEtkhQNB b/fIimOQ3usfirLHM5QHmSgn5JnwJTVSSNxi/Av1NycW9QBp/E9tKxUVP6HMmffr1PKY5L5+h39 mCHVvDEW5oj+JYT80ZQ== X-Proofpoint-ORIG-GUID: IV_LMCQ3B2cNFYx7zs_xcNhW1NR4CQcT X-Proofpoint-Spam-Info: AW1haW4tMjYwODIxMDA4NSBTYWx0ZWRfXwMu8xcderVrm x5vSZ2n1YWLsEkXSzVpOVKxO2OtWTmxxV3SU+1Z6cwH5uihtHvMs2Sp4pgYVDc+pZlOJFm994hC 0qt/BPm+P0/pCmp13+bBa52mJcQsqOw= X-Authority-Analysis: v=2.4 cv=Av/eGu9P c=1 sm=1 tr=0 ts=6a88349f cx=c_pps a=qKBjSQ1v91RyAK45QCPf5w==:117 a=on9AXyaqQ0RhfYpiXjjEXA==:17 a=Sv0fKeRqtYgA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=Ikd4Dj_1AAAA:8 a=ITBYzW_wA1tX7bdzKc4A:9 a=NFOGd7dJGGMPyQGDc5-O:22 X-Proofpoint-GUID: IV_LMCQ3B2cNFYx7zs_xcNhW1NR4CQcT X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1176,Hydra:6.1.134,FMLib:17.12.100.49 definitions=2026-08-21_03,2026-08-21_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 phishscore=0 lowpriorityscore=0 suspectscore=0 spamscore=0 clxscore=1015 bulkscore=0 priorityscore=1501 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2606150000 definitions=main-2608210085 Content-Type: text/plain; charset="utf-8" VFIO and iommufd require IOMMU_CAP_CACHE_COHERENCY because they use IOMMU_CACHE mappings and have no userspace cache-maintenance path. RISC-V page tables preserve physical memory attributes for IOMMU_CACHE mappings. Svpbmt marks mappings without IOMMU_CACHE as non-cacheable, but preserving physical attributes cannot make a noncoherent device path coherent. Report the capability only for devices marked DMA coherent. This limits userspace assignment to paths that can honor cacheable mappings. Signed-off-by: Andrew Jones Reviewed-by: Jason Gunthorpe --- 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 22cccc69bd2c..161093b1d9c5 100644 --- a/drivers/iommu/riscv/iommu.c +++ b/drivers/iommu/riscv/iommu.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -1429,6 +1430,16 @@ static struct iommu_group *riscv_iommu_device_group(= struct device *dev) return generic_device_group(dev); } =20 +static bool riscv_iommu_capable(struct device *dev, enum iommu_cap cap) +{ + switch (cap) { + case IOMMU_CAP_CACHE_COHERENCY: + return dev_is_dma_coherent(dev); + default: + return false; + } +} + static int riscv_iommu_of_xlate(struct device *dev, const struct of_phandl= e_args *args) { return iommu_fwspec_add_ids(dev, args->args, 1); @@ -1520,6 +1531,7 @@ static void riscv_iommu_get_resv_regions(struct devic= e *dev, struct list_head *h =20 static const struct iommu_ops riscv_iommu_ops =3D { .of_xlate =3D riscv_iommu_of_xlate, + .capable =3D riscv_iommu_capable, .identity_domain =3D &riscv_iommu_identity_domain, .blocked_domain =3D &riscv_iommu_blocking_domain, .release_domain =3D &riscv_iommu_blocking_domain, --=20 2.43.0