Hi, On 04.12.24 17:29, Konstantin Kletschke wrote: > On Wed, Dec 04, 2024 at 07:14:17AM +0100, Ahmad Fatoum wrote: > >> Very interesting. You can now try to move the 4 putc_ll`s to a later point in the >> startup code and then see which line of barebox code needed the delay in front of >> it. > I _think_ this is the critical path, I have more putc_ll() inserted, but > they are not important. > If by any chance it is better readable for anyone I could provide a > complete diff, of course. > > So, when I power up, I get: > > 2>6ABCDEF%G-%|!_H-%|!_I-%|!_%%%%JKLMNOPQZSwitch to console [cs0] > > before the banner. > > When I reset, S1, blabla, I get: > >> 6ABCDEF%G-%| > > So I assume it dies at > > BUG_ON(!IS_ALIGNED(virt_addr, PAGE_SIZE)); You can print hex numbers with puthex_ll(), although by now you are already relocated, so you can add pbl_set_putc((void (*)(void *, int))debug_ll_ns16550_putc, uart0); after omap_debug_ll_init(), enable CONFIG_DEBUG_PBL and then you can use normal printf and also see the panic message if the BUG() indeed triggers. > So each warm restart method gives me a proper reboot. > With an additional putc_ll() in lowlevel.c in beaglebone_sram_init(). > The later debug putc_ll() have no influence on starting not starting. Getting stuck inside the BUG_ON doesn't make much sense. It may be interesting to find out what the value of virt_addr is. I suspect the RAM controller itself may be acting funky after a warm reboot and letting some time go by fixes that :/ Cheers, Ahmad > > Kind regards > Konsti > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |