Xilinx / meta-xilinx-tools

Yocto Project layer enables AMD Xilinx tools related metadata for MicroBlaze, Zynq, ZynqMP and Versal devices.
MIT License
53 stars 51 forks source link

Change to bootbin generation causes circular dependency with initramfs #2

Closed dawithers closed 6 years ago

dawithers commented 6 years ago

Commit: f9993c8b07c400954eb77e46c4a572e1ad7aef73

This change appears to create a circular dependency loop when using an initramfs. Reverting line 83 solves the issue. I've read the comment on the commit and I don't understand how this wouldn't be expected. If building the rootfs as initramfs into boot.bin, the do_xilinx_bootbin must occur after do_image_complete. Setting it to before do_image will, of course, cause a dependency loop.

mharth commented 6 years ago

boot.bin does not include rootfs, it includes fsbl,pmufw,bitstream,u-boot.elf. I am failing to understand how will initiramfs cause the circular depedency. Why is rootfs in boot.bin? whats the use case for this?

dawithers commented 6 years ago

We have added the Image+rootfs to the boot.bin because for our use, it must boot with the same rootfs on every boot. Basically the way a livecd works. We don't have or want writable storage during runtime. Everything must run from RAM. So the boot.bin contains everything including the Image+rootfs and all are stored in QSPI. We were using rel-v2017.2 previously with no problem. I understand that the typical use case is to have the image and rootfs on some non-volatile memory and therefore it isn't typically built into the boot.bin, but the mechanisms are there for bundling the Image with an initramfs even for use on an SD card, so why not in QSPI as well?

mharth commented 6 years ago

See the patch on mailing list, the bbclass is converted to a bb file which might help your cause

dawithers commented 6 years ago

Thanks, do you have a link to the thread? I'm having trouble finding it.

darko31 commented 6 years ago

Hello, I think I've found the patch mharth is talking about

https://lists.yoctoproject.org/pipermail/meta-xilinx/2018-January/003545.html

And I've applied it, but I'm still getting dependency loops and errors with PREFERRED_PROVIDER_virtual/boot-bin set to u-boot-xlnx, not xilinx-bootbin When I change to xilinx-bootbin, dependency loops start to appear.

Are there any news on this or some other patches for this issue?

mharth commented 6 years ago

Hi, in the new proposed patch, we dont have any new tasks like do_xilinx-bootbin. All you need is a bbappend to the new recipe to control do_compile when it should be executed. Since you want to run the do_compile after the image+rootfs (initramfs) creation, you can add a dependency like do_compile[depends] += "virtual/kernel:do_deploy"

Every boot-case is different, the dependency for each requirement should be handled in bbappends rather than have tasks limited not to run in parallel. Hope this helps

mharth commented 6 years ago

https://github.com/Xilinx/meta-xilinx-tools/blob/rel-v2018.1/recipes-bsp/bootbin/xilinx-bootbin_1.0.bb this will be moved to master soon