From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Tue, 10 May 2022 15:59:28 +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 1noQOe-008OGo-9B for lore@lore.pengutronix.de; Tue, 10 May 2022 15:59:28 +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 1noQOc-0000yq-7w; Tue, 10 May 2022 15:59:26 +0200 Received: from ptz.office.stw.pengutronix.de ([2a0a:edc0:0:900:1d::77] helo=[127.0.0.1]) by metis.ext.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1noQOa-0000yI-Fi; Tue, 10 May 2022 15:59:24 +0200 Message-ID: <7cc43cd0-c9d3-e34d-a463-061fc3c5c896@pengutronix.de> Date: Tue, 10 May 2022 15:59:24 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.0 Content-Language: en-US To: Michael Olbrich , oss-tools@pengutronix.de References: <20220510065728.3489540-1-m.olbrich@pengutronix.de> <20220510065728.3489540-4-m.olbrich@pengutronix.de> From: Ahmad Fatoum In-Reply-To: <20220510065728.3489540-4-m.olbrich@pengutronix.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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: , 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 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? :-) > + 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? Thanks, Ahmad > + } > 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 |