External email: Use caution opening links or attachments
06.04.2020 18:35, Sowjanya Komatineni ÐÐÑÐÑ:
...
It's wrong to touch sync point while hardware is active and it's activeupstream host1x driver don't have API to reset or to equalize max value+ /* wait for syncpt counter to reach frame start event threshold */Why incrementing is done while hardware is still active?
+ err = host1x_syncpt_wait(chan->frame_start_sp, thresh,
+ TEGRA_VI_SYNCPT_WAIT_TIMEOUT, &value);
+ if (err) {
+ dev_err(&chan->video.dev,
+ "frame start syncpt timeout: %d\n", err);
+ /* increment syncpoint counter for timedout events */
+ host1x_syncpt_incr(chan->frame_start_sp);
The sync point's state needs to be completely reset after resetting
hardware. But I don't think that the current upstream host1x driver
supports doing that, it's one of the known-long-standing problems of the
host1x driver.
At least the sp->max_val incrementing should be done based on the actual
syncpoint value and this should be done after resetting hardware.
with min/load value.
So to synchronize missed event, incrementing HW syncpt counter.
This should not impact as we increment this in case of missed events only.
until being reset.
You should re-check the timeout after hw resetting and manually put the
syncpoint counter back into sync only if needed.