From nobody Thu Oct 2 14:19:59 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 9B312279DD8; Tue, 16 Sep 2025 07:32:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007951; cv=none; b=XLLvnEaV68EoNN9EMWUKTxXY+apnpGFnSEVCq60yKmtl739h47TmLV+vKnzrmGwbKpGFVwrpIOVTrOGgrzOBCUoqKUjZIGnVVvUA+0HzhfwBjYumrMtsF7Z7cPtgdFbZggXlSg4obUkonxIe8GjbthtwrtXVXWYUaRasVemrxyI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007951; c=relaxed/simple; bh=IWZzOtyPCKRdI0+hToW/fnJJYkRULeN+gzOWf1AjNkY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=YRIBJ3m3WL9UkN4vi6yIBt1d9rOIKq7jU6fVVO+07ffU3wa2P/fB8muXPxxilzhsoZQegV1yRPiaFslaFrS7QxQmifHCtaM2mfEUXxgbJCBek2YCZ4VOcbqesTfERF1WZKI1QBZBh27FZTSRZ3E59MrvncoD3QC8jHrCOIDFDDI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GHnKv1Pp; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GHnKv1Pp" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 526A2C4CEFD; Tue, 16 Sep 2025 07:32:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758007951; bh=IWZzOtyPCKRdI0+hToW/fnJJYkRULeN+gzOWf1AjNkY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GHnKv1Pp0tvFEz3pCbixGilPKt8kobdgb8+pVMCk+aJ83OEJyYkpq4oNPL5tRF1fD 9d260B+Az8pQw3/SDCczfKbakugUDvMaEw4JnkRyOWrs97qcYrrDmDvo0vaYvqiOf6 lJxPVkhf5f3cYhABiK9zWvgKFBUYR4xxpYfuKS4ca//1IBhK+9j02CTQVN60OO0Ava hQw9GvszlxU14IwMJrI4jU2k+MWFXsI4vLcD7KSVoQg6MTFSDdYTnUHOC3eBfxNjS8 7e7QvqbTfJC9HAjZH+i157DTyDOHDy2ZSnNgo11ErKUX+6dsBwifkTnkfHAsvinTXK QzaKdm9+yyg5Q== From: Leon Romanovsky To: Marek Szyprowski Cc: Leon Romanovsky , Jason Gunthorpe , iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Russell King Subject: [PATCH v3 1/4] dma-mapping: prepare dma_map_ops to conversion to physical address Date: Tue, 16 Sep 2025 10:32:04 +0300 Message-ID: X-Mailer: git-send-email 2.51.0 In-Reply-To: References: 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" From: Leon Romanovsky Add new .map_phys() and .unmap_phys() callbacks to dma_map_ops as a preparation to replace .map_page() and .unmap_page() respectively. Signed-off-by: Leon Romanovsky Reviewed-by: Jason Gunthorpe --- include/linux/dma-map-ops.h | 7 +++++++ kernel/dma/mapping.c | 4 ++++ 2 files changed, 11 insertions(+) diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index 71f5b30254159..25603cb273769 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -37,6 +37,13 @@ struct dma_map_ops { void (*unmap_page)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir, unsigned long attrs); + + dma_addr_t (*map_phys)(struct device *dev, phys_addr_t phys, + size_t size, enum dma_data_direction dir, + unsigned long attrs); + void (*unmap_phys)(struct device *dev, dma_addr_t dma_handle, + size_t size, enum dma_data_direction dir, + unsigned long attrs); /* * map_sg should return a negative error code on error. See * dma_map_sgtable() for a list of appropriate error codes diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index fe7472f13b106..4080aebe5debb 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -169,6 +169,8 @@ dma_addr_t dma_map_phys(struct device *dev, phys_addr_t= phys, size_t size, addr =3D dma_direct_map_phys(dev, phys, size, dir, attrs); else if (use_dma_iommu(dev)) addr =3D iommu_dma_map_phys(dev, phys, size, dir, attrs); + else if (ops->map_phys) + addr =3D ops->map_phys(dev, phys, size, dir, attrs); else if (is_mmio) { if (!ops->map_resource) return DMA_MAPPING_ERROR; @@ -223,6 +225,8 @@ void dma_unmap_phys(struct device *dev, dma_addr_t addr= , size_t size, dma_direct_unmap_phys(dev, addr, size, dir, attrs); else if (use_dma_iommu(dev)) iommu_dma_unmap_phys(dev, addr, size, dir, attrs); + else if (ops->unmap_phys) + ops->unmap_phys(dev, addr, size, dir, attrs); else if (is_mmio) { if (ops->unmap_resource) ops->unmap_resource(dev, addr, size, dir, attrs); --=20 2.51.0 From nobody Thu Oct 2 14:19:59 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 566972E3B10; Tue, 16 Sep 2025 07:32:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007948; cv=none; b=ERiZOHycm8EQ02rD6BujWGaYj71AR+1rAp0ikCZHAvt3deXT3mknkoR4qo7lu3DI26+kny5ZoIVZA/B/o+tQdVx9kYeMB9nU7o81SJ3McQ66fsIO4Hh9teZI33FWMLu6PH6lea8DIFXQGkZK/y6Kn8lQ4p57Imwf9tmttPd27vQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007948; c=relaxed/simple; bh=SVYxxrO+Wiw9QRhQmJDc9G1iV7Y+Q+GC+uaaZIVFlE0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LWV77UOdpdBq/mkJ8xWqMBDeOeOjllny50m8D3ihr7HQmY06/9T1IwyXyqKQYI8nLti7V5pSAg9B6PFQFMLExvNTti7vZ7oCqVl/PD07CVzi0qFZpiCgB9II1V1TaSS5Vo3yGMhrOKOz7/TqoJfTsQepEMnnPHPP19LnD1HJq3A= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=Q5l/YYnG; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="Q5l/YYnG" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 1F654C4CEF9; Tue, 16 Sep 2025 07:32:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758007946; bh=SVYxxrO+Wiw9QRhQmJDc9G1iV7Y+Q+GC+uaaZIVFlE0=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Q5l/YYnGeY5KmQe4DG4hjF78LVZ8OXOQ+pB82BBUmJn6edzLHgSuj2CWbR9tHQxuz V+i2NLz/v8SB/2m9fmgh7Aayf1tH00ZDyW2uEyAVSZYOm01e1H2+8efBN6AHWQoxx+ cFMIiv6Uh4+Xl2Gd0lgkakm1LudKj5e8guvsK2h+fFY3lMpaM+oT5lVnMCPWb0ALfC 1KJroWeewgWN9weAh82UzGzikEEJFZFkZGjEoumsterOmHtgbHTVHFvm9ZGc1NjzEk pJ3YP3SnB0PUJUy+TNkIYziVcZGcUIh2xoe3przgP0AhnQXr0IRZnYGJbOcMWn3vS4 SZgbnZULDbOuw== From: Leon Romanovsky To: Marek Szyprowski Cc: Leon Romanovsky , Jason Gunthorpe , iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Russell King Subject: [PATCH v3 2/4] dma-mapping: convert dummy ops to physical address mapping Date: Tue, 16 Sep 2025 10:32:05 +0300 Message-ID: <3b54fbe896086adc0f3fb90a2a1a2e3bb3ff9de4.1758006942.git.leon@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: 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" From: Leon Romanovsky Change dma_dummy_map_page and dma_dummy_unmap_page routines to accept physical address and rename them. Signed-off-by: Leon Romanovsky Reviewed-by: Jason Gunthorpe --- kernel/dma/dummy.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/kernel/dma/dummy.c b/kernel/dma/dummy.c index 92de80e5b057e..16a51736a2a39 100644 --- a/kernel/dma/dummy.c +++ b/kernel/dma/dummy.c @@ -11,17 +11,16 @@ static int dma_dummy_mmap(struct device *dev, struct vm= _area_struct *vma, return -ENXIO; } =20 -static dma_addr_t dma_dummy_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, enum dma_data_direction dir, - unsigned long attrs) +static dma_addr_t dma_dummy_map_phys(struct device *dev, phys_addr_t phys, + size_t size, enum dma_data_direction dir, unsigned long attrs) { return DMA_MAPPING_ERROR; } -static void dma_dummy_unmap_page(struct device *dev, dma_addr_t dma_handle, +static void dma_dummy_unmap_phys(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir, unsigned long attrs) { /* - * Dummy ops doesn't support map_page, so unmap_page should never be + * Dummy ops doesn't support map_phys, so unmap_page should never be * called. */ WARN_ON_ONCE(true); @@ -51,8 +50,8 @@ static int dma_dummy_supported(struct device *hwdev, u64 = mask) =20 const struct dma_map_ops dma_dummy_ops =3D { .mmap =3D dma_dummy_mmap, - .map_page =3D dma_dummy_map_page, - .unmap_page =3D dma_dummy_unmap_page, + .map_phys =3D dma_dummy_map_phys, + .unmap_phys =3D dma_dummy_unmap_phys, .map_sg =3D dma_dummy_map_sg, .unmap_sg =3D dma_dummy_unmap_sg, .dma_supported =3D dma_dummy_supported, --=20 2.51.0 From nobody Thu Oct 2 14:19:59 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 CFE642E6125; Tue, 16 Sep 2025 07:32:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007960; cv=none; b=egXSJBbzPWkMWlAXPxr4SzP03azrG/ZYFxf53F694Y8XR4Fpf3stZ/yD+xH3STFO26FzkHfIK9KHMkJjM5W9EXTOpj3OerJsfoUtPLfquy1zXj93Den1znktUNgwRU3XXANQ4lrT7Td0eiybMYSaKv2/7gz/+egMapF/fAcOJ3k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007960; c=relaxed/simple; bh=kUYFBenADcxWEIkMcS5X6cr9mnZCRnsHRUZt71pILDk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Ph5Hsx7OMmlQkmh2o4CIV6DKMyu4Qj63io6GvcgjHjgm94nrJGYlYO6TVFJAdNUs30nlsV/caI4SfxRHZU20vsaWBTdFbGLD3MIRFLQElVsRkzAo/EuLgP55SMqN0q5n0MhJQkZT28BNgu16nVeICQtcWz31fpL6wHYqqNelgCY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=slkDelnU; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="slkDelnU" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D77D5C4CEEB; Tue, 16 Sep 2025 07:32:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758007960; bh=kUYFBenADcxWEIkMcS5X6cr9mnZCRnsHRUZt71pILDk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=slkDelnUvu1wE1DNBRGuDkLKyC9fJzIbH4HwqeHaMZMTJUCcJeCozRfAwVYllPllC O0/L5xJpkA9hHF7R4hDCj0RqxzRU+WUdn370WWgCQ8oW4FX01BoLV/d+4Yx3SZeJXS j0oYZYHN7uVp4IYnczIjCbrkvkfUDESxBAII/mkPrGGH5embRxwO77HbHhybkY85qC vOTuB7WnVaX0YTItdigV8lPkUyR807sue67pMqMQWLhCiHorAjt9dp4Jl/Wvtyw25E LsB0zLd59TLPrflh8wHQwIDCHcN1oI8NDFz8MACAwmCznmjo/0tRZi8vjafxf6GKb+ LuYTSlH26EbHw== From: Leon Romanovsky To: Marek Szyprowski Cc: Leon Romanovsky , Jason Gunthorpe , iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Russell King Subject: [PATCH v3 3/4] ARM: dma-mapping: Switch to physical address mapping callbacks Date: Tue, 16 Sep 2025 10:32:06 +0300 Message-ID: <5f96e44b1fb5d92a6a5f25fc9148a733a1a53b9d.1758006942.git.leon@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: 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" From: Leon Romanovsky Combine resource and page mappings routines to one function, which handles both these flows at the same manner. This conversion allows us to remove .map_resource/.unmap_resource callbacks completely. Signed-off-by: Leon Romanovsky Reviewed-by: Jason Gunthorpe --- arch/arm/mm/dma-mapping.c | 98 +++++++++------------------------------ 1 file changed, 22 insertions(+), 76 deletions(-) diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c index 88c2d68a69c9e..e0d65414b39e1 100644 --- a/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c @@ -737,6 +737,9 @@ static int __dma_info_to_prot(enum dma_data_direction d= ir, unsigned long attrs) if (attrs & DMA_ATTR_PRIVILEGED) prot |=3D IOMMU_PRIV; =20 + if (attrs & DMA_ATTR_MMIO) + prot |=3D IOMMU_MMIO; + switch (dir) { case DMA_BIDIRECTIONAL: return prot | IOMMU_READ | IOMMU_WRITE; @@ -1356,25 +1359,27 @@ static void arm_iommu_sync_sg_for_device(struct dev= ice *dev, } =20 /** - * arm_iommu_map_page + * arm_iommu_map_phys * @dev: valid struct device pointer - * @page: page that buffer resides in - * @offset: offset into page for start of buffer + * @phys: physical address that buffer resides in * @size: size of buffer to map * @dir: DMA transfer direction + * @attrs: DMA mapping attributes * * IOMMU aware version of arm_dma_map_page() */ -static dma_addr_t arm_iommu_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, enum dma_data_direction dir, - unsigned long attrs) +static dma_addr_t arm_iommu_map_phys(struct device *dev, phys_addr_t phys, + size_t size, enum dma_data_direction dir, unsigned long attrs) { struct dma_iommu_mapping *mapping =3D to_dma_iommu_mapping(dev); + int len =3D PAGE_ALIGN(size + offset_in_page(phys)); + phys_addr_t addr =3D phys_addr & PAGE_MASK; dma_addr_t dma_addr; - int ret, prot, len =3D PAGE_ALIGN(size + offset); + int ret, prot; =20 - if (!dev->dma_coherent && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) - __dma_page_cpu_to_dev(page, offset, size, dir); + if (!dev->dma_coherent && + !(attrs & (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_MMIO))) + __dma_page_cpu_to_dev(phys_to_page(phys), offset, size, dir); =20 dma_addr =3D __alloc_iova(mapping, len); if (dma_addr =3D=3D DMA_MAPPING_ERROR) @@ -1382,8 +1387,7 @@ static dma_addr_t arm_iommu_map_page(struct device *d= ev, struct page *page, =20 prot =3D __dma_info_to_prot(dir, attrs); =20 - ret =3D iommu_map(mapping->domain, dma_addr, page_to_phys(page), len, - prot, GFP_KERNEL); + ret =3D iommu_map(mapping->domain, dma_addr, addr, len, prot, GFP_KERNEL); if (ret < 0) goto fail; =20 @@ -1399,10 +1403,11 @@ static dma_addr_t arm_iommu_map_page(struct device = *dev, struct page *page, * @handle: DMA address of buffer * @size: size of buffer (same as passed to dma_map_page) * @dir: DMA transfer direction (same as passed to dma_map_page) + * @attrs: DMA mapping attributes * - * IOMMU aware version of arm_dma_unmap_page() + * IOMMU aware version of arm_dma_unmap_phys() */ -static void arm_iommu_unmap_page(struct device *dev, dma_addr_t handle, +static void arm_iommu_unmap_phys(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir, unsigned long attrs) { struct dma_iommu_mapping *mapping =3D to_dma_iommu_mapping(dev); @@ -1414,7 +1419,8 @@ static void arm_iommu_unmap_page(struct device *dev, = dma_addr_t handle, if (!iova) return; =20 - if (!dev->dma_coherent && !(attrs & DMA_ATTR_SKIP_CPU_SYNC)) { + if (!dev->dma_coherent && + !(attrs & (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_MMIO))) { page =3D phys_to_page(iommu_iova_to_phys(mapping->domain, iova)); __dma_page_dev_to_cpu(page, offset, size, dir); } @@ -1423,63 +1429,6 @@ static void arm_iommu_unmap_page(struct device *dev,= dma_addr_t handle, __free_iova(mapping, iova, len); } =20 -/** - * arm_iommu_map_resource - map a device resource for DMA - * @dev: valid struct device pointer - * @phys_addr: physical address of resource - * @size: size of resource to map - * @dir: DMA transfer direction - */ -static dma_addr_t arm_iommu_map_resource(struct device *dev, - phys_addr_t phys_addr, size_t size, - enum dma_data_direction dir, unsigned long attrs) -{ - struct dma_iommu_mapping *mapping =3D to_dma_iommu_mapping(dev); - dma_addr_t dma_addr; - int ret, prot; - phys_addr_t addr =3D phys_addr & PAGE_MASK; - unsigned int offset =3D phys_addr & ~PAGE_MASK; - size_t len =3D PAGE_ALIGN(size + offset); - - dma_addr =3D __alloc_iova(mapping, len); - if (dma_addr =3D=3D DMA_MAPPING_ERROR) - return dma_addr; - - prot =3D __dma_info_to_prot(dir, attrs) | IOMMU_MMIO; - - ret =3D iommu_map(mapping->domain, dma_addr, addr, len, prot, GFP_KERNEL); - if (ret < 0) - goto fail; - - return dma_addr + offset; -fail: - __free_iova(mapping, dma_addr, len); - return DMA_MAPPING_ERROR; -} - -/** - * arm_iommu_unmap_resource - unmap a device DMA resource - * @dev: valid struct device pointer - * @dma_handle: DMA address to resource - * @size: size of resource to map - * @dir: DMA transfer direction - */ -static void arm_iommu_unmap_resource(struct device *dev, dma_addr_t dma_ha= ndle, - size_t size, enum dma_data_direction dir, - unsigned long attrs) -{ - struct dma_iommu_mapping *mapping =3D to_dma_iommu_mapping(dev); - dma_addr_t iova =3D dma_handle & PAGE_MASK; - unsigned int offset =3D dma_handle & ~PAGE_MASK; - size_t len =3D PAGE_ALIGN(size + offset); - - if (!iova) - return; - - iommu_unmap(mapping->domain, iova, len); - __free_iova(mapping, iova, len); -} - static void arm_iommu_sync_single_for_cpu(struct device *dev, dma_addr_t handle, size_t size, enum dma_data_direction dir) { @@ -1516,8 +1465,8 @@ static const struct dma_map_ops iommu_ops =3D { .mmap =3D arm_iommu_mmap_attrs, .get_sgtable =3D arm_iommu_get_sgtable, =20 - .map_page =3D arm_iommu_map_page, - .unmap_page =3D arm_iommu_unmap_page, + .map_phys =3D arm_iommu_map_phys, + .unmap_phys =3D arm_iommu_unmap_phys, .sync_single_for_cpu =3D arm_iommu_sync_single_for_cpu, .sync_single_for_device =3D arm_iommu_sync_single_for_device, =20 @@ -1525,9 +1474,6 @@ static const struct dma_map_ops iommu_ops =3D { .unmap_sg =3D arm_iommu_unmap_sg, .sync_sg_for_cpu =3D arm_iommu_sync_sg_for_cpu, .sync_sg_for_device =3D arm_iommu_sync_sg_for_device, - - .map_resource =3D arm_iommu_map_resource, - .unmap_resource =3D arm_iommu_unmap_resource, }; =20 /** --=20 2.51.0 From nobody Thu Oct 2 14:19:59 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 CB5DE2E7BC9; Tue, 16 Sep 2025 07:32:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007956; cv=none; b=kGSldMPvmRyoPnefIFQ3gPUcEH0zaERUpkNx7PoGxAb7xNU7YPtp+WhxzHSDBw87dEKHRudzjbHaQ+nlpcVapcUOTy1Slu1XDkl1v0A9orxe+h5GHXqkmObunLP0Ca4ZwA0qkvZL7S2uaX/TiNe3lbaFyLDTjB7yrOgW4W/bZNg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1758007956; c=relaxed/simple; bh=QmB5cU3WsOuAc70Oza/a6LIj7SuUDUAWg6OzrXu3RmA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=KHMsEelOHAD1d+eumlrjFE/xGMuAZJU+vj37nfwVe44Mlynm0bqhdY28NglX6DG+blAHbvVtVyaTbkDOFDQKL4TWXkwUen3McLf5OoKskWN+KaZwDjHFLGfXUThRJhWxZvBACO8LYSAzft4iQPZsKu1feG+KMsXUZ5a/CHCoUi4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=GLX/m403; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="GLX/m403" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7D34EC4CEEB; Tue, 16 Sep 2025 07:32:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1758007956; bh=QmB5cU3WsOuAc70Oza/a6LIj7SuUDUAWg6OzrXu3RmA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GLX/m403Aze3V+QK3+8X4qMcKQS15jdmPBT9/nGeV6R0IPTmsmRqXz8XKQOGKkzXG YPvfAGsvo8dpDokk7Peh0u/8+gmHtgpu8DOxm0pFc9o6bIt/h2LddRmKehlHmi6ozh d9SJGNYDO+8ys6AYRBF30dn/DMdCQ/6PrkbhGeaclhpPcj5Z8jJro58tV1mMFmywdR S44xs3icGSIFYD5johV5YZeEdyqjZT3jcTrIsITo8wFdPCsdDiBNNDSE3+UolUUTO0 z2A2AB1bJl3ZA3r9grcGitdbmHpi1WdQXKW+kZ3hU8W44d+4qRaOTEO1TV+7lo0gwP SeX6J4FyFzJTA== From: Leon Romanovsky To: Marek Szyprowski Cc: Leon Romanovsky , Jason Gunthorpe , iommu@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Russell King Subject: [PATCH v3 4/4] dma-mapping: remove unused mapping resource callbacks Date: Tue, 16 Sep 2025 10:32:07 +0300 Message-ID: <087c29da71fb41245b8c03f641f53d624be10d59.1758006942.git.leon@kernel.org> X-Mailer: git-send-email 2.51.0 In-Reply-To: References: 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" From: Leon Romanovsky After ARM conversion to use physical addresses for the mapping, there is no in-kernel users for map_resource/unmap_resource callbacks, so remove it. Signed-off-by: Leon Romanovsky Reviewed-by: Jason Gunthorpe --- include/linux/dma-map-ops.h | 6 ------ kernel/dma/mapping.c | 16 ++++------------ 2 files changed, 4 insertions(+), 18 deletions(-) diff --git a/include/linux/dma-map-ops.h b/include/linux/dma-map-ops.h index 25603cb273769..a2ec1566aa270 100644 --- a/include/linux/dma-map-ops.h +++ b/include/linux/dma-map-ops.h @@ -53,12 +53,6 @@ struct dma_map_ops { enum dma_data_direction dir, unsigned long attrs); void (*unmap_sg)(struct device *dev, struct scatterlist *sg, int nents, enum dma_data_direction dir, unsigned long attrs); - dma_addr_t (*map_resource)(struct device *dev, phys_addr_t phys_addr, - size_t size, enum dma_data_direction dir, - unsigned long attrs); - void (*unmap_resource)(struct device *dev, dma_addr_t dma_handle, - size_t size, enum dma_data_direction dir, - unsigned long attrs); void (*sync_single_for_cpu)(struct device *dev, dma_addr_t dma_handle, size_t size, enum dma_data_direction dir); void (*sync_single_for_device)(struct device *dev, diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c index 4080aebe5debb..32a85bfdf873a 100644 --- a/kernel/dma/mapping.c +++ b/kernel/dma/mapping.c @@ -157,7 +157,7 @@ dma_addr_t dma_map_phys(struct device *dev, phys_addr_t= phys, size_t size, { const struct dma_map_ops *ops =3D get_dma_ops(dev); bool is_mmio =3D attrs & DMA_ATTR_MMIO; - dma_addr_t addr; + dma_addr_t addr =3D DMA_MAPPING_ERROR; =20 BUG_ON(!valid_dma_direction(dir)); =20 @@ -171,18 +171,13 @@ dma_addr_t dma_map_phys(struct device *dev, phys_addr= _t phys, size_t size, addr =3D iommu_dma_map_phys(dev, phys, size, dir, attrs); else if (ops->map_phys) addr =3D ops->map_phys(dev, phys, size, dir, attrs); - else if (is_mmio) { - if (!ops->map_resource) - return DMA_MAPPING_ERROR; - - addr =3D ops->map_resource(dev, phys, size, dir, attrs); - } else { + else if (!is_mmio && ops->map_page) { struct page *page =3D phys_to_page(phys); size_t offset =3D offset_in_page(phys); =20 /* * The dma_ops API contract for ops->map_page() requires - * kmappable memory, while ops->map_resource() does not. + * kmappable memory. */ addr =3D ops->map_page(dev, page, offset, size, dir, attrs); } @@ -227,10 +222,7 @@ void dma_unmap_phys(struct device *dev, dma_addr_t add= r, size_t size, iommu_dma_unmap_phys(dev, addr, size, dir, attrs); else if (ops->unmap_phys) ops->unmap_phys(dev, addr, size, dir, attrs); - else if (is_mmio) { - if (ops->unmap_resource) - ops->unmap_resource(dev, addr, size, dir, attrs); - } else + else ops->unmap_page(dev, addr, size, dir, attrs); trace_dma_unmap_phys(dev, addr, size, dir, attrs); debug_dma_unmap_phys(dev, addr, size, dir); --=20 2.51.0