Skip to content

Commit 0e51487

Browse files
committed
drm/i915: Implement for_each_sgt_daddr_next
Implement a way to iterate over sgt with pre-initialized sgt_iter state. Signed-off-by: Nirmoy Das <nirmoy.das@intel.com> Reviewed-by: Oak Zeng <oak.zeng@intel.com> Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230926083742.14740-4-nirmoy.das@intel.com
1 parent b352749 commit 0e51487

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

drivers/gpu/drm/i915/gt/intel_gtt.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,9 @@ struct intel_gt;
171171
#define for_each_sgt_daddr(__dp, __iter, __sgt) \
172172
__for_each_sgt_daddr(__dp, __iter, __sgt, I915_GTT_PAGE_SIZE)
173173

174+
#define for_each_sgt_daddr_next(__dp, __iter) \
175+
__for_each_daddr_next(__dp, __iter, I915_GTT_PAGE_SIZE)
176+
174177
struct i915_page_table {
175178
struct drm_i915_gem_object *base;
176179
union {

drivers/gpu/drm/i915/i915_scatterlist.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,16 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg)
9191
((__dp) = (__iter).dma + (__iter).curr), (__iter).sgp; \
9292
(((__iter).curr += (__step)) >= (__iter).max) ? \
9393
(__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0 : 0)
94+
/**
95+
* __for_each_daddr_next - iterates over the device addresses with pre-initialized iterator.
96+
* @__dp: Device address (output)
97+
* @__iter: 'struct sgt_iter' (iterator state, external)
98+
* @__step: step size
99+
*/
100+
#define __for_each_daddr_next(__dp, __iter, __step) \
101+
for (; ((__dp) = (__iter).dma + (__iter).curr), (__iter).sgp; \
102+
(((__iter).curr += (__step)) >= (__iter).max) ? \
103+
(__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0 : 0)
94104

95105
/**
96106
* for_each_sgt_page - iterate over the pages of the given sg_table

0 commit comments

Comments
 (0)