From mboxrd@z Thu Jan 1 00:00:00 1970 Delivery-date: Thu, 21 Sep 2023 14:38:53 +0200 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) 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 1qjIxK-005sBN-5V for lore@lore.pengutronix.de; Thu, 21 Sep 2023 14:38:53 +0200 Received: from bombadil.infradead.org ([2607:7c80:54:3::133]) by metis.whiteo.stw.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1qjIxH-0004Vw-SW for lore@pengutronix.de; Thu, 21 Sep 2023 14:38:52 +0200 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Content-Transfer-Encoding: Content-Type:In-Reply-To:From:References:To:Subject:MIME-Version:Date: Message-ID:Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From :Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=D40/VLag6YQ1SD1CaOXxtnlVTvOiKF0PmVCby5LuwqE=; b=ID9OoAFshV2jgjCFgigfSxZ5wb /istzRolY7M+HU64lIAXviYNO8WiX8L5wIDriS0MJUqgSYYSn6bnc4+Go90a0aeFKt3Z3sxUcWmgB BaxIny206S2osTp1ZFmXoEl+Z18J1LgQT64YATkTb3VRL1imNzu9TM5Q00yaItyCS72ckuBoOxxQD /CkHSlKVVxQTUY0G4s9/evtYcVrsgJoU5AFwe8JoO9CDf+r0VClXLXdZMok7gzbJS8SX8Pv517bJG NKuMyuhbnQbVpf+OozTb0oWMkZBwZNH6PNkWLHfG3/xTPT5mk22eyoFSanP708REzUuqG64M0aW8P ujyl0EIw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1qjIwB-0062Nw-0n; Thu, 21 Sep 2023 12:37:43 +0000 Received: from metis.whiteo.stw.pengutronix.de ([2a0a:edc0:2:b01:1d::104]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1qjIw8-0062NO-0n for barebox@lists.infradead.org; Thu, 21 Sep 2023 12:37:41 +0000 Received: from ptz.office.stw.pengutronix.de ([2a0a:edc0:0:900:1d::77] helo=[127.0.0.1]) by metis.whiteo.stw.pengutronix.de with esmtp (Exim 4.92) (envelope-from ) id 1qjIw6-00047d-Td; Thu, 21 Sep 2023 14:37:38 +0200 Message-ID: <44d292e5-729c-f22b-9309-c0c54c7aac71@pengutronix.de> Date: Thu, 21 Sep 2023 14:37:38 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.13.0 Content-Language: en-US To: Rouven Czerwinski , barebox@lists.infradead.org References: <20230920123720.767063-1-r.czerwinski@pengutronix.de> <20230920123720.767063-2-r.czerwinski@pengutronix.de> From: Ahmad Fatoum In-Reply-To: <20230920123720.767063-2-r.czerwinski@pengutronix.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230921_053740_282943_A8E2CCC8 X-CRM114-Status: GOOD ( 29.96 ) X-BeenThere: barebox@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "barebox" X-SA-Exim-Connect-IP: 2607:7c80:54:3::133 X-SA-Exim-Mail-From: barebox-bounces+lore=pengutronix.de@lists.infradead.org X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on metis.whiteo.stw.pengutronix.de X-Spam-Level: X-Spam-Status: No, score=-5.6 required=4.0 tests=AWL,BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,NICE_REPLY_A,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_NONE autolearn=unavailable autolearn_force=no version=3.4.2 Subject: Re: [PATCH 2/3] blspec: add new blspec.compatible.extra variable X-SA-Exim-Version: 4.2.1 (built Wed, 08 May 2019 21:11:16 +0000) X-SA-Exim-Scanned: Yes (on metis.whiteo.stw.pengutronix.de) On 20.09.23 14:37, Rouven Czerwinski wrote: > The blspec.compatible.extra variable will be used to specify extra As this is only relevant when booting. Maybe prefix with boot.? Not sure if that wouldn't be too long.. > compatibles that are also used to match during bootloader specification > entry parsing. This means that even if your internal barebox device tree > machine compatible is "vendor,bareboxcompatible", but your bootloader > specification device tree contains "vendor,linuxcompatible", it is > possible to boot this entry by setting blspec.compatible.extra to > "vendor,linuxcompatible". > > More than one compatible is possible as well, the compatibles will need > to be space separated (since "," is already used for the vendor hardware > distinction). > > Signed-off-by: Rouven Czerwinski > --- > common/blspec.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 56 insertions(+) > > diff --git a/common/blspec.c b/common/blspec.c > index f8d47f20d2..e361a02333 100644 > --- a/common/blspec.c > +++ b/common/blspec.c > @@ -19,10 +19,20 @@ > #include > #include > #include > +#include > +#include > #include > #include > #include > > +struct list_head *blspec_extra_list; > +char *blspec_extra_string; > + > +struct blspec_extra_entry { > + char *compatible; > + struct list_head list; > +}; > + > /* > * blspec_entry_var_set - set a variable to a value > */ > @@ -830,8 +840,54 @@ static int blspec_bootentry_provider(struct bootentries *bootentries, > return found; > } > > +static int blspec_extra_set(struct param_d *p, void *priv) > +{ > + struct blspec_extra_entry *entry, *tmp; > + char *str = blspec_extra_string; > + char *temp = str; > + unsigned int len; > + > + if (blspec_extra_list) { > + list_for_each_entry_safe(entry, tmp, blspec_extra_list, list) { > + list_del(&entry->list); > + free(entry->compatible); > + free(entry); > + } > + blspec_extra_list = NULL; > + } > + > + while(str++) { > + if (*str == ' ' || *str == 0) { Please use strsep (or strsep_unescaped) as elsewhere in blspec.c. > + len = temp - str; > + if(len > 126) { > + len = 127; > + } > + entry = calloc(1, sizeof(struct blspec_extra_entry)); xzalloc if you don't check for !NULL. > + entry->compatible = xzalloc(len + 1); > + memcpy(entry->compatible, temp, len); But here you could just use xstrdup? > + > + if (blspec_extra_list == NULL) { > + INIT_LIST_HEAD(&entry->list); > + blspec_extra_list = &entry->list; This is unusal. Why not have blspec_extra_list be a list_head instead of a pointer? > + } else { > + list_add_tail(&entry->list, blspec_extra_list); > + } > + > + temp = str + 1; > + } > + if (*str == 0) > + break; > + } > + > + return 0; > +} > + > static int blspec_init(void) > { > + dev_add_param_string(&global_device, "blspec.compatible.extra", > + blspec_extra_set, NULL, &blspec_extra_string, blspec_extra_list); > return bootentry_register_provider(blspec_bootentry_provider); > } > device_initcall(blspec_init); > + > +BAREBOX_MAGICVAR(global.blspec.compatible.extra, "Extra compatible to also match during bootloader entry matching"); -- 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 |