История изменений
Исправление czan, (текущая версия) :
Путём долгого ковыряния выяснилось, что затык происходит в каких-то Syncpoint-ах. Что это и для чего нужно — не знаю. Если логически рассуждать — то это нужно для какойто синхронизации? В функции nvhost_syncpt_is_expired
происходит ожидание когда текущее значение переменной current_val
не станет равным future_val
. В заводской плате-ките это дело отрабатывает так: исходно есть
# nvhost_syncpt.c : nvhost_syncpt_is_expired : current_val = 4, future_val = 5, has_future_val = false
Далее как-то вызывается nvhost_syncpt_update_min
из nvhost_syncpt.c
и значение current_val
становится равным пяти и процесс идёт дальше. В случае с разрабатываемой платой nvhost_syncpt_update_min
не вызывается и всё дело завершается с ошибкой по таймауту.
Удалось выяснить, что nvhost_syncpt_update_min
вызывается из nvhost_syncpt_thresh_fn
.
Исправление czan, :
Путём долгого ковыряния выяснилось, что затык происходит в каких-то Syncpoint-ах. Что это и для чего нужно — не знаю. Если логически рассуждать — то это нужно для какойто синхронизации? В функции nvhost_syncpt_is_expired
происходит ожидание когда текущее значение переменной current_val
не станет равным future_val
. В заводской плате-ките это дело отрабатывает так: исходно есть
# nvhost_syncpt.c : nvhost_syncpt_is_expired : current_val = 4, future_val = 5, has_future_val = false
Далее как-то вызывается nvhost_syncpt_update_min
из nvhost_syncpt.c
и значение current_val
становится равным пяти и процесс идёт дальше. В случае с разрабатываемой платой nvhost_syncpt_update_min
не вызывается и всё дело завершается с ошибкой по таймауту.
Как это дело сейчас победить — пока не знаю.
Исходная версия czan, :
Путём долгого ковыряния выяснилось, что затык происходит в каких-то Syncpoint-ах. Что это и для чего нужно — не знаю. Если логически рассуждать — то это нужно для какойто синхронизации? В функции nvhost_syncpt_is_expired
происходит ожидание когда текущее значение переменной current_val
не станет равным future_val
. В заводской плате-ките это дело отрабатывает так: исходно есть
# nvhost_syncpt.c : nvhost_syncpt_is_expired : current_val = 4, future_val = 5, has_future_val = false
Далее как-то вызывается nvhost_syncpt_update_min
из nvhost_syncpt.c
и значение current_val
становится равным пяти и процесс идёт дальше. В случае с разрабатываемой платой nvhost_syncpt_update_min
не вызывается и всё дело завершается с ошибкой по таймауту.