From 6d54ac747cd8bf8f25bdc91d5688320b8faf361b Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Wed, 14 Feb 2024 15:10:30 +0000 Subject: [PATCH] 2024.04 RC2 --- Provide-a-fallback-to-smbios-tables.patch | 686 ------------------ sources | 2 +- uboot-tools.spec | 13 +- ...atic-management-for-removable-medias.patch | 574 --------------- 4 files changed, 7 insertions(+), 1268 deletions(-) delete mode 100644 Provide-a-fallback-to-smbios-tables.patch delete mode 100644 uefi-Boot-var-automatic-management-for-removable-medias.patch diff --git a/Provide-a-fallback-to-smbios-tables.patch b/Provide-a-fallback-to-smbios-tables.patch deleted file mode 100644 index 4ff8ac5..0000000 --- a/Provide-a-fallback-to-smbios-tables.patch +++ /dev/null @@ -1,686 +0,0 @@ -From patchwork Thu Dec 7 09:18:49 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Ilias Apalodimas -X-Patchwork-Id: 1873089 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=SyQQL6ZG; - dkim-atps=neutral -Authentication-Results: legolas.ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sm7xz1DLXz23nD - for ; Thu, 7 Dec 2023 20:19:19 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 83BF287243; - Thu, 7 Dec 2023 10:19:05 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.b="SyQQL6ZG"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 46C3C87243; Thu, 7 Dec 2023 10:19:04 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com - [IPv6:2a00:1450:4864:20::330]) - (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 21B8586FFE - for ; Thu, 7 Dec 2023 10:19:02 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org -Received: by mail-wm1-x330.google.com with SMTP id - 5b1f17b1804b1-40c2c65e6aaso1041145e9.2 - for ; Thu, 07 Dec 2023 01:19:02 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1701940741; x=1702545541; darn=lists.denx.de; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:from:to:cc:subject:date - :message-id:reply-to; - bh=vcf8Uy8SIKdN9TXuCeQubka7IJIfrvGMGj1JoUebFs0=; - b=SyQQL6ZGyEFpFFqauSbHRSSNY+KOw9ohESTeXyy7RkWEEIFaK7yPwRRy9NZX+DJLAJ - ECaT3Bchk61s+E1ZsuxrqdlxEYWDULw+4O2hm22gVZjL5L6r4+NwNgCHwzYW/bcro87o - KEGRF7CXG50v6mvrjAOHoy2LbojZLR9d7fjO4gmGtihdnTMOW1cjtrX/3Seiy99QoTK6 - 5Hs119W/hO0/5AE1VVSiIxV1Xx+qYcAHvQqcEEkBCKR2MpHTauUEonUf1LC5LKK2gKG5 - UEzq7XLrPki8hih4EcWsoctpdPp4kBtvpVSSshji9yxDX3EXKzcfA8xyqrB+5qKJU100 - zZ7A== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1701940741; x=1702545541; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=vcf8Uy8SIKdN9TXuCeQubka7IJIfrvGMGj1JoUebFs0=; - b=L6Ejctx8u+W0IeEi5FfC1q0ah2NYKTScSheLqomwMY3Q4/BPiEUP7KUarxUKsRwI/3 - yP4rTVAXqlGbT6kFKq3jrxXlRS4HIRZxtFbgHZEKuBnXpkHCQpvQwKUcYY9QkbfdZEir - 5YYfONEv2yTHHfoiBZiVmcPARIQ5+2ra+k493og2Bm0Hk5dVWyaHn/YY6Y+FCWH7ZYn0 - Eq1M9Ng8YB3oMx63KwV9XHBURccH8UdCqwsNDvk2gWLKdSvrjlFD7ExiySd90+i9+6vN - CMLoNESSYj2K9qW/sxbIDgUv1JwYCWgJrDejTzilfagawcPlKY2XtTnOlUsRryYrsPoq - RbZg== -X-Gm-Message-State: AOJu0YxG7g4q8NdX+N/0Mp5YNkHEVHntPyakSqHCtdqDzgaRcQCbtF0q - 2APTVIQc7yNsT16/19bvkV1NRw3x7lZmC4YcT+s= -X-Google-Smtp-Source: - AGHT+IFwnHtGX5IWm5lG5rRTsz6nU13lqUMnEUb8xEq/mngZuRtpzcNdrO7fNaBiIDDQLuKd+Y07Tw== -X-Received: by 2002:a05:600c:2184:b0:40b:dd1f:6dd1 with SMTP id - e4-20020a05600c218400b0040bdd1f6dd1mr1312043wme.240.1701940741617; - Thu, 07 Dec 2023 01:19:01 -0800 (PST) -Received: from localhost.localdomain (ppp046103111243.access.hol.gr. - [46.103.111.243]) by smtp.gmail.com with ESMTPSA id - u21-20020a05600c139500b00405d9a950a2sm1299003wmf.28.2023.12.07.01.19.00 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 07 Dec 2023 01:19:01 -0800 (PST) -From: Ilias Apalodimas -To: trini@konsulko.com, - sjg@chromium.org -Cc: sean.anderson@seco.com, neil.armstrong@linaro.org, - heinrich.schuchardt@canonical.com, mark.kettenis@xs4all.nl, - Ilias Apalodimas , u-boot@lists.denx.de -Subject: [PATCH 1/2 v3] smbios: Simplify reporting of unknown values -Date: Thu, 7 Dec 2023 11:18:49 +0200 -Message-Id: <20231207091850.17776-2-ilias.apalodimas@linaro.org> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -References: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.39 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de -X-Virus-Status: Clean - -If a value is not valid during the DT or SYSINFO parsing, we explicitly -set that to "Unknown Product" and "Unknown" for the product and -manufacturer respectively. It's cleaner if we move the checks insisde -smbios_add_prop_si() and provide an alternative string in case the -primary is NULL or empty - -pre-patch dmidecode - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown Product - Version: Not Specified - Serial Number: Not Specified - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Not Specified - Family: Not Specified - -[...] - -post-patch dmidecode: - -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -While at it make smbios_add_prop_si() add a string directly if the prop -node is NULL and replace smbios_add_string() calls with -smbios_add_prop_si(ctx, NULL, ....) - -Signed-off-by: Ilias Apalodimas ---- -Changes since v2: -- refactor even more code and remove the smbios_add_string calls from the - main code. Instead use smbios_add_prop() foir everything and add a - default value, in case the parsed one is NULL or emtpy -Changes since v1: -- None - - lib/smbios.c | 73 +++++++++++++++++++++++++--------------------------- - 1 file changed, 35 insertions(+), 38 deletions(-) - --- -2.40.1 - -diff --git a/lib/smbios.c b/lib/smbios.c -index d7f4999e8b2a..444aa245a273 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -102,9 +102,6 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - int i = 1; - char *p = ctx->eos; - -- if (!*str) -- str = "Unknown"; -- - for (;;) { - if (!*p) { - ctx->last_str = p; -@@ -134,11 +131,18 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - * - * @ctx: context for writing the tables - * @prop: property to write -+ * @dval: Default value to use if the string is not found or is empty - * Return: 0 if not found, else SMBIOS string number (1 or more) - */ - static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, -- int sysinfo_id) -+ int sysinfo_id, const char *dval) - { -+ if (!dval || !*dval) -+ dval = "Unknown"; -+ -+ if (!prop) -+ return smbios_add_string(ctx, dval); -+ - if (sysinfo_id && ctx->dev) { - char val[SMBIOS_STR_MAX]; - int ret; -@@ -151,8 +155,8 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - const char *str; - - str = ofnode_read_string(ctx->node, prop); -- if (str) -- return smbios_add_string(ctx, str); -+ -+ return smbios_add_string(ctx, str ? str : dval); - } - - return 0; -@@ -161,12 +165,15 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - /** - * smbios_add_prop() - Add a property from the devicetree - * -- * @prop: property to write -+ * @prop: property to write. The default string will be written if -+ * prop is NULL -+ * @dval: Default value to use if the string is not found or is empty - * Return: 0 if not found, else SMBIOS string number (1 or more) - */ --static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop) -+static int smbios_add_prop(struct smbios_ctx *ctx, const char *prop, -+ const char *dval) - { -- return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE); -+ return smbios_add_prop_si(ctx, prop, SYSINFO_ID_NONE, dval); - } - - static void smbios_set_eos(struct smbios_ctx *ctx, char *eos) -@@ -228,11 +235,9 @@ static int smbios_write_type0(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type0)); - fill_smbios_header(t, SMBIOS_BIOS_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); -- t->vendor = smbios_add_string(ctx, "U-Boot"); -+ t->vendor = smbios_add_prop(ctx, NULL, "U-Boot"); - -- t->bios_ver = smbios_add_prop(ctx, "version"); -- if (!t->bios_ver) -- t->bios_ver = smbios_add_string(ctx, PLAIN_VERSION); -+ t->bios_ver = smbios_add_prop(ctx, "version", PLAIN_VERSION); - if (t->bios_ver) - gd->smbios_version = ctx->last_str; - log_debug("smbios_version = %p: '%s'\n", gd->smbios_version, -@@ -241,7 +246,7 @@ static int smbios_write_type0(ulong *current, int handle, - print_buffer((ulong)gd->smbios_version, gd->smbios_version, - 1, strlen(gd->smbios_version) + 1, 0); - #endif -- t->bios_release_date = smbios_add_string(ctx, U_BOOT_DMI_DATE); -+ t->bios_release_date = smbios_add_prop(ctx, NULL, U_BOOT_DMI_DATE); - #ifdef CONFIG_ROM_SIZE - t->bios_rom_size = (CONFIG_ROM_SIZE / 65536) - 1; - #endif -@@ -280,22 +285,19 @@ static int smbios_write_type1(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type1)); - fill_smbios_header(t, SMBIOS_SYSTEM_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); -- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); -- t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); -+ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); -+ t->product_name = smbios_add_prop(ctx, "product", "Unknown"); - t->version = smbios_add_prop_si(ctx, "version", -- SYSINFO_ID_SMBIOS_SYSTEM_VERSION); -+ SYSINFO_ID_SMBIOS_SYSTEM_VERSION, -+ "Unknown"); - if (serial_str) { -- t->serial_number = smbios_add_string(ctx, serial_str); -+ t->serial_number = smbios_add_prop(ctx, NULL, serial_str); - strncpy((char *)t->uuid, serial_str, sizeof(t->uuid)); - } else { -- t->serial_number = smbios_add_prop(ctx, "serial"); -+ t->serial_number = smbios_add_prop(ctx, "serial", "Unknown"); - } -- t->sku_number = smbios_add_prop(ctx, "sku"); -- t->family = smbios_add_prop(ctx, "family"); -+ t->sku_number = smbios_add_prop(ctx, "sku", "Unknown"); -+ t->family = smbios_add_prop(ctx, "family", "Unknown"); - - len = t->length + smbios_string_table_len(ctx); - *current += len; -@@ -314,15 +316,12 @@ static int smbios_write_type2(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type2)); - fill_smbios_header(t, SMBIOS_BOARD_INFORMATION, len, handle); - smbios_set_eos(ctx, t->eos); -- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); -- t->product_name = smbios_add_prop(ctx, "product"); -- if (!t->product_name) -- t->product_name = smbios_add_string(ctx, "Unknown Product"); -+ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); -+ t->product_name = smbios_add_prop(ctx, "product", "Unknown"); - t->version = smbios_add_prop_si(ctx, "version", -- SYSINFO_ID_SMBIOS_BASEBOARD_VERSION); -- t->asset_tag_number = smbios_add_prop(ctx, "asset-tag"); -+ SYSINFO_ID_SMBIOS_BASEBOARD_VERSION, -+ "Unknown"); -+ t->asset_tag_number = smbios_add_prop(ctx, "asset-tag", "Unknown"); - t->feature_flags = SMBIOS_BOARD_FEATURE_HOSTING; - t->board_type = SMBIOS_BOARD_MOTHERBOARD; - -@@ -343,9 +342,7 @@ static int smbios_write_type3(ulong *current, int handle, - memset(t, 0, sizeof(struct smbios_type3)); - fill_smbios_header(t, SMBIOS_SYSTEM_ENCLOSURE, len, handle); - smbios_set_eos(ctx, t->eos); -- t->manufacturer = smbios_add_prop(ctx, "manufacturer"); -- if (!t->manufacturer) -- t->manufacturer = smbios_add_string(ctx, "Unknown"); -+ t->manufacturer = smbios_add_prop(ctx, "manufacturer", "Unknown"); - t->chassis_type = SMBIOS_ENCLOSURE_DESKTOP; - t->bootup_state = SMBIOS_STATE_SAFE; - t->power_supply_state = SMBIOS_STATE_SAFE; -@@ -388,8 +385,8 @@ static void smbios_write_type4_dm(struct smbios_type4 *t, - #endif - - t->processor_family = processor_family; -- t->processor_manufacturer = smbios_add_string(ctx, vendor); -- t->processor_version = smbios_add_string(ctx, name); -+ t->processor_manufacturer = smbios_add_prop(ctx, NULL, vendor); -+ t->processor_version = smbios_add_prop(ctx, NULL, name); - } - - static int smbios_write_type4(ulong *current, int handle, - -From patchwork Thu Dec 7 09:18:50 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -X-Patchwork-Submitter: Ilias Apalodimas -X-Patchwork-Id: 1873090 -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=KcFhbOkM; - dkim-atps=neutral -Authentication-Results: legolas.ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=85.214.62.61; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) -Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4Sm7yF71l9z23nD - for ; Thu, 7 Dec 2023 20:19:33 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 7D6CB87483; - Thu, 7 Dec 2023 10:19:07 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.b="KcFhbOkM"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id B1E298745E; Thu, 7 Dec 2023 10:19:05 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com - [IPv6:2a00:1450:4864:20::433]) - (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id 792A8871BB - for ; Thu, 7 Dec 2023 10:19:03 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=ilias.apalodimas@linaro.org -Received: by mail-wr1-x433.google.com with SMTP id - ffacd0b85a97d-3334a701cbbso717814f8f.0 - for ; Thu, 07 Dec 2023 01:19:03 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1701940743; x=1702545543; darn=lists.denx.de; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:from:to:cc:subject:date - :message-id:reply-to; - bh=JIRbBgzEcdaHWJ7fVa5JIsDJda65F2tSuL1aji2tJ5U=; - b=KcFhbOkMkvXbThdeAeI92+uSdN5LvKdwae+36Z/jz0Hg0yPDs5v8UqeDt2d+NaSlh9 - GERy8kIMCopTcJ13FoUM8Ok4PBSMRSDxbJo4lLaGIbddw7hcit4uxhJfTAL8zKxnboMU - YBZPC/E2NjWklmJx6p4zmLeXS5IzncTaDE9z2XFMRGrJ/KLqpTvwOp/nf57jP/kdIxpe - Q7vWAhVY8gC19ogSD41RB4ixA0HefI6xKq6fAl2GwvRlOvCEGAcVdpbl8aj5R8qEOSVT - BsuqzbDXHlQI6L9Y++Yqe89LcKMRoAWqHrgOuO3eBwnEp2jjjzV8G24mTFD+4wso1ERo - mIkQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1701940743; x=1702545543; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=JIRbBgzEcdaHWJ7fVa5JIsDJda65F2tSuL1aji2tJ5U=; - b=pee1V3/z6lW4enMw0ueHvBJJXGhNLq7KccXmY4QkXfVRLXGBOedbBwQH1KXDxj/gJs - RZ/KhsEvPN4qeqrqpeOnQoDBQs3QarjlsMHmlhnlBZMpgPKTJyg5MEpZPAlnfqZJkd4A - vMMYc1fZ+alT5gfZjdzpLypC2sOj9yC3ktb8ZYXQGQzN7yCYrQnBHgiYn3vDDaHMaQNH - n73RxiQNWJs9Ekow2hxk4l2FDpvlwuiFr9y+dnuzo5TvpbgaDbj64tcqxalnusBw3jKC - fE6r5cob553rh/ZM/bVJD/PIXP+LOSUHyiqJG+7KpEpSAY984EIHkKFRRbLHSIuwBAK+ - wTIw== -X-Gm-Message-State: AOJu0YwQcpf2rvKZHAPWsPT7fH7x3sa+mhF5kDJ557Oe9zwmQc4v6NzO - ZFEgE8KlljYnqibJKd2JdRCP6A== -X-Google-Smtp-Source: - AGHT+IEfJolrJ5g6Qgn465DsdBpMZMW+cn6kVgLvehQIXNT7VcXYfkBvC8Hf5zXnl7Q5Yto7bS2tOg== -X-Received: by 2002:a05:600c:d5:b0:40b:5e59:99c6 with SMTP id - u21-20020a05600c00d500b0040b5e5999c6mr940484wmm.230.1701940742953; - Thu, 07 Dec 2023 01:19:02 -0800 (PST) -Received: from localhost.localdomain (ppp046103111243.access.hol.gr. - [46.103.111.243]) by smtp.gmail.com with ESMTPSA id - u21-20020a05600c139500b00405d9a950a2sm1299003wmf.28.2023.12.07.01.19.01 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 07 Dec 2023 01:19:02 -0800 (PST) -From: Ilias Apalodimas -To: trini@konsulko.com, - sjg@chromium.org -Cc: sean.anderson@seco.com, neil.armstrong@linaro.org, - heinrich.schuchardt@canonical.com, mark.kettenis@xs4all.nl, - Ilias Apalodimas , u-boot@lists.denx.de -Subject: [PATCH 2/2 v3] smbios: Fallback to the default DT if sysinfo nodes - are missing -Date: Thu, 7 Dec 2023 11:18:50 +0200 -Message-Id: <20231207091850.17776-3-ilias.apalodimas@linaro.org> -X-Mailer: git-send-email 2.40.1 -In-Reply-To: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -References: <20231207091850.17776-1-ilias.apalodimas@linaro.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.39 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de -X-Virus-Status: Clean - -In order to fill in the SMBIOS tables U-Boot currently relies on a -"u-boot,sysinfo-smbios" compatible node. This is fine for the boards -that already include such nodes. However with some recent EFI changes, -the majority of boards can boot up distros, which usually rely on -things like dmidecode etc for their reporting. For boards that -lack this special node the SMBIOS output looks like: - -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: Unknown - UUID: Not Settable - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown - -This looks problematic since most of the info are "Unknown". The DT spec -specifies standard properties containing relevant information like -'model' and 'compatible' for which the suggested format is -. Unfortunately the 'model' string found in DTs is -usually lacking the manufacturer so we can't use it for both -'Manufacturer' and 'Product Name' SMBIOS entries reliably. - -So let's add a last resort to our current smbios parsing. If none of -the sysinfo properties are found, scan for those information in the -root node of the device tree. Use the 'model' to fill the 'Product -Name' and the first value of 'compatible' for the 'Manufacturer', since -that always contains one. - -pre-patch: -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: Unknown - Product Name: Unknown - Version: Unknown - Serial Number: 100000000bb24ceb - UUID: 30303031-3030-3030-3061-613234636435 - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -and post patch: -Handle 0x0001, DMI type 1, 27 bytes -System Information - Manufacturer: raspberrypi - Product Name: Raspberry Pi 4 Model B Rev 1.1 - Version: Unknown - Serial Number: 100000000bb24ceb - UUID: 30303031-3030-3030-3061-613234636435 - Wake-up Type: Reserved - SKU Number: Unknown - Family: Unknown -[...] - -Signed-off-by: Ilias Apalodimas ---- -Simon, I'll work with tou on the refactoring you wanted and -remove the EFI requirement of SMBIOS in !x86 platforms. -Since this code has no tests, I'll add some once the refactoring -is done - -Changes since v2: -- Spelling mistakes -- rebase on top of patch #1 changes -Changes since v1: -- Tokenize the DT node entry and use the appropriate value instead of - the entire string -- Removed Peters tested/reviewed-by tags due to the above - lib/smbios.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++--- - 1 file changed, 89 insertions(+), 5 deletions(-) - --- -2.40.1 - -diff --git a/lib/smbios.c b/lib/smbios.c -index 444aa245a273..3f0e1d529537 100644 ---- a/lib/smbios.c -+++ b/lib/smbios.c -@@ -9,11 +9,14 @@ - #include - #include - #include -+#include - #include - #include - #include - #include - #include -+#include -+#include - #ifdef CONFIG_CPU - #include - #include -@@ -43,6 +46,25 @@ - - DECLARE_GLOBAL_DATA_PTR; - -+/** -+ * struct map_sysinfo - Mapping of sysinfo strings to DT -+ * -+ * @sysinfo_str: sysinfo string -+ * @dt_str: DT string -+ * @max: Max index of the tokenized string to pick. Counting starts from 0 -+ * -+ */ -+struct map_sysinfo { -+ const char *sysinfo_str; -+ const char *dt_str; -+ int max; -+}; -+ -+static const struct map_sysinfo sysinfo_to_dt[] = { -+ { .sysinfo_str = "product", .dt_str = "model", 2 }, -+ { .sysinfo_str = "manufacturer", .dt_str = "compatible", 1 }, -+}; -+ - /** - * struct smbios_ctx - context for writing SMBIOS tables - * -@@ -87,6 +109,18 @@ struct smbios_write_method { - const char *subnode_name; - }; - -+static const struct map_sysinfo *convert_sysinfo_to_dt(const char *sysinfo_str) -+{ -+ int i; -+ -+ for (i = 0; i < ARRAY_SIZE(sysinfo_to_dt); i++) { -+ if (!strcmp(sysinfo_str, sysinfo_to_dt[i].sysinfo_str)) -+ return &sysinfo_to_dt[i]; -+ } -+ -+ return NULL; -+} -+ - /** - * smbios_add_string() - add a string to the string area - * -@@ -124,6 +158,42 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - } - } - -+/** -+ * get_str_from_dt - Get a substring from a DT property. -+ * After finding the property in the DT, the function -+ * will parse comma-separated values and return the value. -+ * If nprop->max exceeds the number of comma-separated -+ * elements, the last non NULL value will be returned. -+ * Counting starts from zero. -+ * -+ * @nprop: sysinfo property to use -+ * @str: pointer to fill with data -+ * @size: str buffer length -+ */ -+static -+void get_str_from_dt(const struct map_sysinfo *nprop, char *str, size_t size) -+{ -+ const char *dt_str; -+ int cnt = 0; -+ char *token; -+ -+ memset(str, 0, size); -+ if (!nprop || !nprop->max) -+ return; -+ -+ dt_str = ofnode_read_string(ofnode_root(), nprop->dt_str); -+ if (!dt_str) -+ return; -+ -+ memcpy(str, dt_str, size); -+ token = strtok(str, ","); -+ while (token && cnt < nprop->max) { -+ strlcpy(str, token, strlen(token) + 1); -+ token = strtok(NULL, ","); -+ cnt++; -+ } -+} -+ - /** - * smbios_add_prop_si() - Add a property from the devicetree or sysinfo - * -@@ -137,6 +207,8 @@ static int smbios_add_string(struct smbios_ctx *ctx, const char *str) - static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - int sysinfo_id, const char *dval) - { -+ int ret; -+ - if (!dval || !*dval) - dval = "Unknown"; - -@@ -145,18 +217,30 @@ static int smbios_add_prop_si(struct smbios_ctx *ctx, const char *prop, - - if (sysinfo_id && ctx->dev) { - char val[SMBIOS_STR_MAX]; -- int ret; - - ret = sysinfo_get_str(ctx->dev, sysinfo_id, sizeof(val), val); - if (!ret) - return smbios_add_string(ctx, val); - } - if (IS_ENABLED(CONFIG_OF_CONTROL)) { -- const char *str; -- -- str = ofnode_read_string(ctx->node, prop); -+ const char *str = NULL; -+ char str_dt[128] = { 0 }; -+ /* -+ * If the node is not valid fallback and try the entire DT -+ * so we can at least fill in manufacturer and board type -+ */ -+ if (ofnode_valid(ctx->node)) { -+ str = ofnode_read_string(ctx->node, prop); -+ } else { -+ const struct map_sysinfo *nprop; -+ -+ nprop = convert_sysinfo_to_dt(prop); -+ get_str_from_dt(nprop, str_dt, sizeof(str_dt)); -+ str = (const char *)str_dt; -+ } - -- return smbios_add_string(ctx, str ? str : dval); -+ ret = smbios_add_string(ctx, str && *str ? str : dval); -+ return ret; - } - - return 0; diff --git a/sources b/sources index 30e8529..8f50a6d 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (u-boot-2024.01.tar.bz2) = 45bd093ba3bda23e43cdde83d8656c1ee1348ac2886ecff1fee475f101ac4965a5be6565408fa5b990c723f3fdc833edfca60a719f735a43040cd14a1b59a88b +SHA512 (u-boot-2024.04-rc2.tar.bz2) = f5c6d6a37ce6b34bd1ab2cddd5d0cacddfd19b5345934731df3a7ed454a3895ad2d14acbdb2e1b922b9571778e50b54cb7612b1798a04dfb991365d3344cd865 diff --git a/uboot-tools.spec b/uboot-tools.spec index dbaa093..eb2f4a3 100644 --- a/uboot-tools.spec +++ b/uboot-tools.spec @@ -1,4 +1,4 @@ -#global candidate rc0 +%global candidate rc2 %if 0%{?rhel} %bcond_with toolsonly %else @@ -6,8 +6,8 @@ %endif Name: uboot-tools -Version: 2024.01 -Release: 2%{?candidate:.%{candidate}}%{?dist} +Version: 2024.04 +Release: 0.2%{?candidate:.%{candidate}}%{?dist} Epoch: 1 Summary: U-Boot utilities License: GPLv2+ BSD LGPL-2.1+ LGPL-2.0+ @@ -19,9 +19,7 @@ Source1: aarch64-boards Patch1: uefi-distro-load-FDT-from-any-partition-on-boot-device.patch Patch2: disable-VBE-by-default.patch -Patch3: Provide-a-fallback-to-smbios-tables.patch Patch5: enable-bootmenu-by-default.patch -Patch6: uefi-Boot-var-automatic-management-for-removable-medias.patch Patch7: Add-video-damage-tracking.patch # Board fixes and enablement @@ -29,8 +27,6 @@ Patch7: Add-video-damage-tracking.patch Patch10: rpi-Switch-to-OF_HAS_PRIOR_STAGE-by-default.patch # Rockchips improvements Patch11: rockchip-Add-initial-support-for-the-PinePhone-Pro.patch -# Lots more to do, mostly untested, definitely unsupported -Patch12: rpi5-initial-support.patch #Patch12: 0001-Revert-rockchip-rockpro64-Build-u-boot-rockchip-spi..patch BuildRequires: bc @@ -208,6 +204,9 @@ install -p -m 0755 builds/tools/env/fw_printenv %{buildroot}%{_bindir} %endif %changelog +* Wed Feb 14 2024 Peter Robinson - 1:2024.04-0.2.rc2 +- Update to 2024.04 RC2 + * Sat Jan 27 2024 Fedora Release Engineering - 1:2024.01-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/uefi-Boot-var-automatic-management-for-removable-medias.patch b/uefi-Boot-var-automatic-management-for-removable-medias.patch deleted file mode 100644 index 48ae88e..0000000 --- a/uefi-Boot-var-automatic-management-for-removable-medias.patch +++ /dev/null @@ -1,574 +0,0 @@ -From patchwork Fri Nov 10 04:25:37 2023 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 8bit -X-Patchwork-Submitter: Masahisa Kojima -X-Patchwork-Id: 1862317 -X-Patchwork-Delegate: apalos@gmail.com -Return-Path: -X-Original-To: incoming@patchwork.ozlabs.org -Delivered-To: patchwork-incoming@legolas.ozlabs.org -Authentication-Results: legolas.ozlabs.org; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.a=rsa-sha256 - header.s=google header.b=muA1rcXE; - dkim-atps=neutral -Authentication-Results: legolas.ozlabs.org; - spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de - (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; - envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org) -Received: from phobos.denx.de (phobos.denx.de - [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) - (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) - key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) - (No client certificate requested) - by legolas.ozlabs.org (Postfix) with ESMTPS id 4SRQnL1SNCz1yRF - for ; Fri, 10 Nov 2023 15:28:54 +1100 (AEDT) -Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) - by phobos.denx.de (Postfix) with ESMTP id 4C150877A0; - Fri, 10 Nov 2023 05:27:39 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de -Authentication-Results: phobos.denx.de; - dkim=pass (2048-bit key; - unprotected) header.d=linaro.org header.i=@linaro.org header.b="muA1rcXE"; - dkim-atps=neutral -Received: by phobos.denx.de (Postfix, from userid 109) - id 9DA4487796; Fri, 10 Nov 2023 05:27:28 +0100 (CET) -X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de -X-Spam-Level: -X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, - DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, - T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.2 -Received: from mail-qv1-xf30.google.com (mail-qv1-xf30.google.com - [IPv6:2607:f8b0:4864:20::f30]) - (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) - (No client certificate requested) - by phobos.denx.de (Postfix) with ESMTPS id E1AE487795 - for ; Fri, 10 Nov 2023 05:27:22 +0100 (CET) -Authentication-Results: phobos.denx.de; - dmarc=pass (p=none dis=none) header.from=linaro.org -Authentication-Results: phobos.denx.de; - spf=pass smtp.mailfrom=masahisa.kojima@linaro.org -Received: by mail-qv1-xf30.google.com with SMTP id - 6a1803df08f44-66d09b6d007so10800236d6.1 - for ; Thu, 09 Nov 2023 20:27:22 -0800 (PST) -DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=linaro.org; s=google; t=1699590441; x=1700195241; darn=lists.denx.de; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:from:to:cc:subject:date - :message-id:reply-to; - bh=TMp02tF2/jn50c0fdB6OUXNmWJ9Af2C5T6zhn2D5BPI=; - b=muA1rcXEW1UV0ytByrk/oz/vuO7kL/M5Szuv8+JLohfHHFY3sZW5v5q4Tn1coMbMKW - 6+JvY0qla9DiPjvWA90QSopUCqBoggSNPTIlTn4YSs0zA/+Aa9ufsx25M+rq4pdYGAZq - ujAG9mRgWMuq7W+eZZWfQo6eFqEo14D6RbQL5NFW/G0Wkle6TwLwu7dp19DOw7hH/jPq - sq9/5/DA4FEI+4sRDsPBAQ48VTq05vuMv2PMU0t4d7SXPVCEk1lW+JFZB4wooN2XotQ+ - ni+S40bdTeGBscZ+sajQQgtDd49nxGSB518samtlg5SGdhDB9WKak39uPeWU4WFYc01J - R7BQ== -X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; - d=1e100.net; s=20230601; t=1699590441; x=1700195241; - h=content-transfer-encoding:mime-version:references:in-reply-to - :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc - :subject:date:message-id:reply-to; - bh=TMp02tF2/jn50c0fdB6OUXNmWJ9Af2C5T6zhn2D5BPI=; - b=o5TY9c0iL/aKbWJtamq+fAKn5twYwIcXo5Z8lxIo1/WL8jhCu3973LiJ6l2rbP6I26 - wEUpA97eZRYjRnp6Pfb9nJ5+Ip11akGFqY+UNFjwNues+jYvCmrhtbzt3RIwwRMopasI - IvpvSU+Vk0opNS2b96ZRak7X34ZoUNZVcjTBCSqx3UgQcaMOxrP5u7LholG/3rTttkkF - gdIAWrm7wPUrREhnt8opfpTWbusAkgJ1lAa0uqcfb4TRE7fKsiX3du3TwgJNsvACBXxW - W4w5nDy5AXlY05IOsmMvxjIudLF0aDB3y/aUT1K7/NyAO77e5CPoGEIRF4JnpngLM7yx - RcEw== -X-Gm-Message-State: AOJu0YwKFnJ+XRzaRWdr9TK+didg99ZRC2gUKVvYvCLFFGqfG4yFbCXC - IsubnJ6RTNtZqmONUFojqVLmrQYm513MFxxhCLg= -X-Google-Smtp-Source: - AGHT+IE/39rKwHRMrxLkfDXIlyOXct/rRbXebKb2Lc3eaLeJaCt4Vmnxn7CrXnlXXLzUgocEmJUKcA== -X-Received: by 2002:a05:6214:d44:b0:675:667d:a1b6 with SMTP id - 4-20020a0562140d4400b00675667da1b6mr7212832qvr.0.1699590440388; - Thu, 09 Nov 2023 20:27:20 -0800 (PST) -Received: from localhost ([164.70.16.189]) by smtp.gmail.com with ESMTPSA id - n18-20020a170902e55200b001c0bf60ba5csm4304818plf.272.2023.11.09.20.27.19 - (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); - Thu, 09 Nov 2023 20:27:19 -0800 (PST) -From: Masahisa Kojima -To: u-boot@lists.denx.de -Cc: Heinrich Schuchardt , - Ilias Apalodimas , - Simon Glass , - Takahiro Akashi , - Michal Simek , Raymond Mao , - Masahisa Kojima , - Joao Marcos Costa , - Huang Jianan , - Thomas Petazzoni , - Miquel Raynal , linux-erofs@lists.ozlabs.org -Subject: [PATCH v12 4/9] efi_loader: Boot var automatic management -Date: Fri, 10 Nov 2023 13:25:37 +0900 -Message-Id: <20231110042542.3797301-5-masahisa.kojima@linaro.org> -X-Mailer: git-send-email 2.34.1 -In-Reply-To: <20231110042542.3797301-1-masahisa.kojima@linaro.org> -References: <20231110042542.3797301-1-masahisa.kojima@linaro.org> -MIME-Version: 1.0 -X-BeenThere: u-boot@lists.denx.de -X-Mailman-Version: 2.1.39 -Precedence: list -List-Id: U-Boot discussion -List-Unsubscribe: , - -List-Archive: -List-Post: -List-Help: -List-Subscribe: , - -Errors-To: u-boot-bounces@lists.denx.de -Sender: "U-Boot" -X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de -X-Virus-Status: Clean - -From: Raymond Mao - -Changes for complying to EFI spec ยง3.5.1.1 -'Removable Media Boot Behavior'. -Boot variables can be automatically generated during a removable -media is probed. At the same time, unused boot variables will be -detected and removed. - -Please note that currently the function 'efi_disk_remove' has no -ability to distinguish below two scenarios -a) Unplugging of a removable media under U-Boot -b) U-Boot exiting and booting an OS -Thus currently the boot variables management is not added into -'efi_disk_remove' to avoid boot options being added/erased -repeatedly under scenario b) during power cycles -See TODO comments under function 'efi_disk_remove' for more details - -The original efi_secboot tests expect that BootOrder EFI variable -is not defined. With this commit, the BootOrder EFI variable is -automatically added when the disk is detected. The original -efi_secboot tests end up with unexpected failure. -The efi_secboot tests need to be modified to explicitly set -the BootOrder EFI variable. - -squashfs and erofs ls tests are also affected by this modification, -need to clear the previous state before squashfs ls test starts. - -Co-developed-by: Masahisa Kojima -Signed-off-by: Masahisa Kojima -Signed-off-by: Raymond Mao -Reviewed-by: Heinrich Schuchardt -Reviewed-by: Ilias Apalodimas -Reviewed-by: Joao Marcos Costa ---- - lib/efi_loader/efi_disk.c | 18 ++++++++ - lib/efi_loader/efi_setup.c | 7 ++++ - test/py/tests/test_efi_secboot/test_signed.py | 42 +++++++++---------- - .../test_efi_secboot/test_signed_intca.py | 14 +++---- - .../tests/test_efi_secboot/test_unsigned.py | 14 +++---- - test/py/tests/test_fs/test_erofs.py | 9 ++++ - .../test_fs/test_squashfs/test_sqfs_ls.py | 9 ++++ - 7 files changed, 78 insertions(+), 35 deletions(-) - -diff --git a/lib/efi_loader/efi_disk.c b/lib/efi_loader/efi_disk.c -index f0d76113b0..b808a7fe62 100644 ---- a/lib/efi_loader/efi_disk.c -+++ b/lib/efi_loader/efi_disk.c -@@ -690,6 +690,13 @@ int efi_disk_probe(void *ctx, struct event *event) - return -1; - } - -+ /* only do the boot option management when UEFI sub-system is initialized */ -+ if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR) && efi_obj_list_initialized == EFI_SUCCESS) { -+ ret = efi_bootmgr_update_media_device_boot_option(); -+ if (ret != EFI_SUCCESS) -+ return -1; -+ } -+ - return 0; - } - -@@ -742,6 +749,17 @@ int efi_disk_remove(void *ctx, struct event *event) - dev_tag_del(dev, DM_TAG_EFI); - - return 0; -+ -+ /* -+ * TODO A flag to distinguish below 2 different scenarios of this -+ * function call is needed: -+ * a) Unplugging of a removable media under U-Boot -+ * b) U-Boot exiting and booting an OS -+ * In case of scenario a), efi_bootmgr_update_media_device_boot_option() -+ * needs to be invoked here to update the boot options and remove the -+ * unnecessary ones. -+ */ -+ - } - - /** -diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c -index ad719afd63..c02569cb6d 100644 ---- a/lib/efi_loader/efi_setup.c -+++ b/lib/efi_loader/efi_setup.c -@@ -245,6 +245,13 @@ efi_status_t efi_init_obj_list(void) - if (ret != EFI_SUCCESS) - goto out; - -+ if (IS_ENABLED(CONFIG_CMD_BOOTEFI_BOOTMGR)) { -+ /* update boot option after variable service initialized */ -+ ret = efi_bootmgr_update_media_device_boot_option(); -+ if (ret != EFI_SUCCESS) -+ goto out; -+ } -+ - /* Define supported languages */ - ret = efi_init_platform_lang(); - if (ret != EFI_SUCCESS) -diff --git a/test/py/tests/test_efi_secboot/test_signed.py b/test/py/tests/test_efi_secboot/test_signed.py -index ca52e853d8..2f862a259a 100644 ---- a/test/py/tests/test_efi_secboot/test_signed.py -+++ b/test/py/tests/test_efi_secboot/test_signed.py -@@ -29,7 +29,7 @@ class TestEfiSignedImage(object): - output = u_boot_console.run_command_list([ - 'host bind 0 %s' % disk_img, - 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -37,7 +37,7 @@ class TestEfiSignedImage(object): - # Test Case 1b, run unsigned image if no PK - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -59,13 +59,13 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert('\'HELLO1\' failed' in ''.join(output)) - assert('efi_start_image() returned: 26' in ''.join(output)) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 2 HELLO2 host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'efidebug test bootmgr']) - assert '\'HELLO2\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -77,12 +77,12 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'efidebug test bootmgr']) - assert '\'HELLO2\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -105,7 +105,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -117,7 +117,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -143,7 +143,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -170,7 +170,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -181,7 +181,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -a -i 4000000:$filesize db']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -193,7 +193,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -205,7 +205,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -a -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -230,7 +230,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -254,7 +254,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -265,7 +265,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -279,7 +279,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -307,7 +307,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -330,7 +330,7 @@ class TestEfiSignedImage(object): - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi.signed_2sigs -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -349,7 +349,7 @@ class TestEfiSignedImage(object): - output = u_boot_console.run_command_list([ - 'host bind 0 %s' % disk_img, - 'efidebug boot add -b 1 HELLO1 host 0:1 /helloworld_forged.efi.signed -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert('hELLO, world!' in ''.join(output)) - -@@ -364,7 +364,7 @@ class TestEfiSignedImage(object): - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize PK']) - assert 'Failed to set EFI variable' not in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert(not 'hELLO, world!' in ''.join(output)) - assert('\'HELLO1\' failed' in ''.join(output)) -diff --git a/test/py/tests/test_efi_secboot/test_signed_intca.py b/test/py/tests/test_efi_secboot/test_signed_intca.py -index d8d599d22f..8d9a5f3e7f 100644 ---- a/test/py/tests/test_efi_secboot/test_signed_intca.py -+++ b/test/py/tests/test_efi_secboot/test_signed_intca.py -@@ -40,7 +40,7 @@ class TestEfiSignedImageIntca(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO_a host 0:1 /helloworld.efi.signed_a -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_a\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -49,7 +49,7 @@ class TestEfiSignedImageIntca(object): - # Test Case 1b, signed and authenticated by root CA - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 2 HELLO_ab host 0:1 /helloworld.efi.signed_ab -s ""', -- 'efidebug boot next 2', -+ 'efidebug boot order 2', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -71,7 +71,7 @@ class TestEfiSignedImageIntca(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_abc\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -81,7 +81,7 @@ class TestEfiSignedImageIntca(object): - output = u_boot_console.run_command_list([ - 'fatload host 0:1 4000000 db_b.auth', - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_abc\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -@@ -91,7 +91,7 @@ class TestEfiSignedImageIntca(object): - output = u_boot_console.run_command_list([ - 'fatload host 0:1 4000000 db_c.auth', - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize db', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -117,7 +117,7 @@ class TestEfiSignedImageIntca(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO_abc host 0:1 /helloworld.efi.signed_abc -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'Hello, world!' in ''.join(output) - # Or, -@@ -129,7 +129,7 @@ class TestEfiSignedImageIntca(object): - output = u_boot_console.run_command_list([ - 'fatload host 0:1 4000000 dbx_c.auth', - 'setenv -e -nv -bs -rt -at -i 4000000:$filesize dbx', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert '\'HELLO_abc\' failed' in ''.join(output) - assert 'efi_start_image() returned: 26' in ''.join(output) -diff --git a/test/py/tests/test_efi_secboot/test_unsigned.py b/test/py/tests/test_efi_secboot/test_unsigned.py -index df63f0df08..7c078f220d 100644 ---- a/test/py/tests/test_efi_secboot/test_unsigned.py -+++ b/test/py/tests/test_efi_secboot/test_unsigned.py -@@ -36,11 +36,11 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'efi_start_image() returned: 26' in ''.join(output) - assert 'Hello, world!' not in ''.join(output) -@@ -65,7 +65,7 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert 'Hello, world!' in ''.join(output) - -@@ -89,11 +89,11 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'efi_start_image() returned: 26' in ''.join(output) - assert 'Hello, world!' not in ''.join(output) -@@ -107,11 +107,11 @@ class TestEfiUnsignedImage(object): - - output = u_boot_console.run_command_list([ - 'efidebug boot add -b 1 HELLO host 0:1 /helloworld.efi -s ""', -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'bootefi bootmgr']) - assert '\'HELLO\' failed' in ''.join(output) - output = u_boot_console.run_command_list([ -- 'efidebug boot next 1', -+ 'efidebug boot order 1', - 'efidebug test bootmgr']) - assert 'efi_start_image() returned: 26' in ''.join(output) - assert 'Hello, world!' not in ''.join(output) -diff --git a/test/py/tests/test_fs/test_erofs.py b/test/py/tests/test_fs/test_erofs.py -index 458a52ba79..87ad8f2d5f 100644 ---- a/test/py/tests/test_fs/test_erofs.py -+++ b/test/py/tests/test_fs/test_erofs.py -@@ -196,6 +196,15 @@ def test_erofs(u_boot_console): - """ - build_dir = u_boot_console.config.build_dir - -+ # If the EFI subsystem is enabled and initialized, EFI subsystem tries to -+ # add EFI boot option when the new disk is detected. If there is no EFI -+ # System Partition exists, EFI subsystem outputs error messages and -+ # it ends up with test failure. -+ # Restart U-Boot to clear the previous state. -+ # TODO: Ideally EFI test cases need to be fixed, but it will -+ # increase the number of system reset. -+ u_boot_console.restart_uboot() -+ - try: - # setup test environment - make_erofs_image(build_dir) -diff --git a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -index 527a556ed8..a20a7d1a66 100644 ---- a/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -+++ b/test/py/tests/test_fs/test_squashfs/test_sqfs_ls.py -@@ -118,6 +118,15 @@ def test_sqfs_ls(u_boot_console): - """ - build_dir = u_boot_console.config.build_dir - -+ # If the EFI subsystem is enabled and initialized, EFI subsystem tries to -+ # add EFI boot option when the new disk is detected. If there is no EFI -+ # System Partition exists, EFI subsystem outputs error messages and -+ # it ends up with test failure. -+ # Restart U-Boot to clear the previous state. -+ # TODO: Ideally EFI test cases need to be fixed, but it will -+ # increase the number of system reset. -+ u_boot_console.restart_uboot() -+ - # setup test environment - check_mksquashfs_version() - generate_sqfs_src_dir(build_dir)