On Fri, 22 Oct 2021 at 05:13, Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > On Thu, Oct 21, 2021 at 4:21 AM Amit Pundir <amit.pundir@xxxxxxxxxx> wrote: > > > > Hi Saravana, > > > > This patch broke v5.15-rc6 on RB5 (sm8250 | qcom/qrb5165-rb5.dts). > > I can't boot past this point https://www.irccloud.com/pastebin/raw/Nv6ZwHmW. > > Amit top posting? How did that happen? :) > > The fact you are seeing this issue is super strange though. The driver > literally does nothing other than allowing some sync_state() callbacks > to happen. I also grepped for the occurence of "simple-bus" in > arch/arm64/boot/dts/qcom/ and the only instance for 8250 is for the > soc node. > > The only thing I can think of is that without my patch some > sync_state() callbacks weren't getting called and maybe it was masking > some other issue. > > Can you try to boot with this log (see log patch below) and see if the > device hangs right after a sync_state() callback? Also, looking at the > different sync_state() implementations in upstream, I'm guessing one > of the devices isn't voting for interconnect bandwidth when it should > have. > > Another thing you could do is boot without the simple-bus changes and > then look for all instances of "state_synced" in /sys/devices and then > see if any of them has the value "0" after boot up is complete. Turned out RB5 is not even reaching up to device_links_flush_sync_list() and seem to be stuck somewhere in device_links_driver_bound(). So I added more print logs to narrow down to any specific lock state but those additional prints seem to have added enough delay to unblock that particular driver (Serial: 8250/16550 driver if I understood the logs correctly) and I eventually booted to UI. On the booted RB5 *with* and *without* the simple-bus changes, I see 4 instances of "0" state_synced nodes at: /sys/devices/platform/soc@0/9100000.interconnect/state_synced /sys/devices/platform/soc@0/1500000.interconnect/state_synced /sys/devices/platform/soc@0/1740000.interconnect/state_synced /sys/devices/platform/soc@0/163d000.interconnect/state_synced Regards, Amit Pundir > > -Saravana > > -- a/drivers/base/core.c > +++ b/drivers/base/core.c > @@ -1099,6 +1099,7 @@ static void device_links_flush_sync_list(struct > list_head *list, > if (dev != dont_lock_dev) > device_lock(dev); > > + dev_info(dev, "Calling sync_state()\n"); > if (dev->bus->sync_state) > dev->bus->sync_state(dev); > else if (dev->driver && dev->driver->sync_state)