Signed-off-by: Dave Gordon <david.s.gordon@xxxxxxxxx> Cc: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- drivers/gpu/drm/i915/i915_drv.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 01cde0f..53ff499 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h @@ -2287,6 +2287,25 @@ __sgt_iter(struct scatterlist *sgl, bool dma) } /** + * __sg_next - return the next scatterlist entry in a list + * @sg: The current sg entry + * + * Description: + * If the entry is the last, return NULL; otherwise, step to the next + * element in the array (@sg@+1). If that's a chain pointer, follow it; + * otherwise just return the pointer to the current element. + **/ +static inline struct scatterlist *__sg_next(struct scatterlist *sg) +{ +#ifdef CONFIG_DEBUG_SG + BUG_ON(sg->sg_magic != SG_MAGIC); +#endif + return sg_is_last(sg) ? NULL : + likely(!sg_is_chain(++sg)) ? sg : + sg_chain_ptr(sg); +} + +/** * for_each_sgt_dma - iterate over the DMA addresses of the given sg_table * @__dmap: DMA address (output) * @__iter: 'struct sgt_iter' (iterator state, internal) @@ -2296,7 +2315,7 @@ __sgt_iter(struct scatterlist *sgl, bool dma) for ((__iter) = __sgt_iter((__sgt)->sgl, true); \ ((__dmap) = (__iter).ix.dma + (__iter).curr); \ (((__iter).curr += PAGE_SIZE) < (__iter).max) || \ - ((__iter) = __sgt_iter(sg_next((__iter).sgp), true), 0)) + ((__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0)) /** * for_each_sgt_page - iterate over the pages of the given sg_table @@ -2309,7 +2328,7 @@ __sgt_iter(struct scatterlist *sgl, bool dma) ((__pp) = (__iter).ix.pfn == 0 ? NULL : \ pfn_to_page((__iter).ix.pfn + ((__iter).curr >> PAGE_SHIFT)));\ (((__iter).curr += PAGE_SIZE) < (__iter).max) || \ - ((__iter) = __sgt_iter(sg_next((__iter).sgp), false), 0)) + ((__iter) = __sgt_iter(__sg_next((__iter).sgp), false), 0)) /** * Request queue structure. -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx