Hi Sascha, On Monday, 8 November 2021, 11:34:26 CET, Sascha Hauer wrote: > Hi Christian, > > On Fri, Nov 05, 2021 at 01:40:52PM +0100, Christian Eggers wrote: > > Disclaimer: I stumbled over this on barebox 2020.01. > > I haven't tried to reproduce this on the current version. > > Please update to a recent barebox. The fastboot commands now run in a > workqueue which itself only runs when we are outside any critical pathes > in barebox. thanks for the hint. I just upgraded to 2021.10. > Particularly fastboot commands will only execute when you called > command_slice_release() beforehand. You'll have to call > command_slice_acquire() before entering any critical pathes like probing > for USB devices. I guess that more or less all commands can be critical because is_timeout() is called from many places. As parallelism for fastboot is not mandatory, I implemented it the following way: struct usbgadget_funcs const fastboot_funcs= { .flags = USBGADGET_FASTBOOT, .fastboot_opts = "/dev/null(null)", }; /* * Register fastboot gadget (will run in background) */ ret = usbgadget_register(&fastboot_funcs); if (ret) goto error_usb_gadget; /* fastboot runs within a work queue. Allow fastboot execution within * the next 5 seconds... */ command_slice_release(); mdelay(5000); command_slice_acquire(); BTW: I use a modified/stripped down version of the Android fastboot for booting Barebox FIT images. Is there any interest integrating this into barebox/scripts/? - more or less stand alone (about 15 files at all) - currently USB-only - Apache-2.0 / BSD-2-clause - C++ - CMake (only 60 lines, so it can be ported to Kbuild) regards Christian _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox