No matter how chain loading happened, the usb gadget fail as result.
fail cases:
abl->recovery->kexec->recovery
abl->uboot->recovery
abl->uboot->AOSP
success case:
abl->uboot->recovery(g_serial)
All case are failure. So most likely need to workaround in kernel usb stack.
(EDIT: some success case is found)