summaryrefslogtreecommitdiff
path: root/boot
diff options
context:
space:
mode:
authorTom Rini <[email protected]>2025-12-08 13:17:27 -0600
committerTom Rini <[email protected]>2025-12-08 13:17:27 -0600
commit59202e5ae76ef3acb34c4236e43248f1cd3fc642 (patch)
tree30004ced6a059b2c25afb0aca8b049908c2212c3 /boot
parent8e12d6ccb3cfa84dd275a1b852b2a235de0162b0 (diff)
parent0e0a198a68be71148f5ec27ef86796174f91436f (diff)
Merge tag 'v2026.01-rc4' into next
Prepare v2026.01-rc4
Diffstat (limited to 'boot')
-rw-r--r--boot/bootmeth_rauc.c15
-rw-r--r--boot/fdt_support.c19
2 files changed, 29 insertions, 5 deletions
diff --git a/boot/bootmeth_rauc.c b/boot/bootmeth_rauc.c
index f5d5a971e87..833715e1395 100644
--- a/boot/bootmeth_rauc.c
+++ b/boot/bootmeth_rauc.c
@@ -17,6 +17,7 @@
#include <fs.h>
#include <malloc.h>
#include <mapmem.h>
+#include <part.h>
#include <string.h>
#include <linux/stringify.h>
#include <asm/cache.h>
@@ -98,6 +99,7 @@ static int distro_rauc_scan_parts(struct bootflow *bflow)
struct distro_rauc_priv *priv;
char *boot_order;
const char **boot_order_list;
+ bool slot_found = false;
int ret;
int i;
@@ -119,17 +121,20 @@ static int distro_rauc_scan_parts(struct bootflow *bflow)
if (desc) {
ret = fs_set_blk_dev_with_part(desc, slot->boot_part);
if (ret)
- return log_msg_ret("part", ret);
+ continue;
fs_close();
- ret = fs_set_blk_dev_with_part(desc, slot->root_part);
+ ret = part_get_info(desc, slot->root_part, NULL);
if (ret)
- return log_msg_ret("part", ret);
- fs_close();
+ continue;
+ slot_found = true;
}
}
str_free_list(boot_order_list);
- return 0;
+ if (slot_found)
+ return 0;
+
+ return -1;
}
static int distro_rauc_read_bootflow(struct udevice *dev, struct bootflow *bflow)
diff --git a/boot/fdt_support.c b/boot/fdt_support.c
index 92f2f534ee0..1c215e548db 100644
--- a/boot/fdt_support.c
+++ b/boot/fdt_support.c
@@ -27,6 +27,7 @@
#include <fdtdec.h>
#include <version.h>
#include <video.h>
+#include <smbios.h>
DECLARE_GLOBAL_DATA_PTR;
@@ -333,6 +334,7 @@ int fdt_chosen(void *fdt)
int nodeoffset;
int err;
const char *str; /* used to set string properties */
+ ulong smbiosaddr; /* SMBIOS table address */
err = fdt_check_header(fdt);
if (err < 0) {
@@ -387,6 +389,23 @@ int fdt_chosen(void *fdt)
return err;
}
+ if (CONFIG_IS_ENABLED(GENERATE_SMBIOS_TABLE)) {
+ /* Inject SMBIOS address when we have a valid address.
+ * This is useful for systems using booti/bootm instead of bootefi.
+ * Failure to set this property is non-fatal, we only generate a
+ * warning.
+ */
+ smbiosaddr = gd_smbios_start();
+ if (smbiosaddr) {
+ err = fdt_setprop_u64(fdt, nodeoffset, "smbios3-entrypoint",
+ smbiosaddr);
+ if (err < 0) {
+ printf("WARNING: could not set smbios3-entrypoint %s.\n",
+ fdt_strerror(err));
+ }
+ }
+ }
+
return fdt_fixup_stdout(fdt, nodeoffset);
}