Am 26.04.25 um 02:07 schrieb Michael Brown:
I'm unable to reproduce your problem, sorry.  But since you have a bisection result: try starting from commit b65f67d44 (i.e. the previous commit, which you say works for you), and add in one change at a time from commit ef0384918.  For example, start by adding the first changed line in bzimage.c:

         /* Calculate lowest usable address */
-       bottom = userptr_add ( bzimg->pm_kernel, bzimg->pm_sz );
+       bottom = ( bzimg->pm_kernel + bzimg->pm_sz );

Test after each changed line, and see which changed line introduces your issue.

Thanks,

Michael


Thanks for your investigation and support, Michael!

This is the change that causes the boot problem on my Debian nfsroot system:

src/arch/x86/image/initrd.c
        /* Copy any remaining initrds (e.g. embedded images) to the region */
        for_each_image ( initrd ) {
-               if ( userptr_diff ( initrd->data, top ) >= 0 ) {
+               if ( initrd->data >= top ) {
                        len = ( ( initrd->len + INITRD_ALIGN - 1 ) &
                                ~( INITRD_ALIGN - 1 ) );


And this is the change that makes wimboot 2.8.0 fail to boot my Windows PE 10 x86_64:

src/arch/x86/image/initrd.c
                /* Find the highest image not yet in its final position */
                highest = NULL;
                for_each_image ( initrd ) {
-                       if ( ( userptr_diff ( initrd->data, current ) < 0 ) &&
+                       if ( ( initrd->data < current ) &&
                             ( ( highest == NULL ) ||

I have attached a few screenshots from qemu. The output of imgstat seems to be the same with and without the changes to initrd.c.

Thanks and best regards,
Sven
_______________________________________________
ipxe-devel mailing list
ipxe-devel@lists.ipxe.org
https://lists.ipxe.org/mailman/listinfo/ipxe-devel

Reply via email to