* [U-Boot] [PATCH] bootz: fix silent console @ 2014-11-18 12:52 Markus Niebel 2014-11-20 19:15 ` Simon Glass 0 siblings, 1 reply; 4+ messages in thread From: Markus Niebel @ 2014-11-18 12:52 UTC (permalink / raw) To: u-boot From: Markus Niebel <Markus.Niebel@tq-group.com> fixup was lost during split between command code and logic. Signed-off-by: Markus Niebel <Markus.Niebel@tq-group.com> --- common/bootm.c | 2 +- common/cmd_bootm.c | 6 ++++++ include/bootm.h | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/common/bootm.c b/common/bootm.c index 6b3ea8c..94b9503 100644 --- a/common/bootm.c +++ b/common/bootm.c @@ -467,7 +467,7 @@ ulong bootm_disable_interrupts(void) #define CONSOLE_ARG "console=" #define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1) -static void fixup_silent_linux(void) +void fixup_silent_linux(void) { char *buf; const char *env_val; diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c index 6723360..d3e410a 100644 --- a/common/cmd_bootm.c +++ b/common/cmd_bootm.c @@ -596,6 +596,12 @@ int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) * disable interrupts ourselves */ bootm_disable_interrupts(); +#if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY) + /* + * same goes for fixup_silent_linux + */ + fixup_silent_linux(); +#endif images.os.os = IH_OS_LINUX; ret = do_bootm_states(cmdtp, flag, argc, argv, diff --git a/include/bootm.h b/include/bootm.h index b3d1a62..8e094b3 100644 --- a/include/bootm.h +++ b/include/bootm.h @@ -50,6 +50,8 @@ ulong bootm_disable_interrupts(void); /* This is a special function used by booti/bootz */ int bootm_find_ramdisk_fdt(int flag, int argc, char * const argv[]); +/* This function is used also used by bootz */ +void fixup_silent_linux(void); int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], int states, bootm_headers_t *images, int boot_progress); -- 2.1.1 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] bootz: fix silent console 2014-11-18 12:52 [U-Boot] [PATCH] bootz: fix silent console Markus Niebel @ 2014-11-20 19:15 ` Simon Glass 2014-11-25 8:31 ` Markus Niebel 0 siblings, 1 reply; 4+ messages in thread From: Simon Glass @ 2014-11-20 19:15 UTC (permalink / raw) To: u-boot Hi Markus, On 18 November 2014 12:52, Markus Niebel <list-09_u-boot@tqsc.de> wrote: > From: Markus Niebel <Markus.Niebel@tq-group.com> > > fixup was lost during split between command code and logic. > > Signed-off-by: Markus Niebel <Markus.Niebel@tq-group.com> > --- > common/bootm.c | 2 +- > common/cmd_bootm.c | 6 ++++++ > include/bootm.h | 2 ++ > 3 files changed, 9 insertions(+), 1 deletion(-) > > diff --git a/common/bootm.c b/common/bootm.c > index 6b3ea8c..94b9503 100644 > --- a/common/bootm.c > +++ b/common/bootm.c > @@ -467,7 +467,7 @@ ulong bootm_disable_interrupts(void) > #define CONSOLE_ARG "console=" > #define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1) > > -static void fixup_silent_linux(void) > +void fixup_silent_linux(void) > { > char *buf; > const char *env_val; > diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c > index 6723360..d3e410a 100644 > --- a/common/cmd_bootm.c > +++ b/common/cmd_bootm.c > @@ -596,6 +596,12 @@ int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) > * disable interrupts ourselves > */ > bootm_disable_interrupts(); > +#if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY) > + /* > + * same goes for fixup_silent_linux > + */ > + fixup_silent_linux(); > +#endif > > images.os.os = IH_OS_LINUX; > ret = do_bootm_states(cmdtp, flag, argc, argv, > diff --git a/include/bootm.h b/include/bootm.h > index b3d1a62..8e094b3 100644 > --- a/include/bootm.h > +++ b/include/bootm.h > @@ -50,6 +50,8 @@ ulong bootm_disable_interrupts(void); > > /* This is a special function used by booti/bootz */ > int bootm_find_ramdisk_fdt(int flag, int argc, char * const argv[]); > +/* This function is used also used by bootz */ > +void fixup_silent_linux(void); > > int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], > int states, bootm_headers_t *images, int boot_progress); Quite a bit of effort was expended trying to join this code back together rather than having two separate code paths for bootm and bootz. Since this is cmdline-related, I suggest something like this: - Enable BOOTM_STATE_OS_CMDLINE for all archs in do_bootm() - Call fixup_silent_linux() in do_bootm_states() when processing BOOTM_STATE_OS_CMDLINE - Add BOOTM_STATE_OS_CMDLINE to the do_bootm_states() call in do_bootz() Or similar...that way we keep bootm and bootz in sync. The separate call to bootm_disable_interrupts() is unfortunate but is a problem for another day. Regards, Simon ^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] bootz: fix silent console 2014-11-20 19:15 ` Simon Glass @ 2014-11-25 8:31 ` Markus Niebel 2014-11-25 14:03 ` Simon Glass 0 siblings, 1 reply; 4+ messages in thread From: Markus Niebel @ 2014-11-25 8:31 UTC (permalink / raw) To: u-boot Hello Simon, Am 20.11.2014 um 20:15 schrieb Simon Glass: > Hi Markus, > > On 18 November 2014 12:52, Markus Niebel <list-09_u-boot@tqsc.de> wrote: >> From: Markus Niebel <Markus.Niebel@tq-group.com> >> >> fixup was lost during split between command code and logic. >> >> Signed-off-by: Markus Niebel <Markus.Niebel@tq-group.com> >> --- >> common/bootm.c | 2 +- >> common/cmd_bootm.c | 6 ++++++ >> include/bootm.h | 2 ++ >> 3 files changed, 9 insertions(+), 1 deletion(-) >> >> diff --git a/common/bootm.c b/common/bootm.c >> index 6b3ea8c..94b9503 100644 >> --- a/common/bootm.c >> +++ b/common/bootm.c >> @@ -467,7 +467,7 @@ ulong bootm_disable_interrupts(void) >> #define CONSOLE_ARG "console=" >> #define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1) >> >> -static void fixup_silent_linux(void) >> +void fixup_silent_linux(void) >> { >> char *buf; >> const char *env_val; >> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c >> index 6723360..d3e410a 100644 >> --- a/common/cmd_bootm.c >> +++ b/common/cmd_bootm.c >> @@ -596,6 +596,12 @@ int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) >> * disable interrupts ourselves >> */ >> bootm_disable_interrupts(); >> +#if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY) >> + /* >> + * same goes for fixup_silent_linux >> + */ >> + fixup_silent_linux(); >> +#endif >> >> images.os.os = IH_OS_LINUX; >> ret = do_bootm_states(cmdtp, flag, argc, argv, >> diff --git a/include/bootm.h b/include/bootm.h >> index b3d1a62..8e094b3 100644 >> --- a/include/bootm.h >> +++ b/include/bootm.h >> @@ -50,6 +50,8 @@ ulong bootm_disable_interrupts(void); >> >> /* This is a special function used by booti/bootz */ >> int bootm_find_ramdisk_fdt(int flag, int argc, char * const argv[]); >> +/* This function is used also used by bootz */ >> +void fixup_silent_linux(void); >> >> int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], >> int states, bootm_headers_t *images, int boot_progress); > > Quite a bit of effort was expended trying to join this code back > together rather than having two separate code paths for bootm and > bootz. I Understand > > Since this is cmdline-related, I suggest something like this: > > - Enable BOOTM_STATE_OS_CMDLINE for all archs in do_bootm() > - Call fixup_silent_linux() in do_bootm_states() when processing > BOOTM_STATE_OS_CMDLINE > - Add BOOTM_STATE_OS_CMDLINE to the do_bootm_states() call in do_bootz() > I read through the code to find out, what the implications of your suggestions were. Since I'm not very familiar with this piece of code, please correct me, If i'm wrong: - rename the arch specific do_bootm_linux to arch_bootm_linux - implement a generic version of do_bootm_linux inside bootm_os.c - call arch_bootm_linux from generic do_bootm_linux - move the call to fixup_silent_linux to new do_bootm_linux for the BOOTM_STATE_OS_CMDLINE case - mask BOOTM_STATE_OS_CMDLINE before calling arch_bootm_linux for all but MIPS and PPC because this seems a bit intrusive I'm not sure. But if this is the wy to go, I will prepare a patch. > Or similar...that way we keep bootm and bootz in sync. The separate > call to bootm_disable_interrupts() is unfortunate but is a problem for > another day. > > Regards, > Simon > Regards, Markus ^ permalink raw reply [flat|nested] 4+ messages in thread
* [U-Boot] [PATCH] bootz: fix silent console 2014-11-25 8:31 ` Markus Niebel @ 2014-11-25 14:03 ` Simon Glass 0 siblings, 0 replies; 4+ messages in thread From: Simon Glass @ 2014-11-25 14:03 UTC (permalink / raw) To: u-boot Hi Markus, On 25 November 2014 at 01:31, Markus Niebel <list-09_u-boot@tqsc.de> wrote: > Hello Simon, > > Am 20.11.2014 um 20:15 schrieb Simon Glass: >> Hi Markus, >> >> On 18 November 2014 12:52, Markus Niebel <list-09_u-boot@tqsc.de> wrote: >>> From: Markus Niebel <Markus.Niebel@tq-group.com> >>> >>> fixup was lost during split between command code and logic. >>> >>> Signed-off-by: Markus Niebel <Markus.Niebel@tq-group.com> >>> --- >>> common/bootm.c | 2 +- >>> common/cmd_bootm.c | 6 ++++++ >>> include/bootm.h | 2 ++ >>> 3 files changed, 9 insertions(+), 1 deletion(-) >>> >>> diff --git a/common/bootm.c b/common/bootm.c >>> index 6b3ea8c..94b9503 100644 >>> --- a/common/bootm.c >>> +++ b/common/bootm.c >>> @@ -467,7 +467,7 @@ ulong bootm_disable_interrupts(void) >>> #define CONSOLE_ARG "console=" >>> #define CONSOLE_ARG_LEN (sizeof(CONSOLE_ARG) - 1) >>> >>> -static void fixup_silent_linux(void) >>> +void fixup_silent_linux(void) >>> { >>> char *buf; >>> const char *env_val; >>> diff --git a/common/cmd_bootm.c b/common/cmd_bootm.c >>> index 6723360..d3e410a 100644 >>> --- a/common/cmd_bootm.c >>> +++ b/common/cmd_bootm.c >>> @@ -596,6 +596,12 @@ int do_bootz(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) >>> * disable interrupts ourselves >>> */ >>> bootm_disable_interrupts(); >>> +#if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY) >>> + /* >>> + * same goes for fixup_silent_linux >>> + */ >>> + fixup_silent_linux(); >>> +#endif >>> >>> images.os.os = IH_OS_LINUX; >>> ret = do_bootm_states(cmdtp, flag, argc, argv, >>> diff --git a/include/bootm.h b/include/bootm.h >>> index b3d1a62..8e094b3 100644 >>> --- a/include/bootm.h >>> +++ b/include/bootm.h >>> @@ -50,6 +50,8 @@ ulong bootm_disable_interrupts(void); >>> >>> /* This is a special function used by booti/bootz */ >>> int bootm_find_ramdisk_fdt(int flag, int argc, char * const argv[]); >>> +/* This function is used also used by bootz */ >>> +void fixup_silent_linux(void); >>> >>> int do_bootm_states(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[], >>> int states, bootm_headers_t *images, int boot_progress); >> >> Quite a bit of effort was expended trying to join this code back >> together rather than having two separate code paths for bootm and >> bootz. > > I Understand > >> >> Since this is cmdline-related, I suggest something like this: >> >> - Enable BOOTM_STATE_OS_CMDLINE for all archs in do_bootm() >> - Call fixup_silent_linux() in do_bootm_states() when processing >> BOOTM_STATE_OS_CMDLINE >> - Add BOOTM_STATE_OS_CMDLINE to the do_bootm_states() call in do_bootz() >> > > I read through the code to find out, what the implications of your > suggestions were. Since I'm not very familiar with this piece of code, > please correct me, If i'm wrong: > > - rename the arch specific do_bootm_linux to arch_bootm_linux > - implement a generic version of do_bootm_linux inside bootm_os.c > - call arch_bootm_linux from generic do_bootm_linux > - move the call to fixup_silent_linux to new do_bootm_linux for the > BOOTM_STATE_OS_CMDLINE case > - mask BOOTM_STATE_OS_CMDLINE before calling arch_bootm_linux for all but > MIPS and PPC > > because this seems a bit intrusive I'm not sure. But if this is the wy to go, I > will prepare a patch. Yes that sounds complicated. But copying code in multiple places is how the image/bootm support got so ugly, and it was a big effort to fix it up. So I'd really like to avoid copying code. But it should be a lot easier than that. In do_boot() there is: return do_bootm_states(cmdtp, flag, argc, argv, BOOTM_STATE_START | BOOTM_STATE_FINDOS | BOOTM_STATE_FINDOTHER | BOOTM_STATE_LOADOS | #if defined(CONFIG_PPC) || defined(CONFIG_MIPS) BOOTM_STATE_OS_CMDLINE | #endif BOOTM_STATE_OS_PREP | BOOTM_STATE_OS_FAKE_GO | BOOTM_STATE_OS_GO, &images, 1); } You should be able to remove the #ifdef. Then in do_bootm_states() there is: /* Load the OS */ if (!ret && (states & BOOTM_STATE_LOADOS)) { ... #if defined(CONFIG_SILENT_CONSOLE) && !defined(CONFIG_SILENT_U_BOOT_ONLY) if (images->os.os == IH_OS_LINUX) fixup_silent_linux(); #endif } And later: if (!ret && (states & BOOTM_STATE_OS_CMDLINE)) ret = boot_fn(BOOTM_STATE_OS_CMDLINE, argc, argv, images); You should be able to move the '#if defined' code to inside this if () - so that fixup_silent_linux() happens in the CMDLINE stage instead of the LOADOS stage. Then in do_bootz(), add BOOTM_STATE_OS_CMDLINE to the call to do_bootm_states(). Then bootm and bootz will still go along exactly the same code path. The tricky bit is that of course this does affect each arch - you need to make sure that each do_bootm_linux() function in arch/xxx/lib/bootm.c will handle BOOTM_STATE_OS_CMDLINE (and return 0, not -1). At a glance I can see that ARM returns -1 - it will need to return 0. Also each function in boot_os[] needs to do the same. I looked at most of them and they check for BOOTM_STATE_OS_GO and return 0 for anything else, so should be OK. Maybe do_bootm_standalone() will need to do so too. > >> Or similar...that way we keep bootm and bootz in sync. The separate >> call to bootm_disable_interrupts() is unfortunate but is a problem for >> another day. >> >> Regards, >> Simon >> > Regards, > Markus Regards, Simon ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-11-25 14:03 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-11-18 12:52 [U-Boot] [PATCH] bootz: fix silent console Markus Niebel 2014-11-20 19:15 ` Simon Glass 2014-11-25 8:31 ` Markus Niebel 2014-11-25 14:03 ` Simon Glass
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox