On Fri, Nov 19, 2021 at 10:52:27PM +0100, Heinrich Schuchardt wrote: > > > Am 19. November 2021 22:33:04 MEZ schrieb Tom Rini : > >If we look at the path that bootm/booti take when preparing to boot the > >OS, we see that as part of (or prior to calling do_bootm_states, > >explicitly) the process, bootm_disable_interrupts() is called prior to > >announce_and_cleanup() which is where udc_disconnect() / > >board_quiesce_devices() / dm_remove_devices_flags() are called from. In > >the EFI path, these are called afterwards. In efi_exit_boot_services() > >however we have been calling bootm_disable_interrupts() after the above > >functions, as part of ensuring that we disable interrupts as required > >by the spec. However, bootm_disable_interrupts() is also where we go > >and call usb_stop(). While this has been fine before, on the TI J721E > >platform this leads us to an exception. This exception seems likely to > >be the case that we're trying to stop devices that we have already > >disabled clocks for. The most direct way to handle this particular > > This patch may hide an error on your board but obviously does not address the real problem. > > If dependencies in the shut down sequence should exist, we need to consider them in the driver model. > > What is your plan to analyze the problem? I'm not sure there is a different problem to solve here. It's unsafe to call the "shut everything down" function, which is what usb_stop() is, after having shut everything down. We may be able to stop calling usb_stop() as any sort of shutdown should already have happened via driver model, which is what we see now. -- Tom