Re: [PATCH v3 02/25] drm: core: fix common struct sg_table related issues

From: Christoph Hellwig
Date: Tue May 05 2020 - 07:09:55 EST


On Tue, May 05, 2020 at 12:51:58PM +0200, Marek Szyprowski wrote:
> Hi Christoph,
>
> On 05.05.2020 12:15, Christoph Hellwig wrote:
> >> - for_each_sg_page(st->sgl, &sg_iter, st->nents, 0)
> >> + for_each_sg_page(st->sgl, &sg_iter, st->orig_nents, 0)
> > Would it make sense to also add a for_each_sgtable_page helper that
> > hides the use of orig_nents? To be used like:
> >
> > for_each_sgtable_page(st, &sg_iter, 0) {
>
> We would need two helpers:
>
> for_each_sgtable_cpu_page() and for_each_sgtable_dma_page().
>
> I considered them, but then I found that there are already
> for_each_sg_page(), for_each_sg_dma_page() and various special iterators
> like sg_page_iter, sg_dma_page_iter and sg_mapping_iter. Too bad that
> they are almost not used, at least in the DRM subsystem. I wonder if it
> make sense to apply them or simply provide the two above mentioned
> wrappers?

None of the helpers helps with passing the right parameters from the
sg_table. So in doube we'd need wrappers for all of the above, or
none..