[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