From: Christoph Hellwig <hch@lst.de> To: Jason Gunthorpe <jgg@ziepe.ca> Cc: Bjorn Helgaas <bhelgaas@google.com>, Bernard Metzler <bmt@zurich.ibm.com>, Zhu Yanjun <yanjunz@nvidia.com>, Logan Gunthorpe <logang@deltatee.com>, Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>, Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>, Santosh Shilimkar <santosh.shilimkar@oracle.com>, linux-rdma@vger.kernel.org, rds-devel@oss.oracle.com, linux-pci@vger.kernel.org, iommu@lists.linux-foundation.org Subject: [PATCH 10/10] dma-mapping: remove dma_virt_ops Date: Fri, 6 Nov 2020 19:19:41 +0100 [thread overview] Message-ID: <20201106181941.1878556-11-hch@lst.de> (raw) In-Reply-To: <20201106181941.1878556-1-hch@lst.de> Now that the RDMA core deals with devices that only do DMA mapping in lower layers properly, there is no user for dma_virt_ops and it can be removed. Signed-off-by: Christoph Hellwig <hch@lst.de> --- include/linux/dma-mapping.h | 2 -- kernel/dma/Kconfig | 5 --- kernel/dma/Makefile | 1 - kernel/dma/virt.c | 61 ------------------------------------- 4 files changed, 69 deletions(-) delete mode 100644 kernel/dma/virt.c diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 956151052d4542..2aaed35b556df4 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -565,6 +565,4 @@ static inline int dma_mmap_wc(struct device *dev, int dma_direct_set_offset(struct device *dev, phys_addr_t cpu_start, dma_addr_t dma_start, u64 size); -extern const struct dma_map_ops dma_virt_ops; - #endif /* _LINUX_DMA_MAPPING_H */ diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig index c99de4a2145889..fd2db2665fc691 100644 --- a/kernel/dma/Kconfig +++ b/kernel/dma/Kconfig @@ -75,11 +75,6 @@ config ARCH_HAS_DMA_PREP_COHERENT config ARCH_HAS_FORCE_DMA_UNENCRYPTED bool -config DMA_VIRT_OPS - bool - depends on HAS_DMA - select DMA_OPS - config SWIOTLB bool select NEED_DMA_MAP_STATE diff --git a/kernel/dma/Makefile b/kernel/dma/Makefile index dc755ab68aabf9..cd1d86358a7a62 100644 --- a/kernel/dma/Makefile +++ b/kernel/dma/Makefile @@ -5,7 +5,6 @@ obj-$(CONFIG_DMA_OPS) += ops_helpers.o obj-$(CONFIG_DMA_OPS) += dummy.o obj-$(CONFIG_DMA_CMA) += contiguous.o obj-$(CONFIG_DMA_DECLARE_COHERENT) += coherent.o -obj-$(CONFIG_DMA_VIRT_OPS) += virt.o obj-$(CONFIG_DMA_API_DEBUG) += debug.o obj-$(CONFIG_SWIOTLB) += swiotlb.o obj-$(CONFIG_DMA_COHERENT_POOL) += pool.o diff --git a/kernel/dma/virt.c b/kernel/dma/virt.c deleted file mode 100644 index 59d32317dd574a..00000000000000 --- a/kernel/dma/virt.c +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * DMA operations that map to virtual addresses without flushing memory. - */ -#include <linux/export.h> -#include <linux/mm.h> -#include <linux/dma-map-ops.h> -#include <linux/scatterlist.h> - -static void *dma_virt_alloc(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t gfp, - unsigned long attrs) -{ - void *ret; - - ret = (void *)__get_free_pages(gfp | __GFP_ZERO, get_order(size)); - if (ret) - *dma_handle = (uintptr_t)ret; - return ret; -} - -static void dma_virt_free(struct device *dev, size_t size, - void *cpu_addr, dma_addr_t dma_addr, - unsigned long attrs) -{ - free_pages((unsigned long)cpu_addr, get_order(size)); -} - -static dma_addr_t dma_virt_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, - enum dma_data_direction dir, - unsigned long attrs) -{ - return (uintptr_t)(page_address(page) + offset); -} - -static int dma_virt_map_sg(struct device *dev, struct scatterlist *sgl, - int nents, enum dma_data_direction dir, - unsigned long attrs) -{ - int i; - struct scatterlist *sg; - - for_each_sg(sgl, sg, nents, i) { - BUG_ON(!sg_page(sg)); - sg_dma_address(sg) = (uintptr_t)sg_virt(sg); - sg_dma_len(sg) = sg->length; - } - - return nents; -} - -const struct dma_map_ops dma_virt_ops = { - .alloc = dma_virt_alloc, - .free = dma_virt_free, - .map_page = dma_virt_map_page, - .map_sg = dma_virt_map_sg, - .alloc_pages = dma_common_alloc_pages, - .free_pages = dma_common_free_pages, -}; -EXPORT_SYMBOL(dma_virt_ops); -- 2.28.0
WARNING: multiple messages have this Message-ID (diff)
From: Christoph Hellwig <hch@lst.de> To: Jason Gunthorpe <jgg@ziepe.ca> Cc: rds-devel@oss.oracle.com, Zhu Yanjun <yanjunz@nvidia.com>, Dennis Dalessandro <dennis.dalessandro@cornelisnetworks.com>, linux-rdma@vger.kernel.org, linux-pci@vger.kernel.org, Mike Marciniszyn <mike.marciniszyn@cornelisnetworks.com>, iommu@lists.linux-foundation.org, Bjorn Helgaas <bhelgaas@google.com>, Bernard Metzler <bmt@zurich.ibm.com>, Logan Gunthorpe <logang@deltatee.com>, Santosh Shilimkar <santosh.shilimkar@oracle.com> Subject: [PATCH 10/10] dma-mapping: remove dma_virt_ops Date: Fri, 6 Nov 2020 19:19:41 +0100 [thread overview] Message-ID: <20201106181941.1878556-11-hch@lst.de> (raw) In-Reply-To: <20201106181941.1878556-1-hch@lst.de> Now that the RDMA core deals with devices that only do DMA mapping in lower layers properly, there is no user for dma_virt_ops and it can be removed. Signed-off-by: Christoph Hellwig <hch@lst.de> --- include/linux/dma-mapping.h | 2 -- kernel/dma/Kconfig | 5 --- kernel/dma/Makefile | 1 - kernel/dma/virt.c | 61 ------------------------------------- 4 files changed, 69 deletions(-) delete mode 100644 kernel/dma/virt.c diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 956151052d4542..2aaed35b556df4 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -565,6 +565,4 @@ static inline int dma_mmap_wc(struct device *dev, int dma_direct_set_offset(struct device *dev, phys_addr_t cpu_start, dma_addr_t dma_start, u64 size); -extern const struct dma_map_ops dma_virt_ops; - #endif /* _LINUX_DMA_MAPPING_H */ diff --git a/kernel/dma/Kconfig b/kernel/dma/Kconfig index c99de4a2145889..fd2db2665fc691 100644 --- a/kernel/dma/Kconfig +++ b/kernel/dma/Kconfig @@ -75,11 +75,6 @@ config ARCH_HAS_DMA_PREP_COHERENT config ARCH_HAS_FORCE_DMA_UNENCRYPTED bool -config DMA_VIRT_OPS - bool - depends on HAS_DMA - select DMA_OPS - config SWIOTLB bool select NEED_DMA_MAP_STATE diff --git a/kernel/dma/Makefile b/kernel/dma/Makefile index dc755ab68aabf9..cd1d86358a7a62 100644 --- a/kernel/dma/Makefile +++ b/kernel/dma/Makefile @@ -5,7 +5,6 @@ obj-$(CONFIG_DMA_OPS) += ops_helpers.o obj-$(CONFIG_DMA_OPS) += dummy.o obj-$(CONFIG_DMA_CMA) += contiguous.o obj-$(CONFIG_DMA_DECLARE_COHERENT) += coherent.o -obj-$(CONFIG_DMA_VIRT_OPS) += virt.o obj-$(CONFIG_DMA_API_DEBUG) += debug.o obj-$(CONFIG_SWIOTLB) += swiotlb.o obj-$(CONFIG_DMA_COHERENT_POOL) += pool.o diff --git a/kernel/dma/virt.c b/kernel/dma/virt.c deleted file mode 100644 index 59d32317dd574a..00000000000000 --- a/kernel/dma/virt.c +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0 -/* - * DMA operations that map to virtual addresses without flushing memory. - */ -#include <linux/export.h> -#include <linux/mm.h> -#include <linux/dma-map-ops.h> -#include <linux/scatterlist.h> - -static void *dma_virt_alloc(struct device *dev, size_t size, - dma_addr_t *dma_handle, gfp_t gfp, - unsigned long attrs) -{ - void *ret; - - ret = (void *)__get_free_pages(gfp | __GFP_ZERO, get_order(size)); - if (ret) - *dma_handle = (uintptr_t)ret; - return ret; -} - -static void dma_virt_free(struct device *dev, size_t size, - void *cpu_addr, dma_addr_t dma_addr, - unsigned long attrs) -{ - free_pages((unsigned long)cpu_addr, get_order(size)); -} - -static dma_addr_t dma_virt_map_page(struct device *dev, struct page *page, - unsigned long offset, size_t size, - enum dma_data_direction dir, - unsigned long attrs) -{ - return (uintptr_t)(page_address(page) + offset); -} - -static int dma_virt_map_sg(struct device *dev, struct scatterlist *sgl, - int nents, enum dma_data_direction dir, - unsigned long attrs) -{ - int i; - struct scatterlist *sg; - - for_each_sg(sgl, sg, nents, i) { - BUG_ON(!sg_page(sg)); - sg_dma_address(sg) = (uintptr_t)sg_virt(sg); - sg_dma_len(sg) = sg->length; - } - - return nents; -} - -const struct dma_map_ops dma_virt_ops = { - .alloc = dma_virt_alloc, - .free = dma_virt_free, - .map_page = dma_virt_map_page, - .map_sg = dma_virt_map_sg, - .alloc_pages = dma_common_alloc_pages, - .free_pages = dma_common_free_pages, -}; -EXPORT_SYMBOL(dma_virt_ops); -- 2.28.0 _______________________________________________ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
next prev parent reply other threads:[~2020-11-06 18:20 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-11-06 18:19 remove dma_virt_ops v2 Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 01/10] RMDA/sw: don't allow drivers using dma_virt_ops on highmem configs Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 02/10] RDMA/umem: use ib_dma_max_seg_size instead of dma_get_max_seg_size Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 03/10] RDMA: lift ibdev_to_node from rds to common code Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 04/10] nvme-rdma: use ibdev_to_node instead of dereferencing ->dma_device Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 05/10] rds: stop using dmapool Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 06/10] RDMA/core: remove ib_dma_{alloc,free}_coherent Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 07/10] RDMA/core: remove use of dma_virt_ops Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 08/10] PCI/P2PDMA: Remove the DMA_VIRT_OPS hacks Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` [PATCH 09/10] PCI/P2PDMA: Cleanup __pci_p2pdma_map_sg a bit Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig 2020-11-06 18:19 ` Christoph Hellwig [this message] 2020-11-06 18:19 ` [PATCH 10/10] dma-mapping: remove dma_virt_ops Christoph Hellwig 2020-11-12 9:40 ` remove dma_virt_ops v2 Christoph Hellwig 2020-11-12 9:40 ` Christoph Hellwig 2020-11-12 13:23 ` Jason Gunthorpe 2020-11-12 13:23 ` Jason Gunthorpe 2020-11-12 17:36 ` santosh.shilimkar 2020-11-12 17:36 ` santosh.shilimkar 2020-11-17 10:50 ` Ka-Cheong Poon 2020-11-17 10:50 ` Ka-Cheong Poon 2020-11-17 19:10 ` santosh.shilimkar 2020-11-17 19:10 ` santosh.shilimkar 2020-11-12 16:59 ` Jason Gunthorpe 2020-11-12 16:59 ` Jason Gunthorpe 2020-11-12 17:09 ` Christoph Hellwig 2020-11-12 17:09 ` Christoph Hellwig 2020-11-12 17:39 ` Jason Gunthorpe 2020-11-12 17:39 ` Jason Gunthorpe 2020-11-13 8:50 ` Christoph Hellwig 2020-11-13 8:50 ` Christoph Hellwig 2020-11-17 14:01 ` Mike Marciniszyn 2020-11-17 14:01 ` Mike Marciniszyn 2020-11-17 19:41 ` Jason Gunthorpe 2020-11-17 19:41 ` Jason Gunthorpe
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20201106181941.1878556-11-hch@lst.de \ --to=hch@lst.de \ --cc=bhelgaas@google.com \ --cc=bmt@zurich.ibm.com \ --cc=dennis.dalessandro@cornelisnetworks.com \ --cc=iommu@lists.linux-foundation.org \ --cc=jgg@ziepe.ca \ --cc=linux-pci@vger.kernel.org \ --cc=linux-rdma@vger.kernel.org \ --cc=logang@deltatee.com \ --cc=mike.marciniszyn@cornelisnetworks.com \ --cc=rds-devel@oss.oracle.com \ --cc=santosh.shilimkar@oracle.com \ --cc=yanjunz@nvidia.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.