All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: Christoph Hellwig <hch@lst.de>
Cc: Robin Murphy <robin.murphy@arm.com>,
	iommu@lists.linux.dev, Joerg Roedel <joro@8bytes.org>,
	Will Deacon <will@kernel.org>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Xi Ruoyao <xry111@xry111.site>
Subject: Re: [PATCH 2/2] iommu/dma: remove most stubs in iommu-dma.h
Date: Sun, 22 Sep 2024 17:28:19 +0300	[thread overview]
Message-ID: <20240922142819.GD11337@unreal> (raw)
In-Reply-To: <20240922140743.1596763-3-hch@lst.de>

On Sun, Sep 22, 2024 at 04:07:35PM +0200, Christoph Hellwig wrote:
> The direct calls from mapping.c all guarded by use_dma_iommu(), so don't
> bother to provide stubs, but instead just expose the prototypes
> unconditionally.

I was afraid to do such a change because of fear that some compiler will
call to the !CONFIG_IOMMU_DMA functions without checking the condition.

Thanks

> 
> Signed-off-by: Christoph Hellwig <hch@lst.de>
> ---
>  include/linux/iommu-dma.h | 108 +++-----------------------------------
>  1 file changed, 8 insertions(+), 100 deletions(-)
> 
> diff --git a/include/linux/iommu-dma.h b/include/linux/iommu-dma.h
> index 7bf145a52d6a1a..508beaa44c39e8 100644
> --- a/include/linux/iommu-dma.h
> +++ b/include/linux/iommu-dma.h
> @@ -14,6 +14,13 @@ static inline bool use_dma_iommu(struct device *dev)
>  {
>  	return dev->dma_iommu;
>  }
> +#else
> +static inline bool use_dma_iommu(struct device *dev)
> +{
> +	return false;
> +}
> +#endif /* CONFIG_IOMMU_DMA */
> +
>  dma_addr_t iommu_dma_map_page(struct device *dev, struct page *page,
>  		unsigned long offset, size_t size, enum dma_data_direction dir,
>  		unsigned long attrs);
> @@ -58,104 +65,5 @@ void iommu_dma_sync_sg_for_cpu(struct device *dev, struct scatterlist *sgl,
>  		int nelems, enum dma_data_direction dir);
>  void iommu_dma_sync_sg_for_device(struct device *dev, struct scatterlist *sgl,
>  		int nelems, enum dma_data_direction dir);
> -#else
> -static inline bool use_dma_iommu(struct device *dev)
> -{
> -	return false;
> -}
> -static inline dma_addr_t iommu_dma_map_page(struct device *dev,
> -		struct page *page, unsigned long offset, size_t size,
> -		enum dma_data_direction dir, unsigned long attrs)
> -{
> -	return DMA_MAPPING_ERROR;
> -}
> -static inline void iommu_dma_unmap_page(struct device *dev,
> -		dma_addr_t dma_handle, size_t size, enum dma_data_direction dir,
> -		unsigned long attrs)
> -{
> -}
> -static inline int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg,
> -		int nents, enum dma_data_direction dir, unsigned long attrs)
> -{
> -	return -EINVAL;
> -}
> -static inline void iommu_dma_unmap_sg(struct device *dev,
> -		struct scatterlist *sg, int nents, enum dma_data_direction dir,
> -		unsigned long attrs)
> -{
> -}
> -static inline void *iommu_dma_alloc(struct device *dev, size_t size,
> -		dma_addr_t *handle, gfp_t gfp, unsigned long attrs)
> -{
> -	return NULL;
> -}
> -static inline int iommu_dma_mmap(struct device *dev, struct vm_area_struct *vma,
> -		void *cpu_addr, dma_addr_t dma_addr, size_t size,
> -		unsigned long attrs)
> -{
> -	return -EINVAL;
> -}
> -static inline int iommu_dma_get_sgtable(struct device *dev,
> -		struct sg_table *sgt, void *cpu_addr, dma_addr_t dma_addr,
> -		size_t size, unsigned long attrs)
> -{
> -	return -EINVAL;
> -}
> -static inline unsigned long iommu_dma_get_merge_boundary(struct device *dev)
> -{
> -	return 0;
> -}
> -static inline size_t iommu_dma_opt_mapping_size(void)
> -{
> -	return 0;
> -}
> -static inline size_t iommu_dma_max_mapping_size(struct device *dev)
> -{
> -	return 0;
> -}
> -static inline void iommu_dma_free(struct device *dev, size_t size,
> -		void *cpu_addr, dma_addr_t handle, unsigned long attrs)
> -{
> -}
> -static inline dma_addr_t iommu_dma_map_resource(struct device *dev,
> -		phys_addr_t phys, size_t size, enum dma_data_direction dir,
> -		unsigned long attrs)
> -{
> -	return DMA_MAPPING_ERROR;
> -}
> -static inline void iommu_dma_unmap_resource(struct device *dev,
> -		dma_addr_t handle, size_t size, enum dma_data_direction dir,
> -		unsigned long attrs)
> -{
> -}
> -static inline struct sg_table *
> -iommu_dma_alloc_noncontiguous(struct device *dev, size_t size,
> -		enum dma_data_direction dir, gfp_t gfp, unsigned long attrs)
> -{
> -	return NULL;
> -}
> -static inline void iommu_dma_free_noncontiguous(struct device *dev, size_t size,
> -		struct sg_table *sgt, enum dma_data_direction dir)
> -{
> -}
> -static inline void iommu_dma_sync_single_for_cpu(struct device *dev,
> -		dma_addr_t dma_handle, size_t size,
> -		enum dma_data_direction dir)
> -{
> -}
> -static inline void iommu_dma_sync_single_for_device(struct device *dev,
> -		dma_addr_t dma_handle, size_t size, enum dma_data_direction dir)
> -{
> -}
> -static inline void iommu_dma_sync_sg_for_cpu(struct device *dev,
> -		struct scatterlist *sgl, int nelems,
> -		enum dma_data_direction dir)
> -{
> -}
> -static inline void iommu_dma_sync_sg_for_device(struct device *dev,
> -		struct scatterlist *sgl, int nelems,
> -		enum dma_data_direction dir)
> -{
> -}
> -#endif /* CONFIG_IOMMU_DMA */
> +
>  #endif /* _LINUX_IOMMU_DMA_H */
> -- 
> 2.45.2
> 

  reply	other threads:[~2024-09-22 14:28 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-22 14:07 iommu-dma direct call fixups Christoph Hellwig
2024-09-22 14:07 ` [PATCH 1/2] dma-mapping: fix vmap and mmap of noncontiougs allocations Christoph Hellwig
2024-09-22 15:02   ` Leon Romanovsky
2024-09-22 14:07 ` [PATCH 2/2] iommu/dma: remove most stubs in iommu-dma.h Christoph Hellwig
2024-09-22 14:28   ` Leon Romanovsky [this message]
2024-09-22 14:32     ` Christoph Hellwig
2024-09-22 15:02   ` Leon Romanovsky

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=20240922142819.GD11337@unreal \
    --to=leon@kernel.org \
    --cc=hch@lst.de \
    --cc=iommu@lists.linux.dev \
    --cc=joro@8bytes.org \
    --cc=m.szyprowski@samsung.com \
    --cc=robin.murphy@arm.com \
    --cc=will@kernel.org \
    --cc=xry111@xry111.site \
    /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: link
Be 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.