* [PATCH master 2/4] console: add for_each_console stub
2023-11-20 7:21 [PATCH master 1/4] console: define stub for console_get_first_active Ahmad Fatoum
@ 2023-11-20 7:21 ` Ahmad Fatoum
2023-11-20 7:21 ` [PATCH master 3/4] console: define barebox_set_loglevel Ahmad Fatoum
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Ahmad Fatoum @ 2023-11-20 7:21 UTC (permalink / raw)
To: barebox; +Cc: Steffen Hemer, Ahmad Fatoum
With CONFIG_CONSOLE_NONE, we have no consoles and no console_list, but
the unconditional for_each_console in the bootm earlycon code references
console_list leading to a linker error.
Let's define for_each_console as a no-op to fix this.
Fixes: d17f29dba030 ("console: add new $global.bootm.earlycon parameter")
Reported-by: Steffen Hemer <S.Hemer@phytec.de>
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
include/console.h | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/include/console.h b/include/console.h
index 018d47f69ef7..b400b6bf49ec 100644
--- a/include/console.h
+++ b/include/console.h
@@ -94,9 +94,6 @@ struct console_device *console_get_by_dev(struct device *dev);
struct console_device *console_get_by_name(const char *name);
struct console_device *of_console_get_by_alias(const char *alias);
-extern struct list_head console_list;
-#define for_each_console(console) list_for_each_entry(console, &console_list, list)
-
#define CFG_PBSIZE (CONFIG_CBSIZE+sizeof(CONFIG_PROMPT)+16)
extern int barebox_loglevel;
@@ -200,8 +197,13 @@ static inline void pbl_set_putc(void (*putcf)(void *ctx, int c), void *ctx) {}
bool console_allow_color(void);
#ifndef CONFIG_CONSOLE_NONE
+extern struct list_head console_list;
+#define for_each_console(console) list_for_each_entry(console, &console_list, list)
+
struct console_device *console_get_first_active(void);
#else
+#define for_each_console(console) while (((void)console, 0))
+
static inline struct console_device *console_get_first_active(void)
{
return NULL;
--
2.39.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH master 3/4] console: define barebox_set_loglevel
2023-11-20 7:21 [PATCH master 1/4] console: define stub for console_get_first_active Ahmad Fatoum
2023-11-20 7:21 ` [PATCH master 2/4] console: add for_each_console stub Ahmad Fatoum
@ 2023-11-20 7:21 ` Ahmad Fatoum
2023-11-20 7:21 ` [PATCH master 4/4] test: self: jwt: use barebox_set_loglevel Ahmad Fatoum
2023-11-21 6:57 ` [PATCH master 1/4] console: define stub for console_get_first_active Sascha Hauer
3 siblings, 0 replies; 5+ messages in thread
From: Ahmad Fatoum @ 2023-11-20 7:21 UTC (permalink / raw)
To: barebox; +Cc: Ahmad Fatoum
Selftests may want to change barebox_loglevel temporarily to avoid expected
warning or error messages cluttering the log. barebox_loglevel is only
defined for !CONFIG_CONSOLE_NONE though, so add a stub for the
console-less case.
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
include/console.h | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/include/console.h b/include/console.h
index b400b6bf49ec..477ca34e7aa9 100644
--- a/include/console.h
+++ b/include/console.h
@@ -96,8 +96,6 @@ struct console_device *of_console_get_by_alias(const char *alias);
#define CFG_PBSIZE (CONFIG_CBSIZE+sizeof(CONFIG_PROMPT)+16)
-extern int barebox_loglevel;
-
int console_open(struct console_device *cdev);
int console_close(struct console_device *cdev);
int console_set_active(struct console_device *cdev, unsigned active);
@@ -201,6 +199,14 @@ extern struct list_head console_list;
#define for_each_console(console) list_for_each_entry(console, &console_list, list)
struct console_device *console_get_first_active(void);
+
+extern int barebox_loglevel;
+static inline int barebox_set_loglevel(int loglevel)
+{
+ int old_loglevel = barebox_loglevel;
+ barebox_loglevel = loglevel;
+ return old_loglevel;
+}
#else
#define for_each_console(console) while (((void)console, 0))
@@ -208,6 +214,11 @@ static inline struct console_device *console_get_first_active(void)
{
return NULL;
}
+
+static inline int barebox_set_loglevel(int loglevel)
+{
+ return loglevel;
+}
#endif
#ifdef CONFIG_CONSOLE_FULL
--
2.39.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH master 4/4] test: self: jwt: use barebox_set_loglevel
2023-11-20 7:21 [PATCH master 1/4] console: define stub for console_get_first_active Ahmad Fatoum
2023-11-20 7:21 ` [PATCH master 2/4] console: add for_each_console stub Ahmad Fatoum
2023-11-20 7:21 ` [PATCH master 3/4] console: define barebox_set_loglevel Ahmad Fatoum
@ 2023-11-20 7:21 ` Ahmad Fatoum
2023-11-21 6:57 ` [PATCH master 1/4] console: define stub for console_get_first_active Sascha Hauer
3 siblings, 0 replies; 5+ messages in thread
From: Ahmad Fatoum @ 2023-11-20 7:21 UTC (permalink / raw)
To: barebox; +Cc: Ahmad Fatoum
For CONFIG_CONSOLE_SIMPLE or CONFIG_CONSOLE_FULL, this is equivalent,
but for CONFIG_CONSOLE_NONE, this fixes a linker error as
barebox_loglevel isn't defined in that case.
Fixes: ba9af2bd18db ("test: self: add JSON Web Token tests")
Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
test/self/jwt.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/test/self/jwt.c b/test/self/jwt.c
index f37b44be22b8..015a0e436736 100644
--- a/test/self/jwt.c
+++ b/test/self/jwt.c
@@ -97,8 +97,7 @@ static void test_jwt(void)
* noisy, so we decrease logging a bit during their run
*/
- old_loglevel = barebox_loglevel;
- barebox_loglevel = MSG_CRIT;
+ old_loglevel = barebox_set_loglevel(MSG_CRIT);
jwt_rs256_mangled = strdup(jwt_rs256);
ch = &jwt_rs256_mangled[strlen(jwt_rs256_mangled) - 1];
@@ -152,6 +151,6 @@ static void test_jwt(void)
jwt_free(jwt);
}
- barebox_loglevel = old_loglevel;
+ barebox_set_loglevel(old_loglevel);
}
bselftest(parser, test_jwt);
--
2.39.2
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH master 1/4] console: define stub for console_get_first_active
2023-11-20 7:21 [PATCH master 1/4] console: define stub for console_get_first_active Ahmad Fatoum
` (2 preceding siblings ...)
2023-11-20 7:21 ` [PATCH master 4/4] test: self: jwt: use barebox_set_loglevel Ahmad Fatoum
@ 2023-11-21 6:57 ` Sascha Hauer
3 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2023-11-21 6:57 UTC (permalink / raw)
To: Ahmad Fatoum; +Cc: barebox, Steffen Hemer
On Mon, Nov 20, 2023 at 08:21:19AM +0100, Ahmad Fatoum wrote:
> console_get_first_active() is unconditionally called in startup.c to
> check if the boot countdown can be skipped. The function is not defined
> for CONFIG_CONSOLE_NONE however. Provide a stub in that case, so the
> code can be compiled again.
>
> This changes behavior: Configured countdown for systems without consoles
> will be ignored and the system will boot directly. This is deemed
> acceptable as it aligns behavior with systems with consoles that are
> exclusively non-interactive and on the off-chance that a board requires
> delays, it can always add a late init call delaying the boot.
>
> Fixes: 66232c0ca70f ("startup: don't skip countdown if consoles were runtime enabled")
> Reported-by: Steffen Hemer <S.Hemer@phytec.de>
> Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
> ---
> include/console.h | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
Applied 1-3, thanks
Didn't apply the last one as the changed file does not yet exist in
master.
Sascha
>
> diff --git a/include/console.h b/include/console.h
> index b8c901801e9f..018d47f69ef7 100644
> --- a/include/console.h
> +++ b/include/console.h
> @@ -101,8 +101,6 @@ extern struct list_head console_list;
>
> extern int barebox_loglevel;
>
> -struct console_device *console_get_first_active(void);
> -
> int console_open(struct console_device *cdev);
> int console_close(struct console_device *cdev);
> int console_set_active(struct console_device *cdev, unsigned active);
> @@ -201,6 +199,15 @@ static inline void pbl_set_putc(void (*putcf)(void *ctx, int c), void *ctx) {}
>
> bool console_allow_color(void);
>
> +#ifndef CONFIG_CONSOLE_NONE
> +struct console_device *console_get_first_active(void);
> +#else
> +static inline struct console_device *console_get_first_active(void)
> +{
> + return NULL;
> +}
> +#endif
> +
> #ifdef CONFIG_CONSOLE_FULL
> void console_ctrlc_allow(void);
> void console_ctrlc_forbid(void);
> --
> 2.39.2
>
>
>
--
Pengutronix e.K. | |
Steuerwalder Str. 21 | http://www.pengutronix.de/ |
31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 5+ messages in thread