From nobody Mon Jun 8 08:30:20 2026 Received: from out30-112.freemail.mail.aliyun.com (out30-112.freemail.mail.aliyun.com [115.124.30.112]) (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 2C8BA3D891E; Wed, 3 Jun 2026 15:18:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499931; cv=none; b=aBZ1CkcHav7iKRdIryqbERpDIUXicYZIx0q/XdVobDXmVPgnXcA6qIQKYG+NleiB7qUixeGCMvjzc4VfI3Q3HMkL0Um2CBwcmlkUCcZKa/xp8xoutl40Xicp3cNjwozWYqB/0aBmfGZahNQEVS0090U09ghHKJf2Ci1JP+K88+U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499931; c=relaxed/simple; bh=cO5/nxaFUE+P/+5g3j7wh+h71dcUOTP+5CwPSYIDTJo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=FMBVIaUk5exfgFFcvlxQvGpxqJOX4KbcYgLHCm2L8jEPY/R3duCpTvhxwFhXsoKy6I7d8aGggmypFbA3BU0XbgC+orhKbiKN2LlPknc9hocWoXpNRCLjeLY/VVCp3wfAZZLsa8eawu+eFbn/RijtFs0kqs8BJk9W++9UvNbntIc= 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=cIV9n+TO; arc=none smtp.client-ip=115.124.30.112 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="cIV9n+TO" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499921; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=IJzhUSXQOrQUE0UGHOvEP1KaaarZmdkx5L7WKtuiYsw=; b=cIV9n+TOGtU3xIc2PvCMR4Q5naYUK2zUPt7TCKG4LJRPBnpeC9/rpjr9krouAbLhjhU6T88tbltw6smC3IZijhZ3TExKHWgOf1aHJGEUXOLhkjZViHcsjURPWF8tM9keePnr7Z83Un9aczD7Ege8WXe2u+N69nSyncHt1McFq3Q= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R321e4;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_---0X47fR0u_1780499919; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR0u_1780499919 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:39 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 01/32] iommu: introduce iova_to_phys_length in iommu_domain_ops Date: Wed, 3 Jun 2026 23:17:33 +0800 Message-ID: <20260603151804.1963871-2-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 Reviewed-by: Lu Baolu --- drivers/iommu/iommu.c | 50 ++++++++++++++++++++++++++++++++++++++----- include/linux/iommu.h | 9 ++++++++ 2 files changed, 54 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index d1a9e713d3a0..320ea13488e7 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2545,15 +2545,55 @@ 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 exists. + */ +phys_addr_t iommu_iova_to_phys_length(struct iommu_domain *domain, + dma_addr_t iova, + size_t *mapped_length) { - if (domain->type =3D=3D IOMMU_DOMAIN_IDENTITY) + phys_addr_t phys; + + if (domain->type =3D=3D IOMMU_DOMAIN_IDENTITY) { + if (mapped_length) + *mapped_length =3D PAGE_SIZE; return iova; + } =20 - if (domain->type =3D=3D IOMMU_DOMAIN_BLOCKED) - return 0; + if (mapped_length) + *mapped_length =3D 0; + + if (domain->ops->iova_to_phys_length) + return domain->ops->iova_to_phys_length(domain, iova, mapped_length); + + /* Fallback to legacy iova_to_phys without length info */ + if (!domain->ops->iova_to_phys) + return PHYS_ADDR_MAX; + + phys =3D domain->ops->iova_to_phys(domain, iova); + if (!phys) + return PHYS_ADDR_MAX; + + if (mapped_length) + *mapped_length =3D PAGE_SIZE; + return phys; +} +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:20 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 83A983AE6E2; Wed, 3 Jun 2026 15:18:45 +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=1780499928; cv=none; b=n/8l4rZSa/dHU5vIrIWP9Ex3uo3Ombn6ybThXRX8B0qyjyi5ceAHAQGllsHDSZsFkL9QLuSxjoerydDWyo3pPh+iuPy8Tmy53VnJszWuuoBwROoQ6JllEH/Le1hFJQ1D0HoL4iVU4MHflD3frL5ecVhXLtC/2iSfeWxbRSPWKGA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499928; c=relaxed/simple; bh=48mjsitOr3Z/m7oLuZcBEFl3hR3k2gCTIjH3KGTtgeA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ty3Qt0yIpv23ZbZPs1YHGtSlCCQ18afJpw5MxHa+ThsQ/FpqudBTurFF7iuf7hnjD6GlmgBza+10SXIIU+pW6qBAHDu/Glp5RlH16bS7u56uoNCVQLATV7I3HUsmO02VfnPtk1UdbV0gJx8VfoqvW0Jo6Tbj16EIJSQDYz/rw3E= 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=Li35YIm1; 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="Li35YIm1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499922; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=bNxex+pO0MrYJpvCBggj4Mk1SXXB71J1utBey15cQ0s=; b=Li35YIm1TdCOVdK7wejcGydlm2Lw2Jflmwz1H7WHN6I49ZbSlQbD2DlRHoqflUQZu0YNY52xDN9xLyIICP50ayy+Jm7C9XHcGTu+EQA6JZ4QKQpN96LibRBoywk84/3ayPEuR4PS3JBfyXzxQw+0mFfJz19QJ85CoN1wJDAA3wk= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R321e4;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_---0X47fR16_1780499920; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR16_1780499920 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:40 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 02/32] iommu/io-pgtable-arm: introduce iova_to_phys_length in io_pgtable_ops Date: Wed, 3 Jun 2026 23:17:34 +0800 Message-ID: <20260603151804.1963871-3-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 2026 Received: from out30-112.freemail.mail.aliyun.com (out30-112.freemail.mail.aliyun.com [115.124.30.112]) (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 DA30A3DA5CC; Wed, 3 Jun 2026 15:18:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499933; cv=none; b=MOmQVnQKDBgvKCR3ZBU83Zxqkhg4WWb9ezERIeW7jU8zh7v1GXHSHo3OTHYC/YaiJgYYhqu70goaogrTrElTsGcwJXX065pGXEjg72YwCqCjnM/6kK8oXcy0izOGrIx/ayvxShJ9qUR6BNqnkvYH8jQ1KdfG8tpiKlwCuVkDF7M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499933; c=relaxed/simple; bh=oan8HP5p9PF4RFbj6aTd/MkjQYrQA0gX+kpgta5+kDk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UlykQbqTkigKn2bu+6ZI/i5fF4pxnwqW21OLVllkkZKe2kuNsjrXBvTN8kcxXmkGH9zefArMf+K0xnLqJKUQj30P54aqV4tMA3/iK+cdJ2/QgMKA9q10+yf6Ccif2a8BMa1fVfcLb7wUOt4eKQ7jpQmJ5IZL5REjYl82D8UG2r8= 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=tWLtEYUI; arc=none smtp.client-ip=115.124.30.112 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="tWLtEYUI" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499923; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=0BYo1PwdAu529FAIoCuH5ns8iq006AC645sJYA70ZFs=; b=tWLtEYUIvx69g3g4qdfSmEj1XeDhaSVyhmadnEM9O7lCwPxKGF3udPrZlyt+/+1uEdYK6ma+74P0PWI9TeQ3tz7NSi6LF9+C2RsHtCySQ0mNBxx1wTE/YN3Pu5iVkivLR5imQTxUhH6kc1mBIC6Im4wVlzePyTPqlrm6a7vGhLs= 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-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR1Y_1780499921; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR1Y_1780499921 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:41 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 03/32] iommu/io-pgtable-arm-v7s: introduce iova_to_phys_length in io_pgtable_ops Date: Wed, 3 Jun 2026 23:17:35 +0800 Message-ID: <20260603151804.1963871-4-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 32 +++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/io-pgtable-arm-v7s.c b/drivers/iommu/io-pgtable-= arm-v7s.c index 1dbef8c55007..62198e31a393 100644 --- a/drivers/iommu/io-pgtable-arm-v7s.c +++ b/drivers/iommu/io-pgtable-arm-v7s.c @@ -641,8 +641,21 @@ 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) { struct arm_v7s_io_pgtable *data =3D io_pgtable_ops_to_data(ops); arm_v7s_iopte *ptep =3D data->pgd, pte; @@ -656,11 +669,15 @@ 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; + + if (mapped_length) + *mapped_length =3D ~mask + 1U; + return iopte_to_paddr(pte, lvl, &data->iop.cfg) | (iova & ~mask); } =20 @@ -714,6 +731,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 +861,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 +888,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 +902,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 +910,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:20 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 5C11D3E16B8; Wed, 3 Jun 2026 15:18:52 +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=1780499935; cv=none; b=lvCsMS+/mOTj5dPPrAmHzsvgVaFYdyOG/r2Sm8Sz+cd0jQVB4WbqvW+XViPcgREVN5mhpA1DMuiY7Pi9jD1cUhTRHjOeoa5tnAvDtKHUoWKtOJ4KFp5z8oprpM3JSo9/yBJKBXd0cR2UCnWV0ITIHWpQkSp7b6yVnkxNIKGKayo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499935; c=relaxed/simple; bh=YqTLlp4rQ5N80NTs3rOrlqQxzoKiBhSW5JW4kktMGXY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kuTsgCRi0nOgs6e7mQTlMMjPfiAxYK9WmqYg9YoPOIDYh65Ih+fLhi6aO6KixBxrdxu0sRfdIwwqQ+AxFQYUvWP8b6ZXe9mGacMh2Ta9Pn8s6toKT2pKIO35AEDr6c1kYdn/9RZ8zpw4Gjbeh+UjgWGCt0Li8cD0daCuRTF4D2Q= 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=c9wDNKVy; 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="c9wDNKVy" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499924; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=5K9kQ+7O2to9AMrCCxHb12XQWSw4xjjz1YrQKtCPM08=; b=c9wDNKVyh6CUp50BD1q43dV2vGm9+vjuQod3i5xEQ7UuVXL+7fVS787uSqpSpXjWfUGO0GyHXPuozT300VndBfxM2oh6AY+SauiX/jPVya6YXR/aHjdByi1Za46iXWPyyVnGZ9BhvxSwMU3hUjgUA59OO7IShh0KbLSzcFtwNAQ= 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-contentspam033037009110;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR1m_1780499922; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR1m_1780499922 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:42 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 04/32] iommu/io-pgtable-dart: introduce iova_to_phys_length in io_pgtable_ops Date: Wed, 3 Jun 2026 23:17:36 +0800 Message-ID: <20260603151804.1963871-5-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 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 CA1683DF002; Wed, 3 Jun 2026 15:18:52 +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=1780499935; cv=none; b=P5ThqF6SD4Gi28l3Y18Mg5u427ZSWSWnKBONCz9g97JAX/1YmXp9zjtXRf2exruTmzDy0DQLf10hTAvdh8soXTedsv3LK246IkmmcwVd8902x3v9/QG7FK6wHqLW8pY1BbSGijNUtLPZJsGR9VIhNUrHvFnveM8ahvEve+JoJd4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499935; c=relaxed/simple; bh=bIq9juZEAtQN8VshQ440y/z3G7luRjx1A5ifI0XHzEE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L4BEv3SUf/NTt7UqQ7sGJy4xcrZMP92WrrT+tlRZAV5hIHgwxt+KmkBv0KlA2qJZgaAr2SeskmJej1to+f4XvP3WK8OvR4vahY9cgfd4oK9p5u/z4ERjx8On8YzuFp7gmq50TX2UDqM7LFh+ylPzA2daW9oT3yBqkDXQKG3Ummo= 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=eTdkhtot; 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="eTdkhtot" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499925; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=pzHjh+jwVoHwjthiqpzHxMzEqV3gkG9mTeHPbbZ5Xck=; b=eTdkhtotfzupZhnLVSYSHN8WadSi5dklG85CCAQ3Aw62KY3/khHhe9hqERy87qLif1LiBRhkHHMjrebg3rZtL1PS2eSURsKI7Js9Rupj/fRSTLlqEg4bv/HQsl5XBlzBYU0YdMQLdGpzX98kEQJRpl8/uzVBPBfoN7oW7oNgTyk= 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-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR1x_1780499923; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR1x_1780499923 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:43 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 05/32] iommu/generic_pt: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:37 +0800 Message-ID: <20260603151804.1963871-6-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 84 +++++++++++++++++++++-------- include/linux/generic_pt/iommu.h | 13 ++--- 2 files changed, 69 insertions(+), 28 deletions(-) diff --git a/drivers/iommu/generic_pt/iommu_pt.h b/drivers/iommu/generic_pt= /iommu_pt.h index dc91fb4e2f61..e362e819ef9c 100644 --- a/drivers/iommu/generic_pt/iommu_pt.h +++ b/drivers/iommu/generic_pt/iommu_pt.h @@ -145,13 +145,21 @@ 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; + unsigned int entry_lg2sz; + size_t entry_sz; + pt_oaddr_t expected_oa; =20 switch (pt_load_single_entry(&pts)) { case PT_ENTRY_EMPTY: @@ -159,45 +167,77 @@ 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); + entry_lg2sz =3D pt_entry_oa_lg2sz(&pts); + entry_sz =3D log2_to_int(entry_lg2sz); + + /* Start with the full mapping size of the first entry */ + data->length =3D entry_sz; + + /* Accumulate subsequent physically contiguous entries */ + expected_oa =3D pt_entry_oa(&pts) + entry_sz; + pts.end_index =3D log2_to_int(pt_num_items_lg2(&pts)); + pt_next_entry(&pts); + + while (pts.index < pts.end_index) { + pt_load_entry(&pts); + if (pts.type !=3D PT_ENTRY_OA) + break; + if (pt_entry_oa_lg2sz(&pts) !=3D entry_lg2sz) + break; + if (pt_entry_oa(&pts) !=3D expected_oa) + break; + data->length +=3D entry_sz; + expected_oa +=3D entry_sz; + pt_next_entry(&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 phys and contiguous le= ngth * @domain: Table to query * @iova: IO virtual address to query + * @mapped_length: Output for the total contiguous mapped length 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 total contiguous physically mapped length through + * @mapped_length. The function accumulates consecutive page table entries= that + * are physically contiguous, so callers can determine the full contiguous + * mapping extent with a single call. * * 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:20 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 0A9643D6CC4; Wed, 3 Jun 2026 15:18:47 +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=1780499932; cv=none; b=WFyUqs7aY9laAQhq6FuAGtVOET3r5IjRPtT1y+By7i33zos6iY4uL5QTaq7AtIDI8ijU83dhi0G1tnlmLDRbBTclcftvxB8nvAQiSNQ32jKq3QNm51RTS+zjs+22ARd8ATbPWs9EhBw8ikg3Yq7rkPPQW0+PVJx0icsuJAyBqLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499932; c=relaxed/simple; bh=shHL9CPpPX2D/2Lu8FFvPYquO9rLqVtRyr6w7ZIA+6E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nWmbcRcRvAvY61wGxXZQ1SNHMQwPQpyqUrobADf2dTlsFFXx6Q4hxvVIX6HX20Vo5QbU9KFs2G3CGRKx++TlrBGGFcczQueIoIvaxSnz252imB/iLbIzv2M/QypPm8LVZbyS52TuTOhqrHlX5YhLFx/FztrYPUS6VacxAWK80lY= 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=YvaDwZrb; 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="YvaDwZrb" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499926; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=F3eN6aAZAGCJthbocac3Ss/Txd8BjZoiukZVZ8bvt4k=; b=YvaDwZrbt2OLddwT5aLexmG60mYcgSh8AC5oMN/CaHjsScH+C0rf/In8S95pu12h9Fc+jkqDWPapL0kmQGY87Cvb6dEtdgF+ZOD5vgjUDZvHmmemQB1uQaBAStEYi66ocb5UpR/R7VeKBIe/dbwBoqZogf08QbZnr4igWrTPhho= 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-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR29_1780499924; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR29_1780499924 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:44 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 06/32] iommu/arm-smmu-v3: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:38 +0800 Message-ID: <20260603151804.1963871-7-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 10 ++++++---- 1 file changed, 6 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..616e7057ec7f 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,16 @@ 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 (!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 +4398,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:20 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 85C183D9053; Wed, 3 Jun 2026 15:18:49 +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=1780499931; cv=none; b=rwobL+lCmsKqkA9tkmq+4MXTIkAQ0A9d4UjIuvw2CC9aqryuCwFb6J+6F2zbb46TvoiCICzRT1jwpeTK0w0yKptzFrrp5dn+VB6lfjNos98whzackRSheNQfys6cpn9OEVBIyuvM3qjew3/VL0w/+kY6vj8amRoFGX5K+A5rQHI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499931; c=relaxed/simple; bh=R7D8ecn0FwFFQ4euyAaqeN3jiv3vEHfleIxvBEMaFxE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KQH6pPFvqe2WSvCvOmiMd7NqEKCTtJO9Dx7BqLz60Ln6QFijG9Ta3Sne2mbkiWKzNJnCBWoCSIAGV2sU8//Y8ENGC7gjtIQ/F7ezhuMzvMU6i4VOOs767IIAaGRJBs0nkj22jNCSsU/2YeCDq/p76gGb6OjmjXvWI/W3ZCpOHQ8= 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=sZ0ZsR/Q; 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="sZ0ZsR/Q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499927; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=HBewM6jbUcaBlyhsOXQ6v/pv4THYWRhxq86SYYNYvAU=; b=sZ0ZsR/QQEXrIKLHQn8XatIOPzUQN6YRpK64beHZpWlM6iVexask1BLcIWdhF89orN5NJaHQdsT1YtamKhCEGPxNl/kYO05Tiux4rLr24afC/wOHB/1s9wbam9bgghTSnT6uubpausbpn2JWYsw2ciZzgSP4gMrCM7Uf61WgWaY= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R571e4;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_---0X47fR2R_1780499925; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR2R_1780499925 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:45 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 07/32] iommu/arm-smmu: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:39 +0800 Message-ID: <20260603151804.1963871-8-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 13 +++++++------ 2 files changed, 8 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..5c9ec7c93763 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,21 @@ 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 (!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 +1653,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:20 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 B7F1D47CC8E; Wed, 3 Jun 2026 15:18:56 +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=1780499938; cv=none; b=T7QAN/Te3YJt5AxTXRGIylmAk5AbYWPjmVTelWBJjySwqIaaXcVHCf8+Xzo0CUHIdswUwrgCSUSMv2dR34RJ7jsbx7CZijwu8b/BOskwZMqZoTcugXBnxEXQs/oCp3w1nFI9LVmBBbbadBhvClKPHv3BRydf09+GppknUITUk3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499938; c=relaxed/simple; bh=TwPlHK7C2kY2tjPK7vpetXLhPuD918Q5/UZzEDfqkQQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pv7NHMAUjzetP7desqkqPM7uEoUu+vUD4/bDSbAZvv8VWfg9Q0ZrRF4MgYGbvBQc4eKVr8Iuyh+8/76wxOhKSW+eYBZALBzak5OltYno4eTL8HMsww2X6XbGZ21tcunuvv4uw/4Yib77zwd9YzrozuOLIf9DlCbCQOxVJegeTjA= 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=wlrj/QCl; 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="wlrj/QCl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499929; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=iqg8jVUeg5vulwkVyAexMfFQNB/RSusVVmcIuPE1fjY=; b=wlrj/QCl4uqYTmkmTP/HFsqX20vKedbg8j90oHKDjmfdoN0+qV2WNDTfapCLF2xMpLMcsKsrHvCE7HNFdjVbjSewIViVC+Ps1UsQ39a9v1VqUfcjRg/hnG9oE7JLPUxkeil6r/nyQIwYarDBcnHw5yMCUUxaocCfg6BkYvpFKAU= 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-contentspam033037033178;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR2c_1780499926; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR2c_1780499926 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:46 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 08/32] iommu/qcom_iommu: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:40 +0800 Message-ID: <20260603151804.1963871-9-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 11 ++++++----- 1 file changed, 6 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..9e0e8b5caec1 100644 --- a/drivers/iommu/arm/arm-smmu/qcom_iommu.c +++ b/drivers/iommu/arm/arm-smmu/qcom_iommu.c @@ -489,19 +489,20 @@ 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 (!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 +603,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:20 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 A3CB548124B; Wed, 3 Jun 2026 15:18:59 +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=1780499945; cv=none; b=Lu1NjYdmAxBZlGrWuGQMS7TKIipBljUdk/t0BzQB7Tl/b5fFWykdYDQsHwtRcORWeMG7MYAu5IVRfIlDFzqWHFa1ELwdkD0ErGpX2jZ3FUd3qBFwJBPLFETGpq5xWliuic7DA4kWNVSNRsohAMOmK/qa9ednu9T7M4dHtqk+53c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499945; c=relaxed/simple; bh=6pZrg1H9Ivm1KBa72TUG1LkookqksX/YdXuYMVIlQ4s=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=shUKSyYO2f3Qv/MBC5E9rFOg0bqARc7z3jVWcD6vSwWYxXK/uBreQ6XQ8eZe+XaULnCsS3VBVW1TKjKRQyxzREGJue+CjwDXwZ3gfKCLCga2bqIDM02UZUyGpHKfAeukfCgW0EwI8oSVGJu5dRpsfcxERq9rRN/5uIU5yw/LxgQ= 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=XQWSXUqS; 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="XQWSXUqS" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499929; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=p4rS05BvfO7tKKbX+DS2TrSOXcVnNjfP3PbV2BH3iGY=; b=XQWSXUqSPzKwm8OQ/jHiVvaurfML3HQgeKTVEhHl64dSjCpKBKVnWBmjCvFfmb8crvkoCZ+CuYiUsV9fqA0sMWjH03txts/P45b9TiyqhZTOMfBQXZ/QJFtbtj94eTnbcA5bvGSMTdw+7Z6AiRQR3oblNUmAumw25ZaBwe5eFSo= 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_---0X47fR2o_1780499927; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR2o_1780499927 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:47 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 09/32] iommu/apple-dart: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:41 +0800 Message-ID: <20260603151804.1963871-10-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/apple-dart.c b/drivers/iommu/apple-dart.c index 17bdadb6b504..fdc533ba72da 100644 --- a/drivers/iommu/apple-dart.c +++ b/drivers/iommu/apple-dart.c @@ -528,16 +528,17 @@ 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 (!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 +1019,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:20 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 D949F481659; Wed, 3 Jun 2026 15:19:00 +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=1780499945; cv=none; b=Up9LtkBncbIKIovEHSNowTlV106EpmmtG3X9b70HgIVHgcclAqDS2+JjVWp/yDmgbcAX3OJfDsHRqpgPQqzUXQhipRb+iFrV3jnHGXtlcVEDBDSTDmet6QbCruFAOsr/oHwFS4rn1TuBB2lMzpUqX8J5Eu5NdNQjuZW6rqAsCms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499945; c=relaxed/simple; bh=ax8fDe/mdOayxrn8NCM5Uh70m+R/5ZZEaIDoJvQSYZA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cNlcNMQNcGmls20KDjHmjSx835ZMK+WO0JxB3E/CI8MAcT3QxLv8UaFwDDCE6R8or1QqeRdhwzWFm+z9D4qRddO0MUdMnIS03QYJiO0u2nLEwWqN9oPlTGSeovFB92hUC3bUIXhAuJ18MdxUHjWr6yZ7hGfxvqZxbSp981tTD0A= 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=fQ9txuXN; 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="fQ9txuXN" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499931; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=M5zQjIPVfFmKstwwMGABYtO3/c5KzR7s9T/A9BdluRs=; b=fQ9txuXNKHL+hmHX8mrvPef/19iGfV7v1OchJ0p5XloWQxSrRsZSgAdF/lQNsuXH8ZMk0seNJR9n/oCFqc0v7UgZOEI42RquPDEsfjavtXiIWdZPqMcYFHRH0FmoRl/mLZBGuEt+zXuInDzk8bZGJkjowl/We6TWkAmnIFC35hc= 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_---0X47fR30_1780499928; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR30_1780499928 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:48 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 10/32] iommu/ipmmu-vmsa: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:42 +0800 Message-ID: <20260603151804.1963871-11-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/ipmmu-vmsa.c b/drivers/iommu/ipmmu-vmsa.c index 9386b752dea2..6e2e5922ab1b 100644 --- a/drivers/iommu/ipmmu-vmsa.c +++ b/drivers/iommu/ipmmu-vmsa.c @@ -699,14 +699,16 @@ 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 + /* 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 +894,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:20 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 A3DD148124F; Wed, 3 Jun 2026 15:18:59 +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=1780499941; cv=none; b=Zps1TAZGcsDrs+XKCvNOTwmVxtKlMvOqruCxITlnrctxEPnoxoOdhvCYOabyqFT1PmXUdEMATPSajunDE8L3xSnFLCEj4vfvWyEAc94e6pHxIH5FLtRoPeZUNSnX7NJDdSH++8nt8WME2t+p9xEeT3H/q6Myl6l+99e6n6ORj7c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499941; c=relaxed/simple; bh=JfxFXwpeEGb9FMwpKPiIAIWIxGYUvx2yf/Ck3Mt8RuI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ca7/AvE514eybG4yuwjKFwedoGwL/yY8jH615UcpceJz2v4kYlT0Pw6SMHZ4+Sy4RsRlUS2mirsXlHS2Ns5d5ef++Dm31YDVhGqb4D8xegosSAmoTKzpPaa+i8LHHe7AiyTwwvjdd+qRywMPyXFWq+kfMSm9mn4zcRclAh73IGU= 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=PN4Dt1uD; 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="PN4Dt1uD" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499932; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=D6ghu2heF624JtfaTXizY9L77UrgY/rsaZWlsUjxjMw=; b=PN4Dt1uD9RG1cUF6juvFmtKuLblvlDdt2gE2pArk31El6diSin5HfZDGplMe1hg/lCagA0f2BEB8pdlvgDvtbZ1wE+tEAGE/Bk4aLzbmO/HjvlGkEYr30jKhU/vcLoqDwMm9lRAw6U59MiG6P/T9o7dfh+6Ux/npAEL+zSEKyP8= 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-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR3B_1780499929; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR3B_1780499929 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:49 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 11/32] iommu/mtk_iommu: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:43 +0800 Message-ID: <20260603151804.1963871-12-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c index 2be990c108de..6ca31f8d4d96 100644 --- a/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c @@ -858,13 +858,16 @@ 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); + 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 +1073,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:20 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 6D713480DC3; Wed, 3 Jun 2026 15:19:00 +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=1780499942; cv=none; b=Gc2hz+i1dNLDj3cnUb0Nv7GPYyfRXB1MDw6AeooNytw1r+EPGK6IfYvxDSsHTjkOqWPDkL1O6z3TM81f1eyjJT8VtVr6Rt9dj8r1+jqPUUukrwtT8T21yOKsqmQqN1JEVdjsVO10jKktUwXdO0fFoswcbccLaux5eXzMaTJlwLM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499942; c=relaxed/simple; bh=s8n90Bjh6/KNP/yuxMlmVFD+bsOzKkuzrYFO/Y97uh8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZiEwi3S7Fb6DwmBlTI65MYXy8x1q/fqrnwwJRvo81Qqc/iyd8d3FaRXUkUhLYPy4t4lhdeov20Xdgy8I4f7pLPjoL4sRibHCqMpJW59KzH2w2q1cRURdNjvWLjNXgJ2jfGrt1vRmSkcOvD+U3+iQUZc4Z09EvDhMF9RIdwqbFPE= 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=Weu5S6q0; 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="Weu5S6q0" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499932; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=iWO0sMJG8r4J7LKnC484yIJn4WyUtK7EGFantGfMt+4=; b=Weu5S6q0BrffVvEdieSjbNd9xmSnPMtRbGlyJqEEgdQEUmKR3+qwHp9JwxlmQeGGYY9XuqIBfItfLooAx5qBR3MF9WlG2xEk3W7ZHrkvU0eNL/1jmguONy+wXM9XKeTqSQHx/eg9X0+oEfXUXPo+ZLuKigptui4Ymq09NwPIrVA= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R581e4;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_---0X47fR3Q_1780499930; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR3Q_1780499930 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:50 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 12/32] iommu/exynos: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:44 +0800 Message-ID: <20260603151804.1963871-13-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 874d05f4b396..17d77b9114c4 100644 --- a/drivers/iommu/exynos-iommu.c +++ b/drivers/iommu/exynos-iommu.c @@ -1372,13 +1372,14 @@ 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; =20 spin_lock_irqsave(&domain->pgtablelock, flags); =20 @@ -1386,13 +1387,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 +1492,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:20 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 C67313D5668; Wed, 3 Jun 2026 15:19:00 +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=1780499943; cv=none; b=ZDCCZbEkLdM3I1enoSgp1KYXaw2yVGI/+HaE5FhBpsotzungdLK+xh0X1GswTcPkJtIb7TGgHPhkzxKbspF64PDT2ZwXbJLhhwITaiKlOgFcQSlI0vVpP/Z6stMcqNY82mtTv6n5l9FvoxQKRndylCQJBSxUEvCfU5HiyDNl79A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499943; c=relaxed/simple; bh=2EdJu9Y79r7d2ODLF34AG41Oem5sN9CIFtU0LBA+VD4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=awOG2jAlfPHl5GQ56a3ptHojGD86XNGBumMyfmk2/8Z2GdX8jAIq05JRzGENjH25DxLwYTL++7OL8RwjcDKMb7HkuvOWHGm56mcIbhj72l7tw/R2N+hMt5S79Zg4YlYCnPGLWPMyr8+mpLm6JuoE6tlUiDEQzfxf/6MYqPeZlZE= 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=QQ+54Q9q; 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="QQ+54Q9q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499937; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=dO5/NXjjcnDrdXukdKiHb5r/uOc5W1brW08Se5tUIbo=; b=QQ+54Q9qVoGp2AJhXPTSWsTs1Kcu8QRz8LvlT/al1+kydyrcHdNn5oM7oDb9J+m1xk+FCHQmx1dbVCzw/gKjLhfqqRYXFKLCIPU02tEtTyUlK6+EBLxDX8lpRkDR6dMVJWFvENZe4PPCBav2kUJqtIIUqt4cp582eIlMvhZ52sM= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R721e4;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_---0X47fR3v_1780499931; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR3v_1780499931 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:51 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 13/32] iommu/fsl_pamu: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:45 +0800 Message-ID: <20260603151804.1963871-14-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/fsl_pamu_domain.c b/drivers/iommu/fsl_pamu_domai= n.c index 9664ef9840d2..60abd497dc63 100644 --- a/drivers/iommu/fsl_pamu_domain.c +++ b/drivers/iommu/fsl_pamu_domain.c @@ -169,12 +169,30 @@ 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 (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 +453,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:20 2026 Received: from out30-112.freemail.mail.aliyun.com (out30-112.freemail.mail.aliyun.com [115.124.30.112]) (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 1FC3A3D45F2; Wed, 3 Jun 2026 15:18:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499940; cv=none; b=LG80r23+XTXYEBV4rRIOdpuWZDC+99eA46PNzHvUwlq4bdXR/JMCmeQ8vHfLl01c+gQpq6bVi7LnwJRH0AK4zSYvuRknK/t06rY100e5iuvIy6HjmcS2uRvcdCM8YM6ofWiJRMNG7gSPvzOJtZjbWTI3s4VrYAlURxgqPsXSo4Q= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499940; c=relaxed/simple; bh=NuEbBmEUX0tf/lVu3uOnH2owkhNq4gbBSf/bAxOGFVE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Rd5PVAVTIiek6wqUMp8ZhXEWk5RW2fllgTUHNfkOZinq6mBCpZ7G0MRBewBr1xlMj7ve9kbRQcq1onF7QvNqyAqixtjDFOCKa/iVpCWRdPfdAtGIK6OegP85b6txOjFgCYN9JjUjKcMdauCo2IRd2dMABC8lUfsDs6GQ80q72Rg= 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=HbrcXWnW; arc=none smtp.client-ip=115.124.30.112 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="HbrcXWnW" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499935; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=5ykDhaVAxXdOnsgLU7UizM8a0Siq2UzQqZmVaU1DWpg=; b=HbrcXWnW2jIp3HwUHsYDWt1Kk3copU9B4QEzZ91FyiSxM12yBrA9zbnhhW5vGFa/lx3qK6XhDJlc6tbAZSmkrmMvibTufsrRtYs7+L4Jayq7tLWsrNd+K8nSF8MB6QKvygIvckCieROCH3daSUjNx3LVfPYR2liq/Gf4N+Bm4JY= 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-contentspam033045098064;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR4F_1780499932; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR4F_1780499932 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:52 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 14/32] iommu/msm: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:46 +0800 Message-ID: <20260603151804.1963871-15-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/msm_iommu.c b/drivers/iommu/msm_iommu.c index 0ad5ff431d5b..1038e8141223 100644 --- a/drivers/iommu/msm_iommu.c +++ b/drivers/iommu/msm_iommu.c @@ -523,15 +523,16 @@ 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; =20 spin_lock_irqsave(&msm_iommu_lock, flags); =20 @@ -558,13 +559,19 @@ 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; + ret =3D PHYS_ADDR_MAX; =20 __disable_clocks(iommu); fail: @@ -706,7 +713,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:20 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 759E4481A83; Wed, 3 Jun 2026 15:19:01 +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=1780499945; cv=none; b=bT4iMFv+srjy8R2Zu4SvtTTvoIPqdXOwr8Svftq1CSOYAkd7svMALDEUeKAaxZZq5YSB6zY+pCcsrF1JrzPthvUVzvTGg3drIEV58Z2250jfqyIecfsGL2L0g4sgFe0HyZQ2RvvWABL0Gpu8EgAOiwEkO9EciHFo1mi1tZyjyks= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499945; c=relaxed/simple; bh=YQASs36NVWj0qZ5kH/E6DJa5+tQBX81O5+cWH/KpaaE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YZD8/QPCsw7viQpQeiy11Z9T/NJzAo20U1tNUkboZBXTzmlqdRvxfNDJJCk0FRvAa6j1zvHNAcKHwWcUo0XxgO1sCBLeGxAPnSmWyye/IJwZEZ/ClC9FnLIneuuahrDHn8dVGkDlLBZO+Ioc+7izcOahileSNobJwjENXkRPNz0= 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=TsknmRJl; 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="TsknmRJl" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499939; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=8M26HlFHL4LQgXZJUjqBP1yhFIjw3xr29kGlk8DF+os=; b=TsknmRJlx1H6dc/s+ttArt6ygZ43a/jVIW51D1PcoVstRNqddZV9fIZLNDudqzU8AdWT9CycxU7X+ZsevpmCTkTw383BWwuS2hX3H+PMvhUWkCqVROca6xnTpa/Q/gTt49WLqDVVOXj2k3NYx9V+5EJli0lN0wzucE+WZPVsCQ8= 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-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR4V_1780499933; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR4V_1780499933 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:53 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 15/32] iommu/mtk_v1: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:47 +0800 Message-ID: <20260603151804.1963871-16-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c index ac97dd2868d4..da41dda7620b 100644 --- a/drivers/iommu/mtk_iommu_v1.c +++ b/drivers/iommu/mtk_iommu_v1.c @@ -393,7 +393,9 @@ static size_t mtk_iommu_v1_unmap(struct iommu_domain *d= omain, 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; @@ -404,6 +406,13 @@ static phys_addr_t mtk_iommu_v1_iova_to_phys(struct io= mmu_domain *domain, dma_ad 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 +599,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:20 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 C4EF548B38D; Wed, 3 Jun 2026 15:19: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=1780499954; cv=none; b=ATARsYTBwApjn3ssbmia6GLMtqSYb7PNAi82dzWGQLOD1vE9548tJSP9paks0p0mXTbOULO3qi7bdM8a3d6uE6BPYqBrPBFB4sBv080f8zkUu8OZH9ID7Cih/qFXvEANhVv+DxmMJz/4W/0hadvxqJk/Zhbl8Gx82s+C4YP4cLQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499954; c=relaxed/simple; bh=oD1Wr05YIdEtoMugk3QiKxFriD3/ExsFEsiqdk+wNY4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Oq5OUu19yVBWSLWtxseV9ETSxKpCL3epwJRpB5USWdcGckaUhNs5Nrb5ooo1KTVsQyzeoNW+/+TddRdDsvgm15WNHb5uf6TlsQWGdDcgTOyVDcJlspottGFV0UYJBnZ4PDj6vKBKcx5cIhDubKGwysfH8MVZKCaAuZjXE85wNv0= 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=nuodHs74; 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="nuodHs74" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499939; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=B2CWGyb/jy+luBGe9CF0J2PFthBHN8proHGbNilHQH0=; b=nuodHs74VmMSmlyJUELmAW1VRHGpAm0xsbdIw+ql14KfAuX1t4/mhGfDz9MtZxZqsxroQYBuSjzIU4R0qrLGR3OUz37RMYJqgsMa85x0MNMDX29orf8SbDBu3IMXnps75RrmkXC6Bwgu9Un/9kpg3Nmsw2L7yHf4l4pwzS3ZMY4= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R921e4;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_---0X47fR4e_1780499934; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR4e_1780499934 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:54 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 16/32] iommu/omap: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:48 +0800 Message-ID: <20260603151804.1963871-17-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c index 8231d7d6bb6a..f4a416326f7c 100644 --- a/drivers/iommu/omap-iommu.c +++ b/drivers/iommu/omap-iommu.c @@ -1592,15 +1592,16 @@ 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; =20 /* * all the iommus within the domain will have identical programming, @@ -1609,19 +1610,27 @@ 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); } @@ -1723,7 +1732,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:20 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 3CA7848AE14; Wed, 3 Jun 2026 15:19:05 +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=1780499949; cv=none; b=cUVOkO/P8plK1I63gNUkqoJ7LbttJfT//XKdevPWcHnkqFbFUA/hQOu73Z3gGIqidoWrIEKpco685H00y++sMQnjmwJJ6W0dmGAcqipwp+U3XEHATILWMIXIcjPgt/+PgnmemHzzgKEhn6mdxQi743H+TX44nXpWBfJH8stTBYI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499949; c=relaxed/simple; bh=NkXQT+EmLB460QPTlkwMLKaUnNH/iAGSqRTue56ZKcQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=deWQ0lKoVchhStMhL202jjBNjFOfCvek0U2bm+hNkFuiGL0Z/K+STVAtkV4NA5stsFpb+sgUap57QcdUv8uA2fc3oG33/P1nn1B1diey1X2i/j156j6Tuuwbu9zo+dNrxlc7TCpB0lbebt7K5V45fD7gYgi/tJMJ5KZ/i4eq+l0= 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=jHQk/RoA; 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="jHQk/RoA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499938; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=KZgq1eaNBXtMeM2COnghIdZmSnxtaNxaK4JO7Z48KHI=; b=jHQk/RoA3JpiWR8rmDFY1yav/gXXE7p7mcJKtS1Ek6spGrRPpD4ckwNPGnuhZiuPIk6xRbvKojc/8zN4goGFsGDrViEd8cp9UzAI7gWOigk0RxBanbUZ6wZFQOm1soGQHwmKOZ03MO4ec862jJMX7FPDbNmuKMwTA7CSeLrFzeg= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R681e4;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_---0X47fR4o_1780499935; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR4o_1780499935 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:55 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 17/32] iommu/rockchip: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:49 +0800 Message-ID: <20260603151804.1963871-18-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/rockchip-iommu.c b/drivers/iommu/rockchip-iommu.c index 0013cf196c57..a51c29340b98 100644 --- a/drivers/iommu/rockchip-iommu.c +++ b/drivers/iommu/rockchip-iommu.c @@ -648,12 +648,12 @@ 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 @@ -670,6 +670,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 +1189,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:20 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 DB17D48165B; Wed, 3 Jun 2026 15:19:00 +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=1780499944; cv=none; b=rtIKbhJ5f+YlIyVpZVUIf4XzaxObTh0MAZY3Iy2w6tmUlJ3RwMeG87n1SU8E1niakGpXGh8mgN2z4e8dcfOfaSW8WSp6K2t7Q3Qz82pO0oYZ7B+Rt7fzZ0viRHH+Xwac8D+lsZd0QKYeoLAK2WsMZfLlzYPjcfCAEedm9Ye4Lqw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499944; c=relaxed/simple; bh=N45UaRkAIDuOj4Dj0THubpkg6DN1fU/9LvwjP4ESOvc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BdDv1lxkk3690PHEO2NWc2vHu1FckUyZs4YdDde0Ao94r+E2iHIFhJawq/NvsGhOZuhSoe1s2eYqiPxHzwfswXUwEKztNMJmCVRkJgMpjU01cycD/2RBXtBWzMpvVl6A5qBWpFujBiaiuBaxtaGIwRaPCT8PhG804D5e1d70jak= 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=awewpfsc; 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="awewpfsc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499939; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=BNZF/SaFZFt3zbn7FrmeyBMohohJiu4c3VZtwUCcXEg=; b=awewpfscssXT+IGRO/8VdG7D6VvIjJuM7DJdOFRI4rJV5+ESk4E6W1ZRFzsDsFRhGvfOG45zsu/53qcU6MlUtSK/aUIMHvf0NksCEyk9xMRuEJVSYuwEDpCUSTij6ha5Hp3rVhw9QCal1K+Zi89XkYIU0qfjKlm4GtLqlglgRNw= 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-contentspam033037033178;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR51_1780499936; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR51_1780499936 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:56 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 18/32] iommu/s390: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:50 +0800 Message-ID: <20260603151804.1963871-19-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/s390-iommu.c b/drivers/iommu/s390-iommu.c index f148f559ac56..6cfcc55ef59f 100644 --- a/drivers/iommu/s390-iommu.c +++ b/drivers/iommu/s390-iommu.c @@ -986,22 +986,23 @@ 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; =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 +1015,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 +1187,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:20 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 05C7E3D5647; Wed, 3 Jun 2026 15:19:00 +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=1780499946; cv=none; b=WbLQjPwxMGpfjXjP7KDRbGEYwuW/tpRpTYZp5qie6Qv15Wj7i3kRxqvw2Jg9WlT6BDIbEaQPbqts2Dts6/6GrPz8wlozBBK589q2kOEcc1dZ6nyV7s7BAmXJwkreOxQggXyTBO+dKTJBlm2t/cAPPWO1/b0RR64thWOKrdHuE7w= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499946; c=relaxed/simple; bh=h0+03EBCv46lquOgLssQME5RC4lnmnLdmS8eP77X4L8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=PE4rLUh5sa3EokuWQ5ZakdKwUCE4fuidFY6py6IU42KeX2V7FCXx1rUWXmjBRo5EJY5vE8/6hsBbN/GOka+35SrF5ae0itJ/gZfdjt3pe1LekkOFbigM6ivKmNWt6AstkrtvrRU17PmYLSm3KeI3rUR0TIN5lKK0qIMjl58brZ4= 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=R8Owicpc; 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="R8Owicpc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499939; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=MjBO95xDSmLrp4JNHx4KMhFqFrLuEXxwuA67QFALbhc=; b=R8Owicpc8mgsg/lriAfy1dQYAuR4cA7Z6ZHdp6yfeBXa7edr1kYSWDDAAmYRioNnonc8UM5bVPOjtfIzVaogjBLhPmLbLHz0twlhGWT6YKdpRg0ByFf9a27Phf0DJW34CSaZK8sxcZJ8O47mPbV/2KxxoS+neFLzyFFKAP7gz78= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R721e4;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_---0X47fR5K_1780499937; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR5K_1780499937 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:57 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 19/32] iommu/sprd: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:51 +0800 Message-ID: <20260603151804.1963871-20-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/sprd-iommu.c b/drivers/iommu/sprd-iommu.c index c1a34445d244..3c04ec040d96 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; @@ -376,13 +377,19 @@ static phys_addr_t sprd_iommu_iova_to_phys(struct iom= mu_domain *domain, unsigned long end =3D domain->geometry.aperture_end; =20 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 +427,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:20 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 2DA053C6611; Wed, 3 Jun 2026 15:19:04 +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=1780499949; cv=none; b=MPK9i3sqUeYynozPRcPmLN28j8g7ZYwGxwvqN5TlcKuYDkOcpbZDMxFbxOEmFA746kLMheCdmoG07jhvb8XE2lcZ/qJeVxSaVhfWxwl36IVq69n3L8SAG9OsWV0+83cZ0P2au5/YyMn9t3qYTxnTFlTDbeNLeSH/fNWGgdgUONs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499949; c=relaxed/simple; bh=XruHxIlQUxCL+b+kSRtfQRTkfWHAloDI99W7wX6rYTE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hzGPQxTd3ygKKYb7AzMi0EA9kkgTOurSifGDt58ig7WHF4msNrbG68ocab7dNayPRXraEgASSIYQTyzcVgzdOMhxgYR+OQFpHIKy62R2fUfB6lzgItj3az95+TRNd+SOyTkVtRDZ1dGWNQqCoC6HF/dFmQy3l4cOzRIs61SNUj8= 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=hV9Koh2c; 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="hV9Koh2c" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499940; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=QjZ8f27cqLiBL9quajEXvEuD5izxdrCDst1w3hORFvo=; b=hV9Koh2cxRoTfjnu9bgWdNIEROapxFIrFH7s2DA6Wf5GwVom6NfWlhUMgWczfQQpvgMpZgqXbYLbfEQrJVp3eZtJHPlkteFXfw3Jt8NqJ96sXRMgmPjQGRZn7LsLPcC3t4OE8LRXsw1luzi9R7wak5RZocgaNyzzbzoa+OtUJd8= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R531e4;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_---0X47fR5b_1780499938; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR5b_1780499938 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:58 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 20/32] iommu/sun50i: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:52 +0800 Message-ID: <20260603151804.1963871-21-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/drivers/iommu/sun50i-iommu.c b/drivers/iommu/sun50i-iommu.c index be3f1ce696ba..9f39fe4a9d4f 100644 --- a/drivers/iommu/sun50i-iommu.c +++ b/drivers/iommu/sun50i-iommu.c @@ -659,8 +659,9 @@ static size_t sun50i_iommu_unmap(struct iommu_domain *d= omain, 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; @@ -669,13 +670,16 @@ static phys_addr_t sun50i_iommu_iova_to_phys(struct i= ommu_domain *domain, =20 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 +861,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:20 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 CA6B244DB7F; Wed, 3 Jun 2026 15:19:03 +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=1780499948; cv=none; b=r9ADsrCoRuEnVa46A9/zIsPj1Vgj3zPySBYmCfJWcg4Qx0Mql/1os4nXmnQPTKngIdfzu+K8+cfO3WwBdegt/IF85P8z8Zx5Wf2WhnCqlbT0WBvoTFSDZ7BrsrxRo798x0n8tEkPev6MAWY9qBf5FTlBiG46+KcvXHgP+MTnIlU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499948; c=relaxed/simple; bh=/z3ZSGZTYTY8Su5OOmOOL/5Ipe1LodVr3fVELPJ+v1w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=hdf9Y0SL2a/lIRy82uNWsZM/f5NilOxAV0fbZDvb+N/2vASba3+r2gDbmjiZAM15ggYbwTDQqMAKwOhRrqQnAv2A54TfKgJoXBPvpwluDsOMDQi9/8eUJFjmIJqMKLB7Y8xw2sQiSsBUiDfeOKAmy7zrmW8GjAEHWCSUCYhscP8= 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=MqYkhqsh; 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="MqYkhqsh" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499942; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=YhFCJ0OCDdDnQ9GsEesCvbAqOo6Zg3iFvNCzM+hu5ak=; b=MqYkhqshurIft1TCOn/itP1zOLK4h7XastW2S73sXsucEV0itolk4fmcXVTLdqU6o0UPFh0EanlG3IbbN1GLBVh6wIgaE4YaVxuumMfK6nke8bTN1QnstsaZYNQUCY8arzUUZfO7lyQmELgFXQUaRFR+nq9/XGFANtaW3TdC6PI= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R231e4;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_---0X47fR6-_1780499939; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR6-_1780499939 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:18:59 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 21/32] iommu/tegra-smmu: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:53 +0800 Message-ID: <20260603151804.1963871-22-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/tegra-smmu.c b/drivers/iommu/tegra-smmu.c index 67e7a7b925f0..12f9bb623d87 100644 --- a/drivers/iommu/tegra-smmu.c +++ b/drivers/iommu/tegra-smmu.c @@ -803,8 +803,8 @@ static size_t tegra_smmu_unmap(struct iommu_domain *dom= ain, 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; @@ -813,10 +813,13 @@ static phys_addr_t tegra_smmu_iova_to_phys(struct iom= mu_domain *domain, =20 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 +1010,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:20 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 B573448BD54; Wed, 3 Jun 2026 15:19:10 +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=1780499955; cv=none; b=lhru5E66DUtbT4p5pEcUBDrR1+RNoNORs0HT6j+zIeB33ZYj9/q//TxLtaukC6Q95D6BedC1NiWOyjviU45/RtI1LawS4P9Dag5SE4AvjqUcNN6g/0fwd9gtjq3RNTkDjPLZwE/CKdwfx3ZkJXJFOZv30W+VuAKn0sh9tpnlqYU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; c=relaxed/simple; bh=dOIhvIj09bSbAHxDeeWgK/ZzYKkMjOrx3T8+F4WlSsY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pOcA1S91FQ8cg+iQibWOhNaZMkFiA6k7hUuFE0s5votrqFM3WWuX//C8x00jAQwG/EdkmEOOK2t8taNxn0/h2hOy5aCZwghNYTdeCTuKLX90EuZfszaRtKHXD/KjEMjCzhPNrcp+eY3PQjIec1l9ZZdRm8ZfQBzOJVP2aTEmcdE= 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=tPNIvZoc; 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="tPNIvZoc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499942; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=Zkn8atwigb0RDyBkQZl4U8k5iUnpgoKnP+BxdtigQbU=; b=tPNIvZocCmGgTPirhfZyAaDCqo65mWvGZoXWW5oZahDv8iDPKz+ERFwz0+dxtvzopOh7PzBCOqogc4RH3lo0bKyBMDlT24fqZOH+gBVM/BcycmsNSZCW83sXQGVvh28sro6TUrpIN7k36qQwmGFbS5pAEE9oUEr+CU3FVFXZm5s= 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-contentspam033037009110;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR6P_1780499940; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR6P_1780499940 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:00 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 22/32] iommu/virtio: implement iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:54 +0800 Message-ID: <20260603151804.1963871-23-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/iommu/virtio-iommu.c b/drivers/iommu/virtio-iommu.c index 587fc13197f1..b92316257e42 100644 --- a/drivers/iommu/virtio-iommu.c +++ b/drivers/iommu/virtio-iommu.c @@ -912,10 +912,11 @@ 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; @@ -926,6 +927,9 @@ static phys_addr_t viommu_iova_to_phys(struct iommu_dom= ain *domain, 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 +1106,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:20 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 F0CD448BD5D; Wed, 3 Jun 2026 15:19:10 +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=1780499955; cv=none; b=Gwmi6/Lu4iBNwMFj4GfRpCzBhunD6ms1qKPfNo3jQpm7yjoj4IR3pF3Dod/h+CmoJl8KlN60+meKKPBeSh/lrIZ1WDjEdWeBgcPKgsmDCgOHwxS62OLCvINefBABatsNEHAXxyzznWc23Ru7txZjlNOTqt6KKHd101tAH5DlBdw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; c=relaxed/simple; bh=x5lXxHHIWz7KMgvMTc8anzqVIWsw+rdiJvQJ2lbQ/fo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=gRBxnbb+KuwbfekgPyGv2+zfo6YsvqpYINAE0zbxlBtKAMVg0vEl1oS/dyokTAk+XnNu7pHTK1vCx66akBHfkK/B1gubrm9W8Kq78heTsT4NL19fEW0tdinTWC4w5Gbhkcgg+Gp+f5c0wyBBe0Vx288pBoa+DnDP0enWtfq/EKc= 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=pAaxJILa; 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="pAaxJILa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499949; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=YeBRD/MSt6wsGVdzvt9zKUavpOowrxOrf9yWTOinoZY=; b=pAaxJILarWhzgNQrBVSgPEFodchyKdfpgMuboq7jRq8to8tMdmem+yfow8Mxq7uJ8qxkGVJlrHMMHDTII3RKZbf+twbNdEImZH5saRTxXPwguIBx9Y67dM4vR3TDE39otmB8Gqprq8yLaOpXbtrjlW7Ffv2QbT9HnZG+acMONt8= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R951e4;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_---0X47fR6h_1780499941; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR6h_1780499941 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:01 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 23/32] vfio: use iova_to_phys_length for efficient unmap Date: Wed, 3 Jun 2026 23:17:55 +0800 Message-ID: <20260603151804.1963871-24-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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/vfio/vfio_iommu_type1.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type= 1.c index c8151ba54de3..115d88d7003e 100644 --- a/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c @@ -1177,25 +1177,42 @@ 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. + * + * mapped_length already accounts for contiguous entries + * from iova, 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 min_t(size_t, pgsize, dma->size - pos); + 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 min_t(size_t, next_pgsize, + dma->size - pos - len); } =20 /* --=20 2.43.7 From nobody Mon Jun 8 08:30:20 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 77D483D3324; Wed, 3 Jun 2026 15:19:13 +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=1780499958; cv=none; b=H+c6yHLxVQfWklzBcTxhZGNZMlKsPI6UktIPFXLF2JKpi7IZQZ3xC7sSdUIEDYP89ziiDO5P+qr65RL3a7/wYKyapWR4mo1lVBf47J4ZXOzBMbcZtml5A2hpUZjHD3K19S62/27fzAnKHuZ+A939i/Mhb3KJJl2XIVXZlYmyG1E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499958; c=relaxed/simple; bh=46L9LTzcQcvQkioanu40YoVpL2SL9Yf/P8f0rxz/3Rk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QQkYlc9GDdpfjNw31f5FCI0kazVGZycJtXBiWtsjbBb+UC/jzwvJTUwjPf5ciuU31ocDW9cEEEmzHs4BkUvla7lceiQQhKYHbRH6itoTeduJ1yyDxd0/Z2Bseq1KZ1lRA93enhg0BQkZPOoploYUyXwI7xn/L/AS5Swkhaipd9c= 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=Q/xHi9Vt; 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="Q/xHi9Vt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499945; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=4BjT23R8uSreRxsom16Fm8xCEovN+6PRTMHyPqG167s=; b=Q/xHi9VtpAOeWiQCNd6WUGDprjUaTGCg2YsjbgdYQCfc3x5kt8n2oK577LleGtZZ8e0FJff/MNx1yOF72o1WzTmbD1IelpK7Veqsa1T/U0AvKLOEAeiBAr3ZpC3EFx3qYmOdlrbuFe09VBUVDKEpylrFaVSFN6t0Cy38h+fBQFI= 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_---0X47fR6t_1780499942; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR6t_1780499942 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:02 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 24/32] iommufd: use iova_to_phys_length for efficient unmap Date: Wed, 3 Jun 2026 23:17:56 +0800 Message-ID: <20260603151804.1963871-25-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 in batch_from_domain and raw_pages_from_domain, 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 | 74 +++++++++++++++++++++++++++++------ 1 file changed, 62 insertions(+), 12 deletions(-) diff --git a/drivers/iommu/iommufd/pages.c b/drivers/iommu/iommufd/pages.c index 9bdb2945afe1..40a2fe9adf9c 100644 --- a/drivers/iommu/iommufd/pages.c +++ b/drivers/iommu/iommufd/pages.c @@ -417,17 +417,42 @@ 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 contiguous mapped length in a single page table + * walk, allowing us to skip ahead by the contiguous region + * size instead of walking page tables for every PAGE_SIZE. + * Query at page-aligned iova so pgsize covers from page start. */ - 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 - page_offset, + &pgsize); + if (WARN_ON(phys =3D=3D PHYS_ADDR_MAX)) + break; + if (WARN_ON(!pgsize || pgsize < PAGE_SIZE)) + pgsize =3D PAGE_SIZE; + + /* + * pgsize is the contiguous length from the page-aligned + * iova, so npages is simply pgsize / PAGE_SIZE. + */ + npages =3D pgsize / 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 +470,36 @@ 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 contiguous mapped length together with the + * physical address so we can fill multiple struct page + * pointers per page table walk when the IOMMU uses large + * pages. Query at page-aligned iova so pgsize covers from + * page start. + */ + phys =3D iommu_iova_to_phys_length(domain, iova - page_offset, + &pgsize); + if (WARN_ON(phys =3D=3D PHYS_ADDR_MAX)) + break; + if (WARN_ON(!pgsize || pgsize < PAGE_SIZE)) + pgsize =3D PAGE_SIZE; + + npages =3D pgsize / 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; } --=20 2.43.7 From nobody Mon Jun 8 08:30:20 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 C69A348BD57; Wed, 3 Jun 2026 15:19:09 +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=1780499955; cv=none; b=qGQYUNByiQZB/C5B+6huisAO7gVtST3+scQTXU/fqM5qxOnGuNHbzhSueBZ4uTX07Stw676RWRsTmUKfhu3aT4evkDB3j1G0DtKs8EurSEX6POA2JA7UANbCwP1B9k6HLMN8pOV/ugJRxLfS82JGfFXZhilDiGg63jg+UcdCPXQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; c=relaxed/simple; bh=Fe7zPAyJaYPn/NqJgN0ODfUxObBN8LTs1qxxcQnwg/M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=C7psgQStCFovzPAZ/pOKcWZgxxr37qpFzMfkmtJsuS2HQD2AiPHHgrWOdCoZsji9NEG5S12FgfEGaeosp4TCc1bmfPZJOczyS+KsVGz6jzPJACmV1qMf9xUdn9wpXf/KrrjeC+r9DXtqcqftL+sndG1vT64V++q0tHrvBq5JU2M= 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=DqQYGk9W; 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="DqQYGk9W" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499948; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=+Wp4AveBKc/b0x14itG2lBTs4ZcmFK8t4NnzErdtQRw=; b=DqQYGk9WmyyAwNatJOn8Tsr2q7aYfxUFHzVnIeIf7ZVcKK/o1W1r3ma9T7uZRIa2uCAN+9VgTw0G5dL1Cr6r7s3CguxhXJP1obebryncXquYKNk8uO+9Vku0l/cfs60mzPGJBiv5xT0mUKGeVqMkDxm0vbsIaJ4j6VHZIybiQjA= 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_---0X47fR74_1780499943; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR74_1780499943 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:03 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 25/32] iommufd/selftest: switch to iommu_iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:57 +0800 Message-ID: <20260603151804.1963871-26-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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" Replace direct domain->ops->iova_to_phys() call with the new iommu_iova_to_phys_length() interface in selftest. Signed-off-by: Guanghui Feng Acked-by: Shiqiang Zhang Acked-by: Simon Guo --- drivers/iommu/iommufd/selftest.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/iommu/iommufd/selftest.c b/drivers/iommu/iommufd/selft= est.c index af07c642a526..d4dd39930224 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_length(&mock->domain, iova, NULL); if (io_phys !=3D pfn * PAGE_SIZE + ((uintptr_t)uptr % PAGE_SIZE)) { rc =3D -EINVAL; --=20 2.43.7 From nobody Mon Jun 8 08:30:20 2026 Received: from out30-112.freemail.mail.aliyun.com (out30-112.freemail.mail.aliyun.com [115.124.30.112]) (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 7818648BD4A; Wed, 3 Jun 2026 15:19:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.112 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; cv=none; b=L81VxwY/3tu8Msuo6J8a5u9O12zIts3VmgWzhx37D1j5XSSX/1TO1FkWoW9OrnHt3LcUg0OjowuKvKEsUlzVRLktUvjcGeupEEPShrey7VRmw1xaFuI5FjDKM5UEPwlVpinY/uK+jfG+1YhbiOACT42LFoB+B20rFanlBcUQzq0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; c=relaxed/simple; bh=lI3x7qiBpStf7+riMLkavf19/hS8Q6Sn6QyC7laDlJM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pWTOqRbZlxrpKuCQbS8qqFvY/3rGJr9ZWAkoL+34WazndFn5Uspg7pg9aVHyTlfejoi/t3kMXI+XOSJWKewPbrfbnJYcDGoK9WOHyR3c/WEB0GTvCphpP86pSGl5LM9qTvaSwtWu+wj0NnoSYdTveJffqnlAvC11hg40qyMor2U= 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=dmooYd3I; arc=none smtp.client-ip=115.124.30.112 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="dmooYd3I" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499948; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=FtoAZ4ObIrgN8RB/Z4MrgWEyJCArPPBpz4yofnEwwtU=; b=dmooYd3IjVvfRFdzF9y7M6tE2IJIvIn5qZ8dqr2paB1d9/qTBBEsVk5hFyqZVHeo2yTmyMt+DJCHatfouNy/Y3p67MXNITNs6WMWeINy2onH7B+M0HMfFlzEb2LglYhqzkYS99Z1Kn/nK2CbRnUiJfaZgYCqEMsMg+As53AaiIY= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R461e4;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_---0X47fR7M_1780499944; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR7M_1780499944 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:04 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 26/32] drm/panfrost: switch to iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:58 +0800 Message-ID: <20260603151804.1963871-27-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 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 E0A4F48BD5A; Wed, 3 Jun 2026 15:19:10 +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=1780499955; cv=none; b=o+TmbFXqNI9w5fIyY2lhTBqU21QkKpEZjPGZUYNbvEtD/E9ps28zqXbhlQeBkC7V5EMIK7bF0r2y7UKwEyU+gdM71aeI0xHJ8l9RYsiGjIQeqX+QW1sIsObaLTh1Yaesrr2DHBf6sChgn3bsPudjw/kz027vVrrv7ZhaRjrAdOo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; c=relaxed/simple; bh=W2loNsplm/62WAbgEnrp4IWnKkCdhr3ty+a5gaQMTJE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=BYoFlzkJ4Ly+F+aVSyOYD4/HmkA201LQGWcYnEUOX88kWIaV3N/Y+88bWHm17+cBXTdoEaf9mMzXE0Od4jMsGcgJ9LoOJx+OjDHVPMF2kVpI/MHHbZsKbkuJlcC+SCBGryRjONIR6U+GL1diRILZIRPrLOGruYnYHfWezHzPxOA= 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=QK4rDq95; 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="QK4rDq95" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499948; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=dloNw3khkYFpZ8HUOkLSEFcKW6J/1PykK/kcWicIG90=; b=QK4rDq956aZlbprwsmi3ijhiNYLEnUSt6zIvLFBNnxcclcuPqifnsMKMQ+xop+MjN9aApkRjYxhRRhHQLbk/3TQtlJ/1a0Kq5o38dBbXV3Im7pAwYJElCoLT04OoXqbrIx6881AUhCg9lFRDs5CxGk3tGRQdA5WF4JSa4OaqQb4= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R971e4;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_---0X47fR7b_1780499945; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR7b_1780499945 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:05 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 27/32] drm/panthor: switch to iova_to_phys_length Date: Wed, 3 Jun 2026 23:17:59 +0800 Message-ID: <20260603151804.1963871-28-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 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 7494048C3EA; Wed, 3 Jun 2026 15:19:11 +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=1780499955; cv=none; b=ofR7bG0vmZ8vqH2yvXIPp7PiATP/1Zi23NQrou/rwd9+9YlvTxkFAwoUsxzFVqfEbxKKTITkSIYpvmN9K6QSURZpIiC/jfccigGeNu1T5jOyl6oQMyacvkZ6KCBPVrWFD/O16k+JfWrJyPXIqzqNgtoGJHt8R031pkdr+syaB/0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499955; c=relaxed/simple; bh=TjzGiXc62UrhhblH9SGvj2BUK3+XiOWBAWsAXpz4ajY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sCcBLSkgX78Q9iC/wbf8b0hQDGJgW5CP+cefGhg5BPIB2LXYMYsMlxBXgvCL5YctG1uPSOTzMvBEecx0lNFsTVXfCWNJFoABfjQFHB0cvtaPw14PqIuqMRA28A8r4vDJRvqCc+0TSqntbx/EoQ0BcxAUrF75bn9THTE8UvULtmw= 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=yj2XtTr8; 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="yj2XtTr8" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499949; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=6wu4xt2SoksscXk0W48QmnDjXSJs3uObhzvzFgCeYOU=; b=yj2XtTr8PywukJo0H4lymCukct14uf3SgFLw5+ShiF3VzIlg4bB2lEeCNA3wwfJhtj5Mc1AvsppsjIbhhcfuIJSVzXVLqFtHow8OeYbYzJZ32UuDTf+hxh9w99Wjf6nFt+zmZpwMClFLq1kuJ949LqPZdKOubEeuDen2RypDWf0= 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-contentspam011083073210;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR7p_1780499946; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR7p_1780499946 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:06 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 28/32] iommu/io-pgtable: selftests switch to iova_to_phys_length Date: Wed, 3 Jun 2026 23:18:00 +0800 Message-ID: <20260603151804.1963871-29-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 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 58F034949E3; Wed, 3 Jun 2026 15:19: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=1780499961; cv=none; b=vFI/iVJPFnjvOYQbymdx5WFGDUoayWi3BRie7zTschwycr7Qv7BZh0za5Vigkz9fKJbDog2N/vzIIWpumBh63u7WIxK+UmPTAP8Xzlcxr2L7pkT7UlJsHHy8k7Z3GWQVB+GL4xm0MK7rWKTvMw44Frtg8Mlxda5CDrak0+Kl/vk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499961; c=relaxed/simple; bh=oyPkwHzc20XrNGeKDu1/pxB3ak3GLuqmVhS1MOFDJSM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=axbTtnAp5FEwMI+xscIzzISc0E8EMs3J57tnFJ/b8EptYlI6n+Bv2boyZ/ywJDjcyZGwNTsp02+LHm2SGDPAN8MuQQC4xAOzZMq5hFB957SadkzbB/6uTmBDaPAL+E5Jt7BYdcWXInDh0GT9m5O1tGM63fsHjWfXaUUq3zVCzBY= 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=TsA8LpKi; 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="TsA8LpKi" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499950; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=cII6ny8ml7CMYCax7iOr5Pt8lHtm5RFG7dKDlrestlY=; b=TsA8LpKibZb/TSwbrTvQjGRKXM5oM+DD9b51NS57nHXjVcMHIrgpmmxak17/cXkfTH6X7I1YDrtiKvKGhn4rNbmbH7oY8H25srf3sTPg9N+y+rkG4SP9FHDMTZlC8C8WYvW8HhNgHvYJlNXwnt/QuyOljIUvWqfHCLd6o3Nxht0= 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-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR87_1780499947; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR87_1780499947 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:07 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 29/32] iommu/io-pgtable-arm: remove deprecated iova_to_phys wrapper Date: Wed, 3 Jun 2026 23:18:01 +0800 Message-ID: <20260603151804.1963871-30-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 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 A2F6248165B; Wed, 3 Jun 2026 15:19:15 +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=1780499958; cv=none; b=WS/XstrsulpimnEqMej3lgLztydP49CycuH3S6pa/xY1vySF59XaOsm/RS+/phnIHONidfHqpF76APy2qvuUiT3GlOyO6fJKrhcRGdcXm715wCN+Vkc/X2TbEwEcZ9oyXLeV9qL8Ywgi+IhCwT3qA1X6TG2/kGoQkNOItSv/Mhw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499958; c=relaxed/simple; bh=Eo1T/DdjxK6cr5MBTlk9PUo4KuWE5dzwz16HwzPcZxQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=S0Oq4TV6Fmh3EBpREGTBrDD0l2hvoTSvt/G+OWg9n1NHppIqSDTj8nHe1pl5Xhno12qCuI9Uej1P4k3ZGfPvwZ8gxBJFwUkNLfu6fhK8RXiXTvmzP52f5aeHPv+uXV346XS/JiUXTFRRyuHl3CKR7L25xsupCWXIpGTye/RrJZI= 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=Kylg2zX+; 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="Kylg2zX+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499952; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=HHcwXEJnumwKc2zUUog9MdRhUiRkhNb+QkY/zlqMCrg=; b=Kylg2zX+Q49jP7AVIavr2zArzMKJeZ6w2MxZQxExmleun9424V1tEaAyZ16207yIMPfH9mAnyujALDfw4eISSiysZe2Fhv/KGvHv2dGmm8O1QHScUcUpQ8H+CXG+0OhxaLbeXVOo78VlMWEwTKh2HOPjAd91ulwsbFSIZteqr0w= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R471e4;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_---0X47fR8Q_1780499948; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR8Q_1780499948 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:08 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 30/32] iommu/io-pgtable-arm-v7s: remove deprecated iova_to_phys wrapper Date: Wed, 3 Jun 2026 23:18:02 +0800 Message-ID: <20260603151804.1963871-31-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 62198e31a393..da065747e37c 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) @@ -730,7 +718,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:20 2026 Received: from out30-124.freemail.mail.aliyun.com (out30-124.freemail.mail.aliyun.com [115.124.30.124]) (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 CA7A348B396; Wed, 3 Jun 2026 15:19:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=115.124.30.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499957; cv=none; b=KY7Pg14hjYFbkr+SDQk6W8a56A1IiH7r7T5bVCM0etG+FP3uIIJV7s60GDOKjzm7ZtwGOL6vzx6SqmfVnb4eTk+otuXhHKnLHPsWWE4b6xJk2MoMhaLkkRAaWxw2hG9985FHq8uikeuM2QoPqJ4DjxAyCAYmSsefvtBZvxOBlbA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499957; c=relaxed/simple; bh=do6hrbiMu2ieoTUFvq1bsSKUbVS6YN1Qf61NrTmx4MI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pk5dIaPpw2JMCc65kO64K0Bh/z/PyrFvq9rkD2qf12olyU2rj4UnTl/CxGQYSKsGI4NJ8LmnNr1SyLz3LJV3xGPGaUNwENfdBabFJ5VhiX7aiyXxg4aelIH79oAzbE+nMUGMnT79h6Pb74mZUhJv5uN+q0FWIs8ur9LfWd4hF/c= 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=E/0Mh5ep; arc=none smtp.client-ip=115.124.30.124 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="E/0Mh5ep" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499951; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=o1pBWOp6KPk1xwyKTTozbXEjvmJOV/Yw7GM3gk1sgVc=; b=E/0Mh5ep1zBw8wm0hFBWXel7/ni9lFcFy1IAkRWd3V7tLwguZIxWpfpE7zEPxyK0xjB4zpRc0VefWNcBvNFeaf3RgnEuaKB7Q3ZT2llCh0OSaYhsHoEPuzqmIsSRQGMxDyUe0qJWZtv7rvx1DVv4FBRFioO5gWPe0awKRiTf304= X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R751e4;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_---0X47fR8Z_1780499949; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR8Z_1780499949 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:09 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 31/32] iommu/io-pgtable-dart: remove deprecated iova_to_phys wrapper Date: Wed, 3 Jun 2026 23:18:03 +0800 Message-ID: <20260603151804.1963871-32-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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:20 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 6E0FA492514; Wed, 3 Jun 2026 15:19:17 +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=1780499960; cv=none; b=q1BtxdTr+8scl0CTFFFhkvN1T4zRmcVldPMk2/CIeafBeX8Y6sXvxnllktLJPnCXnTRdfXGLV5aKhjpfhjJM6yJxbHHg/jZTz5Uf0fk2/t15rx2iLOIpvmeprpbzgFo6AQbpXTWc3VyT6ETKm2OW9ytVNxRegbap7WycjHVidDA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780499960; c=relaxed/simple; bh=Agd12b74XDWXCl3BZmRuCJtMP+RPZCaCm1PMH4i7u+w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=CNyQVMnPqMSkf6MwHebQzlN2F6fzdUNFwMzTR6pbTZrZcrUUzDD4bEITmSz8Te1ZrPOfqIdm0OmGFcOZ//j8fzN/5gGT5CnB7kBmabRaRk/fDko0pv/uW7qcbHDHHmKusPHMp/mQGWh71EPEXzSR+94hCUWHTNgTgwVaFYDGKp8= 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=VG1+aTII; 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="VG1+aTII" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1780499953; h=From:To:Subject:Date:Message-ID:MIME-Version; bh=z2Kf6oWvFzK2XhYhSCFrdVJy4nHOxnzI3msx6A4kv/w=; b=VG1+aTIISjUeCLgYsDD3IYjcTBSgiQofCwgeFW1hIW0z/YKQrq6hl0KBAkoMGhA25WQjExPD6+Kv3BvNPYxxshSq8h3S7c8hFLhDpj93gOl5aChI3MymA3zrLjdRoa1ZSSHpVC7yff1mD98dXIYxZMwff4TiOsp/atY1kJfCysg= 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-contentspam033037026112;MF=guanghuifeng@linux.alibaba.com;NM=1;PH=DS;RN=28;SR=0;TI=SMTPD_---0X47fR8q_1780499950; Received: from VM20241011-104.tbsite.net(mailfrom:guanghuifeng@linux.alibaba.com fp:SMTPD_---0X47fR8q_1780499950 cluster:ay36) by smtp.aliyun-inc.com; Wed, 03 Jun 2026 23:19:10 +0800 From: Guanghui Feng To: jgg@ziepe.ca Cc: adrian.larumbe@collabora.com, airlied@gmail.com, alex@shazbot.org, alikernel-developer@linux.alibaba.com, baolu.lu@linux.intel.com, boris.brezillon@collabora.com, dri-devel@lists.freedesktop.org, dwmw2@infradead.org, iommu@lists.linux.dev, 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 Subject: [PATCH v3 32/32] iommu: remove iova_to_phys from domain_ops and io_pgtable_ops Date: Wed, 3 Jun 2026 23:18:04 +0800 Message-ID: <20260603151804.1963871-33-guanghuifeng@linux.alibaba.com> X-Mailer: git-send-email 2.43.7 In-Reply-To: <20260603151804.1963871-1-guanghuifeng@linux.alibaba.com> References: <20260602104637.1219810-1-guanghuifeng@linux.alibaba.com> <20260603151804.1963871-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 | 16 ++-------------- include/linux/io-pgtable.h | 12 +++++------- include/linux/iommu.h | 3 --- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 320ea13488e7..1ad4787925cd 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2561,8 +2561,6 @@ phys_addr_t iommu_iova_to_phys_length(struct iommu_do= main *domain, dma_addr_t iova, size_t *mapped_length) { - phys_addr_t phys; - if (domain->type =3D=3D IOMMU_DOMAIN_IDENTITY) { if (mapped_length) *mapped_length =3D PAGE_SIZE; @@ -2572,20 +2570,10 @@ phys_addr_t iommu_iova_to_phys_length(struct iommu_= domain *domain, if (mapped_length) *mapped_length =3D 0; =20 - if (domain->ops->iova_to_phys_length) - return domain->ops->iova_to_phys_length(domain, iova, mapped_length); - - /* Fallback to legacy iova_to_phys without length info */ - if (!domain->ops->iova_to_phys) + if (!domain->ops->iova_to_phys_length) return PHYS_ADDR_MAX; =20 - phys =3D domain->ops->iova_to_phys(domain, iova); - if (!phys) - return PHYS_ADDR_MAX; - - if (mapped_length) - *mapped_length =3D PAGE_SIZE; - return phys; + return domain->ops->iova_to_phys_length(domain, iova, mapped_length); } EXPORT_SYMBOL_GPL(iommu_iova_to_phys_length); =20 diff --git a/include/linux/io-pgtable.h b/include/linux/io-pgtable.h index 42bcdd309b88..ea7e473146e4 100644 --- a/include/linux/io-pgtable.h +++ b/include/linux/io-pgtable.h @@ -202,11 +202,11 @@ 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. + * @iova_to_phys_length: Translate iova to physical address and return, via + * @mapped_length, the full size of the mapping entry + * that covers @iova (e.g. 4KB/2MB/1GB). 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 @@ -222,8 +222,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