diff mbox series

[1/1] media: ipu6: Drop unused ipu6_dma_get_sgtable()

Message ID 20250225094532.40678-1-sakari.ailus@linux.intel.com (mailing list archive)
State New
Headers show
Series [1/1] media: ipu6: Drop unused ipu6_dma_get_sgtable() | expand

Commit Message

Sakari Ailus Feb. 25, 2025, 9:45 a.m. UTC
ipu6_dma_get_sgtable() is now unused. Drop it.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
 drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
 2 files changed, 36 deletions(-)

Comments

Stanislaw Gruszka Feb. 25, 2025, 4:47 p.m. UTC | #1
On Tue, Feb 25, 2025 at 11:45:32AM +0200, Sakari Ailus wrote:
> ipu6_dma_get_sgtable() is now unused. Drop it.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Reviewed-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>

Regards
Stanislaw

> ---
>  drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
>  drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
>  2 files changed, 36 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> index 44e24da33907..052e396a28af 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> @@ -455,36 +455,3 @@ void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>  	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
>  }
>  EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
> -
> -/*
> - * Create scatter-list for the already allocated DMA buffer
> - */
> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> -			 unsigned long attrs)
> -{
> -	struct device *dev = &sys->auxdev.dev;
> -	struct ipu6_mmu *mmu = sys->mmu;
> -	struct vm_info *info;
> -	int n_pages;
> -	int ret = 0;
> -
> -	info = get_vm_info(mmu, handle);
> -	if (!info)
> -		return -EFAULT;
> -
> -	if (!info->vaddr)
> -		return -EFAULT;
> -
> -	if (WARN_ON(!info->pages))
> -		return -ENOMEM;
> -
> -	n_pages = PFN_UP(size);
> -
> -	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
> -					GFP_KERNEL);
> -	if (ret)
> -		dev_warn(dev, "get sgt table failed\n");
> -
> -	return ret;
> -}
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> index b51244add9e6..2882850d9366 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>  			 enum dma_data_direction dir, unsigned long attrs);
>  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>  			    enum dma_data_direction dir, unsigned long attrs);
> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> -			 unsigned long attrs);
>  #endif /* IPU6_DMA_H */
> -- 
> 2.39.5
>
Bingbu Cao Feb. 26, 2025, 2:38 a.m. UTC | #2
Sakari,

On 2/25/25 5:45 PM, Sakari Ailus wrote:
> ipu6_dma_get_sgtable() is now unused. Drop it.
> 
> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> ---
>  drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
>  drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
>  2 files changed, 36 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> index 44e24da33907..052e396a28af 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> @@ -455,36 +455,3 @@ void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>  	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
>  }
>  EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
> -
> -/*
> - * Create scatter-list for the already allocated DMA buffer
> - */
> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> -			 unsigned long attrs)
> -{
> -	struct device *dev = &sys->auxdev.dev;
> -	struct ipu6_mmu *mmu = sys->mmu;
> -	struct vm_info *info;
> -	int n_pages;
> -	int ret = 0;
> -
> -	info = get_vm_info(mmu, handle);
> -	if (!info)
> -		return -EFAULT;
> -
> -	if (!info->vaddr)
> -		return -EFAULT;
> -
> -	if (WARN_ON(!info->pages))
> -		return -ENOMEM;
> -
> -	n_pages = PFN_UP(size);
> -
> -	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
> -					GFP_KERNEL);
> -	if (ret)
> -		dev_warn(dev, "get sgt table failed\n");
> -
> -	return ret;
> -}
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> index b51244add9e6..2882850d9366 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>  			 enum dma_data_direction dir, unsigned long attrs);
>  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>  			    enum dma_data_direction dir, unsigned long attrs);
> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> -			 unsigned long attrs);

ipu6_dma_get_sgtable() is used in downstream PS driver, I don't think it
is necessary to remove it as it will be hard to integrate with downstream PS
driver.

>  #endif /* IPU6_DMA_H */
>
Sakari Ailus Feb. 26, 2025, 7:58 a.m. UTC | #3
Hi Bingbu,

On Wed, Feb 26, 2025 at 10:38:25AM +0800, Bingbu Cao wrote:
> Sakari,
> 
> On 2/25/25 5:45 PM, Sakari Ailus wrote:
> > ipu6_dma_get_sgtable() is now unused. Drop it.
> > 
> > Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> > ---
> >  drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
> >  drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
> >  2 files changed, 36 deletions(-)
> > 
> > diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> > index 44e24da33907..052e396a28af 100644
> > --- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
> > +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> > @@ -455,36 +455,3 @@ void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >  	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
> >  }
> >  EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
> > -
> > -/*
> > - * Create scatter-list for the already allocated DMA buffer
> > - */
> > -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> > -			 void *cpu_addr, dma_addr_t handle, size_t size,
> > -			 unsigned long attrs)
> > -{
> > -	struct device *dev = &sys->auxdev.dev;
> > -	struct ipu6_mmu *mmu = sys->mmu;
> > -	struct vm_info *info;
> > -	int n_pages;
> > -	int ret = 0;
> > -
> > -	info = get_vm_info(mmu, handle);
> > -	if (!info)
> > -		return -EFAULT;
> > -
> > -	if (!info->vaddr)
> > -		return -EFAULT;
> > -
> > -	if (WARN_ON(!info->pages))
> > -		return -ENOMEM;
> > -
> > -	n_pages = PFN_UP(size);
> > -
> > -	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
> > -					GFP_KERNEL);
> > -	if (ret)
> > -		dev_warn(dev, "get sgt table failed\n");
> > -
> > -	return ret;
> > -}
> > diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> > index b51244add9e6..2882850d9366 100644
> > --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
> > +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> > @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >  			 enum dma_data_direction dir, unsigned long attrs);
> >  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >  			    enum dma_data_direction dir, unsigned long attrs);
> > -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> > -			 void *cpu_addr, dma_addr_t handle, size_t size,
> > -			 unsigned long attrs);
> 
> ipu6_dma_get_sgtable() is used in downstream PS driver, I don't think it
> is necessary to remove it as it will be hard to integrate with downstream PS
> driver.

When will there be an upstream PSYS driver?

I suppose you can just as well apply a revert of this patch to your
downstream tree?
Bingbu Cao Feb. 26, 2025, 8:01 a.m. UTC | #4
On 2/26/25 3:58 PM, Sakari Ailus wrote:
> Hi Bingbu,
> 
> On Wed, Feb 26, 2025 at 10:38:25AM +0800, Bingbu Cao wrote:
>> Sakari,
>>
>> On 2/25/25 5:45 PM, Sakari Ailus wrote:
>>> ipu6_dma_get_sgtable() is now unused. Drop it.
>>>
>>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>>> ---
>>>  drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
>>>  drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
>>>  2 files changed, 36 deletions(-)
>>>
>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
>>> index 44e24da33907..052e396a28af 100644
>>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
>>> @@ -455,36 +455,3 @@ void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>  	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
>>>  }
>>>  EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
>>> -
>>> -/*
>>> - * Create scatter-list for the already allocated DMA buffer
>>> - */
>>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
>>> -			 unsigned long attrs)
>>> -{
>>> -	struct device *dev = &sys->auxdev.dev;
>>> -	struct ipu6_mmu *mmu = sys->mmu;
>>> -	struct vm_info *info;
>>> -	int n_pages;
>>> -	int ret = 0;
>>> -
>>> -	info = get_vm_info(mmu, handle);
>>> -	if (!info)
>>> -		return -EFAULT;
>>> -
>>> -	if (!info->vaddr)
>>> -		return -EFAULT;
>>> -
>>> -	if (WARN_ON(!info->pages))
>>> -		return -ENOMEM;
>>> -
>>> -	n_pages = PFN_UP(size);
>>> -
>>> -	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
>>> -					GFP_KERNEL);
>>> -	if (ret)
>>> -		dev_warn(dev, "get sgt table failed\n");
>>> -
>>> -	return ret;
>>> -}
>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
>>> index b51244add9e6..2882850d9366 100644
>>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
>>> @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>  			 enum dma_data_direction dir, unsigned long attrs);
>>>  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>  			    enum dma_data_direction dir, unsigned long attrs);
>>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
>>> -			 unsigned long attrs);
>>
>> ipu6_dma_get_sgtable() is used in downstream PS driver, I don't think it
>> is necessary to remove it as it will be hard to integrate with downstream PS
>> driver.
> 
> When will there be an upstream PSYS driver?
> 
> I suppose you can just as well apply a revert of this patch to your
> downstream tree?
>

Sakari,

I don't think all the OS vendors like this way, it make the downstream
development harder. It's a trade-off, I cannot see removing offer any
benefits that its side-effect.
Sakari Ailus Feb. 26, 2025, 8:39 a.m. UTC | #5
Hi Bingbu,

On Wed, Feb 26, 2025 at 04:01:16PM +0800, Bingbu Cao wrote:
> 
> On 2/26/25 3:58 PM, Sakari Ailus wrote:
> > Hi Bingbu,
> > 
> > On Wed, Feb 26, 2025 at 10:38:25AM +0800, Bingbu Cao wrote:
> >> Sakari,
> >>
> >> On 2/25/25 5:45 PM, Sakari Ailus wrote:
> >>> ipu6_dma_get_sgtable() is now unused. Drop it.
> >>>
> >>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
> >>> ---
> >>>  drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
> >>>  drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
> >>>  2 files changed, 36 deletions(-)
> >>>
> >>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> >>> index 44e24da33907..052e396a28af 100644
> >>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
> >>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
> >>> @@ -455,36 +455,3 @@ void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>>  	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
> >>>  }
> >>>  EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
> >>> -
> >>> -/*
> >>> - * Create scatter-list for the already allocated DMA buffer
> >>> - */
> >>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> >>> -			 unsigned long attrs)
> >>> -{
> >>> -	struct device *dev = &sys->auxdev.dev;
> >>> -	struct ipu6_mmu *mmu = sys->mmu;
> >>> -	struct vm_info *info;
> >>> -	int n_pages;
> >>> -	int ret = 0;
> >>> -
> >>> -	info = get_vm_info(mmu, handle);
> >>> -	if (!info)
> >>> -		return -EFAULT;
> >>> -
> >>> -	if (!info->vaddr)
> >>> -		return -EFAULT;
> >>> -
> >>> -	if (WARN_ON(!info->pages))
> >>> -		return -ENOMEM;
> >>> -
> >>> -	n_pages = PFN_UP(size);
> >>> -
> >>> -	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
> >>> -					GFP_KERNEL);
> >>> -	if (ret)
> >>> -		dev_warn(dev, "get sgt table failed\n");
> >>> -
> >>> -	return ret;
> >>> -}
> >>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> >>> index b51244add9e6..2882850d9366 100644
> >>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
> >>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> >>> @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>>  			 enum dma_data_direction dir, unsigned long attrs);
> >>>  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>>  			    enum dma_data_direction dir, unsigned long attrs);
> >>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> >>> -			 unsigned long attrs);
> >>
> >> ipu6_dma_get_sgtable() is used in downstream PS driver, I don't think it
> >> is necessary to remove it as it will be hard to integrate with downstream PS
> >> driver.
> > 
> > When will there be an upstream PSYS driver?
> > 
> > I suppose you can just as well apply a revert of this patch to your
> > downstream tree?
> >
> 
> Sakari,
> 
> I don't think all the OS vendors like this way, it make the downstream
> development harder. It's a trade-off, I cannot see removing offer any
> benefits that its side-effect.

I don't think the Linux distro maintainers like downstream drivers at all,
independently of how many patches they consist of.

You could as well move the function to the PSYS driver and use
find_vm_area(cpu_addr) instead to find the area.
Bingbu Cao Feb. 26, 2025, 9:25 a.m. UTC | #6
Sakari,

On 2/26/25 4:39 PM, Sakari Ailus wrote:
> Hi Bingbu,
> 
> On Wed, Feb 26, 2025 at 04:01:16PM +0800, Bingbu Cao wrote:
>>
>> On 2/26/25 3:58 PM, Sakari Ailus wrote:
>>> Hi Bingbu,
>>>
>>> On Wed, Feb 26, 2025 at 10:38:25AM +0800, Bingbu Cao wrote:
>>>> Sakari,
>>>>
>>>> On 2/25/25 5:45 PM, Sakari Ailus wrote:
>>>>> ipu6_dma_get_sgtable() is now unused. Drop it.
>>>>>
>>>>> Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
>>>>> ---
>>>>>  drivers/media/pci/intel/ipu6/ipu6-dma.c | 33 -------------------------
>>>>>  drivers/media/pci/intel/ipu6/ipu6-dma.h |  3 ---
>>>>>  2 files changed, 36 deletions(-)
>>>>>
>>>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
>>>>> index 44e24da33907..052e396a28af 100644
>>>>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
>>>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
>>>>> @@ -455,36 +455,3 @@ void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>>>  	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
>>>>>  }
>>>>>  EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
>>>>> -
>>>>> -/*
>>>>> - * Create scatter-list for the already allocated DMA buffer
>>>>> - */
>>>>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
>>>>> -			 unsigned long attrs)
>>>>> -{
>>>>> -	struct device *dev = &sys->auxdev.dev;
>>>>> -	struct ipu6_mmu *mmu = sys->mmu;
>>>>> -	struct vm_info *info;
>>>>> -	int n_pages;
>>>>> -	int ret = 0;
>>>>> -
>>>>> -	info = get_vm_info(mmu, handle);
>>>>> -	if (!info)
>>>>> -		return -EFAULT;
>>>>> -
>>>>> -	if (!info->vaddr)
>>>>> -		return -EFAULT;
>>>>> -
>>>>> -	if (WARN_ON(!info->pages))
>>>>> -		return -ENOMEM;
>>>>> -
>>>>> -	n_pages = PFN_UP(size);
>>>>> -
>>>>> -	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
>>>>> -					GFP_KERNEL);
>>>>> -	if (ret)
>>>>> -		dev_warn(dev, "get sgt table failed\n");
>>>>> -
>>>>> -	return ret;
>>>>> -}
>>>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
>>>>> index b51244add9e6..2882850d9366 100644
>>>>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
>>>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
>>>>> @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>>>  			 enum dma_data_direction dir, unsigned long attrs);
>>>>>  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>>>  			    enum dma_data_direction dir, unsigned long attrs);
>>>>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
>>>>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
>>>>> -			 unsigned long attrs);
>>>>
>>>> ipu6_dma_get_sgtable() is used in downstream PS driver, I don't think it
>>>> is necessary to remove it as it will be hard to integrate with downstream PS
>>>> driver.
>>>
>>> When will there be an upstream PSYS driver?
>>>
>>> I suppose you can just as well apply a revert of this patch to your
>>> downstream tree?
>>>
>>
>> Sakari,
>>
>> I don't think all the OS vendors like this way, it make the downstream
>> development harder. It's a trade-off, I cannot see removing offer any
>> benefits that its side-effect.
> 
> I don't think the Linux distro maintainers like downstream drivers at all,
> independently of how many patches they consist of.
> 
> You could as well move the function to the PSYS driver and use
> find_vm_area(cpu_addr) instead to find the area.

My fault, I forgot I already removed the ipu6_dma_get_sgtable() from
downstream driver months ago, so,

Reviewed-by: Bingbu Cao <bingbu.cao@intel.com>

;)

>
Sakari Ailus Feb. 26, 2025, 10:38 a.m. UTC | #7
On Wed, Feb 26, 2025 at 05:25:06PM +0800, Bingbu Cao wrote:
> >>>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> >>>>> index b51244add9e6..2882850d9366 100644
> >>>>> --- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
> >>>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
> >>>>> @@ -43,7 +43,4 @@ int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>>>>  			 enum dma_data_direction dir, unsigned long attrs);
> >>>>>  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>>>>  			    enum dma_data_direction dir, unsigned long attrs);
> >>>>> -int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
> >>>>> -			 void *cpu_addr, dma_addr_t handle, size_t size,
> >>>>> -			 unsigned long attrs);
> >>>>
> >>>> ipu6_dma_get_sgtable() is used in downstream PS driver, I don't think it
> >>>> is necessary to remove it as it will be hard to integrate with downstream PS
> >>>> driver.
> >>>
> >>> When will there be an upstream PSYS driver?
> >>>
> >>> I suppose you can just as well apply a revert of this patch to your
> >>> downstream tree?
> >>>
> >>
> >> Sakari,
> >>
> >> I don't think all the OS vendors like this way, it make the downstream
> >> development harder. It's a trade-off, I cannot see removing offer any
> >> benefits that its side-effect.
> > 
> > I don't think the Linux distro maintainers like downstream drivers at all,
> > independently of how many patches they consist of.
> > 
> > You could as well move the function to the PSYS driver and use
> > find_vm_area(cpu_addr) instead to find the area.
> 
> My fault, I forgot I already removed the ipu6_dma_get_sgtable() from
> downstream driver months ago, so,
> 
> Reviewed-by: Bingbu Cao <bingbu.cao@intel.com>

Thanks, Bingbu!
diff mbox series

Patch

diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.c b/drivers/media/pci/intel/ipu6/ipu6-dma.c
index 44e24da33907..052e396a28af 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-dma.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-dma.c
@@ -455,36 +455,3 @@  void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
 	ipu6_dma_unmap_sg(sys, sgt->sgl, sgt->nents, dir, attrs);
 }
 EXPORT_SYMBOL_NS_GPL(ipu6_dma_unmap_sgtable, "INTEL_IPU6");
-
-/*
- * Create scatter-list for the already allocated DMA buffer
- */
-int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
-			 void *cpu_addr, dma_addr_t handle, size_t size,
-			 unsigned long attrs)
-{
-	struct device *dev = &sys->auxdev.dev;
-	struct ipu6_mmu *mmu = sys->mmu;
-	struct vm_info *info;
-	int n_pages;
-	int ret = 0;
-
-	info = get_vm_info(mmu, handle);
-	if (!info)
-		return -EFAULT;
-
-	if (!info->vaddr)
-		return -EFAULT;
-
-	if (WARN_ON(!info->pages))
-		return -ENOMEM;
-
-	n_pages = PFN_UP(size);
-
-	ret = sg_alloc_table_from_pages(sgt, info->pages, n_pages, 0, size,
-					GFP_KERNEL);
-	if (ret)
-		dev_warn(dev, "get sgt table failed\n");
-
-	return ret;
-}
diff --git a/drivers/media/pci/intel/ipu6/ipu6-dma.h b/drivers/media/pci/intel/ipu6/ipu6-dma.h
index b51244add9e6..2882850d9366 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-dma.h
+++ b/drivers/media/pci/intel/ipu6/ipu6-dma.h
@@ -43,7 +43,4 @@  int ipu6_dma_map_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
 			 enum dma_data_direction dir, unsigned long attrs);
 void ipu6_dma_unmap_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
 			    enum dma_data_direction dir, unsigned long attrs);
-int ipu6_dma_get_sgtable(struct ipu6_bus_device *sys, struct sg_table *sgt,
-			 void *cpu_addr, dma_addr_t handle, size_t size,
-			 unsigned long attrs);
 #endif /* IPU6_DMA_H */