[riscv-devel] Проблема с выключением Unmatched
Ivan A. Melnikov
iv at altlinux.org
Tue Oct 19 16:17:20 MSK 2021
On Tue, Oct 19, 2021 at 12:21:08PM +0300, Дмитрий Терехин wrote:
> Добрый день, коллеги!
>
> Имеется проблема с ядром 5.14.12 на плате Unmatched - при подаче команды
> poweroff питание на выключается.
>
> Приложил такой патч для исправления проблемы:
> http://git.altlinux.org/people/jqt4/packages/?p=kernel-image.git;a=commitdiff;h=3de78e80c1a472ae940b225c1d2c3caa09f68adf
> Нужные конфиги включены:
> CONFIG_POWER_RESET=y
> CONFIG_POWER_RESET_GPIO=y
> CONFIG_POWER_RESET_GPIO_RESTART=y
>
> Не помогло.
>
> В документации есть описание, похожее на сделанное в патче:
> http://git.altlinux.org/people/jqt4/packages/?p=kernel-image.git;a=blob;f=Documentation/devicetree/bindings/power/reset/gpio-poweroff.txt;h=3e56c1b34a4c9cc9cb4da6dfc2cb24e0c0037499;hb=3de78e80c1a472ae940b225c1d2c3caa09f68adf#l37
>
> В лог выдаётся сообщение:
> dmesg | grep poweroff
> [ 3.418791] poweroff-gpio gpio-poweroff: gpio_poweroff_probe:
> pm_power_off function already registered
> [ 3.427377] poweroff-gpio: probe of gpio-poweroff failed with error -16
>
> Насколько я понял из кода, это значит, что функция gpio_poweroff_probe
> http://git.altlinux.org/people/jqt4/packages/?p=kernel-image.git;a=blob;f=drivers/power/reset/gpio-poweroff.c;h=1c5af2fef1423af68dbbbd1880b8aab6480f2957;hb=3de78e80c1a472ae940b225c1d2c3caa09f68adf#l49
> завершилась с ошибкой и присвоение
> http://git.altlinux.org/people/jqt4/packages/?p=kernel-image.git;a=blob;f=drivers/power/reset/gpio-poweroff.c;h=1c5af2fef1423af68dbbbd1880b8aab6480f2957;hb=3de78e80c1a472ae940b225c1d2c3caa09f68adf#l77
> не выполнено.
>
> Однако, тестирование данной проблемы в системе, поставляемой с платой,
> показало, что сообщение об ошибке также выдаётся:
> dmesg | grep poweroff
> [ 1.875417] poweroff-gpio gpio-poweroff: gpio_poweroff_probe:
> pm_power_off function already registered
> [ 1.875431] poweroff-gpio: probe of gpio-poweroff failed with error -16
> Однако, после подачи команды poweroff плата выключается, несмотря на
> ошибку.
>
> Я предполагаю, что выключение платы происходит не с помощью функции
> gpio_poweroff_do_poweroff,
> как как-то иначе, только мне непонятно как.
>
> Подскажите, что можно сделать дальше, как исследовать данную проблему.
Действительно, интересно, чему же на самом деле будет
равна pm_power_off. Я бы предположил, что это
sbi_power_off из arch/riscv/kernel/sbi.c.
OpenSBI 0.9 сам по себе не умеет выключать Unmatched.
Поддержка выключения в каком-то виде есть только
в master и в 0.9-alt2 в репозитории arei at . В апстриме,
кстати, кажется, немного другие изменения для этого,
но суть та же.
В обоих случаях OpenSBI ориентируютется на devicetree,
который берёт от u-boot'а. Там должен быть node
описывающий gpio-poweroff.
--
wbr,
iv m.
More information about the riscv-devel
mailing list