* [U-Boot] BUG: bootz/bootm command mandates a fdt blob
@ 2014-11-20 15:16 Suriyan Ramasami
2014-11-20 16:04 ` Hans de Goede
0 siblings, 1 reply; 5+ messages in thread
From: Suriyan Ramasami @ 2014-11-20 15:16 UTC (permalink / raw)
To: u-boot
Hello Simon,
This mail is addressed to you as the FDT support was added by
you. I am not sure who else to address it to.
I find that if CONFIG_OF_LIBFDT is defined then the user is
forced to provide a FDT blob. In most of the cases it makes sense.
However, this removes the ability to boot older linux (non FDT).
For example, I was looking at the Hardkernel Odroid kernels for
the U2/U3, and they are 3.8 based. Of course newer kernels 3.17 work.
For users to use the same boot loader for 3.8 and for 3.17, they
cannot use the mainline uboot.
I was wondering if teh third argument to bootz/bootm etc could
also take the route of initrd (optional if - is specified) could be
implemented.
The fix seems to be trivial (or so I think), in file
common/image-fdt.c, but wanted to know your comments on this. Also the
command help (for bootz etc) states that if the 3rd argument is not
passed, then the bd_info struct is passed, and I do not see it being
passed in the code anywhere. In the absence of the third parameter, it
just gives a "No fdt found" message.
diff --git a/common/image-fdt.c b/common/image-fdt.c
index a39ae1b..e685700 100644
--- a/common/image-fdt.c
+++ b/common/image-fdt.c
@@ -243,7 +243,10 @@ int boot_get_fdt(int flag, int argc, char * const argv[], u
if (argc > 2)
select = argv[2];
- if (select || genimg_has_config(images)) {
+ if (select && strcmp(select, "-") == 0) {
+ debug("## Skipping fdt\n");
+ return 0;
+ } else if (select || genimg_has_config(images)) {
#if defined(CONFIG_FIT)
if (select) {
/*
Regards
- Suriyan
^ permalink raw reply related [flat|nested] 5+ messages in thread* [U-Boot] BUG: bootz/bootm command mandates a fdt blob 2014-11-20 15:16 [U-Boot] BUG: bootz/bootm command mandates a fdt blob Suriyan Ramasami @ 2014-11-20 16:04 ` Hans de Goede 2014-11-20 16:38 ` Simon Glass 0 siblings, 1 reply; 5+ messages in thread From: Hans de Goede @ 2014-11-20 16:04 UTC (permalink / raw) To: u-boot Hi Suriyan, On 11/20/2014 04:16 PM, Suriyan Ramasami wrote: > Hello Simon, > This mail is addressed to you as the FDT support was added by > you. I am not sure who else to address it to. > > I find that if CONFIG_OF_LIBFDT is defined then the user is > forced to provide a FDT blob. In most of the cases it makes sense. > However, this removes the ability to boot older linux (non FDT). > For example, I was looking at the Hardkernel Odroid kernels for > the U2/U3, and they are 3.8 based. Of course newer kernels 3.17 work. > For users to use the same boot loader for 3.8 and for 3.17, they > cannot use the mainline uboot. I've hit the same problem myself recently, see the thread titled: "Booting non devicetree enabled kernels using u-boot build with CONFIG_OF_LIBFDT" > I was wondering if teh third argument to bootz/bootm etc could > also take the route of initrd (optional if - is specified) could be > implemented. > > The fix seems to be trivial (or so I think), in file > common/image-fdt.c, but wanted to know your comments on this. Also the > command help (for bootz etc) states that if the 3rd argument is not > passed, then the bd_info struct is passed, and I do not see it being > passed in the code anywhere. In the absence of the third parameter, it > just gives a "No fdt found" message. Thanks for working on a fix, as discussed in the earlier thread, requiring a third argument which is '-' will break old boot.scr files and the likes, so a better fix is to: 1) Always try to find an ftd (to keep things like appended ftd-s working) 2) If not found see if there is a third argument, if there is, treat this as a fatal error, abort the bootm (iow behave as before) 3) If there is not a third argument warn and continue as before. If you could respin your patch to do this, then that would be great. Regards, Hans > > diff --git a/common/image-fdt.c b/common/image-fdt.c > index a39ae1b..e685700 100644 > --- a/common/image-fdt.c > +++ b/common/image-fdt.c > @@ -243,7 +243,10 @@ int boot_get_fdt(int flag, int argc, char * const argv[], u > > if (argc > 2) > select = argv[2]; > - if (select || genimg_has_config(images)) { > + if (select && strcmp(select, "-") == 0) { > + debug("## Skipping fdt\n"); > + return 0; > + } else if (select || genimg_has_config(images)) { > #if defined(CONFIG_FIT) > if (select) { > /* > > Regards > - Suriyan > _______________________________________________ > U-Boot mailing list > U-Boot at lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] BUG: bootz/bootm command mandates a fdt blob 2014-11-20 16:04 ` Hans de Goede @ 2014-11-20 16:38 ` Simon Glass 2014-11-20 19:41 ` Suriyan Ramasami 0 siblings, 1 reply; 5+ messages in thread From: Simon Glass @ 2014-11-20 16:38 UTC (permalink / raw) To: u-boot Hi, On 20 November 2014 16:04, Hans de Goede <hdegoede@redhat.com> wrote: > Hi Suriyan, > > On 11/20/2014 04:16 PM, Suriyan Ramasami wrote: >> Hello Simon, >> This mail is addressed to you as the FDT support was added by >> you. I am not sure who else to address it to. Just to be clear, I didn't add FDT support, this predates my involvement in U-Boot. I added CONFIG_OF_CONTROL etc. though. Han's solution sounds good to me. >> >> I find that if CONFIG_OF_LIBFDT is defined then the user is >> forced to provide a FDT blob. In most of the cases it makes sense. >> However, this removes the ability to boot older linux (non FDT). >> For example, I was looking at the Hardkernel Odroid kernels for >> the U2/U3, and they are 3.8 based. Of course newer kernels 3.17 work. >> For users to use the same boot loader for 3.8 and for 3.17, they >> cannot use the mainline uboot. > > I've hit the same problem myself recently, see the thread titled: > > "Booting non devicetree enabled kernels using u-boot build with CONFIG_OF_LIBFDT" > >> I was wondering if teh third argument to bootz/bootm etc could >> also take the route of initrd (optional if - is specified) could be >> implemented. >> >> The fix seems to be trivial (or so I think), in file >> common/image-fdt.c, but wanted to know your comments on this. Also the >> command help (for bootz etc) states that if the 3rd argument is not >> passed, then the bd_info struct is passed, and I do not see it being >> passed in the code anywhere. In the absence of the third parameter, it >> just gives a "No fdt found" message. > > Thanks for working on a fix, as discussed in the earlier thread, requiring > a third argument which is '-' will break old boot.scr files and the likes, > so a better fix is to: > > 1) Always try to find an ftd (to keep things like appended ftd-s working) > 2) If not found see if there is a third argument, if there is, treat this > as a fatal error, abort the bootm (iow behave as before) > 3) If there is not a third argument warn and continue as before. > > If you could respin your patch to do this, then that would be great. > > Regards, > > Hans > > >> >> diff --git a/common/image-fdt.c b/common/image-fdt.c >> index a39ae1b..e685700 100644 >> --- a/common/image-fdt.c >> +++ b/common/image-fdt.c >> @@ -243,7 +243,10 @@ int boot_get_fdt(int flag, int argc, char * const argv[], u >> >> if (argc > 2) >> select = argv[2]; >> - if (select || genimg_has_config(images)) { >> + if (select && strcmp(select, "-") == 0) { >> + debug("## Skipping fdt\n"); >> + return 0; >> + } else if (select || genimg_has_config(images)) { >> #if defined(CONFIG_FIT) >> if (select) { >> /* >> >> Regards >> - Suriyan >> _______________________________________________ >> U-Boot mailing list >> U-Boot at lists.denx.de >> http://lists.denx.de/mailman/listinfo/u-boot >> Regards, Simon ^ permalink raw reply [flat|nested] 5+ messages in thread
* [U-Boot] BUG: bootz/bootm command mandates a fdt blob 2014-11-20 16:38 ` Simon Glass @ 2014-11-20 19:41 ` Suriyan Ramasami 2014-11-20 19:48 ` Hans de Goede 0 siblings, 1 reply; 5+ messages in thread From: Suriyan Ramasami @ 2014-11-20 19:41 UTC (permalink / raw) To: u-boot Hello Simon, On Nov 20, 2014 8:38 AM, "Simon Glass" <sjg@chromium.org> wrote: > > Hi, > > On 20 November 2014 16:04, Hans de Goede <hdegoede@redhat.com> wrote: > > Hi Suriyan, > > > > On 11/20/2014 04:16 PM, Suriyan Ramasami wrote: > >> Hello Simon, > >> This mail is addressed to you as the FDT support was added by > >> you. I am not sure who else to address it to. > > Just to be clear, I didn't add FDT support, this predates my > involvement in U-Boot. I added CONFIG_OF_CONTROL etc. though. Han's > solution sounds good to me. > Sorry about that. In no way was I accusing you :-) I stand corrected though. > >> > >> I find that if CONFIG_OF_LIBFDT is defined then the user is > >> forced to provide a FDT blob. In most of the cases it makes sense. > >> However, this removes the ability to boot older linux (non FDT). > >> For example, I was looking at the Hardkernel Odroid kernels for > >> the U2/U3, and they are 3.8 based. Of course newer kernels 3.17 work. > >> For users to use the same boot loader for 3.8 and for 3.17, they > >> cannot use the mainline uboot. > > > > I've hit the same problem myself recently, see the thread titled: > > > > "Booting non devicetree enabled kernels using u-boot build with CONFIG_OF_LIBFDT" > > > >> I was wondering if teh third argument to bootz/bootm etc could > >> also take the route of initrd (optional if - is specified) could be > >> implemented. > >> > >> The fix seems to be trivial (or so I think), in file > >> common/image-fdt.c, but wanted to know your comments on this. Also the > >> command help (for bootz etc) states that if the 3rd argument is not > >> passed, then the bd_info struct is passed, and I do not see it being > >> passed in the code anywhere. In the absence of the third parameter, it > >> just gives a "No fdt found" message. > > > > Thanks for working on a fix, as discussed in the earlier thread, requiring > > a third argument which is '-' will break old boot.scr files and the likes, > > so a better fix is to: > > > > 1) Always try to find an ftd (to keep things like appended ftd-s working) > > 2) If not found see if there is a third argument, if there is, treat this > > as a fatal error, abort the bootm (iow behave as before) > > 3) If there is not a third argument warn and continue as before. > > > > If you could respin your patch to do this, then that would be great. > > Hello Hans/Simon, I have been tracing the code paths and see that function bootm_find_fdt() is the final fdt prep function. To retain all its previous functionality, but introducing a warning condition if no third argument is present, but go ahead and boot without fdt should keep the peace. The easiest way to achieve this is: (takes care of 2 and 3 above) diff --git a/common/image-fdt.c b/common/image-fdt.c index a39ae1b..1a02166 100644 --- a/common/image-fdt.c +++ b/common/image-fdt.c @@ -430,6 +430,10 @@ int boot_get_fdt(int flag, int argc, char * const argv[], u error: *of_flat_tree = NULL; *of_size = 0; + if (argc <= 2) { + debug("Continuing to boot without FDT\n"); + return 0; + } return 1; } For case 1, is this already handled in the code? I need some more information on this. I did run a 3.17 zImage with an appended dtb and it did boot up, but I am guessing that it is the linux kernel separating the dtb out? Thanks - Suriyan > > Regards, > > > > Hans > > > > > >> > >> diff --git a/common/image-fdt.c b/common/image-fdt.c > >> index a39ae1b..e685700 100644 > >> --- a/common/image-fdt.c > >> +++ b/common/image-fdt.c > >> @@ -243,7 +243,10 @@ int boot_get_fdt(int flag, int argc, char * const argv[], u > >> > >> if (argc > 2) > >> select = argv[2]; > >> - if (select || genimg_has_config(images)) { > >> + if (select && strcmp(select, "-") == 0) { > >> + debug("## Skipping fdt\n"); > >> + return 0; > >> + } else if (select || genimg_has_config(images)) { > >> #if defined(CONFIG_FIT) > >> if (select) { > >> /* > >> > >> Regards > >> - Suriyan > >> _______________________________________________ > >> U-Boot mailing list > >> U-Boot at lists.denx.de > >> http://lists.denx.de/mailman/listinfo/u-boot > >> > > Regards, > Simon ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [U-Boot] BUG: bootz/bootm command mandates a fdt blob 2014-11-20 19:41 ` Suriyan Ramasami @ 2014-11-20 19:48 ` Hans de Goede 0 siblings, 0 replies; 5+ messages in thread From: Hans de Goede @ 2014-11-20 19:48 UTC (permalink / raw) To: u-boot Hi, On 11/20/2014 08:41 PM, Suriyan Ramasami wrote: > Hello Simon, > > On Nov 20, 2014 8:38 AM, "Simon Glass" <sjg@chromium.org> wrote: >> >> Hi, >> >> On 20 November 2014 16:04, Hans de Goede <hdegoede@redhat.com> wrote: >>> Hi Suriyan, >>> >>> On 11/20/2014 04:16 PM, Suriyan Ramasami wrote: >>>> Hello Simon, >>>> This mail is addressed to you as the FDT support was added by >>>> you. I am not sure who else to address it to. >> >> Just to be clear, I didn't add FDT support, this predates my >> involvement in U-Boot. I added CONFIG_OF_CONTROL etc. though. Han's >> solution sounds good to me. >> > > Sorry about that. In no way was I accusing you :-) I stand corrected though. > >>>> >>>> I find that if CONFIG_OF_LIBFDT is defined then the user is >>>> forced to provide a FDT blob. In most of the cases it makes sense. >>>> However, this removes the ability to boot older linux (non FDT). >>>> For example, I was looking at the Hardkernel Odroid kernels for >>>> the U2/U3, and they are 3.8 based. Of course newer kernels 3.17 work. >>>> For users to use the same boot loader for 3.8 and for 3.17, they >>>> cannot use the mainline uboot. >>> >>> I've hit the same problem myself recently, see the thread titled: >>> >>> "Booting non devicetree enabled kernels using u-boot build with > CONFIG_OF_LIBFDT" >>> >>>> I was wondering if teh third argument to bootz/bootm etc could >>>> also take the route of initrd (optional if - is specified) could be >>>> implemented. >>>> >>>> The fix seems to be trivial (or so I think), in file >>>> common/image-fdt.c, but wanted to know your comments on this. Also the >>>> command help (for bootz etc) states that if the 3rd argument is not >>>> passed, then the bd_info struct is passed, and I do not see it being >>>> passed in the code anywhere. In the absence of the third parameter, it >>>> just gives a "No fdt found" message. >>> >>> Thanks for working on a fix, as discussed in the earlier thread, > requiring >>> a third argument which is '-' will break old boot.scr files and the > likes, >>> so a better fix is to: >>> >>> 1) Always try to find an ftd (to keep things like appended ftd-s > working) >>> 2) If not found see if there is a third argument, if there is, treat > this >>> as a fatal error, abort the bootm (iow behave as before) >>> 3) If there is not a third argument warn and continue as before. >>> >>> If you could respin your patch to do this, then that would be great. >>> > > Hello Hans/Simon, > I have been tracing the code paths and see that function > bootm_find_fdt() is the final fdt prep function. > To retain all its previous functionality, but introducing a warning > condition if no third argument is present, but go ahead and boot without > fdt should keep the peace. > The easiest way to achieve this is: (takes care of 2 and 3 above) > > diff --git a/common/image-fdt.c b/common/image-fdt.c > index a39ae1b..1a02166 100644 > --- a/common/image-fdt.c > +++ b/common/image-fdt.c > @@ -430,6 +430,10 @@ int boot_get_fdt(int flag, int argc, char * const > argv[], u > error: > *of_flat_tree = NULL; > *of_size = 0; > + if (argc <= 2) { > + debug("Continuing to boot without FDT\n"); > + return 0; > + } > return 1; > } > > For case 1, is this already handled in the code? Yes it is, so your above patch should do the trick nicely, thanks for working on this. Can you re-send as a proper patch, with commit message, rather then inline in a mail ? (Please use git send-email if possible). Regards, Hans ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-11-20 19:48 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-20 15:16 [U-Boot] BUG: bootz/bootm command mandates a fdt blob Suriyan Ramasami 2014-11-20 16:04 ` Hans de Goede 2014-11-20 16:38 ` Simon Glass 2014-11-20 19:41 ` Suriyan Ramasami 2014-11-20 19:48 ` Hans de Goede
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox