LINUX.ORG.RU

История изменений

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