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@xxxxxxxxxxxxxxx> > >>> --- > >>> 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. -- Regards, Sakari Ailus