From nobody Mon Jun 8 08:30:34 2026 Received: from out30-101.freemail.mail.aliyun.com (out30-101.freemail.mail.aliyun.com [115.124.30.101]) (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 1A0663AFD17; Tue, 2 Jun 2026 10:46:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.101 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397215; cv=none; b=ML6VJoeDqu6/KzicHcz1I/KHFUYGxakek/ifW3jZ/0BVWPp9kz+U4f11gv25jmSxcWvFLfI1AZ0ERq1Onm8ufXi/C1+BgwpzIRO//RKhJZcTvNxJzm/ZVA06Fvy8+PJR8SgnhDlFb8VER8wLORV0MrSx8+AMiwq+IfDXguK2kU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397215; c=relaxed/simple; bh=m+bZcTdvgDzPvchrK1/J/VO8YA/JQIElabuc1D09npI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OriLrzdKzMuu/sB0c+eMfppYZTXx50TnxKSMMCtQDs+mIo4+GcQzGmR7WIIaskXFJcE9xK8zQZsQtpCpf0CuGys+Q6Ni2ONbDXAhoMS81ITJHECOR7DFnDXK45SGNouUuqH+fxbN/oBPKxiAjYozoP3xkY6MwNEnp0Dubcf7HvA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=Zhc3I6k1; arc=none smtp.client-ip=115.124.30.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="Zhc3I6k1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397210; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=dfeUzwK3Vykd8PqKTRs5NqT5hfv04UcKedfq7xRHrho=; b=Zhc3I6k1G1qYUubrjaXnRwc2ccnHu74wNNoHbxHVQaLLSlq4y00GSJlnvzhlJG/zyu0MWZAnefOH+qWnpOn8SY5a/XNzw88HmpaxKf7u4Xq/PCxoxaBV1S1kmJ1hBksVAfzkdKuPPvSHLE81Wt8Xajt4C+IcKkn98j2hHouXVBs= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E923_1780397207; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E923_1780397207 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:48 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 01/30] iommu: introduce iova_to_phys_length in iommu_domain_ops Date: Tue, 2 Jun 2026 18:46:08 +0800 Message-ID: <20260602104637.1219810-2-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Add iova_to_phys_length callback to struct iommu_domain_ops alongside the existing iova_to_phys. The new callback returns both the physical address and the PTE mapping page size in a single page table walk. Add iommu_iova_to_phys_length() core function that: - Checks ops->iova_to_phys_length first (preferred path) - Falls back to ops->iova_to_phys for unmigrated drivers This enables callers like VFIO to efficiently traverse IOVA space by actual mapping granularity instead of fixed PAGE_SIZE steps. Signed-off-by: Guanghui Feng Acked-by: Shiqiang Zhang Acked-by: Simon Guo --- drivers/iommu/iommu.c | 40 ++++++++++++++++++++++++++++++++++++---- include/linux/iommu.h | 9 +++++++++ 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index d1a9e713d3a0..1b1aaa53dd16 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2545,15 +2545,47 @@ void iommu_detach_group(struct iommu_domain *domain= , struct iommu_group *group) } EXPORT_SYMBOL_GPL(iommu_detach_group); =20 -phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iov= a) +/** + * iommu_iova_to_phys_length - Translate IOVA and return mapping page size + * @domain: IOMMU domain to query + * @iova: IO virtual address to translate + * @mapped_length: Output parameter for the PTE page size (e.g. 4KB/2MB/1G= B) + * + * Like iommu_iova_to_phys() but additionally returns the page size of the + * PTE mapping at @iova through @mapped_length. + * + * Return: The physical address for the given IOVA, or PHYS_ADDR_MAX if no= translation. + */ +phys_addr_t iommu_iova_to_phys_length(struct iommu_domain *domain, + dma_addr_t iova, + size_t *mapped_length) { + if (mapped_length) + *mapped_length =3D 0; + if (domain->type =3D=3D IOMMU_DOMAIN_IDENTITY) return iova; =20 - if (domain->type =3D=3D IOMMU_DOMAIN_BLOCKED) - return 0; + if (!domain->ops->iova_to_phys_length) { + /* Fallback to legacy iova_to_phys without length info */ + if (domain->ops->iova_to_phys) { + phys_addr_t phys =3D domain->ops->iova_to_phys(domain, iova); + if (phys && mapped_length) + *mapped_length =3D PAGE_SIZE; + return phys ? phys : PHYS_ADDR_MAX; + } + return PHYS_ADDR_MAX; + } + + return domain->ops->iova_to_phys_length(domain, iova, mapped_length); +} +EXPORT_SYMBOL_GPL(iommu_iova_to_phys_length); + +phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iov= a) +{ + phys_addr_t phys =3D iommu_iova_to_phys_length(domain, iova, NULL); =20 - return domain->ops->iova_to_phys(domain, iova); + return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; } EXPORT_SYMBOL_GPL(iommu_iova_to_phys); =20 diff --git a/include/linux/iommu.h b/include/linux/iommu.h index e587d4ac4d33..19da84c2922c 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -747,6 +747,9 @@ struct iommu_ops { * invalidation requests. The driver data structure * must be defined in include/uapi/linux/iommufd.h * @iova_to_phys: translate iova to physical address + * @iova_to_phys_length: translate iova to physical address and additional= ly + * return the page size of the PTE mapping at @iova + * through @mapped_length. * @enforce_cache_coherency: Prevent any kind of DMA from bypassing IOMMU_= CACHE, * including no-snoop TLPs on PCIe or other plat= form * specific mechanisms. @@ -776,6 +779,9 @@ struct iommu_domain_ops { =20 phys_addr_t (*iova_to_phys)(struct iommu_domain *domain, dma_addr_t iova); + phys_addr_t (*iova_to_phys_length)(struct iommu_domain *domain, + dma_addr_t iova, + size_t *mapped_length); =20 bool (*enforce_cache_coherency)(struct iommu_domain *domain); int (*set_pgtable_quirks)(struct iommu_domain *domain, @@ -930,6 +936,9 @@ extern ssize_t iommu_map_sg(struct iommu_domain *domain= , unsigned long iova, struct scatterlist *sg, unsigned int nents, int prot, gfp_t gfp); extern phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_add= r_t iova); +extern phys_addr_t iommu_iova_to_phys_length(struct iommu_domain *domain, + dma_addr_t iova, + size_t *mapped_length); extern void iommu_set_fault_handler(struct iommu_domain *domain, iommu_fault_handler_t handler, void *token); =20 --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-101.freemail.mail.aliyun.com (out30-101.freemail.mail.aliyun.com [115.124.30.101]) (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 D033D386C1B; Tue, 2 Jun 2026 10:46:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.101 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397215; cv=none; b=TAdx5KWLrqzIfJWzMXuzBV20/sb1u3qTyxpa5gI5RlsJvmKEBNg98NlUCWonh2iqf8Za6EVNupqFBP4hjFKbr7GKkzKV/RlU51L8CGJnROewj9sHB10GsU4qF6lkuamQCcBj2O1FA+2pOJ+I58Npi8rpzAoZSdqt5MRXKiHVyK0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397215; c=relaxed/simple; bh=48mjsitOr3Z/m7oLuZcBEFl3hR3k2gCTIjH3KGTtgeA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ThXBnK5tf+IhRtq4Iro/uVBwAk+TD/iVo2WoXtCNIvASKtGzGuN39Z7eXsyW6kEQNK1MqUwU2kTHRC+6CkPSi0xkgW5vPcJup62psszpd9TZk882+xbL3pCasqtYa3+V9xeATZ+UssTvUlFRKwgPhY9/qNaxFE0gqbhFz1LSI88= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=EdryZJ5Y; arc=none smtp.client-ip=115.124.30.101 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="EdryZJ5Y" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397211; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=bNxex+pO0MrYJpvCBggj4Mk1SXXB71J1utBey15cQ0s=; b=EdryZJ5Yf8keWfsUIDz5pM1NDPqSwSWl/neeWcMpmg3TE3ixUNILdWluVFh+29NttSlcdOD6+g0a/5Y3+3j3twzS3YDee+45l7tZGWs30ETpGvK4xMmN9LJw39PW+q4gW4p8T0fvGlstIP53ZSfyPxL/AZTII7iJK0GTS1VpOpQ= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R111e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E92F_1780397208; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E92F_1780397208 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:49 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 02/30] iommu/io-pgtable-arm: introduce iova_to_phys_length in io_pgtable_ops Date: Tue, 2 Jun 2026 18:46:09 +0800 Message-ID: <20260602104637.1219810-3-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Add iova_to_phys_length to struct io_pgtable_ops alongside iova_to_phys. Implement in ARM LPAE backend: returns ARM_LPAE_BLOCK_SIZE at the resolved = level. The old iova_to_phys is kept as a thin wrapper for backward compat. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-arm.c | 23 +++++++++++++++++++++-- include/linux/io-pgtable.h | 7 +++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index 0208e5897c29..f33a86fa0f6c 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c @@ -731,8 +731,21 @@ static int visit_iova_to_phys(struct io_pgtable_walk_d= ata *walk_data, int lvl, return 0; } =20 +static phys_addr_t arm_lpae_iova_to_phys_length(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length); + static phys_addr_t arm_lpae_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) +{ + phys_addr_t phys =3D arm_lpae_iova_to_phys_length(ops, iova, NULL); + + return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; +} + +static phys_addr_t arm_lpae_iova_to_phys_length(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length) { struct arm_lpae_io_pgtable *data =3D io_pgtable_ops_to_data(ops); struct iova_to_phys_data d; @@ -742,13 +755,18 @@ static phys_addr_t arm_lpae_iova_to_phys(struct io_pg= table_ops *ops, .addr =3D iova, .end =3D iova + 1, }; + size_t block_size; int ret; =20 ret =3D __arm_lpae_iopte_walk(data, &walk_data, data->pgd, data->start_le= vel); if (ret) - return 0; + return PHYS_ADDR_MAX; + + block_size =3D ARM_LPAE_BLOCK_SIZE(d.lvl, data); + if (mapped_length) + *mapped_length =3D block_size; =20 - iova &=3D (ARM_LPAE_BLOCK_SIZE(d.lvl, data) - 1); + iova &=3D (block_size - 1); return iopte_to_paddr(d.pte, data) | iova; } =20 @@ -948,6 +966,7 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) .map_pages =3D arm_lpae_map_pages, .unmap_pages =3D arm_lpae_unmap_pages, .iova_to_phys =3D arm_lpae_iova_to_phys, + .iova_to_phys_length =3D arm_lpae_iova_to_phys_length, .read_and_clear_dirty =3D arm_lpae_read_and_clear_dirty, .pgtable_walk =3D arm_lpae_pgtable_walk, }; diff --git a/include/linux/io-pgtable.h b/include/linux/io-pgtable.h index e19872e37e06..42bcdd309b88 100644 --- a/include/linux/io-pgtable.h +++ b/include/linux/io-pgtable.h @@ -203,6 +203,10 @@ struct arm_lpae_io_pgtable_walk_data { * @map_pages: Map a physically contiguous range of pages of the same s= ize. * @unmap_pages: Unmap a range of virtually contiguous pages of the same = size. * @iova_to_phys: Translate iova to physical address. + * @iova_to_phys_length: Translate iova to physical address and return the + * remaining mapped length from iova to the end of the + * mapping entry via @mapped_length. If @mapped_length is + * NULL, only the physical address is returned. * @pgtable_walk: (optional) Perform a page table walk for a given iova. * @read_and_clear_dirty: Record dirty info per IOVA. If an IOVA is dirty, * clear its dirty state from the PTE unless the @@ -220,6 +224,9 @@ struct io_pgtable_ops { struct iommu_iotlb_gather *gather); phys_addr_t (*iova_to_phys)(struct io_pgtable_ops *ops, unsigned long iova); + phys_addr_t (*iova_to_phys_length)(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length); int (*pgtable_walk)(struct io_pgtable_ops *ops, unsigned long iova, void = *wd); int (*read_and_clear_dirty)(struct io_pgtable_ops *ops, unsigned long iova, size_t size, --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) (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 B8B4A3D6CC3; Tue, 2 Jun 2026 10:46:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397216; cv=none; b=rFguuJMqeNgd2bmbV1vGpf98ISQdshOy2uNzsbK0YSg7cE/f6eY/0BlPt4dId1rpTbxTSk9vP/whTo5CwPSlysAidpnhPdvtmnt0bwqmn+2oiZ8HuT9rn+1rVLatHMqofIa7aXshcddulM1IswVAfd7GbMlwy2OV//zmuIK3qk0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397216; c=relaxed/simple; bh=24W9IxqMVTohjC3Md1Ifb5ypnUAmrxqp2hkrF3RYkeo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mhp6eJ4p3cZWHm5zxpQ5vUZl3kaNWoqqfqpIwGtUyphD5/g9ZJHy0a0Wqnj9EWe+zc6fzu4XQFrZmChg5jdLkodvNUR0w+p5i/zOiUjx7TO6+1XeE1rFljtF8CDcp037ZQViNQ3HvxRdGLlSTcuEBqfFAPEcv/jN+pw5i7JWATw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=YXPTGHjH; arc=none smtp.client-ip=115.124.30.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="YXPTGHjH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397212; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=NEcdkKuIoYfcjbKM7WhKOeSFYFCWaJe62lwiuJRVrJ0=; b=YXPTGHjHGC1JjXPkuAjGSHxn0Z//22h6Dy5TjFDeP6mxWhDBz//uQ3Lfa8hyuZ22xeLz/sTsOtx606mr5QYgirZOd5TuNnEGISVhgt9U1U9Bg+fEVKZoartPqSXEUofmfH9rC9jNUk/qUcjk5cfNd7tq/xWntbg3lRYtsYFasLk= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R391e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E92e_1780397209; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E92e_1780397209 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:50 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 03/30] iommu/io-pgtable-arm-v7s: introduce iova_to_phys_length in io_pgtable_ops Date: Tue, 2 Jun 2026 18:46:10 +0800 Message-ID: <20260602104637.1219810-4-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length in ARM v7s backend: returns block size derived from level mask. The old iova_to_phys is kept as a thin wrapper. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-arm-v7s.c | 34 ++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-= arm-v7s.c index 1dbef8c55007..5868d68e8a85 100644 --- a/drivers/iommu/io-pgtable-arm-v7s.c +++ b/drivers/iommu/io-pgtable-arm-v7s.c @@ -641,13 +641,27 @@ static size_t arm_v7s_unmap_pages(struct io_pgtable_o= ps *ops, unsigned long iova return unmapped; } =20 +static phys_addr_t arm_v7s_iova_to_phys_length(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length); + static phys_addr_t arm_v7s_iova_to_phys(struct io_pgtable_ops *ops, unsigned long iova) +{ + phys_addr_t phys =3D arm_v7s_iova_to_phys_length(ops, iova, NULL); + + return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; +} + +static phys_addr_t arm_v7s_iova_to_phys_length(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length) { struct arm_v7s_io_pgtable *data =3D io_pgtable_ops_to_data(ops); arm_v7s_iopte *ptep =3D data->pgd, pte; int lvl =3D 0; u32 mask; + size_t blk_size; =20 do { ptep +=3D ARM_V7S_LVL_IDX(iova, ++lvl, &data->iop.cfg); @@ -656,11 +670,16 @@ static phys_addr_t arm_v7s_iova_to_phys(struct io_pgt= able_ops *ops, } while (ARM_V7S_PTE_IS_TABLE(pte, lvl)); =20 if (!ARM_V7S_PTE_IS_VALID(pte)) - return 0; + return PHYS_ADDR_MAX; =20 mask =3D ARM_V7S_LVL_MASK(lvl); if (arm_v7s_pte_is_cont(pte, lvl)) mask *=3D ARM_V7S_CONT_PAGES; + + blk_size =3D ~mask + 1U; + if (mapped_length) + *mapped_length =3D blk_size; + return iopte_to_paddr(pte, lvl, &data->iop.cfg) | (iova & ~mask); } =20 @@ -714,6 +733,7 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct = io_pgtable_cfg *cfg, .map_pages =3D arm_v7s_map_pages, .unmap_pages =3D arm_v7s_unmap_pages, .iova_to_phys =3D arm_v7s_iova_to_phys, + .iova_to_phys_length =3D arm_v7s_iova_to_phys_length, }; =20 /* We have to do this early for __arm_v7s_alloc_table to work... */ @@ -843,13 +863,13 @@ static int __init arm_v7s_do_selftests(void) * Initial sanity checks. * Empty page tables shouldn't provide any translations. */ - if (ops->iova_to_phys(ops, 42)) + if (ops->iova_to_phys_length(ops, 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(ops); =20 - if (ops->iova_to_phys(ops, SZ_1G + 42)) + if (ops->iova_to_phys_length(ops, SZ_1G + 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(ops); =20 - if (ops->iova_to_phys(ops, SZ_2G + 42)) + if (ops->iova_to_phys_length(ops, SZ_2G + 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(ops); =20 /* @@ -870,7 +890,7 @@ static int __init arm_v7s_do_selftests(void) &mapped)) return __FAIL(ops); =20 - if (ops->iova_to_phys(ops, iova + 42) !=3D (iova + 42)) + if (ops->iova_to_phys_length(ops, iova + 42, NULL) !=3D (iova + 42)) return __FAIL(ops); =20 iova +=3D SZ_16M; @@ -884,7 +904,7 @@ static int __init arm_v7s_do_selftests(void) if (ops->unmap_pages(ops, iova, size, 1, NULL) !=3D size) return __FAIL(ops); =20 - if (ops->iova_to_phys(ops, iova + 42)) + if (ops->iova_to_phys_length(ops, iova + 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(ops); =20 /* Remap full block */ @@ -892,7 +912,7 @@ static int __init arm_v7s_do_selftests(void) GFP_KERNEL, &mapped)) return __FAIL(ops); =20 - if (ops->iova_to_phys(ops, iova + 42) !=3D (iova + 42)) + if (ops->iova_to_phys_length(ops, iova + 42, NULL) !=3D (iova + 42)) return __FAIL(ops); =20 iova +=3D SZ_16M; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) (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 314983DBD7E; Tue, 2 Jun 2026 10:47:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397223; cv=none; b=q4neuQw19FELEM+rZwg5BEMNTvOzj9dZ2GzQuDNix+dfywB2zkJiKPFGS1AlOV+38dXnY634urNOpoqWDxiNvKFdkDJmNcvbXvfM3Od79GUdLXdIuOcy/ToVzI9TtuHmfYZHgT1KxGla3uYTMEmA9jwofs/nIVjwoYtdEzNo/m4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397223; c=relaxed/simple; bh=YqTLlp4rQ5N80NTs3rOrlqQxzoKiBhSW5JW4kktMGXY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WD8saBJuwn5RU4W3pG68dHlu1Ga0M8piSBFABheAh5Xwyq6Zkr3v8L9lYdgpi9m323madSdZ+X+oNA4npkKtJElp1iyEsyzsjEzxRNkUkTFZJPRb6J/JvHag8MuWAs2gxX/2vFypYWBShJhPhetwKsfyne6PVRVp7VZWafEhWKs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=bvXGLXGz; arc=none smtp.client-ip=115.124.30.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="bvXGLXGz" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397213; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=5K9kQ+7O2to9AMrCCxHb12XQWSw4xjjz1YrQKtCPM08=; b=bvXGLXGz+TRaIpPNZz1UarXjx3wFFd5w1hORWLuVvqOoBcXbWt3QWMnGFEcPdwapcKzgBmGBQPTP1y4AYWMrQf09jBjIPYJn+Ik5MICj1yCs/NytDRGls6l8pjIJlGH6RJgZuGBUyvAWxayDr9EtzGjtnn26w5ElyzLYFcJ89Ac= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R621e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037009110;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E92z_1780397210; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E92z_1780397210 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:51 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 04/30] iommu/io-pgtable-dart: introduce iova_to_phys_length in io_pgtable_ops Date: Tue, 2 Jun 2026 18:46:11 +0800 Message-ID: <20260602104637.1219810-5-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length in DART backend: returns pgsize from cfg.pgsize_bitmap (single fixed page size). The old iova_to_phys is kept as a thin wrapper. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-dart.c | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/io-pgtable-dart.c b/drivers/iommu/io-pgtable-dar= t.c index cbc5d6aa2daa..2dac21a578a7 100644 --- a/drivers/iommu/io-pgtable-dart.c +++ b/drivers/iommu/io-pgtable-dart.c @@ -333,29 +333,46 @@ static size_t dart_unmap_pages(struct io_pgtable_ops = *ops, unsigned long iova, return i * pgsize; } =20 +static phys_addr_t dart_iova_to_phys_length(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length); + static phys_addr_t dart_iova_to_phys(struct io_pgtable_ops *ops, - unsigned long iova) + unsigned long iova) +{ + phys_addr_t phys =3D dart_iova_to_phys_length(ops, iova, NULL); + + return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; +} + +static phys_addr_t dart_iova_to_phys_length(struct io_pgtable_ops *ops, + unsigned long iova, + size_t *mapped_length) { struct dart_io_pgtable *data =3D io_pgtable_ops_to_data(ops); dart_iopte pte, *ptep; + size_t pgsize; =20 ptep =3D dart_get_last(data, iova); =20 /* Valid L2 IOPTE pointer? */ if (!ptep) - return 0; + return PHYS_ADDR_MAX; =20 ptep +=3D dart_get_last_index(data, iova); =20 pte =3D READ_ONCE(*ptep); /* Found translation */ if (pte) { - iova &=3D (data->iop.cfg.pgsize_bitmap - 1); + pgsize =3D data->iop.cfg.pgsize_bitmap; + if (mapped_length) + *mapped_length =3D pgsize; + iova &=3D (pgsize - 1); return iopte_to_paddr(pte, data) | iova; } =20 /* Ran out of page tables to walk */ - return 0; + return PHYS_ADDR_MAX; } =20 static struct dart_io_pgtable * @@ -397,9 +414,10 @@ dart_alloc_pgtable(struct io_pgtable_cfg *cfg) data->bits_per_level =3D bits_per_level; =20 data->iop.ops =3D (struct io_pgtable_ops) { - .map_pages =3D dart_map_pages, - .unmap_pages =3D dart_unmap_pages, - .iova_to_phys =3D dart_iova_to_phys, + .map_pages =3D dart_map_pages, + .unmap_pages =3D dart_unmap_pages, + .iova_to_phys =3D dart_iova_to_phys, + .iova_to_phys_length =3D dart_iova_to_phys_length, }; =20 return data; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) (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 3623E3D8117; Tue, 2 Jun 2026 10:46:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397218; cv=none; b=E2Tp/hfdTXPG2Y4+jgwhF5drgAaSWqkfHM0diVM8jB3sQUSHZcVrnLRI37v6c0IZY240P0mlFdkFer58KwQePcyDQgko4z8Boiijj9lrJfPiOK1KEQnIlXVEROcXDxLYCcAeYwl6V/M7KLn6T2WJWHxL2LVPV0Opak69aE5bWYk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397218; c=relaxed/simple; bh=22Th8ZmPbILw0wE3XpivvfKNI+B5Lhke7JAVKT9t9Mw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NPJll/UW9Hs6CuoE6lvMUNM1gwp3kDd2FLEXA0f2J/X4OR9Kh9sg9uD6z0j+PnYRTA4EId4nenxz1RA0QIpTTDGvTIAL1UcxMuEcViO6eQ/Z7tPJQPb1qclRjb9iiQLzkF1eH1TvjIbc7UvFXfbzWSyoedYnC5wJuZQDnHjMGu4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=OZx1uMVq; arc=none smtp.client-ip=115.124.30.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="OZx1uMVq" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397214; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=FC9R9YWoWnAD2vr8QBlJXcutq/kUNU/P6obcP1gCGZU=; b=OZx1uMVqe2pX2En1+uZWNwp08FER8otR9fxXVTRIIUfsHKrr7qRmri/Wc2oWqgBg41wjIEcufBjelRFKASdw2bpHUVle7Xu9Amv0MzKQbPJqYg/9VFfp9Q0tqJ4mL3tmO8zWnEmGQ0ONyL5818+wt9s0QSXPJ+8d9nGo8lP8HbE= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R551e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033032089153;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E93E_1780397212; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E93E_1780397212 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:52 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 05/30] iommu/generic_pt: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:12 +0800 Message-ID: <20260602104637.1219810-6-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Extend the Generic Page Table framework to implement iova_to_phys_length. Use pt_entry_oa_lg2sz() to determine PTE block size. Update IOMMU_PT_DOMAIN_OPS macro to set .iova_to_phys_length. Signed-off-by: Guanghui Feng Acked-by: Shiqiang Zhang Acked-by: Simon Guo --- drivers/iommu/generic_pt/iommu_pt.h | 57 ++++++++++++++++++----------- include/linux/generic_pt/iommu.h | 13 ++++--- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/drivers/iommu/generic_pt/iommu_pt.h b/drivers/iommu/generic_pt= /iommu_pt.h index dc91fb4e2f61..7563ca83061d 100644 --- a/drivers/iommu/generic_pt/iommu_pt.h +++ b/drivers/iommu/generic_pt/iommu_pt.h @@ -145,13 +145,18 @@ static inline unsigned int compute_best_pgsize(struct= pt_state *pts, pts->range->va, pts->range->last_va, oa); } =20 -static __always_inline int __do_iova_to_phys(struct pt_range *range, void = *arg, - unsigned int level, - struct pt_table_p *table, - pt_level_fn_t descend_fn) +struct iova_to_phys_length_data { + pt_oaddr_t phys; + size_t length; +}; + +static __always_inline int __do_iova_to_phys_length(struct pt_range *range, + void *arg, unsigned int level, + struct pt_table_p *table, + pt_level_fn_t descend_fn) { struct pt_state pts =3D pt_init(range, level, table); - pt_oaddr_t *res =3D arg; + struct iova_to_phys_length_data *data =3D arg; =20 switch (pt_load_single_entry(&pts)) { case PT_ENTRY_EMPTY: @@ -159,45 +164,53 @@ static __always_inline int __do_iova_to_phys(struct p= t_range *range, void *arg, case PT_ENTRY_TABLE: return pt_descend(&pts, arg, descend_fn); case PT_ENTRY_OA: - *res =3D pt_entry_oa_exact(&pts); - return 0; + break; } - return -ENOENT; + + data->phys =3D pt_entry_oa_exact(&pts); + data->length =3D log2_to_int(pt_entry_oa_lg2sz(&pts)); + + return 0; } -PT_MAKE_LEVELS(__iova_to_phys, __do_iova_to_phys); +PT_MAKE_LEVELS(__iova_to_phys_length, __do_iova_to_phys_length); =20 /** - * iova_to_phys() - Return the output address for the given IOVA + * iova_to_phys_length() - Translate IOVA returning both phys and page size * @domain: Table to query * @iova: IO virtual address to query + * @mapped_length: Output for the PTE page size in bytes * - * Determine the output address from the given IOVA. @iova may have any - * alignment, the returned physical will be adjusted with any sub page off= set. + * Walk the IOMMU page table to translate @iova to a physical address while + * also returning the page size of the PTE entry through @mapped_length. + * This combines iova_to_phys and page size query into a single page table= walk. * * Context: The caller must hold a read range lock that includes @iova. * - * Return: 0 if there is no translation for the given iova. + * Return: The physical address, or PHYS_ADDR_MAX if there is no translati= on. */ -phys_addr_t DOMAIN_NS(iova_to_phys)(struct iommu_domain *domain, - dma_addr_t iova) +phys_addr_t DOMAIN_NS(iova_to_phys_length)(struct iommu_domain *domain, + dma_addr_t iova, + size_t *mapped_length) { struct pt_iommu *iommu_table =3D container_of(domain, struct pt_iommu, domain); struct pt_range range; - pt_oaddr_t res; + struct iova_to_phys_length_data data; int ret; =20 ret =3D make_range(common_from_iommu(iommu_table), &range, iova, 1); if (ret) - return ret; + return PHYS_ADDR_MAX; =20 - ret =3D pt_walk_range(&range, __iova_to_phys, &res); - /* PHYS_ADDR_MAX would be a better error code */ + ret =3D pt_walk_range(&range, __iova_to_phys_length, &data); if (ret) - return 0; - return res; + return PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D data.length; + return data.phys; } -EXPORT_SYMBOL_NS_GPL(DOMAIN_NS(iova_to_phys), "GENERIC_PT_IOMMU"); +EXPORT_SYMBOL_NS_GPL(DOMAIN_NS(iova_to_phys_length), "GENERIC_PT_IOMMU"); =20 struct pt_iommu_dirty_args { struct iommu_dirty_bitmap *dirty; diff --git a/include/linux/generic_pt/iommu.h b/include/linux/generic_pt/io= mmu.h index dd0edd02a48a..859b853e9dc7 100644 --- a/include/linux/generic_pt/iommu.h +++ b/include/linux/generic_pt/iommu.h @@ -249,8 +249,9 @@ struct pt_iommu_cfg { =20 /* Generate the exported function signatures from iommu_pt.h */ #define IOMMU_PROTOTYPES(fmt) = \ - phys_addr_t pt_iommu_##fmt##_iova_to_phys(struct iommu_domain *domain, \ - dma_addr_t iova); \ + phys_addr_t pt_iommu_##fmt##_iova_to_phys_length( \ + struct iommu_domain *domain, dma_addr_t iova, \ + size_t *mapped_length); \ int pt_iommu_##fmt##_read_and_clear_dirty( \ struct iommu_domain *domain, unsigned long iova, size_t size, \ unsigned long flags, struct iommu_dirty_bitmap *dirty); \ @@ -267,11 +268,11 @@ struct pt_iommu_cfg { IOMMU_PROTOTYPES(fmt) =20 /* - * A driver uses IOMMU_PT_DOMAIN_OPS to populate the iommu_domain_ops for = the - * iommu_pt + * A driver uses IOMMU_PT_DOMAIN_OPS to populate the iommu_domain_ops for + * the iommu_pt */ -#define IOMMU_PT_DOMAIN_OPS(fmt) \ - .iova_to_phys =3D &pt_iommu_##fmt##_iova_to_phys +#define IOMMU_PT_DOMAIN_OPS(fmt) \ + .iova_to_phys_length =3D &pt_iommu_##fmt##_iova_to_phys_length #define IOMMU_PT_DIRTY_OPS(fmt) \ .read_and_clear_dirty =3D &pt_iommu_##fmt##_read_and_clear_dirty =20 --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-99.freemail.mail.aliyun.com (out30-99.freemail.mail.aliyun.com [115.124.30.99]) (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 3AF173D905C; Tue, 2 Jun 2026 10:46:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397219; cv=none; b=oCgplQP8hTSB5wpglXnwDJqbFWQBbz9KmlBqbBJ0eFSewk2YmNm06gobw+iwLpXlF5ujBMNKks2BUI1MEvakptpYd9EPhHxFXWYaEDjIRW7RVacNSOjgHDpR3aktaE3C++B9H+fry42HzjOewyaAxwpXTk3xPjOazVb8aV8Rof0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397219; c=relaxed/simple; bh=jQkq4FgBd7u+vksQWF3M4XMjZpGjjgOdbzFJyPfP4h8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iTmwN1SjWV1fA9K1aq3T+qR+To/bOcB5T+jc4imTm3m629TagLfg3eF5DM5bulQmak4TcAmLDRqgaB7/NEnawXexCCkcufNDslrzUEfT6LEyD2W3ghwThofiXkj0nFWnjrAWqVXKmF4lwv2e3kfavH+pPIzvv5YBPC4Ha8U0KL8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=nwdEvE9S; arc=none smtp.client-ip=115.124.30.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="nwdEvE9S" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397215; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=/s0JwaJLS0ug4dMnq5/oVetvw4KKwU6QXk7J9Nngu08=; b=nwdEvE9SLC/fhdEu7wyY3eXD/l4E3+qfMXrhDyiXkjNUte061UQLjim2SIacUZR5eioHcvJeYVJYPmvG8fopPlXNVqZG/AuLJdLubJRdZI2jPSY8d0ZdAOBY2VAATCenzcfd5h3ZIvkxQBPVQIxDkqD0xMNjWZZEw8LzjK9fZbU= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R211e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E93R_1780397213; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E93R_1780397213 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:53 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 06/30] iommu/arm-smmu-v3: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:13 +0800 Message-ID: <20260602104637.1219810-7-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate ARM SMMUv3 to implement iova_to_phys_length, calling ops->iova_to_phys_length on the io-pgtable layer. Signed-off-by: Guanghui Feng --- drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/ar= m/arm-smmu-v3/arm-smmu-v3.c index e8d7dbe495f0..69fb7ce74681 100644 --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c @@ -4069,14 +4069,18 @@ static void arm_smmu_iotlb_sync(struct iommu_domain= *domain, } =20 static phys_addr_t -arm_smmu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) +arm_smmu_iova_to_phys_length(struct iommu_domain *domain, dma_addr_t iova, + size_t *mapped_length) { struct io_pgtable_ops *ops =3D to_smmu_domain(domain)->pgtbl_ops; =20 + if (mapped_length) + *mapped_length =3D 0; + if (!ops) - return 0; + return PHYS_ADDR_MAX; =20 - return ops->iova_to_phys(ops, iova); + return ops->iova_to_phys_length(ops, iova, mapped_length); } =20 static struct platform_driver arm_smmu_driver; @@ -4396,7 +4400,7 @@ static const struct iommu_ops arm_smmu_ops =3D { .unmap_pages =3D arm_smmu_unmap_pages, .flush_iotlb_all =3D arm_smmu_flush_iotlb_all, .iotlb_sync =3D arm_smmu_iotlb_sync, - .iova_to_phys =3D arm_smmu_iova_to_phys, + .iova_to_phys_length =3D arm_smmu_iova_to_phys_length, .free =3D arm_smmu_domain_free_paging, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) (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 D3EF53D9DCD; Tue, 2 Jun 2026 10:46:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397219; cv=none; b=g2r2ilNKCdGNpQrVwm3aG28sNANPi1r8Cd/nb1zyEyzK2grzWRVkgbZHbQnwQld7dnDvsVpecxPmtIaoZb1AVoKfjnYrlklQE5eC5JfkE9MEvTRBvVFlB8ZCG/FERESuQ9l5Ve2q8jOhzerBfpRyft7yt0mU4Wv0lw/Dkp8bymM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397219; c=relaxed/simple; bh=hL4Lq5w81d/PU3nYO09J1WEXkMEN2xnaVwzNnDUe3/M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sblRqU93OUV1YDys4jzHMXDaGU1fmaOjpYiebdJ9kD+VtlXKTtSKq8o2cdnM/R+1RKg5s8GbPHe29Rwmn+lK460/CvEdFXV3FVxQeqAslCALx1fZPh0kqjBguDcfdjK3fXvv6CSDrGeK1iBOYmOnJm04g2r63hd0v0wQ2BnbL0o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=SRKSh7k6; arc=none smtp.client-ip=115.124.30.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="SRKSh7k6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397216; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=lXbAa3wi4sVOE4GQK97qO7LGHZPOWW0jlxx/0XeuaBY=; b=SRKSh7k6oNEFSfdwTBvoDCMq4A4pd3ruwkaGaHzf6t/hT6HGRuyW9t44xci5xL2PZhDfxXPQKWF0dPXKTbrVX5yh+m9ZThUh2mPHajzWY2NYFKkpI+DPDlk77ROq7whPGnIJ/6qNHecL6WB9vmy0mmpuDyQADr+05fHNesGUQe0= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R101e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E93i_1780397214; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E93i_1780397214 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:54 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 07/30] iommu/arm-smmu: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:14 +0800 Message-ID: <20260602104637.1219810-8-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate ARM SMMU to implement iova_to_phys_length, calling ops->iova_to_phys_length on the io-pgtable layer. Update qcom-debug caller accordingly. Signed-off-by: Guanghui Feng --- drivers/iommu/arm/arm-smmu/arm-smmu-qcom-debug.c | 2 +- drivers/iommu/arm/arm-smmu/arm-smmu.c | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom-debug.c b/drivers/iom= mu/arm/arm-smmu/arm-smmu-qcom-debug.c index 65e0ef6539fe..4fd01341157f 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu-qcom-debug.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu-qcom-debug.c @@ -415,7 +415,7 @@ irqreturn_t qcom_smmu_context_fault(int irq, void *dev) return IRQ_HANDLED; } =20 - phys_soft =3D ops->iova_to_phys(ops, cfi.iova); + phys_soft =3D ops->iova_to_phys_length(ops, cfi.iova, NULL); =20 tmp =3D report_iommu_fault(&smmu_domain->domain, NULL, cfi.iova, cfi.fsynr & ARM_SMMU_CB_FSYNR0_WNR ? IOMMU_FAULT_WRITE : IOMMU_FAULT_= READ); diff --git a/drivers/iommu/arm/arm-smmu/arm-smmu.c b/drivers/iommu/arm/arm-= smmu/arm-smmu.c index 0bd21d206eb3..dfbd541f9e3e 100644 --- a/drivers/iommu/arm/arm-smmu/arm-smmu.c +++ b/drivers/iommu/arm/arm-smmu/arm-smmu.c @@ -1366,7 +1366,7 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struct = iommu_domain *domain, "iova to phys timed out on %pad. Falling back to software table walk.\n= ", &iova); arm_smmu_rpm_put(smmu); - return ops->iova_to_phys(ops, iova); + return ops->iova_to_phys_length(ops, iova, NULL); } =20 phys =3D arm_smmu_cb_readq(smmu, idx, ARM_SMMU_CB_PAR); @@ -1384,20 +1384,23 @@ static phys_addr_t arm_smmu_iova_to_phys_hard(struc= t iommu_domain *domain, return addr; } =20 -static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t arm_smmu_iova_to_phys_length(struct iommu_domain *domai= n, + dma_addr_t iova, size_t *mapped_length) { struct arm_smmu_domain *smmu_domain =3D to_smmu_domain(domain); struct io_pgtable_ops *ops =3D smmu_domain->pgtbl_ops; =20 + if (mapped_length) + *mapped_length =3D 0; + if (!ops) - return 0; + return PHYS_ADDR_MAX; =20 if (smmu_domain->smmu->features & ARM_SMMU_FEAT_TRANS_OPS && smmu_domain->stage =3D=3D ARM_SMMU_DOMAIN_S1) return arm_smmu_iova_to_phys_hard(domain, iova); =20 - return ops->iova_to_phys(ops, iova); + return ops->iova_to_phys_length(ops, iova, mapped_length); } =20 static bool arm_smmu_capable(struct device *dev, enum iommu_cap cap) @@ -1652,7 +1655,7 @@ static const struct iommu_ops arm_smmu_ops =3D { .unmap_pages =3D arm_smmu_unmap_pages, .flush_iotlb_all =3D arm_smmu_flush_iotlb_all, .iotlb_sync =3D arm_smmu_iotlb_sync, - .iova_to_phys =3D arm_smmu_iova_to_phys, + .iova_to_phys_length =3D arm_smmu_iova_to_phys_length, .set_pgtable_quirks =3D arm_smmu_set_pgtable_quirks, .free =3D arm_smmu_domain_free, } --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-130.freemail.mail.aliyun.com (out30-130.freemail.mail.aliyun.com [115.124.30.130]) (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 08119386C1B; Tue, 2 Jun 2026 10:46:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397222; cv=none; b=so0LYIYD9Td5g7mJlg2ftx7qxz4WCTe0uKHXkCWAngBptgO6a8eZNp0Xo0arLmpeAvz8iUTzarI59KSFA/HvwrPytSx7WeeMedGk5i/Vp30wvfszKOmEKFDh0PIYWDpgC+TmUrG2ZDpqv6iOTKZe3FXlwm7XG2HI0ZrHlqJxdl4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397222; c=relaxed/simple; bh=kCj/P1BEOPfy0BmoN0eBkPHDCHy2xBZGNQ6YiKcw3GU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ihO9EpIc89/ORyT3L9kBE+cZKJjeuqweM0Qk2Cz5srTM0CwieEH3g373EyV/eVIDqIQZ2fpwuz0thiSP/GMgqplLXWqf6GzRwpj0xXSmKw3IWuf8LA9AlYDa78sTYCLXTGAoRamUkMYvBrheAog8rsPkSKRVKSbklrXzNAVb2yk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=HmCDZdIT; arc=none smtp.client-ip=115.124.30.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="HmCDZdIT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397217; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=ebpiyse8JbhFo0+DUvlFxMg3I3ztM1AXrzRGo3uJqvw=; b=HmCDZdITVXM4B1CVS8SARsHqbJUatFsdZONnIts3ONogXn2A3yN4SZwiTR8oe5aqB3mzJ9Lg3d/vbMK/mgt7InuLU+fwoWwbfBdJwwKQfm8pY6EBBL8X5OJWDTWgshX/VnHKVoVl9hgRDhYAvotvmkHx4pLGYpJrTCLTZE6E9a0= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033032089153;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E93y_1780397215; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E93y_1780397215 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:55 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 08/30] iommu/qcom_iommu: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:15 +0800 Message-ID: <20260602104637.1219810-9-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate Qualcomm IOMMU to implement iova_to_phys_length, calling ops->iova_to_phys_length on the io-pgtable layer. Signed-off-by: Guanghui Feng --- drivers/iommu/arm/arm-smmu/qcom_iommu.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/arm/arm-smmu/qcom_iommu.c b/drivers/iommu/arm/ar= m-smmu/qcom_iommu.c index a1e8cf29f594..b36e31509c91 100644 --- a/drivers/iommu/arm/arm-smmu/qcom_iommu.c +++ b/drivers/iommu/arm/arm-smmu/qcom_iommu.c @@ -489,19 +489,22 @@ static void qcom_iommu_iotlb_sync(struct iommu_domain= *domain, qcom_iommu_flush_iotlb_all(domain); } =20 -static phys_addr_t qcom_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t qcom_iommu_iova_to_phys_length(struct iommu_domain *dom= ain, + dma_addr_t iova, size_t *mapped_length) { phys_addr_t ret; unsigned long flags; struct qcom_iommu_domain *qcom_domain =3D to_qcom_iommu_domain(domain); struct io_pgtable_ops *ops =3D qcom_domain->pgtbl_ops; =20 + if (mapped_length) + *mapped_length =3D 0; + if (!ops) - return 0; + return PHYS_ADDR_MAX; =20 spin_lock_irqsave(&qcom_domain->pgtbl_lock, flags); - ret =3D ops->iova_to_phys(ops, iova); + ret =3D ops->iova_to_phys_length(ops, iova, mapped_length); spin_unlock_irqrestore(&qcom_domain->pgtbl_lock, flags); =20 return ret; @@ -602,7 +605,7 @@ static const struct iommu_ops qcom_iommu_ops =3D { .unmap_pages =3D qcom_iommu_unmap, .flush_iotlb_all =3D qcom_iommu_flush_iotlb_all, .iotlb_sync =3D qcom_iommu_iotlb_sync, - .iova_to_phys =3D qcom_iommu_iova_to_phys, + .iova_to_phys_length =3D qcom_iommu_iova_to_phys_length, .free =3D qcom_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-113.freemail.mail.aliyun.com (out30-113.freemail.mail.aliyun.com [115.124.30.113]) (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 6D71C3DB334; Tue, 2 Jun 2026 10:47:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.113 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397222; cv=none; b=GWYxZzQw7rHpegv7JowKj4PZWhRuoyrCBIgwhhn1zK60tiDLkReUsbNVtsVdyYhGPwJkl1+PUBHL7nPHRM7vUYJhyDydDzuujT0V1J2hCSKKPoKrCb140He0mkWlCxE4NJhfhp35/mXrNmw1Y2GB/V1sHsw3LDucMWBF7poFY8Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397222; c=relaxed/simple; bh=SxDTtbIP5hN3dHiRgnFNRD9kF3zlvcF912srH1uih54=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mASQOwZg9vKMJBvPLMY+vjvYGp9lBBdh8pIkB0bm0saF8L/IVNw1WQTCVMKyDo4kKhK2UDUbniuys4Z+QEVN4RQv7yKOXUAkRdHqOOKyu7ZvbHiTzofuwNFYeeH7Fqxz50zDDicOM/Afemx8wdsxZ+N+i+p63OsU+jwEoi2Y3I0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=aIXhzpTI; arc=none smtp.client-ip=115.124.30.113 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="aIXhzpTI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397218; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=IHlmwkp5E6y8Q4Y8FCcuIlB8UhrtfgCWXf1p/iBu1UE=; b=aIXhzpTIpxJSmp3Fp/j4DjUYDVPunHL1h6aH4X70JgDMQHRmZYRo3/WTOUL/8HlNHF9R+vRkWs7wyTG0tZq0IM1viT3YSqlU8J6eXpJ25qToOaDNaVdgGXTyIbYUm7eo4khEipDhkmgU9b2cncdcF5g0Qf+bSh9OU/DjXS17iZ0= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R591e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037033178;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E94E_1780397216; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E94E_1780397216 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:56 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 09/30] iommu/apple-dart: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:16 +0800 Message-ID: <20260602104637.1219810-10-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate Apple DART to implement iova_to_phys_length, passing through mapped_length from io-pgtable. Signed-off-by: Guanghui Feng --- drivers/iommu/apple-dart.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 17bdadb6b504..2d753ce96cd9 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -528,16 +528,19 @@ static int apple_dart_iotlb_sync_map(struct iommu_dom= ain *domain, return 0; } =20 -static phys_addr_t apple_dart_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t apple_dart_iova_to_phys_length(struct iommu_domain *dom= ain, + dma_addr_t iova, size_t *mapped_length) { struct apple_dart_domain *dart_domain =3D to_dart_domain(domain); struct io_pgtable_ops *ops =3D dart_domain->pgtbl_ops; =20 + if (mapped_length) + *mapped_length =3D 0; + if (!ops) - return 0; + return PHYS_ADDR_MAX; =20 - return ops->iova_to_phys(ops, iova); + return ops->iova_to_phys_length(ops, iova, mapped_length); } =20 static int apple_dart_map_pages(struct iommu_domain *domain, unsigned long= iova, @@ -1018,7 +1021,7 @@ static const struct iommu_ops apple_dart_iommu_ops = =3D { .flush_iotlb_all =3D apple_dart_flush_iotlb_all, .iotlb_sync =3D apple_dart_iotlb_sync, .iotlb_sync_map =3D apple_dart_iotlb_sync_map, - .iova_to_phys =3D apple_dart_iova_to_phys, + .iova_to_phys_length =3D apple_dart_iova_to_phys_length, .free =3D apple_dart_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) (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 5472E3E0C42; Tue, 2 Jun 2026 10:47:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397229; cv=none; b=GturuAP/eL992beW4am0S/85FB/bBl4BkkVq/FkTPSWbxfN9UMN/HtsCPAuEbyE++kMNmnGy4aa4HS9koE9AUtZ6QaH1vAkkkfU1dj7cEm6kdIrr1MOU4b+6/Ae0gTh4jzLvKAbG6ZiG8exs1CwCXPEZv6imhs6W6CJDioDQdPY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397229; c=relaxed/simple; bh=HknEBxplz6TPj1cTXgsn+O0b2afp/paN5O4c29PiuEg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ERClRa8aa0FkK74acWhsYYpXoZbrFIc81EHBlijeDRFOcpcmsBpgHAcaur/R7fsX15//py71J0+d3y3Oa3yU4P3BdfZf9Nw0j00YarTSJhqSq12dsPitTtUR8yOggFIitZda7d3177MTfhYHrl16UUHr0+0ZBk0qNv8hO0YaWOE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=PFH+JANs; arc=none smtp.client-ip=115.124.30.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="PFH+JANs" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397219; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Qq9/61+2kM5dFltdNcmj4CJHO8jMn9Ru5g9fMIrB3uo=; b=PFH+JANs8/qWAqHsu8snuu8r+vZaiCNiC9fycb1LP2X+/6OzeUsFl2tFaltdIgGJGNL53+II9uILSHYw5HQYqUt10PSog8rTUBHCAS/N2QLPY1Px63H61HIfLfpkF9mMYomng8GMtDpKdI1mI+9IQ1WVrZ52zzDuxE1AAwrjpHM= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E94P_1780397217; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E94P_1780397217 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:57 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 10/30] iommu/ipmmu-vmsa: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:17 +0800 Message-ID: <20260602104637.1219810-11-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate IPMMU-VMSA to implement iova_to_phys_length, passing through mapped_length from io-pgtable. Signed-off-by: Guanghui Feng --- drivers/iommu/ipmmu-vmsa.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index 9386b752dea2..a1b659ddbdb5 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -699,14 +699,18 @@ static void ipmmu_iotlb_sync(struct iommu_domain *io_= domain, ipmmu_flush_iotlb_all(io_domain); } =20 -static phys_addr_t ipmmu_iova_to_phys(struct iommu_domain *io_domain, - dma_addr_t iova) +static phys_addr_t ipmmu_iova_to_phys_length(struct iommu_domain *io_domai= n, + dma_addr_t iova, size_t *mapped_length) { struct ipmmu_vmsa_domain *domain =3D to_vmsa_domain(io_domain); =20 + if (mapped_length) + *mapped_length =3D 0; + /* TODO: Is locking needed ? */ =20 - return domain->iop->iova_to_phys(domain->iop, iova); + return domain->iop->iova_to_phys_length(domain->iop, iova, + mapped_length); } =20 static int ipmmu_init_platform_device(struct device *dev, @@ -892,7 +896,7 @@ static const struct iommu_ops ipmmu_ops =3D { .unmap_pages =3D ipmmu_unmap, .flush_iotlb_all =3D ipmmu_flush_iotlb_all, .iotlb_sync =3D ipmmu_iotlb_sync, - .iova_to_phys =3D ipmmu_iova_to_phys, + .iova_to_phys_length =3D ipmmu_iova_to_phys_length, .free =3D ipmmu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-110.freemail.mail.aliyun.com (out30-110.freemail.mail.aliyun.com [115.124.30.110]) (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 B743B3E1718; Tue, 2 Jun 2026 10:47:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.110 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397231; cv=none; b=f3b7ZY0xabrhHJ/OhBTv1yxPDpMeDLOvmbDgJIZACZJSI/5jEhU3cwoYZR0n15wxKMKgXnTYMra5bPJaO/MhJe6K50xlDiQQIu05X7xs87P2BN+rHYRb09B+6An6U4QAEcRRNhk8JH8xgcRgXzzJss3/eOqmIvQD9clTB0S0F4Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397231; c=relaxed/simple; bh=TD9rxeGZm0DOZNpwQ3c09uwLrXwwMws9hNV238491D8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ek3nGFgr3YD1xGOBgwh/IW4xw6mZY1k62ykEeoYzyBZhe8KMGyp2CJwrJxR2K3HdN8zuaop6SL85MWMlxupp8FbrFAp1d1dG2zDkGds6ZmQsH0byMsUeYk37IHzqjf81cbvMLbRKUFEmGYstP3w+DI+XDZCqFr0vBx+uJGIL0Dg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=R4sTV9Gy; arc=none smtp.client-ip=115.124.30.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="R4sTV9Gy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397224; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=U2FkFXQRJe1ip/Bfwjl6wzc4k8wooDcGScTFrXf8jIU=; b=R4sTV9GyUbUBKBBHLtVN3dZK2qR/lN5NwgKGofU2SrOczhneET2K3VoD8AUVhnGLWiZOSeQZSXLPk5b6tYBrKcjyCThp/m7nhjVxbsI5+M0tV6UVE2IKnh6YxHX04YK3luY2eO7osNM5GB9RYB2r4eHECtLwOGnxUTtRoQB/NTI= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R111e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E94h_1780397218; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E94h_1780397218 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:58 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 11/30] iommu/mtk_iommu: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:18 +0800 Message-ID: <20260602104637.1219810-12-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate MediaTek IOMMU to implement iova_to_phys_length, passing through mapped_length from io-pgtable. Signed-off-by: Guanghui Feng --- drivers/iommu/mtk_iommu.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c index 2be990c108de..58125f029214 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c @@ -858,13 +858,19 @@ static int mtk_iommu_sync_map(struct iommu_domain *do= main, unsigned long iova, return 0; } =20 -static phys_addr_t mtk_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t mtk_iommu_iova_to_phys_length(struct iommu_domain *doma= in, + dma_addr_t iova, size_t *mapped_length) { struct mtk_iommu_domain *dom =3D to_mtk_domain(domain); phys_addr_t pa; =20 - pa =3D dom->iop->iova_to_phys(dom->iop, iova); + if (mapped_length) + *mapped_length =3D 0; + + pa =3D dom->iop->iova_to_phys_length(dom->iop, iova, mapped_length); + if (pa =3D=3D PHYS_ADDR_MAX) + return PHYS_ADDR_MAX; + if (IS_ENABLED(CONFIG_PHYS_ADDR_T_64BIT) && dom->bank->parent_data->enable_4GB && pa >=3D MTK_IOMMU_4GB_MODE_REMAP_BASE) @@ -1070,7 +1076,7 @@ static const struct iommu_ops mtk_iommu_ops =3D { .flush_iotlb_all =3D mtk_iommu_flush_iotlb_all, .iotlb_sync =3D mtk_iommu_iotlb_sync, .iotlb_sync_map =3D mtk_iommu_sync_map, - .iova_to_phys =3D mtk_iommu_iova_to_phys, + .iova_to_phys_length =3D mtk_iommu_iova_to_phys_length, .free =3D mtk_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) (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 272E33E171F; Tue, 2 Jun 2026 10:47:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397231; cv=none; b=E2rRXdB+mC0dwLx6GEmY33/gaLnrlj16A95Q6+xN7xqM0L6s6yq1cTPaMO9p2nngm0OMp2XRgjwXay/aa7VCIgpK9SteL6O+GSyozrfpmPXJ5y/FJM9JD8LqnJr4IfATBARkt7nWC2x3vNPtAGMZUAoO0yksvUbguiTQ9zK2alY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397231; c=relaxed/simple; bh=SGhANO867IhGFSRPmXVIvgqBaE/0mJIP5/TRFgIRNTw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cW/ere2/QKyK9CeNGgNEykhBLW2Hd6iGdiMmuIKN/6jiCf31kwqgnOe07WzyyaeYqA1YIDvN6xuqpAqXBBmDIaj3GER3BU/OrofXJQ+v4ikps8JbDWKQRsrBGTFKR7V5NTKhqEZxIkW8CY7ord31UCRpAtKkw9OuS6dFqymjM/4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=QGXV6W/L; arc=none smtp.client-ip=115.124.30.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="QGXV6W/L" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397227; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=FS/8CTbNUNtKKm1fU7W5+5c/18z86DAMGyOuBL/xGCw=; b=QGXV6W/LT53RRfwZhoVWAnNWsVShP9xl0rBCP7q4n4wViEPGzlwK1j+1iywwONpjyo/+ianq5LaicXBdpNo3ir+eKhv1RBVNE0dmpmg2euOcVyXepNqHhL9BDKNKQ3hkWa7lj/Kg8bXaQ+FbB7QjJgiBkIkWuNINr8HLQbMWfdk= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R161e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037033178;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E94t_1780397219; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E94t_1780397219 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:46:59 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 12/30] iommu/exynos: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:19 +0800 Message-ID: <20260602104637.1219810-13-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for Exynos IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/exynos-iommu.c | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 874d05f4b396..a9da28606cff 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -1372,13 +1372,17 @@ static size_t exynos_iommu_unmap(struct iommu_domai= n *iommu_domain, return 0; } =20 -static phys_addr_t exynos_iommu_iova_to_phys(struct iommu_domain *iommu_do= main, - dma_addr_t iova) +static phys_addr_t exynos_iommu_iova_to_phys_length(struct iommu_domain *i= ommu_domain, + dma_addr_t iova, + size_t *mapped_length) { struct exynos_iommu_domain *domain =3D to_exynos_domain(iommu_domain); sysmmu_pte_t *entry; unsigned long flags; - phys_addr_t phys =3D 0; + phys_addr_t phys =3D PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D 0; =20 spin_lock_irqsave(&domain->pgtablelock, flags); =20 @@ -1386,13 +1390,20 @@ static phys_addr_t exynos_iommu_iova_to_phys(struct= iommu_domain *iommu_domain, =20 if (lv1ent_section(entry)) { phys =3D section_phys(entry) + section_offs(iova); + if (mapped_length) + *mapped_length =3D SECT_SIZE; } else if (lv1ent_page(entry)) { entry =3D page_entry(entry, iova); =20 - if (lv2ent_large(entry)) + if (lv2ent_large(entry)) { phys =3D lpage_phys(entry) + lpage_offs(iova); - else if (lv2ent_small(entry)) + if (mapped_length) + *mapped_length =3D LPAGE_SIZE; + } else if (lv2ent_small(entry)) { phys =3D spage_phys(entry) + spage_offs(iova); + if (mapped_length) + *mapped_length =3D SPAGE_SIZE; + } } =20 spin_unlock_irqrestore(&domain->pgtablelock, flags); @@ -1484,7 +1495,7 @@ static const struct iommu_ops exynos_iommu_ops =3D { .attach_dev =3D exynos_iommu_attach_device, .map_pages =3D exynos_iommu_map, .unmap_pages =3D exynos_iommu_unmap, - .iova_to_phys =3D exynos_iommu_iova_to_phys, + .iova_to_phys_length =3D exynos_iommu_iova_to_phys_length, .free =3D exynos_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) (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 E1D1D386C1B; Tue, 2 Jun 2026 10:47:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397226; cv=none; b=eiuGWx51kx5Cq08zXLot5uFhfUopLd/svHaJrTPQReIe3brcMD2+TRMs5BPVpQPMwmfg8c/uvUN1FUnIa7U2hmNV9QXcPmhqUSVQva7nh3iba/TNRjeJeUh0sx0vILnv4R6lveHuaRVeV7FkmTBGm49VPRdMHiVyh/7rIprXf4E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397226; c=relaxed/simple; bh=mVPgHFrbAPLtvZOZYByaiCD57a2HCTzd59a0NePyD8E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C7lyY862u8pMcIQeEixDyfUUlvPC62jVw5dZBo1WaW4P1395YjZTQK92NKkLbxgdC2uP236iuSaf7QlhCXKYI6cm5WT+Kvr9EYxdL6757IKizjZFawKx6TeugOu5TUCHml+etJ+FhFQ95mV9ab8Ynt8Gy/Jbir7nPCRJlZJpnBE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=XCUkcrQB; arc=none smtp.client-ip=115.124.30.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="XCUkcrQB" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397223; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=UP0YTUy7zkrIojybqq6QMy6i41tG54VrVzfjKAt98ek=; b=XCUkcrQBt+b1LKpc4JzVt9Jy2ALSHyw7F370U5NRi8+Fre4NTVkjMMoQWvE6WpHzbjCMytCP1E+Z4DB3wuqsrtSB2SCbaHqOxFi8uAJSrZ+gmOqQ7qTsU3G6Cmd3Wrn772EuNXRyweMawWFGdKP26IZCgHm24OZUa+id0rERlCE= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R161e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E952_1780397220; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E952_1780397220 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:00 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 13/30] iommu/fsl_pamu: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:20 +0800 Message-ID: <20260602104637.1219810-14-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for FSL PAMU IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/fsl_pamu_domain.c | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/fsl_pamu_domain.c b/drivers/iommu/fsl_pamu_domai= n.c index 9664ef9840d2..643984ac6ae1 100644 --- a/drivers/iommu/fsl_pamu_domain.c +++ b/drivers/iommu/fsl_pamu_domain.c @@ -169,12 +169,32 @@ static void attach_device(struct fsl_dma_domain *dma_= domain, int liodn, struct d spin_unlock_irqrestore(&device_domain_lock, flags); } =20 -static phys_addr_t fsl_pamu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t fsl_pamu_iova_to_phys_length(struct iommu_domain *domai= n, + dma_addr_t iova, + size_t *mapped_length) { + if (mapped_length) + *mapped_length =3D 0; + if (iova < domain->geometry.aperture_start || iova > domain->geometry.aperture_end) - return 0; + return PHYS_ADDR_MAX; + + /* + * PAMU configures exactly one Primary PAACE entry per LIODN with the + * Multi-Window (MW) bit cleared and ATM =3D PAACE_ATM_WINDOW_XLATE, + * WBAL/TWBAL =3D 0. That is, every LIODN is backed by a single hardware + * mapping window of fixed size (1ULL << 36, i.e. 64GB, see + * pamu_config_ppaace()) performing an identity translation. The driver + * does not split this window into SPAACE sub-windows, so the entire + * aperture is one PAACE "PTE" entry. Return that single entry's size + * as mapped_length, matching the iova_to_phys_length contract that + * mapped_length reports the full size of the mapping entry which + * covers iova (not the remaining bytes from iova to its end). + */ + if (mapped_length) + *mapped_length =3D 1ULL << 36; + return iova; } =20 @@ -435,7 +455,7 @@ static const struct iommu_ops fsl_pamu_ops =3D { .device_group =3D fsl_pamu_device_group, .default_domain_ops =3D &(const struct iommu_domain_ops) { .attach_dev =3D fsl_pamu_attach_device, - .iova_to_phys =3D fsl_pamu_iova_to_phys, + .iova_to_phys_length =3D fsl_pamu_iova_to_phys_length, .free =3D fsl_pamu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) (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 03D9A3E0730; Tue, 2 Jun 2026 10:47:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397228; cv=none; b=dLWk+igMxyQeef0Rme7I+m/7pbrnhE/EttBzSayw3mNJTb/xwDHhH3gBWsRXzXqoYW74twZ4eE5SBnCgbxQLUljO4PfU3p2w03zveUIpgiYOj2k9vKA/KXXLsU6x1kPjKZkKeiKxzd7t+eygXw1a+0a7mWC78wJt9hgq94fkjcM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397228; c=relaxed/simple; bh=JeyCTAXrQ+XH4C2fkrVz1SupA4Ue3SK5YuqrmXZnWr4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=G2Dpy1CZPpgLtpTSKf08pyAmGUt+Jdn7wer+Ym1OQek5KReA5xC8Ro1XMajT7KeQ0jW666HHCFvANvYZiG+nj0rZKsKJ0MDEgREdyD6D4oq8tKHqTrGdRA+UMuBV/2ZpwPqEgPoWxlbBZzeoFvxD7xwrWtb2jhnr/AVRU/T8UMQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=gNOijJqU; arc=none smtp.client-ip=115.124.30.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="gNOijJqU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397225; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=RP623VqPSI+xDCv1y2SYKGV0aOycUPVbFEGyieTBg94=; b=gNOijJqUMv3vvtvJOXDjgOUWu3vq5nMJifl30LY7J3BTVveMc3UfpLfJQ26Y5HqAaMYNYhbyMhLBCBaFOBjLqwwuPHpUioaf0iqGWnOQwvSFhkUlyukEZ5e/EaKNyxMkarF+Ij1GV8TxNOnUadMH3vNWuyUe4eyq57ofZlb3RqE= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R851e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E95U_1780397221; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E95U_1780397221 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:01 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 14/30] iommu/msm: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:21 +0800 Message-ID: <20260602104637.1219810-15-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for MSM IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/msm_iommu.c | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c index 0ad5ff431d5b..af4020ed9987 100644 --- a/drivers/iommu/msm_iommu.c +++ b/drivers/iommu/msm_iommu.c @@ -523,15 +523,19 @@ static size_t msm_iommu_unmap(struct iommu_domain *do= main, unsigned long iova, return ret; } =20 -static phys_addr_t msm_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t va) +static phys_addr_t msm_iommu_iova_to_phys_length(struct iommu_domain *doma= in, + dma_addr_t va, + size_t *mapped_length) { struct msm_priv *priv; struct msm_iommu_dev *iommu; struct msm_iommu_ctx_dev *master; unsigned int par; unsigned long flags; - phys_addr_t ret =3D 0; + phys_addr_t ret =3D PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D 0; =20 spin_lock_irqsave(&msm_iommu_lock, flags); =20 @@ -558,13 +562,22 @@ static phys_addr_t msm_iommu_iova_to_phys(struct iomm= u_domain *domain, par =3D GET_PAR(iommu->base, master->num); =20 /* We are dealing with a supersection */ - if (GET_NOFAULT_SS(iommu->base, master->num)) + if (GET_NOFAULT_SS(iommu->base, master->num)) { ret =3D (par & 0xFF000000) | (va & 0x00FFFFFF); - else /* Upper 20 bits from PAR, lower 12 from VA */ + if (mapped_length) + *mapped_length =3D SZ_16M; + } else { + /* Upper 20 bits from PAR, lower 12 from VA */ ret =3D (par & 0xFFFFF000) | (va & 0x00000FFF); + if (mapped_length) + *mapped_length =3D SZ_4K; + } =20 - if (GET_FAULT(iommu->base, master->num)) - ret =3D 0; + if (GET_FAULT(iommu->base, master->num)) { + ret =3D PHYS_ADDR_MAX; + if (mapped_length) + *mapped_length =3D 0; + } =20 __disable_clocks(iommu); fail: @@ -706,7 +719,7 @@ static struct iommu_ops msm_iommu_ops =3D { */ .iotlb_sync =3D NULL, .iotlb_sync_map =3D msm_iommu_sync_map, - .iova_to_phys =3D msm_iommu_iova_to_phys, + .iova_to_phys_length =3D msm_iommu_iova_to_phys_length, .free =3D msm_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) (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 7BD393D8100; Tue, 2 Jun 2026 10:47:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397229; cv=none; b=Wi4jzIBjEh2zyNPpvyDZdSkoTL/7ee+ZkVn6X7hs/FK+qda/yr4lwU70sEF/zIQx+ebMMltp4Dzu4LbYBCfh263TUR5OPM/EEC7AHzeIKdecntWQSufIOOrGkCAKR+aH4JBhrbvcJ1dk9dGYqLnrWXtPPx3dmIEkN8nkdgClGGk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397229; c=relaxed/simple; bh=CeKjxseszSxfNQa6U88S28sJVv5LBIAEzhNVSHC2+lg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RNlPh4FvRbf/9g/kDHx5Hv8tnutZIyQmpPpYc6UDOIOq24SYp1CSIFruC4N2vxoiDVxHOuiLJ2ynQ9dXO/ssAyTbOyKveNqgLnGCBuUvs0hx6XzWe/tRTjTUvUL3aq5kO+cRXE03juVDCi1Ym7sT/ZgEo8VWbuMniCnNc/uh13Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=uU/UwPX+; arc=none smtp.client-ip=115.124.30.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="uU/UwPX+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397225; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Z6uvMZHAmHwSUWc23cUrxXysIDcjk6iA/ZFsUBabgTo=; b=uU/UwPX+OqIT/ZJZcHd0yyCL2I8b4siMCDF7NjS2939BP43ifjsFd1vzLMy5wzgqQccOoerHBTLTq+QgBeLeX97C04rfVVY7kf2sgDs5HCAoYGmBYIbeq7qm3jQHynoTiZfKOOelBdZyQfB2ZHQJrB1DL2tJFBnJRfZ+OFPUs/Q= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R411e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E95v_1780397222; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E95v_1780397222 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:02 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 15/30] iommu/mtk_v1: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:22 +0800 Message-ID: <20260602104637.1219810-16-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for MediaTek v1 IOMMU driver, returning the actual PTE mapping size. Also fix pre-existing bug: add page offset to physical address. Signed-off-by: Guanghui Feng --- drivers/iommu/mtk_iommu_v1.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c index ac97dd2868d4..8733b87c9b94 100644 --- a/drivers/iommu/mtk_iommu_v1.c +++ b/drivers/iommu/mtk_iommu_v1.c @@ -393,17 +393,29 @@ static size_t mtk_iommu_v1_unmap(struct iommu_domain = *domain, unsigned long iova return size; } =20 -static phys_addr_t mtk_iommu_v1_iova_to_phys(struct iommu_domain *domain, = dma_addr_t iova) +static phys_addr_t mtk_iommu_v1_iova_to_phys_length(struct iommu_domain *d= omain, + dma_addr_t iova, + size_t *mapped_length) { struct mtk_iommu_v1_domain *dom =3D to_mtk_domain(domain); unsigned long flags; phys_addr_t pa; =20 + if (mapped_length) + *mapped_length =3D 0; + spin_lock_irqsave(&dom->pgtlock, flags); pa =3D *(dom->pgt_va + (iova >> MT2701_IOMMU_PAGE_SHIFT)); pa =3D pa & (~(MT2701_IOMMU_PAGE_SIZE - 1)); spin_unlock_irqrestore(&dom->pgtlock, flags); =20 + if (!pa) + return PHYS_ADDR_MAX; + + pa |=3D (iova & (MT2701_IOMMU_PAGE_SIZE - 1)); + if (mapped_length) + *mapped_length =3D MT2701_IOMMU_PAGE_SIZE; + return pa; } =20 @@ -590,7 +602,7 @@ static const struct iommu_ops mtk_iommu_v1_ops =3D { .attach_dev =3D mtk_iommu_v1_attach_device, .map_pages =3D mtk_iommu_v1_map, .unmap_pages =3D mtk_iommu_v1_unmap, - .iova_to_phys =3D mtk_iommu_v1_iova_to_phys, + .iova_to_phys_length =3D mtk_iommu_v1_iova_to_phys_length, .free =3D mtk_iommu_v1_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-97.freemail.mail.aliyun.com (out30-97.freemail.mail.aliyun.com [115.124.30.97]) (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 8B2393806AF; Tue, 2 Jun 2026 10:47:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397230; cv=none; b=NbrBbXVn7cCG0r4FM4VRwBjUbQgoTmd3uPX7x+KAuvcLmVbMuqK5/1A22678QZaVBkAOQ5hcQR1tcVho/Of+lROUvDZEMSZo3aWVQZmubfE84nITEBfCT2SDdwqqRfN5ObKqQH/ya4J6mpkbreSHB8UP2Hx70/xC04jDyUec3Zg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397230; c=relaxed/simple; bh=YRcq00ULr5ES22thBQR+6hcLGVLrBAdIiTZWihduxIE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MNSDNZxzX++lbXptiFiNrxSpJ9dIZrYiOhQRUTQT7DszuZ804RlboU2WEM3JH/oX3H5ijUWOrYKHmAyQQhXdWYYr5js5EQZTtVKaE4Fd9vIVNh7CeUgynK4n+o4BQiZltJ78mL6h2CnkIrPYR0e9+XsA/UB2DTVc6HUnVsg3Zg4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=ACkJ+7Ca; arc=none smtp.client-ip=115.124.30.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="ACkJ+7Ca" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397226; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=eLIpHRxib2Q2tp8Ie9HCIz+i7UpgyrfwRapvc5RY2uw=; b=ACkJ+7CaA747Q5VftpS4Ft2sdDNuZ3ieX0r1pCgLWxK9xpSEzhTlTTOIEYkLK5gfx2qOVS78dGSbSHIs9A/cY3vbiAVerapXuh5LFIfU6KVVdvVO82OAWmsM/Yz/CMf2VWVGK7GHnSzHDovCPC3XZ5vtT9OXzyukeeXT/LO3Niw= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R181e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033032089153;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E96H_1780397223; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E96H_1780397223 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:03 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 16/30] iommu/omap: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:23 +0800 Message-ID: <20260602104637.1219810-17-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for OMAP IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/omap-iommu.c | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c index 8231d7d6bb6a..883f9f61d4d9 100644 --- a/drivers/iommu/omap-iommu.c +++ b/drivers/iommu/omap-iommu.c @@ -1592,15 +1592,19 @@ static void omap_iommu_domain_free(struct iommu_dom= ain *domain) kfree(omap_domain); } =20 -static phys_addr_t omap_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t da) +static phys_addr_t omap_iommu_iova_to_phys_length(struct iommu_domain *dom= ain, + dma_addr_t da, + size_t *mapped_length) { struct omap_iommu_domain *omap_domain =3D to_omap_domain(domain); struct omap_iommu_device *iommu =3D omap_domain->iommus; struct omap_iommu *oiommu =3D iommu->iommu_dev; struct device *dev =3D oiommu->dev; u32 *pgd, *pte; - phys_addr_t ret =3D 0; + phys_addr_t ret =3D PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D 0; =20 /* * all the iommus within the domain will have identical programming, @@ -1609,21 +1613,31 @@ static phys_addr_t omap_iommu_iova_to_phys(struct i= ommu_domain *domain, iopgtable_lookup_entry(oiommu, da, &pgd, &pte); =20 if (pte) { - if (iopte_is_small(*pte)) + if (iopte_is_small(*pte)) { ret =3D omap_iommu_translate(*pte, da, IOPTE_MASK); - else if (iopte_is_large(*pte)) + if (mapped_length) + *mapped_length =3D IOPTE_SIZE; + } else if (iopte_is_large(*pte)) { ret =3D omap_iommu_translate(*pte, da, IOLARGE_MASK); - else + if (mapped_length) + *mapped_length =3D IOLARGE_SIZE; + } else { dev_err(dev, "bogus pte 0x%x, da 0x%llx", *pte, (unsigned long long)da); + } } else { - if (iopgd_is_section(*pgd)) + if (iopgd_is_section(*pgd)) { ret =3D omap_iommu_translate(*pgd, da, IOSECTION_MASK); - else if (iopgd_is_super(*pgd)) + if (mapped_length) + *mapped_length =3D IOSECTION_SIZE; + } else if (iopgd_is_super(*pgd)) { ret =3D omap_iommu_translate(*pgd, da, IOSUPER_MASK); - else + if (mapped_length) + *mapped_length =3D IOSUPER_SIZE; + } else { dev_err(dev, "bogus pgd 0x%x, da 0x%llx", *pgd, (unsigned long long)da); + } } =20 return ret; @@ -1723,7 +1737,7 @@ static const struct iommu_ops omap_iommu_ops =3D { .attach_dev =3D omap_iommu_attach_dev, .map_pages =3D omap_iommu_map, .unmap_pages =3D omap_iommu_unmap, - .iova_to_phys =3D omap_iommu_iova_to_phys, + .iova_to_phys_length =3D omap_iommu_iova_to_phys_length, .free =3D omap_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-119.freemail.mail.aliyun.com (out30-119.freemail.mail.aliyun.com [115.124.30.119]) (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 5046A3D8129; Tue, 2 Jun 2026 10:47:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.119 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397230; cv=none; b=aG7vsHJ+1HkXR2g8Cf7l91dLm7Xeg3JJUqcl+uB20yxYPzETPZlOuC9Qvje+iUMLFGzik1FAYXdqAYShM/0yZG1TxSTLofwRTpeC/GZmkfkCYxKW8JxW3DwLIU/1HG7cbJ/XizcxAzyLb4mublBDz9POXCMProvEI8ohNZczYho= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397230; c=relaxed/simple; bh=+h8xtOdO5jnPPHZvAAfqAr8o3fzSkUep1Fz+d31GCUk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=OF+cjXOY2CE6Qs3SIgUjOh2rP5sITkSkF94BUnYZVHUqYwRA8PPLGSUl4m3tDo+oEs82CfcK9ODUAHY1HylBlQsrVwnv1b4MjtJgZLMWsm/x89Jr8z5iKBX0xdSDgSYUV2SE2H4aWXT9fxqyCdTN3ljoXoZ020QfrJtgmVnWc0w= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=DZgFlnbT; arc=none smtp.client-ip=115.124.30.119 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="DZgFlnbT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397226; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=1W+5Ep21JWFXb6Ndt1YmG74jhLb+YQ1K8PBTluefHNE=; b=DZgFlnbTVUdtuGeuyeZsIVI8dGzkpudPP1Tz2ahWLxTwcUq0ILnPGtRSIQqic3RGaNdfmm6AeA9tOf/8+/6ZYmk28PtzhBN+SPZpBUvK987fMuESoAOWWwIwwi9sc/ECSDNG77+zJjEAf0mtokfNGi3iK6P1Y1RyUjFYfmSXgJE= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R131e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033032089153;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E96b_1780397224; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E96b_1780397224 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:04 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 17/30] iommu/rockchip: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:24 +0800 Message-ID: <20260602104637.1219810-18-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for Rockchip IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/rockchip-iommu.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index 0013cf196c57..5bae28a123c1 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -648,15 +648,18 @@ static irqreturn_t rk_iommu_irq(int irq, void *dev_id) return ret; } =20 -static phys_addr_t rk_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t rk_iommu_iova_to_phys_length(struct iommu_domain *domai= n, + dma_addr_t iova, size_t *mapped_length) { struct rk_iommu_domain *rk_domain =3D to_rk_domain(domain); unsigned long flags; - phys_addr_t pt_phys, phys =3D 0; + phys_addr_t pt_phys, phys =3D PHYS_ADDR_MAX; u32 dte, pte; u32 *page_table; =20 + if (mapped_length) + *mapped_length =3D 0; + spin_lock_irqsave(&rk_domain->dt_lock, flags); =20 dte =3D rk_domain->dt[rk_iova_dte_index(iova)]; @@ -670,6 +673,8 @@ static phys_addr_t rk_iommu_iova_to_phys(struct iommu_d= omain *domain, goto out; =20 phys =3D rk_ops->pt_address(pte) + rk_iova_page_offset(iova); + if (mapped_length) + *mapped_length =3D SPAGE_SIZE; out: spin_unlock_irqrestore(&rk_domain->dt_lock, flags); =20 @@ -1187,7 +1192,7 @@ static const struct iommu_ops rk_iommu_ops =3D { .attach_dev =3D rk_iommu_attach_device, .map_pages =3D rk_iommu_map, .unmap_pages =3D rk_iommu_unmap, - .iova_to_phys =3D rk_iommu_iova_to_phys, + .iova_to_phys_length =3D rk_iommu_iova_to_phys_length, .free =3D rk_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) (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 0CA5D3E7BC8; Tue, 2 Jun 2026 10:47:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397233; cv=none; b=FjdU83VVSfeWTNSIwUbCLszz5Elok0wE4JC00GIaixWYyEK3FJpRYEI666Hw5RNuuge0aqVg9PfWrxuWxsHHLppUF+OcXuATY65ujyRNnjl0XGwW9gG6LUWR0uKaRlI1Epdv4yakX6ewAGSyYmeV/rfMhJHk/Y2fU9LfEXck4gg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397233; c=relaxed/simple; bh=yJs/DX+0Hhq1AFyIiVkqDS1b/OYZN709ZYW2HoQNaCY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=VHnbmboqDSK00kSMifYEkeXAbfzjXULrKLq/uirjnr872KzfGArzowudc6TotQ/UbSTBw0V7Zn54WoO0OpzAnqPdAQJyciizOqW2kxBI8BRo1wnjTRkEm2SVZEmIpywQjuIwQRZfTVwnLYkaBTuUAlMFLGbgF29rDp/DrhNPEVU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=UD9KCkkM; arc=none smtp.client-ip=115.124.30.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="UD9KCkkM" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397230; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=RCvFh85B/tqBQu5u458IIKCnRVt7lt/6UxJszvT0Ehg=; b=UD9KCkkMrik8CA2UwL7PC/jb6zL070i8vlIvgatrFU2k+I2d4XPpBPuDx6Q55Yn87aT4bVDN6JcrA0uT5FW1tQ71OmcazOOmKZInMBmTjJi/6Obb+iaNp6LPz8O9fn/sh2s+HBTqABe06J2ZJYwy13CEV5D5aZT5p0/ndRPXl2w= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R811e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E972_1780397225; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E972_1780397225 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:05 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 18/30] iommu/s390: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:25 +0800 Message-ID: <20260602104637.1219810-19-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for s390 IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/s390-iommu.c | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/s390-iommu.c b/drivers/iommu/s390-iommu.c index f148f559ac56..b12ed389e1bd 100644 --- a/drivers/iommu/s390-iommu.c +++ b/drivers/iommu/s390-iommu.c @@ -986,22 +986,26 @@ static unsigned long *get_rto_from_iova(struct s390_d= omain *domain, } } =20 -static phys_addr_t s390_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t s390_iommu_iova_to_phys_length(struct iommu_domain *dom= ain, + dma_addr_t iova, + size_t *mapped_length) { struct s390_domain *s390_domain =3D to_s390_domain(domain); unsigned long *rto, *sto, *pto; unsigned long ste, pte, rte; unsigned int rtx, sx, px; - phys_addr_t phys =3D 0; + phys_addr_t phys =3D PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D 0; =20 if (iova < domain->geometry.aperture_start || iova > domain->geometry.aperture_end) - return 0; + return PHYS_ADDR_MAX; =20 rto =3D get_rto_from_iova(s390_domain, iova); if (!rto) - return 0; + return PHYS_ADDR_MAX; =20 rtx =3D calc_rtx(iova); sx =3D calc_sx(iova); @@ -1014,8 +1018,11 @@ static phys_addr_t s390_iommu_iova_to_phys(struct io= mmu_domain *domain, if (reg_entry_isvalid(ste)) { pto =3D get_st_pto(ste); pte =3D READ_ONCE(pto[px]); - if (pt_entry_isvalid(pte)) + if (pt_entry_isvalid(pte)) { phys =3D pte & ZPCI_PTE_ADDR_MASK; + if (mapped_length) + *mapped_length =3D SZ_4K; + } } } =20 @@ -1183,7 +1190,7 @@ static struct iommu_domain blocking_domain =3D { .flush_iotlb_all =3D s390_iommu_flush_iotlb_all, \ .iotlb_sync =3D s390_iommu_iotlb_sync, \ .iotlb_sync_map =3D s390_iommu_iotlb_sync_map, \ - .iova_to_phys =3D s390_iommu_iova_to_phys, \ + .iova_to_phys_length =3D s390_iommu_iova_to_phys_length, \ .free =3D s390_domain_free, \ } =20 --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-110.freemail.mail.aliyun.com (out30-110.freemail.mail.aliyun.com [115.124.30.110]) (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 ED3B83E5A03; Tue, 2 Jun 2026 10:47:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.110 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397232; cv=none; b=FfAovi2T0E1jK9Kmpzh9yvVLs1cT92FAT/CMKQ85YXLrlXj+A0o2fRDjk7j1ihfBgrxNieBpQewF8kMqW8HQ4BwgCpZO7tTZhfPWMhMzgWIu/Qh0Cy6ZncKIDP1EatvV/ixlqbIrWoIwO1pTEbzgowwcDKmFyVW+oXMDTUS643s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397232; c=relaxed/simple; bh=u9rhI9aM0c0TwxfdjWgnDFCOtsjvG9DC9ruiKqBsCeA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=d2htROQNL/Q+P5CmQ0hpNoV/yyYqr2sow6iSEO+AGrsDUUrcq2j619NPTKPtsUjrkWrghjPUZvWArAAHB7/0XQqdNyl3IPdrcycsLtdeWx3jSgsPLUoa6Y/nGUT3tSlGp7O0LbOJKArJ0WhL8DLgQMRNrobGDLichlN1lK7fmAw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=XHS10kZF; arc=none smtp.client-ip=115.124.30.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="XHS10kZF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397229; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Dmq5VZlTiHIu0DAcakOaUjD+KNjRLd5oRgXasfLjiiI=; b=XHS10kZF5bTHkqVtJX6j9hiT7GJ4TzXAypFSDmgvGnb7NjuMgLru8UypByoNCN8R7jM2p4ump0EpDAYwnkxDBs2BF2/Kdhurbj4VBeywLxBFh2KVFxbSzj9W2sP3IumLWbKJ4IokeAcG9PhCRCzJLr2CFwr4U7bbSAA2tf2lpZQ= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R121e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E97N_1780397226; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E97N_1780397226 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:06 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 19/30] iommu/sprd: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:26 +0800 Message-ID: <20260602104637.1219810-20-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for Spreadtrum IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/sprd-iommu.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c index c1a34445d244..f8dbe24c332a 100644 --- a/drivers/iommu/sprd-iommu.c +++ b/drivers/iommu/sprd-iommu.c @@ -366,8 +366,9 @@ static void sprd_iommu_sync(struct iommu_domain *domain, sprd_iommu_sync_map(domain, 0, 0); } =20 -static phys_addr_t sprd_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t sprd_iommu_iova_to_phys_length(struct iommu_domain *dom= ain, + dma_addr_t iova, + size_t *mapped_length) { struct sprd_iommu_domain *dom =3D to_sprd_domain(domain); unsigned long flags; @@ -375,14 +376,23 @@ static phys_addr_t sprd_iommu_iova_to_phys(struct iom= mu_domain *domain, unsigned long start =3D domain->geometry.aperture_start; unsigned long end =3D domain->geometry.aperture_end; =20 + if (mapped_length) + *mapped_length =3D 0; + if (WARN_ON(iova < start || iova > end)) - return 0; + return PHYS_ADDR_MAX; =20 spin_lock_irqsave(&dom->pgtlock, flags); pa =3D *(dom->pgt_va + ((iova - start) >> SPRD_IOMMU_PAGE_SHIFT)); - pa =3D (pa << SPRD_IOMMU_PAGE_SHIFT) + ((iova - start) & (SPRD_IOMMU_PAGE= _SIZE - 1)); spin_unlock_irqrestore(&dom->pgtlock, flags); =20 + if (!pa) + return PHYS_ADDR_MAX; + + pa =3D (pa << SPRD_IOMMU_PAGE_SHIFT) + ((iova - start) & (SPRD_IOMMU_PAGE= _SIZE - 1)); + if (mapped_length) + *mapped_length =3D SPRD_IOMMU_PAGE_SIZE; + return pa; } =20 @@ -420,7 +430,7 @@ static const struct iommu_ops sprd_iommu_ops =3D { .unmap_pages =3D sprd_iommu_unmap, .iotlb_sync_map =3D sprd_iommu_sync_map, .iotlb_sync =3D sprd_iommu_sync, - .iova_to_phys =3D sprd_iommu_iova_to_phys, + .iova_to_phys_length =3D sprd_iommu_iova_to_phys_length, .free =3D sprd_iommu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) (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 400D43D9022; Tue, 2 Jun 2026 10:47:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397234; cv=none; b=MISUUQ3ptDfib6a2vvoAOHR1zJb/0Un7u+VXPJ5W3l9n5fHjn2T1mybxt7oorKxjSO8cjulsMooUMWfrN5dUDYzHXly++fnbzHBzWu7xM8uT28EgCMWMkrWEn8ibcJD9711ruDhkSmT14pfLZDiKmhgfR0tMlMP8/+JLFlQdPLE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397234; c=relaxed/simple; bh=kKgu2b7OHdWADFOplS+Nkp1c7no4pmerjeqSOFQcuKc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=INAQ5S7pCBEY/Sz80/Z7Jlv4H232K12z7Xf02/2G2/T/kqCZDhTs4lmLWQg5yrmIJsTHy3h+eomfHuZHe1dkdTTRESKvQpe1Si4Hb8X1NzFbXJethqOFA3/EuQoDFxIX7E02ix2DjVX8UO7VuKYg2ROgtfGcrf5QcHEBMIF2XO4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=luRRR9q1; arc=none smtp.client-ip=115.124.30.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="luRRR9q1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397230; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=i4l5Y0trE0yKZKVwzh0g8Q2sXJKWMQOzssN47hgN7EY=; b=luRRR9q1uOBbZ5Kdku++wEQ99Zx6VVvL8obWvaJYfL2yDUfTEUqI0uokgfdNT+KFWWB3HMR7ylXfS7yumFvA3cUiL/cwq8ErRRBtQ9b7pNNpYUJxv9LT3IkMOWuUjUEavUETI70JV4H6yimOSQk3ARUI65VTnjY47BTq7Rkp7L4= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R871e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E97Y_1780397227; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E97Y_1780397227 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:08 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 20/30] iommu/sun50i: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:27 +0800 Message-ID: <20260602104637.1219810-21-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for sun50i IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/sun50i-iommu.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index be3f1ce696ba..dcd7d926886a 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -659,23 +659,30 @@ static size_t sun50i_iommu_unmap(struct iommu_domain = *domain, unsigned long iova return SZ_4K; } =20 -static phys_addr_t sun50i_iommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t sun50i_iommu_iova_to_phys_length(struct iommu_domain *d= omain, + dma_addr_t iova, + size_t *mapped_length) { struct sun50i_iommu_domain *sun50i_domain =3D to_sun50i_domain(domain); phys_addr_t pt_phys; u32 *page_table; u32 dte, pte; =20 + if (mapped_length) + *mapped_length =3D 0; + dte =3D sun50i_domain->dt[sun50i_iova_get_dte_index(iova)]; if (!sun50i_dte_is_pt_valid(dte)) - return 0; + return PHYS_ADDR_MAX; =20 pt_phys =3D sun50i_dte_get_pt_address(dte); page_table =3D (u32 *)phys_to_virt(pt_phys); pte =3D page_table[sun50i_iova_get_pte_index(iova)]; if (!sun50i_pte_is_page_valid(pte)) - return 0; + return PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D SZ_4K; =20 return sun50i_pte_get_page_address(pte) + sun50i_iova_get_page_offset(iova); @@ -857,7 +864,7 @@ static const struct iommu_ops sun50i_iommu_ops =3D { .flush_iotlb_all =3D sun50i_iommu_flush_iotlb_all, .iotlb_sync_map =3D sun50i_iommu_iotlb_sync_map, .iotlb_sync =3D sun50i_iommu_iotlb_sync, - .iova_to_phys =3D sun50i_iommu_iova_to_phys, + .iova_to_phys_length =3D sun50i_iommu_iova_to_phys_length, .map_pages =3D sun50i_iommu_map, .unmap_pages =3D sun50i_iommu_unmap, .free =3D sun50i_iommu_domain_free, --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-131.freemail.mail.aliyun.com (out30-131.freemail.mail.aliyun.com [115.124.30.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 477263ED3DC; Tue, 2 Jun 2026 10:47:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.131 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397238; cv=none; b=bavRsbe417BCluxKcb5Jw0OGBoUd0dIECYDlLFCGCbQPiDlcgGEDEolUy2FfgJhvy0zVEBo4ec9Qpjgtw1iY4N3KUqfafDps6JgXsY2/z7LKlu7oqg2wiryk2b6SugTUBcb/sWyrCTlJ0YRGnTMoSDL5LiEj2SwGuEaVEUnsAnM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397238; c=relaxed/simple; bh=UEntl2anLB1e847GbMQ0mCyY2//wHFrwTM8Eu+hDoqE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UemEI9i5ji8ZIsXtzgBxtXm4SoCwu+2hXFetQ/4JB6+m2GkfHEPCNpnlMNT2/cjVDyWp1tiKPJDiA60/wnPbW+EWtecNv1vDztZDP5k23qVFmYUyhDzdYTvhV3KN7r7+/idMvFAJ5kVYViB82gbePfsjIXCQUrkQXnk8NzuQ0oo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=nFshXLtE; arc=none smtp.client-ip=115.124.30.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="nFshXLtE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397234; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=E1rU2c2uZHdN1cWrbtG6K1kwKPcxqttXAzthewRnRpY=; b=nFshXLtEXVmdorDGbqqxR4/iQEuot3SGIEEnxXgxCMZ/Jj55IOL5Fv7dk3XYH0QGQRXBJbM41W5eCvvCrt+dTQTc1Rdg0LSNWLKj/YATiGRFsQEMt2X8YFkiCl22Yw2wTt8ZjJvxpZ499h1rnXX9knCcIqiaEC13fdqQ5eUsWwg= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R121e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E97k_1780397228; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E97k_1780397228 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:09 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 21/30] iommu/tegra-smmu: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:28 +0800 Message-ID: <20260602104637.1219810-22-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for Tegra SMMU IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/tegra-smmu.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index 67e7a7b925f0..fbe28fb9385f 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c @@ -803,20 +803,26 @@ static size_t tegra_smmu_unmap(struct iommu_domain *d= omain, unsigned long iova, return size; } =20 -static phys_addr_t tegra_smmu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t tegra_smmu_iova_to_phys_length(struct iommu_domain *dom= ain, + dma_addr_t iova, size_t *mapped_length) { struct tegra_smmu_as *as =3D to_smmu_as(domain); unsigned long pfn; dma_addr_t pte_dma; u32 *pte; =20 + if (mapped_length) + *mapped_length =3D 0; + pte =3D tegra_smmu_pte_lookup(as, iova, &pte_dma); if (!pte || !*pte) - return 0; + return PHYS_ADDR_MAX; =20 pfn =3D *pte & as->smmu->pfn_mask; =20 + if (mapped_length) + *mapped_length =3D SZ_4K; + return SMMU_PFN_PHYS(pfn) + SMMU_OFFSET_IN_PAGE(iova); } =20 @@ -1007,7 +1013,7 @@ static const struct iommu_ops tegra_smmu_ops =3D { .attach_dev =3D tegra_smmu_attach_dev, .map_pages =3D tegra_smmu_map, .unmap_pages =3D tegra_smmu_unmap, - .iova_to_phys =3D tegra_smmu_iova_to_phys, + .iova_to_phys_length =3D tegra_smmu_iova_to_phys_length, .free =3D tegra_smmu_domain_free, } }; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-111.freemail.mail.aliyun.com (out30-111.freemail.mail.aliyun.com [115.124.30.111]) (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 EE5733EC2CB; Tue, 2 Jun 2026 10:47:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.111 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397236; cv=none; b=ZgoMXlGc7ryEUs4//nTBOmdu8bxUVxyzzJXNhEot+OYZz0+12naQemR2woCfW68S/mq60oW+aAZ8Xc91lMmwseKa9nnMtctuNRfGWKdhEbjGJwARy62xC/ncU78DrWvGwLePqMFtESJAiB9ePR4HyB3YubTy16x81jwE0A1ONtE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397236; c=relaxed/simple; bh=zFwUlRByaRxBiBzm+S9az+EuN27NZuGtV4pji/OfLKU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=rDKOWXQQKvGEaV0SPkIrvv4Le7IAd3CTWUiU3QbywG/lo7KRslZEc2YYNVahMU4mCZDwoqdB4bXVt361wUZO+KLwn29dy8qFpqI4HJgqzTaySE69sfgBUM/b3cuV1xHTld5KcRd+VeqOcm5UCePnJd+jl+qfSf9eAxLcA1NeC2o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=a4AwY8SO; arc=none smtp.client-ip=115.124.30.111 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="a4AwY8SO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397233; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Kbjp/ndSpS2VzxK0fPyovqcC2Ww81EnJ32SRD/dW6zo=; b=a4AwY8SOd5fA86G4pqlxQIW42MynrsenGhlNX6yPORhdtaGmvlOPAS+Ly5pZXj2pwXl5JCEpwGUuBaxqbC+P74Ylo88h/QL7PhpKhrpA+WSJErpWoaroq4D48YycreGfyC8CWeSZ7OWum2i4XpJR+7cOm1BMX0AG3qGS9+5Xnx8= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R151e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E97z_1780397229; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E97z_1780397229 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:10 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 22/30] iommu/virtio: implement iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:29 +0800 Message-ID: <20260602104637.1219810-23-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Implement iova_to_phys_length for virtio IOMMU driver, returning the actual PTE mapping size. Signed-off-by: Guanghui Feng --- drivers/iommu/virtio-iommu.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c index 587fc13197f1..c90d02cbbfd0 100644 --- a/drivers/iommu/virtio-iommu.c +++ b/drivers/iommu/virtio-iommu.c @@ -912,20 +912,27 @@ static size_t viommu_unmap_pages(struct iommu_domain = *domain, unsigned long iova return ret ? 0 : unmapped; } =20 -static phys_addr_t viommu_iova_to_phys(struct iommu_domain *domain, - dma_addr_t iova) +static phys_addr_t viommu_iova_to_phys_length(struct iommu_domain *domain, + dma_addr_t iova, + size_t *mapped_length) { - u64 paddr =3D 0; + u64 paddr =3D PHYS_ADDR_MAX; unsigned long flags; struct viommu_mapping *mapping; struct interval_tree_node *node; struct viommu_domain *vdomain =3D to_viommu_domain(domain); =20 + if (mapped_length) + *mapped_length =3D 0; + spin_lock_irqsave(&vdomain->mappings_lock, flags); node =3D interval_tree_iter_first(&vdomain->mappings, iova, iova); if (node) { mapping =3D container_of(node, struct viommu_mapping, iova); paddr =3D mapping->paddr + (iova - mapping->iova.start); + if (mapped_length) + *mapped_length =3D mapping->iova.last - + mapping->iova.start + 1; } spin_unlock_irqrestore(&vdomain->mappings_lock, flags); =20 @@ -1102,7 +1109,7 @@ static const struct iommu_ops viommu_ops =3D { .attach_dev =3D viommu_attach_dev, .map_pages =3D viommu_map_pages, .unmap_pages =3D viommu_unmap_pages, - .iova_to_phys =3D viommu_iova_to_phys, + .iova_to_phys_length =3D viommu_iova_to_phys_length, .flush_iotlb_all =3D viommu_flush_iotlb_all, .iotlb_sync =3D viommu_iotlb_sync, .iotlb_sync_map =3D viommu_iotlb_sync_map, --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-133.freemail.mail.aliyun.com (out30-133.freemail.mail.aliyun.com [115.124.30.133]) (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 8CAA83ED3A7; Tue, 2 Jun 2026 10:47:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.133 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397238; cv=none; b=Eot5nm54tzChto8slC1QiCGRCoEGmwamc1bvk4C14XShdhGoJ+pQWL32CMRDUOaCx4bHyoZlpqVw3mW4A1NSxebHuLyL8ZzmMEd7DrYSmUwbJE2mBnkbW42LlT71QQfLrvPpqXHk0yQ17CYHWpar/6hwa0nEwXPrYBA5XMlZybw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397238; c=relaxed/simple; bh=elDyqb+wtCCUgUTe4nFuf2M8/FbleQgy+uXcwv/LRfM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iX1BaIy84HGpAC/JkLrnshWwnf9Kd4DOe62uC6J2U52K/hreUcYfA1PuG+nLtlDJc54KiHaU66HDmqqDJ7FYqP1XkOOz3KwyfXodB2U9GabHBt0u2bPlhkSgkobZSjFsm8mteDGswh/AHVhbh6r0rHvT7VV9A2gLwTkvuUHWaQs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=A9TcC5lX; arc=none smtp.client-ip=115.124.30.133 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="A9TcC5lX" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397233; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=fpeMbV0QJrpbG2MacgDJwfUmVXBgC25iS8NV+6E7fEk=; b=A9TcC5lXde+2PQiSL5DHESwlMDNckGl3r/DnIOLNkbb0/cYvHhmTvVIukx7M9gtOOdTNCzKOYEGjDOz1xbfjgmwFv69aVcx/jUF2avme3wUY05bH34nwA2vJmRCKshZNkW3a/ly+4ysLvgRv9WIn/QXBgXn18fmbXbZHYEo/pGo= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R131e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E98G_1780397230; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E98G_1780397230 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:11 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 23/30] vfio/iommufd: use iova_to_phys_length for efficient unmap Date: Tue, 2 Jun 2026 18:46:30 +0800 Message-ID: <20260602104637.1219810-24-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Use iommu_iova_to_phys_length() to get PTE page size, allowing traversal by actual mapping granularity instead of PAGE_SIZE steps. Signed-off-by: Guanghui Feng Acked-by: Shiqiang Zhang Acked-by: Simon Guo --- drivers/iommu/iommufd/pages.c | 75 +++++++++++++++++++++++++++----- drivers/iommu/iommufd/selftest.c | 2 +- drivers/vfio/vfio_iommu_type1.c | 26 ++++++++--- 3 files changed, 85 insertions(+), 18 deletions(-) diff --git a/drivers/iommu/iommufd/pages.c b/drivers/iommu/iommufd/pages.c index 9bdb2945afe1..aed05bd0b01c 100644 --- a/drivers/iommu/iommufd/pages.c +++ b/drivers/iommu/iommufd/pages.c @@ -417,17 +417,44 @@ static void batch_from_domain(struct pfn_batch *batch, if (start_index =3D=3D iopt_area_index(area)) page_offset =3D area->page_offset; while (start_index <=3D last_index) { + size_t pgsize; + unsigned long npages; + unsigned long i; + /* - * This is pretty slow, it would be nice to get the page size - * back from the driver, or have the driver directly fill the - * batch. + * Use iova_to_phys_length to get both the physical address + * and the PTE page size in a single page table walk, allowing + * us to skip ahead by the contiguous region size instead of + * walking the page tables for every PAGE_SIZE step. */ - phys =3D iommu_iova_to_phys(domain, iova) - page_offset; - if (!batch_add_pfn(batch, PHYS_PFN(phys))) - return; - iova +=3D PAGE_SIZE - page_offset; + phys =3D iommu_iova_to_phys_length(domain, iova, &pgsize); + if (WARN_ON(phys =3D=3D PHYS_ADDR_MAX)) + break; + phys -=3D page_offset; + if (WARN_ON(!pgsize || pgsize < PAGE_SIZE)) + pgsize =3D PAGE_SIZE; + + /* + * Calculate contiguous pages within this PTE from our + * position. phys points to the page-aligned start (backed + * up by page_offset), so pages available =3D bytes from phys + * to PTE end divided by PAGE_SIZE. + */ + npages =3D (pgsize - (iova & (pgsize - 1)) + page_offset) / + PAGE_SIZE; + npages =3D min_t(unsigned long, npages, + last_index - start_index + 1); + if (!npages) + npages =3D 1; + + for (i =3D 0; i < npages; i++) { + if (!batch_add_pfn(batch, PHYS_PFN(phys) + i)) + return; + } + + iova +=3D npages * PAGE_SIZE - page_offset; page_offset =3D 0; - start_index++; + start_index +=3D npages; } } =20 @@ -445,11 +472,35 @@ static struct page **raw_pages_from_domain(struct iom= mu_domain *domain, if (start_index =3D=3D iopt_area_index(area)) page_offset =3D area->page_offset; while (start_index <=3D last_index) { - phys =3D iommu_iova_to_phys(domain, iova) - page_offset; - *(out_pages++) =3D pfn_to_page(PHYS_PFN(phys)); - iova +=3D PAGE_SIZE - page_offset; + size_t pgsize; + unsigned long npages; + unsigned long i; + + /* + * Resolve the PTE page size together with the physical + * address so we can fill multiple struct page pointers per + * page table walk when the IOMMU uses large pages. + */ + phys =3D iommu_iova_to_phys_length(domain, iova, &pgsize); + if (WARN_ON(phys =3D=3D PHYS_ADDR_MAX)) + break; + phys -=3D page_offset; + if (WARN_ON(!pgsize || pgsize < PAGE_SIZE)) + pgsize =3D PAGE_SIZE; + + npages =3D (pgsize - (iova & (pgsize - 1)) + page_offset) / + PAGE_SIZE; + npages =3D min_t(unsigned long, npages, + last_index - start_index + 1); + if (!npages) + npages =3D 1; + + for (i =3D 0; i < npages; i++) + *(out_pages++) =3D pfn_to_page(PHYS_PFN(phys) + i); + + iova +=3D npages * PAGE_SIZE - page_offset; page_offset =3D 0; - start_index++; + start_index +=3D npages; } return out_pages; } diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selft= est.c index af07c642a526..4b9c3ffc9523 100644 --- a/drivers/iommu/iommufd/selftest.c +++ b/drivers/iommu/iommufd/selftest.c @@ -1214,7 +1214,7 @@ static int iommufd_test_md_check_pa(struct iommufd_uc= md *ucmd, pfn =3D page_to_pfn(pages[0]); put_page(pages[0]); =20 - io_phys =3D mock->domain.ops->iova_to_phys(&mock->domain, iova); + io_phys =3D iommu_iova_to_phys(&mock->domain, iova); if (io_phys !=3D pfn * PAGE_SIZE + ((uintptr_t)uptr % PAGE_SIZE)) { rc =3D -EINVAL; diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type= 1.c index c8151ba54de3..c86315b1fcda 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -1177,25 +1177,41 @@ static long vfio_unmap_unpin(struct vfio_iommu *iom= mu, struct vfio_dma *dma, =20 iommu_iotlb_gather_init(&iotlb_gather); while (pos < dma->size) { - size_t unmapped, len; + size_t unmapped, len, pgsize; phys_addr_t phys, next; dma_addr_t iova =3D dma->iova + pos; =20 - phys =3D iommu_iova_to_phys(domain->domain, iova); - if (WARN_ON(!phys)) { + /* Single page table walk returns both phys and PTE size */ + phys =3D iommu_iova_to_phys_length(domain->domain, iova, + &pgsize); + if (WARN_ON(phys =3D=3D PHYS_ADDR_MAX)) { pos +=3D PAGE_SIZE; continue; } + if (WARN_ON(!pgsize || pgsize < PAGE_SIZE)) + pgsize =3D PAGE_SIZE; =20 /* * To optimize for fewer iommu_unmap() calls, each of which * may require hardware cache flushing, try to find the * largest contiguous physical memory chunk to unmap. + * + * Calculate remaining contiguous bytes within this PTE from + * our position, then try to join following physically + * contiguous PTEs. */ - for (len =3D PAGE_SIZE; pos + len < dma->size; len +=3D PAGE_SIZE) { - next =3D iommu_iova_to_phys(domain->domain, iova + len); + len =3D pgsize - (iova & (pgsize - 1)); + for (; pos + len < dma->size; ) { + size_t next_pgsize; + + next =3D iommu_iova_to_phys_length(domain->domain, + iova + len, + &next_pgsize); if (next !=3D phys + len) break; + if (WARN_ON(!next_pgsize || next_pgsize < PAGE_SIZE)) + next_pgsize =3D PAGE_SIZE; + len +=3D next_pgsize; } =20 /* --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-100.freemail.mail.aliyun.com (out30-100.freemail.mail.aliyun.com [115.124.30.100]) (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 4696F371056; Tue, 2 Jun 2026 10:47:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397241; cv=none; b=EN3w+UW8xjubBV+ha8MskOKNHUZpxtg91Ov1kz+Gj+9lofxbDrWYNXZ7tgEglgA1r/RAmoKoGezNnUCsFsVlSq4yubSnZSqkI++hfMDG5Prl4YtYxP2x/6M+HxEvs45v/dIPAfpfQsWtGPWVwwTYTHLl8DITvxjGE0bD/HzMGvQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397241; c=relaxed/simple; bh=lI3x7qiBpStf7+riMLkavf19/hS8Q6Sn6QyC7laDlJM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=idFdPeTqMEzq1sv7IjcBj/vsV8UHO1+x8yg0C3P84xHsWbmLNAWEjiqo4nFhs2JCcHjoqt1ml4NN/GPsJz6LM2q5gJRVfSV/xCDjSXsUkESBC0KFMURI1I3wWiWAo0/fA77o6r0pTIEQdja27DFtxNer4xzyEUchSBtTsOv+EDU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=cARLhbUE; arc=none smtp.client-ip=115.124.30.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="cARLhbUE" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397236; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=FtoAZ4ObIrgN8RB/Z4MrgWEyJCArPPBpz4yofnEwwtU=; b=cARLhbUEDHW8HzSoTo1RpHxukxpFCaDCXs1HO1YjokxCMmyEhvzEnR2ZWLWlhmxImtI+5v/qFtLHK6RZrFmgfuRsCLPWo55eLEE1tZ73n7lvHoZ+NmUHDxKs7SErZrMZgUrM2iS0VV0Q8c8bELD7KNr870s/kyL2ZxIfwl0hNKk= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E98Q_1780397231; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E98Q_1780397231 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:12 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 24/30] drm/panfrost: switch to iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:31 +0800 Message-ID: <20260602104637.1219810-25-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate panfrost_mmu to use ops->iova_to_phys_length(ops, iova, NULL) instead of the deprecated ops->iova_to_phys. Signed-off-by: Guanghui Feng --- drivers/gpu/drm/panfrost/panfrost_mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panf= rost/panfrost_mmu.c index 4a3162c3b659..aa0bc82deaf6 100644 --- a/drivers/gpu/drm/panfrost/panfrost_mmu.c +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c @@ -514,7 +514,7 @@ void panfrost_mmu_unmap(struct panfrost_gem_mapping *ma= pping) =20 if (bo->is_heap) pgcount =3D 1; - if (!bo->is_heap || ops->iova_to_phys(ops, iova)) { + if (!bo->is_heap || ops->iova_to_phys_length(ops, iova, NULL) !=3D PHYS_= ADDR_MAX) { unmapped_page =3D ops->unmap_pages(ops, iova, pgsize, pgcount, NULL); WARN_ON(unmapped_page !=3D pgsize * pgcount); } --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-118.freemail.mail.aliyun.com (out30-118.freemail.mail.aliyun.com [115.124.30.118]) (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 1CB4A3EDE5E; Tue, 2 Jun 2026 10:47:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.118 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397240; cv=none; b=EFHx2r3b+ae5o0MAqJpnG/fzD0hAwvq42IMkbWTpxbkxE8ctcLRMz6VLRyTVQ7qf6kZCw3B+OdkWekLfqacbksSHAHwy5bj2RA12GIxicDpcUlx5XaCbWJAFtleZH14lnvkgx/6wmRxKXKKBdvpTq2XSstiukee870NTz2yOxag= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397240; c=relaxed/simple; bh=W2loNsplm/62WAbgEnrp4IWnKkCdhr3ty+a5gaQMTJE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eYdX72ZDvfmhoN3gSP4yYCjR73mHS4fR0RKcs759tyJeKX3vaRt8h4i5jo3tg2fhI7vKGvWMzTGt8Ev0xj096H82baqFDMCWtuO8S6GZWTfCTkof5kVgfnZcpVylv3FJnFtSqYrh2g548YpW26PxYF367f5OKE0T1CiWP48gbJQ= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=GD1bECnp; arc=none smtp.client-ip=115.124.30.118 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="GD1bECnp" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397236; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=dloNw3khkYFpZ8HUOkLSEFcKW6J/1PykK/kcWicIG90=; b=GD1bECnpZ1NE9IebYu6/R9Abn+sSez+EUa7nXmHTRKVIV8XM6OfyZPDU/LIcDLf62NtB89Nr8nALWrNnYnJ8ivKfUVD9g8V6afqb73zdQSTdlJXuaJ/3emPorpapUcfM5PyZO8iINPasr9svUywgZuGZT8+PjXmMNOq/Ij7JflU= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E98l_1780397232; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E98l_1780397232 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:13 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 25/30] drm/panthor: switch to iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:32 +0800 Message-ID: <20260602104637.1219810-26-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate panthor_mmu to use ops->iova_to_phys_length(ops, iova, NULL) instead of the deprecated ops->iova_to_phys. Signed-off-by: Guanghui Feng --- drivers/gpu/drm/panthor/panthor_mmu.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/panthor/panthor_mmu.c b/drivers/gpu/drm/pantho= r/panthor_mmu.c index 75d98dad7b1d..3b635fc1f651 100644 --- a/drivers/gpu/drm/panthor/panthor_mmu.c +++ b/drivers/gpu/drm/panthor/panthor_mmu.c @@ -903,7 +903,7 @@ static void panthor_vm_unmap_pages(struct panthor_vm *v= m, u64 iova, u64 size) * are out-of-sync. This is not supposed to happen, hence the * above WARN_ON(). */ - while (!ops->iova_to_phys(ops, iova + unmapped_sz) && + while (ops->iova_to_phys_length(ops, iova + unmapped_sz, NULL) =3D=3D P= HYS_ADDR_MAX && unmapped_sz < pgsize * pgcount) unmapped_sz +=3D SZ_4K; =20 --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-119.freemail.mail.aliyun.com (out30-119.freemail.mail.aliyun.com [115.124.30.119]) (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 2BD453EDE68; Tue, 2 Jun 2026 10:47:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.119 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397241; cv=none; b=bkzzdncs516dyANHyGYqF7qCCuO6tibgUNnFMPGy6ltbWeI7fHBs0CjiOQDww0MDVAwLZ0N42/pDWoU4q0QHzciJQJF4UjcAa0qcwlHvf2FlQrnY2n8vcDoVxCw7RQCbJXwq+nZebKJcU8A8g+UOc5p76/dxsqCcGrzcd5PE/P0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397241; c=relaxed/simple; bh=TjzGiXc62UrhhblH9SGvj2BUK3+XiOWBAWsAXpz4ajY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nZmks0N7mSWyze0sQ4Kr979v0oqiXcS+/MWAvdbTHIlE6prZnbfg7JzIGGNx6j8EUOMuxWLsoXRRyLg4mThJ8PLtFajZETESLmvGJwgrvEZ9Y22uJ2shB4A4tVfoT3i5v1/1LBNl7Jq0AQe+jIRMCvQQoCPW6gtbAiEUyFqonDM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=ZI26kRn7; arc=none smtp.client-ip=115.124.30.119 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="ZI26kRn7" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397236; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=6wu4xt2SoksscXk0W48QmnDjXSJs3uObhzvzFgCeYOU=; b=ZI26kRn7GUX7bKAaxqpqO7SHdqAlOnP429/OD2ySb9YeSB4YfBaIz5USwIp1Fo/x49f6AUGLxKi+f0kO0yRmjg04n+oltPrUIxHKVLOgJh01Edgfjn0R8rK4cfgHqAT1fyUz2WcLLcH2WXEjUNkbGBgzECaetskCia8a0SoJ1dE= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R151e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E98x_1780397233; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E98x_1780397233 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:14 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 26/30] iommu/io-pgtable: selftests switch to iova_to_phys_length Date: Tue, 2 Jun 2026 18:46:33 +0800 Message-ID: <20260602104637.1219810-27-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Migrate io-pgtable ARM selftests to use ops->iova_to_phys_length instead of the deprecated ops->iova_to_phys. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-arm-selftests.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/io-pgtable-arm-selftests.c b/drivers/iommu/io-pg= table-arm-selftests.c index 334e70350924..78252344c3d0 100644 --- a/drivers/iommu/io-pgtable-arm-selftests.c +++ b/drivers/iommu/io-pgtable-arm-selftests.c @@ -72,13 +72,13 @@ static int arm_lpae_run_tests(struct kunit *test, struc= t io_pgtable_cfg *cfg) * Initial sanity checks. * Empty page tables shouldn't provide any translations. */ - if (ops->iova_to_phys(ops, 42)) + if (ops->iova_to_phys_length(ops, 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(test, i); =20 - if (ops->iova_to_phys(ops, SZ_1G + 42)) + if (ops->iova_to_phys_length(ops, SZ_1G + 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(test, i); =20 - if (ops->iova_to_phys(ops, SZ_2G + 42)) + if (ops->iova_to_phys_length(ops, SZ_2G + 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(test, i); =20 /* @@ -100,7 +100,7 @@ static int arm_lpae_run_tests(struct kunit *test, struc= t io_pgtable_cfg *cfg) GFP_KERNEL, &mapped)) return __FAIL(test, i); =20 - if (ops->iova_to_phys(ops, iova + 42) !=3D (iova + 42)) + if (ops->iova_to_phys_length(ops, iova + 42, NULL) !=3D (iova + 42)) return __FAIL(test, i); =20 iova +=3D SZ_1G; @@ -114,7 +114,7 @@ static int arm_lpae_run_tests(struct kunit *test, struc= t io_pgtable_cfg *cfg) if (ops->unmap_pages(ops, iova, size, 1, NULL) !=3D size) return __FAIL(test, i); =20 - if (ops->iova_to_phys(ops, iova + 42)) + if (ops->iova_to_phys_length(ops, iova + 42, NULL) !=3D PHYS_ADDR_MAX) return __FAIL(test, i); =20 /* Remap full block */ @@ -122,7 +122,7 @@ static int arm_lpae_run_tests(struct kunit *test, struc= t io_pgtable_cfg *cfg) IOMMU_WRITE, GFP_KERNEL, &mapped)) return __FAIL(test, i); =20 - if (ops->iova_to_phys(ops, iova + 42) !=3D (iova + 42)) + if (ops->iova_to_phys_length(ops, iova + 42, NULL) !=3D (iova + 42)) return __FAIL(test, i); =20 iova +=3D SZ_1G; --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-98.freemail.mail.aliyun.com (out30-98.freemail.mail.aliyun.com [115.124.30.98]) (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 0F52D3D9DB3; Tue, 2 Jun 2026 10:47:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397241; cv=none; b=uSZ9euq3YP8qyYrawIg7ykxOR5VsccBku+NROAYMSOys/7pijDDQIJKAM19r9r4bBTTUyL+S60tpOOrxLLakaxJQ4LuBIb+bsDRRcT8wsLRMiuxZh8B/bTspUFGHHLFtYVK621+BBKf4FiLPlqJyG0zEK3ANxMnu7bH2i6FmYtk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397241; c=relaxed/simple; bh=oyPkwHzc20XrNGeKDu1/pxB3ak3GLuqmVhS1MOFDJSM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Bd1/tBJ+dqU1StC48ADylwcHABn3iYokRbdPp+s9//fT9DWFRZtzx9Ic6hgEdUqieP0sZjWfQaRw+3RKIzxTrkz+ySuQn52MHExpYA3Jc0HfSt2MQGoCEBEa1cYs+zttd1oP6T3tevL1rNMMOM1EO/g9Sr5wNDYIeU9TaS8VcrE= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=ecuCuRdw; arc=none smtp.client-ip=115.124.30.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="ecuCuRdw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397237; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=cII6ny8ml7CMYCax7iOr5Pt8lHtm5RFG7dKDlrestlY=; b=ecuCuRdwh0Hco9yhtIGC4M2QLzKtBgplMZsmi8JTvTmY2eAhq4xARE40+6IbxGcLHK0U4jPXb4xOOnE3RtjZZjuHxslN9W9FecxloyF4dmcVXh+tp7vnnd3UdsVXv2I/PgFbt4CZ/eJaVqKdihE56E2uk/urlEPDn9oc8xPoMSU= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R201e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033032089153;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E99K_1780397234; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E99K_1780397234 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:15 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 27/30] iommu/io-pgtable-arm: remove deprecated iova_to_phys wrapper Date: Tue, 2 Jun 2026 18:46:34 +0800 Message-ID: <20260602104637.1219810-28-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Remove the iova_to_phys wrapper function and .iova_to_phys assignment from ARM LPAE io-pgtable, as all callers now use iova_to_phys_length. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-arm.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/iommu/io-pgtable-arm.c b/drivers/iommu/io-pgtable-arm.c index f33a86fa0f6c..55a32346b586 100644 --- a/drivers/iommu/io-pgtable-arm.c +++ b/drivers/iommu/io-pgtable-arm.c @@ -731,18 +731,6 @@ static int visit_iova_to_phys(struct io_pgtable_walk_d= ata *walk_data, int lvl, return 0; } =20 -static phys_addr_t arm_lpae_iova_to_phys_length(struct io_pgtable_ops *ops, - unsigned long iova, - size_t *mapped_length); - -static phys_addr_t arm_lpae_iova_to_phys(struct io_pgtable_ops *ops, - unsigned long iova) -{ - phys_addr_t phys =3D arm_lpae_iova_to_phys_length(ops, iova, NULL); - - return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; -} - static phys_addr_t arm_lpae_iova_to_phys_length(struct io_pgtable_ops *ops, unsigned long iova, size_t *mapped_length) @@ -965,7 +953,6 @@ arm_lpae_alloc_pgtable(struct io_pgtable_cfg *cfg) data->iop.ops =3D (struct io_pgtable_ops) { .map_pages =3D arm_lpae_map_pages, .unmap_pages =3D arm_lpae_unmap_pages, - .iova_to_phys =3D arm_lpae_iova_to_phys, .iova_to_phys_length =3D arm_lpae_iova_to_phys_length, .read_and_clear_dirty =3D arm_lpae_read_and_clear_dirty, .pgtable_walk =3D arm_lpae_pgtable_walk, --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-100.freemail.mail.aliyun.com (out30-100.freemail.mail.aliyun.com [115.124.30.100]) (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 E2D333EDE6B; Tue, 2 Jun 2026 10:47:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397242; cv=none; b=anYGlKZd5ANNuD1oh28WMfFS0y4uLvlPA2ZanubYv29Bd+XSxNILH4G5X3zoab3bDhRmpJA+haKWWFbkPpoxJH9OlhO5cs1G1IFCGFRPGuBq8z5IzD9X/xQh4y3j9i1jwiTkbFtRiD7kdFHjI5TaBzggBr9Ewy3jNKBYwG0tGxo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397242; c=relaxed/simple; bh=SgGT2XtlwIW25fqqcH2sbNLX2j3WfGy10H1kAkmPCi0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jCK6xEi8ZQF/RiIUgVe5MdIiRXadao1FnlCxT9h9rone7Fp0lYIax5aV6piqXtoQGe75uYrQfHPFb96eaHkHktTRt5yzwYMYirmZwK/njLd9awWQvMOmyomv+qdejrQmJZnf6hNdhWK/roYfVTuCT2Rg2AjK1kQQUxSUrsvk1Iw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=fO1ZEZB6; arc=none smtp.client-ip=115.124.30.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="fO1ZEZB6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397239; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=NV6kghCBJQvJsA0TcHTO4AYvesR8GtGwk13ibtGQHRk=; b=fO1ZEZB6hnVh9dOsSAtsTnyLpek8BRd/odhWWySBc5zv/rnK8wYc/HWgooGx/psCK0C7zTcdVfCiHmq/KF20sJKEDrh8m79FqhhW1eVOGrlcuosQn4nWYdx4ZQq0AsAJR6F3EE6NPw0mtVimCw9obJB7yYPUBhuj0gNzApVWSH4= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R131e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E99j_1780397235; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E99j_1780397235 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:16 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 28/30] iommu/io-pgtable-arm-v7s: remove deprecated iova_to_phys wrapper Date: Tue, 2 Jun 2026 18:46:35 +0800 Message-ID: <20260602104637.1219810-29-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Remove the iova_to_phys wrapper function and .iova_to_phys assignment from ARM v7s io-pgtable, as all callers now use iova_to_phys_length. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-arm-v7s.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-= arm-v7s.c index 5868d68e8a85..2f954842b052 100644 --- a/drivers/iommu/io-pgtable-arm-v7s.c +++ b/drivers/iommu/io-pgtable-arm-v7s.c @@ -641,18 +641,6 @@ static size_t arm_v7s_unmap_pages(struct io_pgtable_op= s *ops, unsigned long iova return unmapped; } =20 -static phys_addr_t arm_v7s_iova_to_phys_length(struct io_pgtable_ops *ops, - unsigned long iova, - size_t *mapped_length); - -static phys_addr_t arm_v7s_iova_to_phys(struct io_pgtable_ops *ops, - unsigned long iova) -{ - phys_addr_t phys =3D arm_v7s_iova_to_phys_length(ops, iova, NULL); - - return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; -} - static phys_addr_t arm_v7s_iova_to_phys_length(struct io_pgtable_ops *ops, unsigned long iova, size_t *mapped_length) @@ -732,7 +720,6 @@ static struct io_pgtable *arm_v7s_alloc_pgtable(struct = io_pgtable_cfg *cfg, data->iop.ops =3D (struct io_pgtable_ops) { .map_pages =3D arm_v7s_map_pages, .unmap_pages =3D arm_v7s_unmap_pages, - .iova_to_phys =3D arm_v7s_iova_to_phys, .iova_to_phys_length =3D arm_v7s_iova_to_phys_length, }; =20 --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-110.freemail.mail.aliyun.com (out30-110.freemail.mail.aliyun.com [115.124.30.110]) (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 0130F3DA5A3; Tue, 2 Jun 2026 10:47:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.110 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397244; cv=none; b=Rb4K3odijSu2DI7NAoF2Ea5JjuMSJiMU1sAtjtDYBOlr88wEhiOTWYMMeCiACGjN+8+CadixAw78QBMD3Zy7FSlGwrdnMZ/Fn5QwCR8YObvg6YP8kUYCJfJC4twy4pj7wrwHhM1Athr43pBHCKTB7BUvBZZTPivpiIEVjsSE6I8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397244; c=relaxed/simple; bh=do6hrbiMu2ieoTUFvq1bsSKUbVS6YN1Qf61NrTmx4MI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AH27/jO5kfQPpafbzbRAHPR4FxUODtc1Gs53sER8SERTzuSZQ9kLgMc6JkH4OBrn7ViC8nJVmQk9VU8ObRFGpMstrtWWB4NvAC0JjZkhlyoFFC0uEDxYnFBj1C4iSpdq+3GzW7R2q1efPca+25wG7WkPuqGjraePmXWfPVM9m74= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=PQMta2nG; arc=none smtp.client-ip=115.124.30.110 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="PQMta2nG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397240; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=o1pBWOp6KPk1xwyKTTozbXEjvmJOV/Yw7GM3gk1sgVc=; b=PQMta2nGwmoPnVfCtBqqwGXCXzc1w0zgxpfOZh7lluiTgaFuJTZMnD4KKitasWT6muM/GCpmtY8uydWowx1f1B2Ach0W7oMONULOMyOTQJEmjhU9gxwhFCoaFSjZixh+AH9uzzictRsuwlrBKcqh7+Ne1RQqwwCiT9snA0eS5Bo= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R161e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033045133197;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E9A._1780397236; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E9A._1780397236 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:17 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 29/30] iommu/io-pgtable-dart: remove deprecated iova_to_phys wrapper Date: Tue, 2 Jun 2026 18:46:36 +0800 Message-ID: <20260602104637.1219810-30-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Remove the iova_to_phys wrapper function and .iova_to_phys assignment from DART io-pgtable, as all callers now use iova_to_phys_length. Signed-off-by: Guanghui Feng --- drivers/iommu/io-pgtable-dart.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/drivers/iommu/io-pgtable-dart.c b/drivers/iommu/io-pgtable-dar= t.c index 2dac21a578a7..01c4c022830b 100644 --- a/drivers/iommu/io-pgtable-dart.c +++ b/drivers/iommu/io-pgtable-dart.c @@ -333,18 +333,6 @@ static size_t dart_unmap_pages(struct io_pgtable_ops *= ops, unsigned long iova, return i * pgsize; } =20 -static phys_addr_t dart_iova_to_phys_length(struct io_pgtable_ops *ops, - unsigned long iova, - size_t *mapped_length); - -static phys_addr_t dart_iova_to_phys(struct io_pgtable_ops *ops, - unsigned long iova) -{ - phys_addr_t phys =3D dart_iova_to_phys_length(ops, iova, NULL); - - return (phys =3D=3D PHYS_ADDR_MAX) ? 0 : phys; -} - static phys_addr_t dart_iova_to_phys_length(struct io_pgtable_ops *ops, unsigned long iova, size_t *mapped_length) @@ -416,7 +404,6 @@ dart_alloc_pgtable(struct io_pgtable_cfg *cfg) data->iop.ops =3D (struct io_pgtable_ops) { .map_pages =3D dart_map_pages, .unmap_pages =3D dart_unmap_pages, - .iova_to_phys =3D dart_iova_to_phys, .iova_to_phys_length =3D dart_iova_to_phys_length, }; =20 --=20 2.43.7 From nobody Mon Jun 8 08:30:34 2026 Received: from out30-132.freemail.mail.aliyun.com (out30-132.freemail.mail.aliyun.com [115.124.30.132]) (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 EAA503F44F7; Tue, 2 Jun 2026 10:47:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.132 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397245; cv=none; b=ND2gEoRBe3wB0j+5IWzgUH0aVuc3hdfC4USOoNiLTzUe1ucPKsiwoR/MlHLpoSwb1qF+Oensk71n0nufhUEcc3+RDLSLLlLVHHQMQ1soJJ1sWTE4FNha1fPEDCWjv321HJwabyJr5MzliJ4kC/9ZmMqUevInWLqr4FO+G4Oeaj4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780397245; c=relaxed/simple; bh=PagqwuURg6QVN0GrgNjlzYiRes/u+xXO+F6V0jHmYzs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IF+N/q5MBv4kafyaIPflk7AkKXgJNriWwItLnOkyZ/F/uHWoNDTEZsw6JuUaPxuB6FFyWG2Luy/WHLuE+CFqpG4pREnyTAr0S9BeU/AQ2M6g0txc9q9m4NQgHtZewdOsqUJA944kpX3MWUB1v8ZNV0qyTCvw1z4TVcsKTO9LiBI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com; spf=pass smtp.mailfrom=linux.alibaba.com; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b=ihGLi8gI; arc=none smtp.client-ip=115.124.30.132 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.alibaba.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.alibaba.com header.i=@linux.alibaba.com header.b="ihGLi8gI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780397242; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=C15FwabaXicb3m5vf4ClTn8uJ1VB2DMgTV11Lw9ohJo=; b=ihGLi8gIiW1yBmCCnFiA546N2d5LHtMsAHblI3+5TirKzUHd3xcj/2ykZtkIMUvQe7qxD71xjiSh21s9+In9XPMJ1UxNkfsAhwMy2IilEMjzuSjPeFCQodoMFa/vF00lR2HIbIinPGc8k1xfD6UpPDWJZKNc7SbYxOMO/lVpmOw= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R111e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=maildocker-contentspam033037009110;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X44E9AA_1780397237; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X44E9AA_1780397237 cluster:ay36) by smtp.aliyun-inc.com; Tue, 02 Jun 2026 18:47:18 +0800 From: Guanghui Feng To: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, jgg@ziepe.ca, joro@8bytes.org, kevin.tian@intel.com, kvm@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, liviu.dudau@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, oliver.yang@linux.alibaba.com, robh@kernel.org, robin.murphy@arm.com, shiyu.zsq@linux.alibaba.com, steven.price@arm.com, suravee.suthikulpanit@amd.com, tzimmermann@suse.de, wei.guo.simon@linux.alibaba.com, will@kernel.org, xlpang@linux.alibaba.com Cc: alikernel-developer@linux.alibaba.com Subject: [PATCH v2 30/30] iommu: remove iova_to_phys from domain_ops and io_pgtable_ops Date: Tue, 2 Jun 2026 18:46:37 +0800 Message-ID: <20260602104637.1219810-31-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> References: <20260531093637.3893199-1-guanghuifeng@linux.alibaba.com> <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> 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 Content-Type: text/plain; charset="utf-8" Now that all drivers implement iova_to_phys_length and all callers have migrated, remove the deprecated interfaces: - Remove .iova_to_phys from struct iommu_domain_ops - Remove .iova_to_phys from struct io_pgtable_ops - Remove fallback path in iommu_iova_to_phys_length() - iommu_iova_to_phys() remains as a thin wrapper calling _length with NULL Signed-off-by: Guanghui Feng --- drivers/iommu/iommu.c | 12 ++---------- include/linux/io-pgtable.h | 3 --- include/linux/iommu.h | 3 --- 3 files changed, 2 insertions(+), 16 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 1b1aaa53dd16..84893d4c7c60 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2554,7 +2554,7 @@ EXPORT_SYMBOL_GPL(iommu_detach_group); * Like iommu_iova_to_phys() but additionally returns the page size of the * PTE mapping at @iova through @mapped_length. * - * Return: The physical address for the given IOVA, or PHYS_ADDR_MAX if no= translation. + * Return: The physical address for the given IOVA, or 0 if no translation. */ phys_addr_t iommu_iova_to_phys_length(struct iommu_domain *domain, dma_addr_t iova, @@ -2566,16 +2566,8 @@ phys_addr_t iommu_iova_to_phys_length(struct iommu_d= omain *domain, if (domain->type =3D=3D IOMMU_DOMAIN_IDENTITY) return iova; =20 - if (!domain->ops->iova_to_phys_length) { - /* Fallback to legacy iova_to_phys without length info */ - if (domain->ops->iova_to_phys) { - phys_addr_t phys =3D domain->ops->iova_to_phys(domain, iova); - if (phys && mapped_length) - *mapped_length =3D PAGE_SIZE; - return phys ? phys : PHYS_ADDR_MAX; - } + if (!domain->ops->iova_to_phys_length) return PHYS_ADDR_MAX; - } =20 return domain->ops->iova_to_phys_length(domain, iova, mapped_length); } diff --git a/include/linux/io-pgtable.h b/include/linux/io-pgtable.h index 42bcdd309b88..c595f5b51e61 100644 --- a/include/linux/io-pgtable.h +++ b/include/linux/io-pgtable.h @@ -202,7 +202,6 @@ struct arm_lpae_io_pgtable_walk_data { * * @map_pages: Map a physically contiguous range of pages of the same s= ize. * @unmap_pages: Unmap a range of virtually contiguous pages of the same = size. - * @iova_to_phys: Translate iova to physical address. * @iova_to_phys_length: Translate iova to physical address and return the * remaining mapped length from iova to the end of the * mapping entry via @mapped_length. If @mapped_length is @@ -222,8 +221,6 @@ struct io_pgtable_ops { size_t (*unmap_pages)(struct io_pgtable_ops *ops, unsigned long iova, size_t pgsize, size_t pgcount, struct iommu_iotlb_gather *gather); - phys_addr_t (*iova_to_phys)(struct io_pgtable_ops *ops, - unsigned long iova); phys_addr_t (*iova_to_phys_length)(struct io_pgtable_ops *ops, unsigned long iova, size_t *mapped_length); diff --git a/include/linux/iommu.h b/include/linux/iommu.h index 19da84c2922c..ca585647180b 100644 --- a/include/linux/iommu.h +++ b/include/linux/iommu.h @@ -746,7 +746,6 @@ struct iommu_ops { * array->entry_num to report the number of handled * invalidation requests. The driver data structure * must be defined in include/uapi/linux/iommufd.h - * @iova_to_phys: translate iova to physical address * @iova_to_phys_length: translate iova to physical address and additional= ly * return the page size of the PTE mapping at @iova * through @mapped_length. @@ -777,8 +776,6 @@ struct iommu_domain_ops { int (*cache_invalidate_user)(struct iommu_domain *domain, struct iommu_user_data_array *array); =20 - phys_addr_t (*iova_to_phys)(struct iommu_domain *domain, - dma_addr_t iova); phys_addr_t (*iova_to_phys_length)(struct iommu_domain *domain, dma_addr_t iova, size_t *mapped_length); --=20 2.43.7