From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Wed, 11 May 2022 10:02:38 +0200 Received: from metis.ext.pengutronix.de ([2001:67c:670:201:290:27ff:fe1d:cc33]) by lore.white.stw.pengutronix.de with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1nohIs-009OEs-RI for lore@lore.pengutronix.de; Wed, 11 May 2022 10:02:38 +0200 Received: from localhost ([127.0.0.1] helo=metis.ext.pengutronix.de) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1nohIr-0007bv-9f; Wed, 11 May 2022 10:02:37 +0200 Received: from ptx.hi.pengutronix.de ([2001:67c:670:100:1d::c0]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nohIo-0007Vx-OQ; Wed, 11 May 2022 10:02:34 +0200 Received: from mol by ptx.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1nohIo-0004QF-FS; Wed, 11 May 2022 10:02:34 +0200 Date: Wed, 11 May 2022 10:02:34 +0200 From: Michael Olbrich To: Ahmad Fatoum Message-ID: <20220511080234.GK26745@pengutronix.de> Mail-Followup-To: Ahmad Fatoum , oss-tools@pengutronix.de References: <20220510065728.3489540-1-m.olbrich@pengutronix.de> <20220510065728.3489540-4-m.olbrich@pengutronix.de> <7cc43cd0-c9d3-e34d-a463-061fc3c5c896@pengutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <7cc43cd0-c9d3-e34d-a463-061fc3c5c896@pengutronix.de> X-Sent-From: Pengutronix Hildesheim X-URL: http://www.pengutronix.de/ X-IRC: #ptxdist @freenode X-Accept-Language: de,en X-Accept-Content-Type: text/plain X-Uptime: 09:57:07 up 41 days, 20:26, 71 users, load average: 0.14, 0.14, 0.19 User-Agent: Mutt/1.10.1 (2018-07-13) Subject: Re: [OSS-Tools] [PATCH v3 3/3] state: automatically find state.dtb in the ESP X-BeenThere: oss-tools@pengutronix.de X-Mailman-Version: 2.1.29 Precedence: list List-Id: Pengutronix Public Open-Source-Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: oss-tools@pengutronix.de Sender: "OSS-Tools" X-SA-Exim-Connect-IP: 127.0.0.1 X-SA-Exim-Mail-From: oss-tools-bounces@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false On Tue, May 10, 2022 at 03:59:24PM +0200, Ahmad Fatoum wrote: > Hello Michael, > > On 10.05.22 08:57, Michael Olbrich wrote: > > Systemd mounts the EFI System Partition (ESP) to /boot or /efi. > > So look there for the state.dtb when the devicetree in sysfs/procfs is > > not available. > > > > This way barebox-state can be used on EFI systems without manually > > specifying the devicetree file. > > > > Signed-off-by: Michael Olbrich > > --- > > src/barebox-state.c | 24 ++++++++++++++++++++++++ > > 1 file changed, 24 insertions(+) > > > > diff --git a/src/barebox-state.c b/src/barebox-state.c > > index 334aed6f3d43..bf67340d4dc6 100644 > > --- a/src/barebox-state.c > > +++ b/src/barebox-state.c > > @@ -342,6 +342,30 @@ struct state *state_get(const char *name, const char *filename, bool readonly, b > > } > > } else { > > root = of_read_proc_devicetree(); > > + > > + /* No device-tree in procfs / sysfs, try dtb file in the ESP */ > > + if (-PTR_ERR(root) == ENOENT) { > > + const char *paths[] = { > > + /* default mount paths used by systemd */ > > + "/boot/EFI/BAREBOX/state.dtb", > > + "/efi/EFI/BAREBOX/state.dtb", > > On my Debian, it is /boot/efi/EFI. Do you mind appending that one to the list? :-) ok. > > + NULL > > + }; > > + void *fdt; > > + int i; > > + > > + for (i = 0; paths[i]; ++i) { > > + fdt = read_file(paths[i], NULL); > > + if (fdt) > > + break; > > + } > > + if (fdt) { > > + root = of_unflatten_dtb(fdt); > > + free(fdt); > > + } > > + else > > + root = ERR_PTR(-ENOENT); > > This duplicates code in the first if clause. Can you move this into > a common helper (just a static function above state_get suffices) > and use it? It's similar but not the same. Here we loop over multiple files and take the first that works, so there should be no error messages when some of them fail. A share function would require conditional error messages and at that point, I don't think it actually simplifies the code any more. Michael > > + } > > if (IS_ERR(root)) { > > pr_err("Unable to read devicetree. %s\n", > > strerror(-PTR_ERR(root))); > > > -- > 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 | > -- 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 |