[PATCH V2 10/23] drm/etnaviv: add 'sync point' support

Lucas Stach l.stach at pengutronix.de
Tue Aug 22 10:17:47 UTC 2017


Am Dienstag, den 22.08.2017, 11:58 +0200 schrieb Christian Gmeiner:
[...]
> >> @@ -1444,6 +1463,11 @@ static irqreturn_t irq_handler(int irq, void *data)
> >>
> >>                       dev_dbg(gpu->dev, "event %u\n", event);
> >>
> >> +                     if (gpu->event[event].sync_point) {
> >> +                             gpu->pmrs_event = event;
> >> +                             etnaviv_queue_work(gpu->drm, &gpu->pmrs_work);
> >
> > If the handler is delayed we might handle multiple events per
> > invocation, in which case the events might not be in order. E.g. the FE
> > stop event might be event 30, while the FE start event might be event 0.
> > In that case you would execute the FE start before the FE stop has been
> > queued -> not good. You need to make sure that your PMRS events are
> > processed in the correct order.
> >
> 
> I thought about this problem for some time and I do not fully get your
> point - sorry.
> 
> First there is no FE start event. I am using 'sync' points for pre and
> post pmrs points.

You are right. I was just about to type up a lengthy explanation of what
I meant, but while thinking it through I realized that my assumptions
where invalid. As both the PRE and POST events stop the FE, the GPU can
never get ahead of the event workers.

Please scratch my earlier comments.

Regards,
Lucas



More information about the dri-devel mailing list