static base_jd_event_code kbase_fence_trigger(kbase_jd_atom *katom, int result) { struct sync_pt *pt; struct sync_timeline *timeline; if (!list_is_singular(&katom->fence->pt_list_head)) { /* Not exactly one item in the list - so it didn't (directly) come from us */ return BASE_JD_EVENT_JOB_CANCELLED; } pt = list_first_entry(&katom->fence->pt_list_head, struct sync_pt, pt_list); timeline = pt->parent; if (!kbase_sync_timeline_is_ours(timeline)) { /* Fence has a sync_pt which isn't ours! */ return BASE_JD_EVENT_JOB_CANCELLED; } kbase_sync_signal_pt(pt, result); sync_timeline_signal(timeline); return (result < 0) ? BASE_JD_EVENT_JOB_CANCELLED : BASE_JD_EVENT_DONE; }
void kgsl_sync_timeline_signal(struct sync_timeline *timeline, unsigned int timestamp) { struct kgsl_sync_timeline *ktimeline = (struct kgsl_sync_timeline *) timeline; if (timestamp_cmp(timestamp, ktimeline->last_timestamp) > 0) ktimeline->last_timestamp = timestamp; sync_timeline_signal(timeline); }
static void kgsl_sync_timeline_signal(struct sync_timeline *timeline, unsigned int timestamp) { struct kgsl_sync_timeline *ktimeline = (struct kgsl_sync_timeline *) timeline; spin_lock(&ktimeline->lock); if (timestamp_cmp(timestamp, ktimeline->last_timestamp) > 0) ktimeline->last_timestamp = timestamp; spin_unlock(&ktimeline->lock); sync_timeline_signal(timeline); }
void i915_sync_timeline_signal(struct i915_sync_timeline *obj, u32 value, int own_pt) { /* Update the timeline to notify it that the monotonic seqno counter * has advanced. */ if (obj) { obj->pvt.value = value; /* Only process the timeline if we own the sync point */ if (own_pt) sync_timeline_signal(&obj->obj); } }
void sw_sync_timeline_inc(struct sw_sync_timeline *obj, u32 inc) { obj->value += inc; sync_timeline_signal(&obj->obj); }