[PATCH v2 10/17] drm/i915/vm_bind: Abstract out common execbuf functions
Niranjana Vishwanathapura
niranjana.vishwanathapura at intel.com
Mon Oct 3 21:06:18 UTC 2022
On Mon, Oct 03, 2022 at 05:53:37PM +0200, Andi Shyti wrote:
>Hi Niranjana,
>
>[...]
>
>> + for_each_child(ce, child) {
>> + err = intel_context_pin_ww(child, ww);
>> + GEM_BUG_ON(err); /* perma-pinned should incr a counter */
>> + }
>> +
>> + for_each_child(ce, child) {
>> + err = eb_pin_timeline(child, throttle, nonblock);
>> + if (err)
>> + goto unwind;
>> + ++i;
>> + }
>
>any reason for having two separate for_each_child here?
>
This part is ported as is from i915_gem_execbuffer.c.
Probably the author found it easy to unwind in case of error.
Regards,
Niranjana
>Andi
>
>> + err = eb_pin_timeline(ce, throttle, nonblock);
>> + if (err)
>> + goto unwind;
>> +
>> + return 0;
>> +
>> +unwind:
>> + for_each_child(ce, child) {
>> + if (j++ < i) {
>> + mutex_lock(&child->timeline->mutex);
>> + intel_context_exit(child);
>> + mutex_unlock(&child->timeline->mutex);
>> + }
>> + }
>> + for_each_child(ce, child)
>> + intel_context_unpin(child);
>
>[...]
More information about the dri-devel
mailing list