mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Ahmad Fatoum <a.fatoum@pengutronix.de>
To: barebox@lists.infradead.org
Cc: Ahmad Fatoum <a.fatoum@pengutronix.de>
Subject: [PATCH 09/16] usbgadget: autostart: fix indeterminism around usbgadget.autostart
Date: Mon,  3 May 2021 13:48:54 +0200	[thread overview]
Message-ID: <20210503114901.13095-10-a.fatoum@pengutronix.de> (raw)
In-Reply-To: <20210503114901.13095-1-a.fatoum@pengutronix.de>

The setter for usbgadget.autostart evaluates other device paramaters, so
it must happen postenvironment, otherwise it could run too early and not
see the device parameters it depends on. This was observed with
usbgadget.dfu_function, which wasn't loaded from the environment early
enough, but it now does.

While at it, remove some more wonkyness:

 - usbgadget_autostart_set is only ever called when the
   IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART), so drop the check

 - There is no need to make usbgadget.acm specific to autostart.
   It's behavior now is counter intuitive (enable Kconfig symbol,
   but don't set global variable and it will have an effect.
   Disable CONFIG_USB_GADGET_AUTOSTART, which looks completely
   unrelated and it no longer works.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
---
 common/usbgadget.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/common/usbgadget.c b/common/usbgadget.c
index feec0b6634be..0b2d9a2120f7 100644
--- a/common/usbgadget.c
+++ b/common/usbgadget.c
@@ -97,7 +97,7 @@ static int usbgadget_autostart_set(struct param_d *param, void *ctx)
 	bool fastboot_bbu = get_fastboot_bbu();
 	int err;
 
-	if (!IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART) || !autostart || started)
+	if (!autostart || started)
 		return 0;
 
 	err = usbgadget_register(true, NULL, true, NULL, acm, fastboot_bbu);
@@ -109,17 +109,21 @@ static int usbgadget_autostart_set(struct param_d *param, void *ctx)
 
 static int usbgadget_globalvars_init(void)
 {
-	if (IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART)) {
-		globalvar_add_bool("usbgadget.autostart", usbgadget_autostart_set,
-				   &autostart, NULL);
-		globalvar_add_simple_bool("usbgadget.acm", &acm);
-	}
+	globalvar_add_simple_bool("usbgadget.acm", &acm);
 	globalvar_add_simple_string("usbgadget.dfu_function", &dfu_function);
 
 	return 0;
 }
 device_initcall(usbgadget_globalvars_init);
 
+static int usbgadget_autostart_init(void)
+{
+	if (IS_ENABLED(CONFIG_USB_GADGET_AUTOSTART))
+		globalvar_add_bool("usbgadget.autostart", usbgadget_autostart_set, &autostart, NULL);
+	return 0;
+}
+postenvironment_initcall(usbgadget_autostart_init);
+
 BAREBOX_MAGICVAR(global.usbgadget.autostart,
 		 "usbgadget: Automatically start usbgadget on boot");
 BAREBOX_MAGICVAR(global.usbgadget.acm,
-- 
2.29.2


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox


  parent reply	other threads:[~2021-05-03 11:51 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-03 11:48 [PATCH 00/16] USB: gadget: refactor to allow easier extension Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 01/16] show_progress: add system wide progress stage notifier Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 02/16] common: console: add log_writefile to write log into new file Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 03/16] string: implement strstarts along with strends Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 04/16] vsprintf: introduce %m shorthand for "%s", strerror(errno) Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 05/16] param: introduce file-list parameter type Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 06/16] common: add generic system partitions interface Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 07/16] fastboot: handle ill-named partitions gracefully Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 08/16] usb: gadget: dfu: change status message to info log level Ahmad Fatoum
2021-05-03 11:48 ` Ahmad Fatoum [this message]
2021-05-03 11:48 ` [PATCH 10/16] usbgadget: allow DFU and Fastboot functions to coexist Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 11/16] file_list: make freeing a NULL pointer a no-op Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 12/16] fastboot/dfu: use system partitions as fall back Ahmad Fatoum
2021-05-03 12:30   ` [PATCH] fixup! " Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 13/16] bbu: add function to directly add handlers into file_list Ahmad Fatoum
2021-05-03 11:48 ` [PATCH 14/16] file_list: add file_list_detect_all() Ahmad Fatoum
2021-05-03 11:49 ` [PATCH 15/16] common: make FILE_LIST feature unconditional Ahmad Fatoum
2021-05-03 11:49 ` [PATCH 16/16] fs: error out when writing on read-only file system Ahmad Fatoum
2021-05-03 11:55 ` [PATCH 00/16] USB: gadget: refactor to allow easier extension Sascha Hauer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210503114901.13095-10-a.fatoum@pengutronix.de \
    --to=a.fatoum@pengutronix.de \
    --cc=barebox@lists.infradead.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox