История изменений
Исправление 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 не вызывается и всё дело завершается с ошибкой по таймауту.