Message ID | 25d93797bd5a5bae5c7613ec42c01ecd7c69cd17.1646855282.git.christophe.jaillet@wanadoo.fr |
---|---|
State | New |
Headers | show |
Series | PCI: Remove the deprecated "pci-dma-compat.h" API | expand |
On Wed, Mar 9, 2022 at 8:50 PM Christophe JAILLET <christophe.jaillet@wanadoo.fr> wrote: > > Now that all usages of the functions defined in "pci-dma-compat.h" have > been removed, it is time to remove this file as well. > > In order not to break builds, move the "#include <linux/dma-mapping.h>" > that was in "pci-dma-compat.h" into "include/linux/pci.h" > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Thanks a lot for following through with this! Acked-by: Arnd Bergmann <arnd@arndb.de>
Thanks. Given that it depends on a few different trees I plan to send this to Linus after -rc1.
On Wed, Mar 09, 2022 at 08:50:39PM +0100, Christophe JAILLET wrote: > Now that all usages of the functions defined in "pci-dma-compat.h" have > been removed, it is time to remove this file as well. As of 1db333d9a51f ("Merge tag 'spi-fix-v5.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi"), all the following still appear to be used: git grep -E "\<PCI_DMA_(BIDIRECTIONAL|TODEVICE|FROMDEVICE|NONE)" git grep -E "pci_(alloc|zalloc|free)_consistent" git grep -E "pci_(map|unmap)_single" git grep -E "\<pci_(map|unmap)_page" git grep -E "pci_(map|unmap)_sg" git grep -E "pci_dma_sync_" git grep pci_dma_mapping_error git grep -E "pci_set_.*dma_mask" > In order not to break builds, move the "#include <linux/dma-mapping.h>" > that was in "pci-dma-compat.h" into "include/linux/pci.h" > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> > > --- > include/linux/pci-dma-compat.h | 129 --------------------------------- > include/linux/pci.h | 3 +- > 2 files changed, 1 insertion(+), 131 deletions(-) > delete mode 100644 include/linux/pci-dma-compat.h > > diff --git a/include/linux/pci-dma-compat.h b/include/linux/pci-dma-compat.h > deleted file mode 100644 > index 249d4d7fbf18..000000000000 > --- a/include/linux/pci-dma-compat.h > +++ /dev/null > @@ -1,129 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0 */ > -/* include this file if the platform implements the dma_ DMA Mapping API > - * and wants to provide the pci_ DMA Mapping API in terms of it */ > - > -#ifndef _ASM_GENERIC_PCI_DMA_COMPAT_H > -#define _ASM_GENERIC_PCI_DMA_COMPAT_H > - > -#include <linux/dma-mapping.h> > - > -/* This defines the direction arg to the DMA mapping routines. */ > -#define PCI_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL > -#define PCI_DMA_TODEVICE DMA_TO_DEVICE > -#define PCI_DMA_FROMDEVICE DMA_FROM_DEVICE > -#define PCI_DMA_NONE DMA_NONE > - > -static inline void * > -pci_alloc_consistent(struct pci_dev *hwdev, size_t size, > - dma_addr_t *dma_handle) > -{ > - return dma_alloc_coherent(&hwdev->dev, size, dma_handle, GFP_ATOMIC); > -} > - > -static inline void * > -pci_zalloc_consistent(struct pci_dev *hwdev, size_t size, > - dma_addr_t *dma_handle) > -{ > - return dma_alloc_coherent(&hwdev->dev, size, dma_handle, GFP_ATOMIC); > -} > - > -static inline void > -pci_free_consistent(struct pci_dev *hwdev, size_t size, > - void *vaddr, dma_addr_t dma_handle) > -{ > - dma_free_coherent(&hwdev->dev, size, vaddr, dma_handle); > -} > - > -static inline dma_addr_t > -pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) > -{ > - return dma_map_single(&hwdev->dev, ptr, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, > - size_t size, int direction) > -{ > - dma_unmap_single(&hwdev->dev, dma_addr, size, (enum dma_data_direction)direction); > -} > - > -static inline dma_addr_t > -pci_map_page(struct pci_dev *hwdev, struct page *page, > - unsigned long offset, size_t size, int direction) > -{ > - return dma_map_page(&hwdev->dev, page, offset, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, > - size_t size, int direction) > -{ > - dma_unmap_page(&hwdev->dev, dma_address, size, (enum dma_data_direction)direction); > -} > - > -static inline int > -pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, > - int nents, int direction) > -{ > - return dma_map_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, > - int nents, int direction) > -{ > - dma_unmap_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle, > - size_t size, int direction) > -{ > - dma_sync_single_for_cpu(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle, > - size_t size, int direction) > -{ > - dma_sync_single_for_device(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sg, > - int nelems, int direction) > -{ > - dma_sync_sg_for_cpu(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sg, > - int nelems, int direction) > -{ > - dma_sync_sg_for_device(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); > -} > - > -static inline int > -pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) > -{ > - return dma_mapping_error(&pdev->dev, dma_addr); > -} > - > -#ifdef CONFIG_PCI > -static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) > -{ > - return dma_set_mask(&dev->dev, mask); > -} > - > -static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) > -{ > - return dma_set_coherent_mask(&dev->dev, mask); > -} > -#else > -static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) > -{ return -EIO; } > -static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) > -{ return -EIO; } > -#endif > - > -#endif > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 60d423d8f0c4..7f924b5edd1d 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -2472,8 +2472,7 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev) > void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type); > #endif > > -/* Provide the legacy pci_dma_* API */ > -#include <linux/pci-dma-compat.h> > +#include <linux/dma-mapping.h> > > #define pci_printk(level, pdev, fmt, arg...) \ > dev_printk(level, &(pdev)->dev, fmt, ##arg) > -- > 2.32.0 >
On Thu, Mar 10, 2022 at 11:04:45AM -0600, Bjorn Helgaas wrote: > On Wed, Mar 09, 2022 at 08:50:39PM +0100, Christophe JAILLET wrote: > > Now that all usages of the functions defined in "pci-dma-compat.h" have > > been removed, it is time to remove this file as well. > > As of 1db333d9a51f ("Merge tag 'spi-fix-v5.17-rc7' of > git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi"), all the > following still appear to be used: > > git grep -E "\<PCI_DMA_(BIDIRECTIONAL|TODEVICE|FROMDEVICE|NONE)" > git grep -E "pci_(alloc|zalloc|free)_consistent" > git grep -E "pci_(map|unmap)_single" > git grep -E "\<pci_(map|unmap)_page" > git grep -E "pci_(map|unmap)_sg" > git grep -E "pci_dma_sync_" > git grep pci_dma_mapping_error > git grep -E "pci_set_.*dma_mask" Christoph mentioned several other trees that this depends on, and those would likely be in linux-next, but not yet in Linus' tree. The above poking around is from the tip of Linus' tree, which was the wrong place for me to look. But I did the same in current linux-next, 71941773e143 ("Add linux-next specific files for 20220310"), and still found quite a few uses. Some are in comments, printks, coccinelle scripts, etc. I would assume we'd want to remove them all? Bjorn
On Thu, Mar 10, 2022 at 11:30:22AM -0600, Bjorn Helgaas wrote: > Christoph mentioned several other trees that this depends on, and > those would likely be in linux-next, but not yet in Linus' tree. The > above poking around is from the tip of Linus' tree, which was the > wrong place for me to look. > > But I did the same in current linux-next, 71941773e143 ("Add > linux-next specific files for 20220310"), and still found quite a few > uses. Some are in comments, printks, coccinelle scripts, etc. I > would assume we'd want to remove them all? I'm not sure there is much of a point to clean up the historic comments, but it would be a nice cleanup. I'd very much like to queue up this patch now that all the actual symbol references are gone now. Are you ok with that?
On Tue, Mar 29, 2022 at 11:18:03AM -0700, Christoph Hellwig wrote: > On Thu, Mar 10, 2022 at 11:30:22AM -0600, Bjorn Helgaas wrote: > > Christoph mentioned several other trees that this depends on, and > > those would likely be in linux-next, but not yet in Linus' tree. The > > above poking around is from the tip of Linus' tree, which was the > > wrong place for me to look. > > > > But I did the same in current linux-next, 71941773e143 ("Add > > linux-next specific files for 20220310"), and still found quite a few > > uses. Some are in comments, printks, coccinelle scripts, etc. I > > would assume we'd want to remove them all? > > I'm not sure there is much of a point to clean up the historic > comments, but it would be a nice cleanup. I'd very much like to > queue up this patch now that all the actual symbol references > are gone now. Are you ok with that? Yep, I'm OK with that. I *would* like to see at least Documentation/PCI/pci.rst updated soonish (it still refers to pci_set_dma_mask() and friends). Bjorn
On Wed, Mar 09, 2022 at 08:50:39PM +0100, Christophe JAILLET wrote: > Now that all usages of the functions defined in "pci-dma-compat.h" have > been removed, it is time to remove this file as well. > > In order not to break builds, move the "#include <linux/dma-mapping.h>" > that was in "pci-dma-compat.h" into "include/linux/pci.h" > > Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> Acked-by: Bjorn Helgaas <bhelgaas@google.com> Please also update the Documentation/PCI/pci.rst references to pci_set_dma_mask() and friends. > --- > include/linux/pci-dma-compat.h | 129 --------------------------------- > include/linux/pci.h | 3 +- > 2 files changed, 1 insertion(+), 131 deletions(-) > delete mode 100644 include/linux/pci-dma-compat.h > > diff --git a/include/linux/pci-dma-compat.h b/include/linux/pci-dma-compat.h > deleted file mode 100644 > index 249d4d7fbf18..000000000000 > --- a/include/linux/pci-dma-compat.h > +++ /dev/null > @@ -1,129 +0,0 @@ > -/* SPDX-License-Identifier: GPL-2.0 */ > -/* include this file if the platform implements the dma_ DMA Mapping API > - * and wants to provide the pci_ DMA Mapping API in terms of it */ > - > -#ifndef _ASM_GENERIC_PCI_DMA_COMPAT_H > -#define _ASM_GENERIC_PCI_DMA_COMPAT_H > - > -#include <linux/dma-mapping.h> > - > -/* This defines the direction arg to the DMA mapping routines. */ > -#define PCI_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL > -#define PCI_DMA_TODEVICE DMA_TO_DEVICE > -#define PCI_DMA_FROMDEVICE DMA_FROM_DEVICE > -#define PCI_DMA_NONE DMA_NONE > - > -static inline void * > -pci_alloc_consistent(struct pci_dev *hwdev, size_t size, > - dma_addr_t *dma_handle) > -{ > - return dma_alloc_coherent(&hwdev->dev, size, dma_handle, GFP_ATOMIC); > -} > - > -static inline void * > -pci_zalloc_consistent(struct pci_dev *hwdev, size_t size, > - dma_addr_t *dma_handle) > -{ > - return dma_alloc_coherent(&hwdev->dev, size, dma_handle, GFP_ATOMIC); > -} > - > -static inline void > -pci_free_consistent(struct pci_dev *hwdev, size_t size, > - void *vaddr, dma_addr_t dma_handle) > -{ > - dma_free_coherent(&hwdev->dev, size, vaddr, dma_handle); > -} > - > -static inline dma_addr_t > -pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) > -{ > - return dma_map_single(&hwdev->dev, ptr, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, > - size_t size, int direction) > -{ > - dma_unmap_single(&hwdev->dev, dma_addr, size, (enum dma_data_direction)direction); > -} > - > -static inline dma_addr_t > -pci_map_page(struct pci_dev *hwdev, struct page *page, > - unsigned long offset, size_t size, int direction) > -{ > - return dma_map_page(&hwdev->dev, page, offset, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, > - size_t size, int direction) > -{ > - dma_unmap_page(&hwdev->dev, dma_address, size, (enum dma_data_direction)direction); > -} > - > -static inline int > -pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, > - int nents, int direction) > -{ > - return dma_map_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, > - int nents, int direction) > -{ > - dma_unmap_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle, > - size_t size, int direction) > -{ > - dma_sync_single_for_cpu(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle, > - size_t size, int direction) > -{ > - dma_sync_single_for_device(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sg, > - int nelems, int direction) > -{ > - dma_sync_sg_for_cpu(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); > -} > - > -static inline void > -pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sg, > - int nelems, int direction) > -{ > - dma_sync_sg_for_device(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); > -} > - > -static inline int > -pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) > -{ > - return dma_mapping_error(&pdev->dev, dma_addr); > -} > - > -#ifdef CONFIG_PCI > -static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) > -{ > - return dma_set_mask(&dev->dev, mask); > -} > - > -static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) > -{ > - return dma_set_coherent_mask(&dev->dev, mask); > -} > -#else > -static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) > -{ return -EIO; } > -static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) > -{ return -EIO; } > -#endif > - > -#endif > diff --git a/include/linux/pci.h b/include/linux/pci.h > index 60d423d8f0c4..7f924b5edd1d 100644 > --- a/include/linux/pci.h > +++ b/include/linux/pci.h > @@ -2472,8 +2472,7 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev) > void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type); > #endif > > -/* Provide the legacy pci_dma_* API */ > -#include <linux/pci-dma-compat.h> > +#include <linux/dma-mapping.h> > > #define pci_printk(level, pdev, fmt, arg...) \ > dev_printk(level, &(pdev)->dev, fmt, ##arg) > -- > 2.32.0 >
diff --git a/include/linux/pci-dma-compat.h b/include/linux/pci-dma-compat.h deleted file mode 100644 index 249d4d7fbf18..000000000000 --- a/include/linux/pci-dma-compat.h +++ /dev/null @@ -1,129 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0 */ -/* include this file if the platform implements the dma_ DMA Mapping API - * and wants to provide the pci_ DMA Mapping API in terms of it */ - -#ifndef _ASM_GENERIC_PCI_DMA_COMPAT_H -#define _ASM_GENERIC_PCI_DMA_COMPAT_H - -#include <linux/dma-mapping.h> - -/* This defines the direction arg to the DMA mapping routines. */ -#define PCI_DMA_BIDIRECTIONAL DMA_BIDIRECTIONAL -#define PCI_DMA_TODEVICE DMA_TO_DEVICE -#define PCI_DMA_FROMDEVICE DMA_FROM_DEVICE -#define PCI_DMA_NONE DMA_NONE - -static inline void * -pci_alloc_consistent(struct pci_dev *hwdev, size_t size, - dma_addr_t *dma_handle) -{ - return dma_alloc_coherent(&hwdev->dev, size, dma_handle, GFP_ATOMIC); -} - -static inline void * -pci_zalloc_consistent(struct pci_dev *hwdev, size_t size, - dma_addr_t *dma_handle) -{ - return dma_alloc_coherent(&hwdev->dev, size, dma_handle, GFP_ATOMIC); -} - -static inline void -pci_free_consistent(struct pci_dev *hwdev, size_t size, - void *vaddr, dma_addr_t dma_handle) -{ - dma_free_coherent(&hwdev->dev, size, vaddr, dma_handle); -} - -static inline dma_addr_t -pci_map_single(struct pci_dev *hwdev, void *ptr, size_t size, int direction) -{ - return dma_map_single(&hwdev->dev, ptr, size, (enum dma_data_direction)direction); -} - -static inline void -pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, - size_t size, int direction) -{ - dma_unmap_single(&hwdev->dev, dma_addr, size, (enum dma_data_direction)direction); -} - -static inline dma_addr_t -pci_map_page(struct pci_dev *hwdev, struct page *page, - unsigned long offset, size_t size, int direction) -{ - return dma_map_page(&hwdev->dev, page, offset, size, (enum dma_data_direction)direction); -} - -static inline void -pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, - size_t size, int direction) -{ - dma_unmap_page(&hwdev->dev, dma_address, size, (enum dma_data_direction)direction); -} - -static inline int -pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, - int nents, int direction) -{ - return dma_map_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction); -} - -static inline void -pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, - int nents, int direction) -{ - dma_unmap_sg(&hwdev->dev, sg, nents, (enum dma_data_direction)direction); -} - -static inline void -pci_dma_sync_single_for_cpu(struct pci_dev *hwdev, dma_addr_t dma_handle, - size_t size, int direction) -{ - dma_sync_single_for_cpu(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); -} - -static inline void -pci_dma_sync_single_for_device(struct pci_dev *hwdev, dma_addr_t dma_handle, - size_t size, int direction) -{ - dma_sync_single_for_device(&hwdev->dev, dma_handle, size, (enum dma_data_direction)direction); -} - -static inline void -pci_dma_sync_sg_for_cpu(struct pci_dev *hwdev, struct scatterlist *sg, - int nelems, int direction) -{ - dma_sync_sg_for_cpu(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); -} - -static inline void -pci_dma_sync_sg_for_device(struct pci_dev *hwdev, struct scatterlist *sg, - int nelems, int direction) -{ - dma_sync_sg_for_device(&hwdev->dev, sg, nelems, (enum dma_data_direction)direction); -} - -static inline int -pci_dma_mapping_error(struct pci_dev *pdev, dma_addr_t dma_addr) -{ - return dma_mapping_error(&pdev->dev, dma_addr); -} - -#ifdef CONFIG_PCI -static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) -{ - return dma_set_mask(&dev->dev, mask); -} - -static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) -{ - return dma_set_coherent_mask(&dev->dev, mask); -} -#else -static inline int pci_set_dma_mask(struct pci_dev *dev, u64 mask) -{ return -EIO; } -static inline int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask) -{ return -EIO; } -#endif - -#endif diff --git a/include/linux/pci.h b/include/linux/pci.h index 60d423d8f0c4..7f924b5edd1d 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h @@ -2472,8 +2472,7 @@ static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev) void pci_uevent_ers(struct pci_dev *pdev, enum pci_ers_result err_type); #endif -/* Provide the legacy pci_dma_* API */ -#include <linux/pci-dma-compat.h> +#include <linux/dma-mapping.h> #define pci_printk(level, pdev, fmt, arg...) \ dev_printk(level, &(pdev)->dev, fmt, ##arg)
Now that all usages of the functions defined in "pci-dma-compat.h" have been removed, it is time to remove this file as well. In order not to break builds, move the "#include <linux/dma-mapping.h>" that was in "pci-dma-compat.h" into "include/linux/pci.h" Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr> --- include/linux/pci-dma-compat.h | 129 --------------------------------- include/linux/pci.h | 3 +- 2 files changed, 1 insertion(+), 131 deletions(-) delete mode 100644 include/linux/pci-dma-compat.h