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
This commit is contained in:
parent
b352749936
commit
0e51487848
@ -171,6 +171,9 @@ struct intel_gt;
|
||||
#define for_each_sgt_daddr(__dp, __iter, __sgt) \
|
||||
__for_each_sgt_daddr(__dp, __iter, __sgt, I915_GTT_PAGE_SIZE)
|
||||
|
||||
#define for_each_sgt_daddr_next(__dp, __iter) \
|
||||
__for_each_daddr_next(__dp, __iter, I915_GTT_PAGE_SIZE)
|
||||
|
||||
struct i915_page_table {
|
||||
struct drm_i915_gem_object *base;
|
||||
union {
|
||||
|
@ -91,6 +91,16 @@ static inline struct scatterlist *__sg_next(struct scatterlist *sg)
|
||||
((__dp) = (__iter).dma + (__iter).curr), (__iter).sgp; \
|
||||
(((__iter).curr += (__step)) >= (__iter).max) ? \
|
||||
(__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0 : 0)
|
||||
/**
|
||||
* __for_each_daddr_next - iterates over the device addresses with pre-initialized iterator.
|
||||
* @__dp: Device address (output)
|
||||
* @__iter: 'struct sgt_iter' (iterator state, external)
|
||||
* @__step: step size
|
||||
*/
|
||||
#define __for_each_daddr_next(__dp, __iter, __step) \
|
||||
for (; ((__dp) = (__iter).dma + (__iter).curr), (__iter).sgp; \
|
||||
(((__iter).curr += (__step)) >= (__iter).max) ? \
|
||||
(__iter) = __sgt_iter(__sg_next((__iter).sgp), true), 0 : 0)
|
||||
|
||||
/**
|
||||
* for_each_sgt_page - iterate over the pages of the given sg_table
|
||||
|
Loading…
x
Reference in New Issue
Block a user