Compare commits

..

1 Commits
boo ... x86a

Author SHA1 Message Date
Simon Glass
5cec2cfd35 x86: Avoid adding two SPL binaries to the image
At present two separate SPL binaries are included in the ROM. This
affects QEMU which is quite tight with only a 2MB ROM. Adjust the
image description so that space is not wasted when microcode is not
needed.

Series-to: u-boot
Signed-off-by: Simon Glass <sjg@chromium.org>
2025-05-24 08:06:27 -06:00
6 changed files with 9 additions and 59 deletions

View File

@@ -48,11 +48,17 @@
};
#elif defined(CONFIG_SPL)
u-boot-spl-with-ucode-ptr {
no-expanded;
offset = <CONFIG_X86_OFFSET_SPL>;
};
# ifdef CONFIG_HAVE_MICROCODE
u-boot-dtb-with-ucode2 {
type = "u-boot-dtb-with-ucode";
};
#else
u-boot-spl-dtb {
};
# endif
u-boot {
offset = <CONFIG_X86_OFFSET_U_BOOT>;
};

View File

@@ -998,19 +998,6 @@ struct bootflow_img *bootflow_img_add(struct bootflow *bflow, const char *fname,
return ptr;
}
const struct bootflow_img *bootflow_img_find(const struct bootflow *bflow,
enum bootflow_img_t type)
{
const struct bootflow_img *img;
alist_for_each(img, &bflow->images) {
if (img->type == type)
return img;
}
return NULL;
}
int bootflow_get_seq(const struct bootflow *bflow)
{
struct bootstd_priv *std;

View File

@@ -388,7 +388,7 @@ int bootmeth_alloc_other(struct bootflow *bflow, const char *fname,
if (ret)
return log_msg_ret("all", ret);
if (!bootflow_img_add(bflow, bflow->fname, type, abuf_addr(buf),
if (!bootflow_img_add(bflow, bflow->fname, type, map_to_sysmem(buf),
size))
return log_msg_ret("boi", -ENOMEM);

View File

@@ -83,29 +83,13 @@ static int extlinux_fill_info(struct bootflow *bflow)
log_debug("parsing bflow file size %x\n", bflow->size);
membuf_init(&mb, bflow->buf, bflow->size);
membuf_putraw(&mb, bflow->size, true, &data);
while (len = membuf_readline(&mb, line, sizeof(line) - 1, 0, true), len) {
while (len = membuf_readline(&mb, line, sizeof(line) - 1, ' ', true), len) {
char *tok, *p = line;
const char *name = NULL;
if (*p == '#')
continue;
while (*p == ' ' || *p == '\t')
p++;
tok = strsep(&p, " ");
if (p) {
if (!strcmp("label", tok)) {
name = p;
if (bflow->os_name)
break; /* just find the first */
} else if (!strcmp("menu", tok)) {
tok = strsep(&p, " ");
if (!strcmp("label", tok)) {
name = p;
}
}
if (name) {
free(bflow->os_name);
bflow->os_name = strdup(name);
bflow->os_name = strdup(p);
if (!bflow->os_name)
return log_msg_ret("os", -ENOMEM);
}

View File

@@ -647,17 +647,6 @@ const char *bootflow_img_type_name(enum bootflow_img_t type);
struct bootflow_img *bootflow_img_add(struct bootflow *bflow, const char *fname,
enum bootflow_img_t type, ulong addr,
ulong size);
/**
* bootflow_img_find() - Find the first image of a given type
*
* @bflow: Bootflow to search
* @type: Image type to search for
* Return: Pointer to image, or NULL if not found
*/
const struct bootflow_img *bootflow_img_find(const struct bootflow *bflow,
enum bootflow_img_t type);
/**
* bootflow_get_seq() - Get the sequence number of a bootflow
*

View File

@@ -1488,22 +1488,6 @@ static int bootstd_images(struct unit_test_state *uts)
ptr = map_sysmem(img->addr, 0);
ut_asserteq(0, *(ulong *)ptr);
/* check we can find images */
bflow = alist_get(&std->bootflows, 1, struct bootflow);
img = bootflow_img_find(bflow, (enum bootflow_img_t)IH_TYPE_SCRIPT);
ut_assertnonnull(img);
ut_asserteq(IH_TYPE_SCRIPT, img->type);
ut_asserteq(map_to_sysmem(bflow->buf), img->addr);
ut_asserteq(bflow->size, img->size);
img = bootflow_img_find(bflow, BFI_LOGO);
ut_assertnonnull(img);
ut_asserteq(BFI_LOGO, img->type);
ut_asserteq(map_to_sysmem(bflow->logo), img->addr);
ut_asserteq(bflow->logo_size, img->size);
ut_assertnull(bootflow_img_find(bflow, BFI_CMDLINE));
ut_assert_console_end();
return 0;