[RFC 2/2] Revert "dm: core: device: switch off power domain after device removal"

Oliver Graute oliver.graute at gmail.com
Fri Feb 14 11:30:44 CET 2020


On 14/02/20, Lokesh Vutla wrote:
> 
> 
> On 14/02/20 2:48 PM, Oliver Graute wrote:
> > On 14/02/20, Lokesh Vutla wrote:
> >>
> >>
> >> On 13/02/20 10:42 PM, Neil Armstrong wrote:
> >>> Hi,
> >>>
> >>> On 03/02/2020 14:59, Oliver Graute wrote:
> >>>> The conga-imx8 board isn't booting without this revert. Can someone tell me
> >>>> what I need to Do so that this revert is not necessary?
> >>
> >> Can you give more details on where the failure is happening?(logs would really
> >> help).
> > 
> > without that revert patch u-boot is stuck at "Starting kernel ..."
> > Is there a way to get more details here? currently I don't know howto
> > debug that power-domain stuff deeper.
> 
> Can you enable debug prints in:
> - drivers/power/domain/power-domain-uclass.c
> - drivers/power/domain/imx8-power-domain*.c
> 
> and provide the logs? this will help which power-domain is causing the issue.

thx a lot that helped. So it looks like the board is in some endless
loop with lsio_power_domain.

here the log:

Loading: #####
         2 MiB/s
done
Bytes transferred = 21224 (52e8 hex)
## Flattened Device Tree blob at 83000000
   Booting using the fdt blob at 0x83000000
   Using Device Tree in place at 0000000083000000, end 00000000830082e7

Starting kernel ...

power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdae0058)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdae0058)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdae0058)
power_domain_off() power_domain_off(power_domain=00000000fdae0058)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdae0058)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadff48)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadff48)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadff48)
power_domain_off() power_domain_off(power_domain=00000000fdadff48)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadff48)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadfe38)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadfe38)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadfe38)
power_domain_off() power_domain_off(power_domain=00000000fdadfe38)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadfe38)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadfd28)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadfd28)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadfd28)
power_domain_off() power_domain_off(power_domain=00000000fdadfd28)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadfd28)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadfc18)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadfc18)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadfc18)
power_domain_off() power_domain_off(power_domain=00000000fdadfc18)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadfc18)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadfb08)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadfb08)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadfb08)
power_domain_off() power_domain_off(power_domain=00000000fdadfb08)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadfb08)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf9f8)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadf9f8)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadf9f8)
power_domain_off() power_domain_off(power_domain=00000000fdadf9f8)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadf9f8)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf8e8)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadf8e8)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadf8e8)
power_domain_off() power_domain_off(power_domain=00000000fdadf8e8)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadf8e8)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf7d8)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadf7d8)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadf7d8)
power_domain_off() power_domain_off(power_domain=00000000fdadf7d8)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadf7d8)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf6c8)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadf6c8)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadf6c8)
power_domain_off() power_domain_off(power_domain=00000000fdadf6c8)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadf6c8)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf5b8)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadf5b8)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadf5b8)
power_domain_off() power_domain_off(power_domain=00000000fdadf5b8)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadf5b8)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf4a8)
imx8_power_domain_of_xlate() imx8_power_domain_of_xlate(power_domain=00000000fdadf4a8)
imx8_power_domain_request() imx8_power_domain_request(power_domain=00000000fdadf4a8)
power_domain_off() power_domain_off(power_domain=00000000fdadf4a8)
imx8_power_domain_off() imx8_power_domain_off(power_domain=00000000fdadf4a8)
imx8_power_domain_off_node() imx8_power_domain_off_node, lsio_power_domain, state_on 1
imx8_power_domain_off() Can't power off the node of dev lsio_power_domain, ret = -1
power_domain_get_by_index() power_domain_get_by_index(dev=00000000fdae88f0, power_domain=00000000fdadf398)

---snipped off--

Best Regards,

Oliver


More information about the U-Boot mailing list